mirror of
https://github.com/DreamMaoMao/maomaowm.git
synced 2026-06-07 03:01:47 -04:00
feat: add force option in killclient
This commit is contained in:
parent
13e9cfb237
commit
cc20d5cff0
5 changed files with 34 additions and 2 deletions
|
|
@ -88,7 +88,7 @@ bindr=Super,Super_L,spawn,rofi -show run
|
||||||
|
|
||||||
| Command | Param | Description |
|
| Command | Param | Description |
|
||||||
| :--- | :--- | :--- |
|
| :--- | :--- | :--- |
|
||||||
| `killclient` | - | Close the focused window. |
|
| `killclient` | `force` | Close the focused window. If `force` is specified, sends `SIGKILL`. |
|
||||||
| `togglefloating` | - | Toggle floating state. |
|
| `togglefloating` | - | Toggle floating state. |
|
||||||
| `toggle_all_floating` | - | Toggle all visible clients floating state. |
|
| `toggle_all_floating` | - | Toggle all visible clients floating state. |
|
||||||
| `togglefullscreen` | - | Toggle fullscreen. |
|
| `togglefullscreen` | - | Toggle fullscreen. |
|
||||||
|
|
|
||||||
|
|
@ -87,3 +87,9 @@ void client_active(Client *c) {
|
||||||
view_in_mon(&(Arg){.ui = target}, true, c->mon, true);
|
view_in_mon(&(Arg){.ui = target}, true, c->mon, true);
|
||||||
focusclient(c, 1);
|
focusclient(c, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void client_pending_force_kill(Client *c) {
|
||||||
|
if (!c)
|
||||||
|
return;
|
||||||
|
kill(c->pid, SIGKILL);
|
||||||
|
}
|
||||||
|
|
@ -559,6 +559,26 @@ int32_t parse_direction(const char *str) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int32_t parse_force(const char *str) {
|
||||||
|
// 将输入字符串转换为小写
|
||||||
|
char lowerStr[10];
|
||||||
|
int32_t i = 0;
|
||||||
|
while (str[i] && i < 9) {
|
||||||
|
lowerStr[i] = tolower(str[i]);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
lowerStr[i] = '\0';
|
||||||
|
|
||||||
|
// 根据转换后的小写字符串返回对应的枚举值
|
||||||
|
if (strcmp(lowerStr, "unforce") == 0) {
|
||||||
|
return UNFORCE;
|
||||||
|
} else if (strcmp(lowerStr, "force") == 0) {
|
||||||
|
return FORCE;
|
||||||
|
} else {
|
||||||
|
return UNFORCE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int32_t parse_fold_state(const char *str) {
|
int32_t parse_fold_state(const char *str) {
|
||||||
// 将输入字符串转换为小写
|
// 将输入字符串转换为小写
|
||||||
char lowerStr[10];
|
char lowerStr[10];
|
||||||
|
|
@ -1029,6 +1049,7 @@ FuncType parse_func_name(char *func_name, Arg *arg, char *arg_value,
|
||||||
(*arg).i = atoi(arg_value);
|
(*arg).i = atoi(arg_value);
|
||||||
} else if (strcmp(func_name, "killclient") == 0) {
|
} else if (strcmp(func_name, "killclient") == 0) {
|
||||||
func = killclient;
|
func = killclient;
|
||||||
|
(*arg).i = parse_force(arg_value);
|
||||||
} else if (strcmp(func_name, "centerwin") == 0) {
|
} else if (strcmp(func_name, "centerwin") == 0) {
|
||||||
func = centerwin;
|
func = centerwin;
|
||||||
} else if (strcmp(func_name, "focuslast") == 0) {
|
} else if (strcmp(func_name, "focuslast") == 0) {
|
||||||
|
|
|
||||||
|
|
@ -345,8 +345,12 @@ int32_t setmfact(const Arg *arg) {
|
||||||
int32_t killclient(const Arg *arg) {
|
int32_t killclient(const Arg *arg) {
|
||||||
Client *c = arg->tc ? arg->tc : (selmon ? selmon->sel : NULL);
|
Client *c = arg->tc ? arg->tc : (selmon ? selmon->sel : NULL);
|
||||||
if (c) {
|
if (c) {
|
||||||
|
if (arg->i == FORCE) {
|
||||||
|
client_pending_force_kill(c);
|
||||||
|
} else {
|
||||||
pending_kill_client(c);
|
pending_kill_client(c);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -190,6 +190,7 @@ enum { NONE, OPEN, MOVE, CLOSE, TAG, FOCUS, OPAFADEIN, OPAFADEOUT, OVERVIEW };
|
||||||
enum { UNFOLD, FOLD, INVALIDFOLD };
|
enum { UNFOLD, FOLD, INVALIDFOLD };
|
||||||
enum { PREV, NEXT };
|
enum { PREV, NEXT };
|
||||||
enum { STATE_UNSPECIFIED = 0, STATE_ENABLED, STATE_DISABLED };
|
enum { STATE_UNSPECIFIED = 0, STATE_ENABLED, STATE_DISABLED };
|
||||||
|
enum { FORCE, UNFORCE };
|
||||||
|
|
||||||
enum tearing_mode {
|
enum tearing_mode {
|
||||||
TEARING_DISABLED = 0,
|
TEARING_DISABLED = 0,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue