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:
Daniel Eklöf 2020-05-27 07:18:39 +02:00
commit 5639082113
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
5 changed files with 22 additions and 0 deletions

View file

@ -14,6 +14,7 @@
* `Sync` to terminfo. This is a tmux extension that indicates
_"Synchronized Updates"_ are supported.
* `--hold` command line option to `footclient`.
### Changed

View file

@ -39,6 +39,7 @@ print_usage(const char *prog_name)
" --fullscreen start in fullscreen mode\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"
" --hold remain open after child process exits\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");
}
@ -58,6 +59,7 @@ main(int argc, char *const *argv)
{"fullscreen", no_argument, NULL, 'F'},
{"login-shell", no_argument, NULL, 'L'},
{"server-socket", required_argument, NULL, 's'},
{"hold", no_argument, NULL, 'H'},
{"log-colorize", optional_argument, NULL, 'l'},
{"version", no_argument, NULL, 'v'},
{"help", no_argument, NULL, 'h'},
@ -72,6 +74,7 @@ main(int argc, char *const *argv)
bool login_shell = false;
bool maximized = false;
bool fullscreen = false;
bool hold = false;
while (true) {
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;
break;
case 'H':
hold = true;
break;
case 'l':
if (optarg == NULL || strcmp(optarg, "auto") == 0)
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(uint8_t); /* maximized */
total_len += sizeof(uint8_t); /* fullscreen */
total_len += sizeof(uint8_t); /* hold */
total_len += sizeof(uint8_t); /* login_shell */
total_len += sizeof(argc);
@ -266,6 +274,11 @@ main(int argc, char *const *argv)
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)) {
LOG_ERRNO("failed to send login-shell");
goto err;

View file

@ -9,6 +9,7 @@ _arguments \
'--fullscreen[start in fullscreen mode]' \
'--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' \
'--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)' \
'(-v --version)'{-v,--version}'[show the version number and quit]' \
'(-h --help)'{-h,--help}'[show help message and quit]' \

View file

@ -36,6 +36,9 @@ arguments, to execute (instead of the default shell).
*-s*,*--server-socket*=_PATH_
Connect to _PATH_ instead of _XDG\_RUNTIME\_DIR/foot.sock_.
*--hold*
Remain open after child process exits.
*-l*,*--log-colorize*=[{*never*,*always*,*auto*}]
Enables or disables colorization of log output on stderr.

View file

@ -267,6 +267,9 @@ fdm_client(struct fdm *fdm, int fd, int events, void *data)
CHECK_BUF(sizeof(uint8_t));
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));
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);
client->conf.app_id = strlen(app_id) > 0
? strdup(app_id) : strdup(server->conf->app_id);
client->conf.hold_at_exit = hold;
client->conf.login_shell = login_shell;
if (maximized)