mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-02-04 04:06:06 -05:00
client/server: implement '--hold' in footclient
This commit is contained in:
parent
e310487dae
commit
3943cad7ed
2 changed files with 17 additions and 0 deletions
13
client.c
13
client.c
|
|
@ -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;
|
||||
|
|
|
|||
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));
|
||||
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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue