mirror of
https://github.com/DreamMaoMao/maomaowm.git
synced 2026-06-19 14:33:16 -04:00
Merge e903cd99f4 into adc1239075
This commit is contained in:
commit
c07f12f0bd
4 changed files with 26 additions and 0 deletions
|
|
@ -89,6 +89,7 @@ bindr=Super,Super_L,spawn,rofi -show run
|
||||||
| Command | Param | Description |
|
| Command | Param | Description |
|
||||||
| :--- | :--- | :--- |
|
| :--- | :--- | :--- |
|
||||||
| `killclient` | `force` | Close the focused window. If `force` is specified, sends `SIGKILL`. |
|
| `killclient` | `force` | Close the focused window. If `force` is specified, sends `SIGKILL`. |
|
||||||
|
| `smartkillclient` | - | Remove the focused window from the current tag(s) if it is on multiple tags; otherwise close it. |
|
||||||
| `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. |
|
||||||
|
|
|
||||||
|
|
@ -1061,6 +1061,8 @@ FuncType parse_func_name(char *func_name, Arg *arg, char *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);
|
(*arg).i = parse_force(arg_value);
|
||||||
|
} else if (strcmp(func_name, "smartkillclient") == 0) {
|
||||||
|
func = smartkillclient;
|
||||||
} 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) {
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,7 @@ int32_t moveresize(const Arg *arg);
|
||||||
int32_t exchange_client(const Arg *arg);
|
int32_t exchange_client(const Arg *arg);
|
||||||
int32_t exchange_stack_client(const Arg *arg);
|
int32_t exchange_stack_client(const Arg *arg);
|
||||||
int32_t killclient(const Arg *arg);
|
int32_t killclient(const Arg *arg);
|
||||||
|
int32_t smartkillclient(const Arg *arg);
|
||||||
int32_t toggleglobal(const Arg *arg);
|
int32_t toggleglobal(const Arg *arg);
|
||||||
int32_t incnmaster(const Arg *arg);
|
int32_t incnmaster(const Arg *arg);
|
||||||
int32_t focusmon(const Arg *arg);
|
int32_t focusmon(const Arg *arg);
|
||||||
|
|
|
||||||
|
|
@ -360,6 +360,28 @@ int32_t killclient(const Arg *arg) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int32_t smartkillclient(const Arg *arg) {
|
||||||
|
Client *c = arg->tc ? arg->tc : (selmon ? selmon->sel : NULL);
|
||||||
|
if (!c)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
uint32_t newtags = c->tags & ~(c->mon->tagset[c->mon->seltags] & TAGMASK);
|
||||||
|
// Kill the client if it's single-tag, or if removing the tag(s) would leave
|
||||||
|
// it on none
|
||||||
|
if (__builtin_popcount(c->tags & TAGMASK) <= 1 || !newtags) {
|
||||||
|
pending_kill_client(c);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove the client from the currently viewed tag(s) on its own monitor
|
||||||
|
// (the one that changed) while keeping focus on the user's active monitor.
|
||||||
|
c->tags = newtags;
|
||||||
|
focusclient(focustop(selmon), 1);
|
||||||
|
arrange(c->mon, false, false);
|
||||||
|
printstatus(IPC_WATCH_ARRANGGE);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int32_t moveresize(const Arg *arg) {
|
int32_t moveresize(const Arg *arg) {
|
||||||
const char *cursors[] = {"nw-resize", "ne-resize", "sw-resize",
|
const char *cursors[] = {"nw-resize", "ne-resize", "sw-resize",
|
||||||
"se-resize"};
|
"se-resize"};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue