mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-03-07 04:34:03 -05:00
Merge branch 'hold-option-in-footclient'
This adds --hold to footclient. It was an oversight on my part to not add it from the beginning, when it was added to foot. Closes #17
This commit is contained in:
commit
5639082113
5 changed files with 22 additions and 0 deletions
|
|
@ -14,6 +14,7 @@
|
||||||
|
|
||||||
* `Sync` to terminfo. This is a tmux extension that indicates
|
* `Sync` to terminfo. This is a tmux extension that indicates
|
||||||
_"Synchronized Updates"_ are supported.
|
_"Synchronized Updates"_ are supported.
|
||||||
|
* `--hold` command line option to `footclient`.
|
||||||
|
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
|
||||||
13
client.c
13
client.c
|
|
@ -39,6 +39,7 @@ print_usage(const char *prog_name)
|
||||||
" --fullscreen start in fullscreen mode\n"
|
" --fullscreen start in fullscreen mode\n"
|
||||||
" --login-shell start shell as a login shell\n"
|
" --login-shell start shell as a login shell\n"
|
||||||
" -s,--server-socket=PATH path to the server UNIX domain socket (default=$XDG_RUNTIME_DIR/foot-$XDG_SESSION_ID.sock)\n"
|
" -s,--server-socket=PATH path to the server UNIX domain socket (default=$XDG_RUNTIME_DIR/foot-$XDG_SESSION_ID.sock)\n"
|
||||||
|
" --hold remain open after child process exits\n"
|
||||||
" -l,--log-colorize=[never|always|auto] enable/disable colorization of log output on stderr\n"
|
" -l,--log-colorize=[never|always|auto] enable/disable colorization of log output on stderr\n"
|
||||||
" -v,--version show the version number and quit\n");
|
" -v,--version show the version number and quit\n");
|
||||||
}
|
}
|
||||||
|
|
@ -58,6 +59,7 @@ main(int argc, char *const *argv)
|
||||||
{"fullscreen", no_argument, NULL, 'F'},
|
{"fullscreen", no_argument, NULL, 'F'},
|
||||||
{"login-shell", no_argument, NULL, 'L'},
|
{"login-shell", no_argument, NULL, 'L'},
|
||||||
{"server-socket", required_argument, NULL, 's'},
|
{"server-socket", required_argument, NULL, 's'},
|
||||||
|
{"hold", no_argument, NULL, 'H'},
|
||||||
{"log-colorize", optional_argument, NULL, 'l'},
|
{"log-colorize", optional_argument, NULL, 'l'},
|
||||||
{"version", no_argument, NULL, 'v'},
|
{"version", no_argument, NULL, 'v'},
|
||||||
{"help", no_argument, NULL, 'h'},
|
{"help", no_argument, NULL, 'h'},
|
||||||
|
|
@ -72,6 +74,7 @@ main(int argc, char *const *argv)
|
||||||
bool login_shell = false;
|
bool login_shell = false;
|
||||||
bool maximized = false;
|
bool maximized = false;
|
||||||
bool fullscreen = false;
|
bool fullscreen = false;
|
||||||
|
bool hold = false;
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
int c = getopt_long(argc, argv, "+:t:a:s:l::hv", longopts, NULL);
|
int c = getopt_long(argc, argv, "+:t:a:s:l::hv", longopts, NULL);
|
||||||
|
|
@ -109,6 +112,10 @@ main(int argc, char *const *argv)
|
||||||
server_socket_path = optarg;
|
server_socket_path = optarg;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'H':
|
||||||
|
hold = true;
|
||||||
|
break;
|
||||||
|
|
||||||
case 'l':
|
case 'l':
|
||||||
if (optarg == NULL || strcmp(optarg, "auto") == 0)
|
if (optarg == NULL || strcmp(optarg, "auto") == 0)
|
||||||
log_colorize = LOG_COLORIZE_AUTO;
|
log_colorize = LOG_COLORIZE_AUTO;
|
||||||
|
|
@ -212,6 +219,7 @@ main(int argc, char *const *argv)
|
||||||
total_len += sizeof(app_id_len) + app_id_len;
|
total_len += sizeof(app_id_len) + app_id_len;
|
||||||
total_len += sizeof(uint8_t); /* maximized */
|
total_len += sizeof(uint8_t); /* maximized */
|
||||||
total_len += sizeof(uint8_t); /* fullscreen */
|
total_len += sizeof(uint8_t); /* fullscreen */
|
||||||
|
total_len += sizeof(uint8_t); /* hold */
|
||||||
total_len += sizeof(uint8_t); /* login_shell */
|
total_len += sizeof(uint8_t); /* login_shell */
|
||||||
total_len += sizeof(argc);
|
total_len += sizeof(argc);
|
||||||
|
|
||||||
|
|
@ -266,6 +274,11 @@ main(int argc, char *const *argv)
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (send(fd, &(uint8_t){hold}, sizeof(uint8_t), 0) != sizeof(uint8_t)) {
|
||||||
|
LOG_ERRNO("failed to send hold");
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
|
|
||||||
if (send(fd, &(uint8_t){login_shell}, sizeof(uint8_t), 0) != sizeof(uint8_t)) {
|
if (send(fd, &(uint8_t){login_shell}, sizeof(uint8_t), 0) != sizeof(uint8_t)) {
|
||||||
LOG_ERRNO("failed to send login-shell");
|
LOG_ERRNO("failed to send login-shell");
|
||||||
goto err;
|
goto err;
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ _arguments \
|
||||||
'--fullscreen[start in fullscreen mode]' \
|
'--fullscreen[start in fullscreen mode]' \
|
||||||
'--login-shell[start shell as a login shell]' \
|
'--login-shell[start shell as a login shell]' \
|
||||||
'(-s --server-socket)'{-s,--server-socket}'[override the default path to the foot server socket (XDG_RUNTIME_DIR/foot.sock)]:server:_files' \
|
'(-s --server-socket)'{-s,--server-socket}'[override the default path to the foot server socket (XDG_RUNTIME_DIR/foot.sock)]:server:_files' \
|
||||||
|
'--hold[remain open after child process exits]' \
|
||||||
'(-l --log-colorize)'{-l,--log-colorize}'[enable or disable colorization of log output on stderr]:logcolor:(never always auto)' \
|
'(-l --log-colorize)'{-l,--log-colorize}'[enable or disable colorization of log output on stderr]:logcolor:(never always auto)' \
|
||||||
'(-v --version)'{-v,--version}'[show the version number and quit]' \
|
'(-v --version)'{-v,--version}'[show the version number and quit]' \
|
||||||
'(-h --help)'{-h,--help}'[show help message and quit]' \
|
'(-h --help)'{-h,--help}'[show help message and quit]' \
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,9 @@ arguments, to execute (instead of the default shell).
|
||||||
*-s*,*--server-socket*=_PATH_
|
*-s*,*--server-socket*=_PATH_
|
||||||
Connect to _PATH_ instead of _XDG\_RUNTIME\_DIR/foot.sock_.
|
Connect to _PATH_ instead of _XDG\_RUNTIME\_DIR/foot.sock_.
|
||||||
|
|
||||||
|
*--hold*
|
||||||
|
Remain open after child process exits.
|
||||||
|
|
||||||
*-l*,*--log-colorize*=[{*never*,*always*,*auto*}]
|
*-l*,*--log-colorize*=[{*never*,*always*,*auto*}]
|
||||||
Enables or disables colorization of log output on stderr.
|
Enables or disables colorization of log output on stderr.
|
||||||
|
|
||||||
|
|
|
||||||
4
server.c
4
server.c
|
|
@ -267,6 +267,9 @@ fdm_client(struct fdm *fdm, int fd, int events, void *data)
|
||||||
CHECK_BUF(sizeof(uint8_t));
|
CHECK_BUF(sizeof(uint8_t));
|
||||||
const uint8_t fullscreen = *(const uint8_t *)p; p += sizeof(fullscreen);
|
const uint8_t fullscreen = *(const uint8_t *)p; p += sizeof(fullscreen);
|
||||||
|
|
||||||
|
CHECK_BUF(sizeof(uint8_t));
|
||||||
|
const uint8_t hold = *(const uint8_t *)p; p += sizeof(hold);
|
||||||
|
|
||||||
CHECK_BUF(sizeof(uint8_t));
|
CHECK_BUF(sizeof(uint8_t));
|
||||||
const uint8_t login_shell = *(const uint8_t *)p; p += sizeof(login_shell);
|
const uint8_t login_shell = *(const uint8_t *)p; p += sizeof(login_shell);
|
||||||
|
|
||||||
|
|
@ -304,6 +307,7 @@ fdm_client(struct fdm *fdm, int fd, int events, void *data)
|
||||||
? strdup(title) : strdup(server->conf->title);
|
? strdup(title) : strdup(server->conf->title);
|
||||||
client->conf.app_id = strlen(app_id) > 0
|
client->conf.app_id = strlen(app_id) > 0
|
||||||
? strdup(app_id) : strdup(server->conf->app_id);
|
? strdup(app_id) : strdup(server->conf->app_id);
|
||||||
|
client->conf.hold_at_exit = hold;
|
||||||
client->conf.login_shell = login_shell;
|
client->conf.login_shell = login_shell;
|
||||||
|
|
||||||
if (maximized)
|
if (maximized)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue