This commit is contained in:
Davide Greco 2026-03-23 10:13:38 +08:00 committed by GitHub
commit 6611221f4a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 14 additions and 1 deletions

View file

@ -983,6 +983,7 @@ FuncType parse_func_name(char *func_name, Arg *arg, char *arg_value,
(*arg).i = atoi(arg_value);
} else if (strcmp(func_name, "killclient") == 0) {
func = killclient;
(*arg).v = strdup(arg_value);
} else if (strcmp(func_name, "centerwin") == 0) {
func = centerwin;
} else if (strcmp(func_name, "focuslast") == 0) {

View file

@ -356,7 +356,11 @@ int32_t killclient(const Arg *arg) {
return 0;
c = selmon->sel;
if (c) {
pending_kill_client(c);
if (arg->v && strcmp(arg->v, "force") == 0) {
pending_force_kill_client(c);
} else {
pending_kill_client(c);
}
}
return 0;
}

View file

@ -751,6 +751,7 @@ static bool check_hit_no_border(Client *c);
static void reset_keyboard_layout(void);
static void client_update_oldmonname_record(Client *c, Monitor *m);
static void pending_kill_client(Client *c);
static void pending_force_kill_client(Client *c);
static uint32_t get_tags_first_tag_num(uint32_t source_tags);
static void set_layer_open_animaiton(LayerSurface *l, struct wlr_box geo);
static void init_fadeout_layers(LayerSurface *l);
@ -3950,6 +3951,13 @@ void keypressmod(struct wl_listener *listener, void *data) {
}
}
void pending_force_kill_client(Client *c) {
if (!c)
return;
kill(c->pid, SIGKILL);
}
void pending_kill_client(Client *c) {
if (!c || c->iskilling)
return;