version 1.33, 2021/08/27 17:25:55 |
version 1.34, 2021/10/11 10:55:30 |
|
|
.name = "display-popup", |
.name = "display-popup", |
.alias = "popup", |
.alias = "popup", |
|
|
.args = { "BCc:d:Eh:t:w:x:y:", 0, -1, NULL }, |
.args = { "BCc:d:e:Eh:t:w:x:y:", 0, -1, NULL }, |
.usage = "[-BCE] [-c target-client] [-d start-directory] [-h height] " |
.usage = "[-BCE] [-c target-client] [-d start-directory] " |
CMD_TARGET_PANE_USAGE " [-w width] " |
"[-e environment] [-h height] " CMD_TARGET_PANE_USAGE " " |
"[-x position] [-y position] [shell-command]", |
"[-w width] [-x position] [-y position] [shell-command]", |
|
|
.target = { 't', CMD_FIND_PANE, 0 }, |
.target = { 't', CMD_FIND_PANE, 0 }, |
|
|
|
|
char *cwd, *cause, **argv = NULL; |
char *cwd, *cause, **argv = NULL; |
int flags = 0, argc = 0; |
int flags = 0, argc = 0; |
u_int px, py, w, h, count = args_count(args); |
u_int px, py, w, h, count = args_count(args); |
|
struct args_value *av; |
|
struct environ *env = NULL; |
|
|
if (args_has(args, 'C')) { |
if (args_has(args, 'C')) { |
server_client_clear_overlay(tc); |
server_client_clear_overlay(tc); |
|
|
} else |
} else |
args_to_vector(args, &argc, &argv); |
args_to_vector(args, &argc, &argv); |
|
|
|
if (args_has(args, 'e') >= 1) { |
|
env = environ_create(); |
|
av = args_first_value(args, 'e'); |
|
while (av != NULL) { |
|
environ_put(env, av->string, 0); |
|
av = args_next_value(av); |
|
} |
|
} |
|
|
if (args_has(args, 'E') > 1) |
if (args_has(args, 'E') > 1) |
flags |= POPUP_CLOSEEXITZERO; |
flags |= POPUP_CLOSEEXITZERO; |
else if (args_has(args, 'E')) |
else if (args_has(args, 'E')) |
flags |= POPUP_CLOSEEXIT; |
flags |= POPUP_CLOSEEXIT; |
if (args_has(args, 'B')) |
if (args_has(args, 'B')) |
flags |= POPUP_NOBORDER; |
flags |= POPUP_NOBORDER; |
if (popup_display(flags, item, px, py, w, h, shellcmd, argc, argv, cwd, |
if (popup_display(flags, item, px, py, w, h, env, shellcmd, argc, argv, |
tc, s, NULL, NULL) != 0) { |
cwd, tc, s, NULL, NULL) != 0) { |
cmd_free_argv(argc, argv); |
cmd_free_argv(argc, argv); |
|
if (env != NULL) |
|
environ_free(env); |
return (CMD_RETURN_NORMAL); |
return (CMD_RETURN_NORMAL); |
} |
} |
|
if (env != NULL) |
|
environ_free(env); |
cmd_free_argv(argc, argv); |
cmd_free_argv(argc, argv); |
return (CMD_RETURN_WAIT); |
return (CMD_RETURN_WAIT); |
} |
} |