mirror of
https://github.com/mintycube/dwm.git
synced 2024-10-22 14:05:45 +02:00
Adding focusonnetactive and losefullscreen patches
This commit is contained in:
parent
ec546d7995
commit
27b6b4b024
11
README.md
11
README.md
@ -11,7 +11,7 @@ Refer to [https://dwm.suckless.org/](https://dwm.suckless.org/) for details on t
|
|||||||
|
|
||||||
### Changelog:
|
### Changelog:
|
||||||
|
|
||||||
2019-09-06 - Added attachabove, attachaside, attachbelow, attachbottom and autostart patches
|
2019-09-06 - Added attachabove, attachaside, attachbelow, attachbottom, autostart, fancybar, focusonnetactive and losefullscreen patches
|
||||||
|
|
||||||
2019-09-05 - Alpha, systray, togglefullscreen, tagallmon, tagmonfixfs, tagswapmon, pertag and zoomswap patches added
|
2019-09-05 - Alpha, systray, togglefullscreen, tagallmon, tagmonfixfs, tagswapmon, pertag and zoomswap patches added
|
||||||
|
|
||||||
@ -38,6 +38,15 @@ Refer to [https://dwm.suckless.org/](https://dwm.suckless.org/) for details on t
|
|||||||
- [fancybar](https://dwm.suckless.org/patches/fancybar/)
|
- [fancybar](https://dwm.suckless.org/patches/fancybar/)
|
||||||
- shows the titles of all visible windows in the status bar
|
- shows the titles of all visible windows in the status bar
|
||||||
|
|
||||||
|
- [focusonnetactive](https://dwm.suckless.org/patches/focusonnetactive/)
|
||||||
|
- by default, dwm responds to \_NET_ACTIVE_WINDOW client messages by setting the urgency bit on the named window
|
||||||
|
- this patch activates the window instead
|
||||||
|
|
||||||
|
- [losefullscreen](https://github.com/bakkeby/dwm-vanitygaps/blob/master/patches/dwm-losefullscreen-6.2.diff)
|
||||||
|
- by default in dwm it is possible to make an application fullscreen, then use the focusstack keybindings to focus on other windows beneath the current window
|
||||||
|
- it is also possible to spawn new windows (e.g. a terminal) that end up getting focus while the previous window remains in fullscreen
|
||||||
|
- this patch ensures that in such scenarios the previous window loses fullscreen
|
||||||
|
|
||||||
- [pertag](https://dwm.suckless.org/patches/pertag/)
|
- [pertag](https://dwm.suckless.org/patches/pertag/)
|
||||||
- adds nmaster, mfact, layouts and more per tag rather than per monitor
|
- adds nmaster, mfact, layouts and more per tag rather than per monitor
|
||||||
|
|
||||||
|
20
dwm.c
20
dwm.c
@ -564,6 +564,9 @@ clientmessage(XEvent *e)
|
|||||||
#endif // SYSTRAY_PATCH
|
#endif // SYSTRAY_PATCH
|
||||||
XClientMessageEvent *cme = &e->xclient;
|
XClientMessageEvent *cme = &e->xclient;
|
||||||
Client *c = wintoclient(cme->window);
|
Client *c = wintoclient(cme->window);
|
||||||
|
#if FOCUSONNETACTIVE_PATCH
|
||||||
|
unsigned int i;
|
||||||
|
#endif // FOCUSONNETACTIVE_PATCH
|
||||||
|
|
||||||
#if SYSTRAY_PATCH
|
#if SYSTRAY_PATCH
|
||||||
if (showsystray && cme->window == systray->win && cme->message_type == netatom[NetSystemTrayOP]) {
|
if (showsystray && cme->window == systray->win && cme->message_type == netatom[NetSystemTrayOP]) {
|
||||||
@ -618,8 +621,19 @@ clientmessage(XEvent *e)
|
|||||||
setfullscreen(c, (cme->data.l[0] == 1 /* _NET_WM_STATE_ADD */
|
setfullscreen(c, (cme->data.l[0] == 1 /* _NET_WM_STATE_ADD */
|
||||||
|| (cme->data.l[0] == 2 /* _NET_WM_STATE_TOGGLE */ && !c->isfullscreen)));
|
|| (cme->data.l[0] == 2 /* _NET_WM_STATE_TOGGLE */ && !c->isfullscreen)));
|
||||||
} else if (cme->message_type == netatom[NetActiveWindow]) {
|
} else if (cme->message_type == netatom[NetActiveWindow]) {
|
||||||
|
#if FOCUSONNETACTIVE_PATCH
|
||||||
|
for (i = 0; i < LENGTH(tags) && !((1 << i) & c->tags); i++);
|
||||||
|
if (i < LENGTH(tags)) {
|
||||||
|
const Arg a = {.ui = 1 << i};
|
||||||
|
selmon = c->mon;
|
||||||
|
view(&a);
|
||||||
|
focus(c);
|
||||||
|
restack(selmon);
|
||||||
|
}
|
||||||
|
#else
|
||||||
if (c != selmon->sel && !c->isurgent)
|
if (c != selmon->sel && !c->isurgent)
|
||||||
seturgent(c, 1);
|
seturgent(c, 1);
|
||||||
|
#endif // FOCUSONNETACTIVE_PATCH
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1001,6 +1015,12 @@ focus(Client *c)
|
|||||||
XDeleteProperty(dpy, root, netatom[NetActiveWindow]);
|
XDeleteProperty(dpy, root, netatom[NetActiveWindow]);
|
||||||
}
|
}
|
||||||
selmon->sel = c;
|
selmon->sel = c;
|
||||||
|
#if LOSEFULLSCREEN_PATCH
|
||||||
|
Client *at;
|
||||||
|
for (at = selmon->clients; at; at = at->next)
|
||||||
|
if (at != c && at->isfullscreen && ISVISIBLE(at))
|
||||||
|
setfullscreen(at, 0);
|
||||||
|
#endif // LOSEFULLSCREEN_PATCH
|
||||||
drawbars();
|
drawbars();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
15
patches.h
15
patches.h
@ -50,6 +50,21 @@
|
|||||||
*/
|
*/
|
||||||
#define FANCYBAR_PATCH 0
|
#define FANCYBAR_PATCH 0
|
||||||
|
|
||||||
|
/* By default, dwm responds to _NET_ACTIVE_WINDOW client messages by setting
|
||||||
|
* the urgency bit on the named window. This patch activates the window instead.
|
||||||
|
* https://dwm.suckless.org/patches/focusonnetactive/
|
||||||
|
*/
|
||||||
|
#define FOCUSONNETACTIVE_PATCH 0
|
||||||
|
|
||||||
|
/* By default in dwm it is possible to make an application fullscreen, then use
|
||||||
|
* the focusstack keybindings to focus on other windows beneath the current window.
|
||||||
|
* It is also possible to spawn new windows (e.g. a terminal) that end up getting
|
||||||
|
* focus while the previous window remains in fullscreen. This patch ensures that
|
||||||
|
* in such scenarios the previous window loses fullscreen.
|
||||||
|
* https://github.com/bakkeby/dwm-vanitygaps/blob/master/patches/dwm-losefullscreen-6.2.diff
|
||||||
|
*/
|
||||||
|
#define LOSEFULLSCREEN_PATCH 0
|
||||||
|
|
||||||
/* The pertag patch adds nmaster, mfacts and layouts per tag rather
|
/* The pertag patch adds nmaster, mfacts and layouts per tag rather
|
||||||
* than per monitor (default).
|
* than per monitor (default).
|
||||||
* https://dwm.suckless.org/patches/pertag/
|
* https://dwm.suckless.org/patches/pertag/
|
||||||
|
Loading…
Reference in New Issue
Block a user