mirror of
https://github.com/mintycube/dwm.git
synced 2024-10-22 14:05:45 +02:00
Adding quitonlyonempty patch and made monocle layout position configurable for fullscreen and warp patches
This commit is contained in:
parent
9ebd9c8397
commit
40000bba1c
@ -13,6 +13,8 @@ Refer to [https://dwm.suckless.org/](https://dwm.suckless.org/) for details on t
|
|||||||
|
|
||||||
### Changelog:
|
### Changelog:
|
||||||
|
|
||||||
|
2019-10-03 - Added onlyquitonempty patch
|
||||||
|
|
||||||
2019-10-02 - Added restartsig, emptyview, focusurgent and focusadjacenttag patches
|
2019-10-02 - Added restartsig, emptyview, focusurgent and focusadjacenttag patches
|
||||||
|
|
||||||
2019-10-01 - Added leftlayout, fullscreen, holdbar and unfloatvisible patches
|
2019-10-01 - Added leftlayout, fullscreen, holdbar and unfloatvisible patches
|
||||||
@ -135,6 +137,9 @@ Refer to [https://dwm.suckless.org/](https://dwm.suckless.org/) for details on t
|
|||||||
- adds rules per monitor, e.g. have default layouts per monitor
|
- adds rules per monitor, e.g. have default layouts per monitor
|
||||||
- the use case for this is if the second monitor is vertical (i.e. rotated) then you may want to use a different default layout for this monitor than what is used for the main monitor (for example normal vertical split for main monitor and horizontal split for the second)
|
- the use case for this is if the second monitor is vertical (i.e. rotated) then you may want to use a different default layout for this monitor than what is used for the main monitor (for example normal vertical split for main monitor and horizontal split for the second)
|
||||||
|
|
||||||
|
- [onlyquitonempty](https://dwm.suckless.org/patches/onlyquitonempty/)
|
||||||
|
- makes it so dwm will only exit via quit() if no windows are open (in order to prevent accidental loss of work)
|
||||||
|
|
||||||
- [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
|
||||||
|
|
||||||
|
@ -29,6 +29,9 @@ static const unsigned int systrayspacing = 2; /* systray spacing */
|
|||||||
static const int systraypinningfailfirst = 1; /* 1: if pinning fails, display systray on the first monitor, False: display systray on the last monitor*/
|
static const int systraypinningfailfirst = 1; /* 1: if pinning fails, display systray on the first monitor, False: display systray on the last monitor*/
|
||||||
static const int showsystray = 1; /* 0 means no systray */
|
static const int showsystray = 1; /* 0 means no systray */
|
||||||
#endif // SYSTRAY_PATCH
|
#endif // SYSTRAY_PATCH
|
||||||
|
#if ONLYQUITONEMPTY_PATCH
|
||||||
|
static const int quit_empty_window_count = 2; /* only allow dwm to quit if no windows are open, value here represents number of deamons */
|
||||||
|
#endif // ONLYQUITONEMPTY_PATCH
|
||||||
static const char *fonts[] = { "monospace:size=10" };
|
static const char *fonts[] = { "monospace:size=10" };
|
||||||
static const char dmenufont[] = "monospace:size=10";
|
static const char dmenufont[] = "monospace:size=10";
|
||||||
|
|
||||||
@ -210,6 +213,9 @@ static const int resizehints = 1; /* 1 means respect size hints in tiled resi
|
|||||||
#define FORCE_VSPLIT 1
|
#define FORCE_VSPLIT 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Position of the monocle layout in the layouts variable, used by warp and fullscreen patches */
|
||||||
|
#define MONOCLE_LAYOUT_POS 2
|
||||||
|
|
||||||
#if FLEXTILE_DELUXE_LAYOUT
|
#if FLEXTILE_DELUXE_LAYOUT
|
||||||
static const Layout layouts[] = {
|
static const Layout layouts[] = {
|
||||||
/* symbol arrange function, { nmaster, nstack, layout, master axis, stack axis, secondary stack axis } */
|
/* symbol arrange function, { nmaster, nstack, layout, master axis, stack axis, secondary stack axis } */
|
||||||
|
21
dwm.c
21
dwm.c
@ -1978,11 +1978,30 @@ propertynotify(XEvent *e)
|
|||||||
void
|
void
|
||||||
quit(const Arg *arg)
|
quit(const Arg *arg)
|
||||||
{
|
{
|
||||||
|
#if ONLYQUITONEMPTY_PATCH
|
||||||
|
unsigned int n;
|
||||||
|
Window *junk = malloc(1);
|
||||||
|
|
||||||
|
XQueryTree(dpy, root, junk, junk, &junk, &n);
|
||||||
|
|
||||||
|
if (n == quit_empty_window_count) {
|
||||||
|
#if RESTARTSIG_PATCH
|
||||||
|
if (arg->i)
|
||||||
|
restart = 1;
|
||||||
|
#endif // RESTARTSIG_PATCH
|
||||||
|
running = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
printf("[dwm] not exiting (n=%d)\n", n);
|
||||||
|
|
||||||
|
free(junk);
|
||||||
|
#else
|
||||||
#if RESTARTSIG_PATCH
|
#if RESTARTSIG_PATCH
|
||||||
if (arg->i)
|
if (arg->i)
|
||||||
restart = 1;
|
restart = 1;
|
||||||
#endif // RESTARTSIG_PATCH
|
#endif // RESTARTSIG_PATCH
|
||||||
running = 0;
|
running = 0;
|
||||||
|
#endif // ONLYQUITONEMPTY_PATCH
|
||||||
}
|
}
|
||||||
|
|
||||||
Monitor *
|
Monitor *
|
||||||
@ -2153,7 +2172,7 @@ restack(Monitor *m)
|
|||||||
XSync(dpy, False);
|
XSync(dpy, False);
|
||||||
while (XCheckMaskEvent(dpy, EnterWindowMask, &ev));
|
while (XCheckMaskEvent(dpy, EnterWindowMask, &ev));
|
||||||
#if WARP_PATCH
|
#if WARP_PATCH
|
||||||
if (m == selmon && (m->tagset[m->seltags] & m->sel->tags) && selmon->lt[selmon->sellt] != &layouts[2]) // <-- NB! hardcoded monocle
|
if (m == selmon && (m->tagset[m->seltags] & m->sel->tags) && selmon->lt[selmon->sellt] != &layouts[MONOCLE_LAYOUT_POS])
|
||||||
warp(m->sel);
|
warp(m->sel);
|
||||||
#endif // WARP_PATCH
|
#endif // WARP_PATCH
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
Layout *last_layout;
|
Layout *last_layout = &layouts[0];
|
||||||
|
|
||||||
void
|
void
|
||||||
fullscreen(const Arg *arg)
|
fullscreen(const Arg *arg)
|
||||||
{
|
{
|
||||||
if (selmon->showbar) {
|
if (selmon->showbar) {
|
||||||
for (last_layout = (Layout *)layouts; last_layout != selmon->lt[selmon->sellt]; last_layout++);
|
for (last_layout = (Layout *)layouts; last_layout != selmon->lt[selmon->sellt]; last_layout++);
|
||||||
setlayout(&((Arg) { .v = &layouts[2] })); // <-- NB! hardcoded monocle
|
setlayout(&((Arg) { .v = &layouts[MONOCLE_LAYOUT_POS] }));
|
||||||
} else {
|
} else {
|
||||||
setlayout(&((Arg) { .v = last_layout }));
|
setlayout(&((Arg) { .v = last_layout }));
|
||||||
}
|
}
|
||||||
|
@ -197,6 +197,12 @@
|
|||||||
*/
|
*/
|
||||||
#define MONITOR_RULES_PATCH 0
|
#define MONITOR_RULES_PATCH 0
|
||||||
|
|
||||||
|
/* This patch makes it so dwm will only exit via quit() if no windows are open.
|
||||||
|
* This is to prevent you accidentally losing all your work.
|
||||||
|
* https://dwm.suckless.org/patches/onlyquitonempty/
|
||||||
|
*/
|
||||||
|
#define ONLYQUITONEMPTY_PATCH 0
|
||||||
|
|
||||||
/* The pertag patch adds nmaster, mfacts and layouts per tag rather than per
|
/* The pertag patch adds nmaster, mfacts and layouts per tag rather than per
|
||||||
* monitor (default).
|
* monitor (default).
|
||||||
* https://dwm.suckless.org/patches/pertag/
|
* https://dwm.suckless.org/patches/pertag/
|
||||||
|
Loading…
Reference in New Issue
Block a user