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 |
|
||||
| :--- | :--- | :--- |
|
||||
| `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. |
|
||||
| `toggle_all_floating` | - | Toggle all visible clients floating state. |
|
||||
| `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) {
|
||||
func = killclient;
|
||||
(*arg).i = parse_force(arg_value);
|
||||
} else if (strcmp(func_name, "smartkillclient") == 0) {
|
||||
func = smartkillclient;
|
||||
} else if (strcmp(func_name, "centerwin") == 0) {
|
||||
func = centerwin;
|
||||
} 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_stack_client(const Arg *arg);
|
||||
int32_t killclient(const Arg *arg);
|
||||
int32_t smartkillclient(const Arg *arg);
|
||||
int32_t toggleglobal(const Arg *arg);
|
||||
int32_t incnmaster(const Arg *arg);
|
||||
int32_t focusmon(const Arg *arg);
|
||||
|
|
|
|||
|
|
@ -360,6 +360,28 @@ int32_t killclient(const Arg *arg) {
|
|||
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) {
|
||||
const char *cursors[] = {"nw-resize", "ne-resize", "sw-resize",
|
||||
"se-resize"};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue