From 10a66407324df8babf791705791fdb111ea85af4 Mon Sep 17 00:00:00 2001 From: bakkeby Date: Sun, 25 Jun 2023 22:52:50 +0200 Subject: [PATCH] Adding the toggletopbar patch ref. #363 --- README.md | 13 +++++++++---- config.def.h | 9 +++++++++ patch/dwmc | 1 + patch/include.c | 3 +++ patch/include.h | 3 +++ patch/toggletopbar.c | 20 ++++++++++++++++++++ patch/toggletopbar.h | 1 + patches.def.h | 5 +++++ 8 files changed, 51 insertions(+), 4 deletions(-) create mode 100644 patch/toggletopbar.c create mode 100644 patch/toggletopbar.h diff --git a/README.md b/README.md index c341d0b..4d47e3c 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,8 @@ Browsing patches? There is a [map of patches](https://coggle.it/diagram/X9IiSSM6 ### Changelog: +2023-06-25 - Added the toggletopbar patch + 2023-01-18 - Added the view history patch 2022-10-08 - Added the alt-tab patch @@ -772,15 +774,18 @@ Browsing patches? There is a [map of patches](https://coggle.it/diagram/X9IiSSM6 - [togglefullscreen](https://github.com/bakkeby/patches/wiki/togglefullscreen/) - allows you to toggle fullscreen on and off using a single shortcut key + - [togglelayout](https://github.com/bakkeby/patches/wiki/togglelayout) + - toggle layout using the same keyboard shortcuts to set the layout + - e.g. hitting `MOD+m` switches to monocle layout, hitting the same keybinding again brings + you back to the previous layout + - [toggletag](https://github.com/bakkeby/patches/wiki/toggletag) - toggle tags using the same keyboard shortcuts to view tags - e.g. hitting `MOD+4` lets you view tag 4 and hitting the keybinding a second time brings you back to where you were before - - [togglelayout](https://github.com/bakkeby/patches/wiki/togglelayout) - - toggle layout using the same keyboard shortcuts to set the layout - - e.g. hitting `MOD+m` switches to monocle layout, hitting the same keybinding again brings - you back to the previous layout + - [toggletopbar](https://dwm.suckless.org/patches/toggletopbar/) + - allows for the bar position (top or bottom) to be toggled during runtime - [transfer](https://dwm.suckless.org/patches/transfer/) - lets you transfer the currently focused client between the master and stack area while diff --git a/config.def.h b/config.def.h index d8741eb..e75a22e 100644 --- a/config.def.h +++ b/config.def.h @@ -902,6 +902,9 @@ static const Key keys[] = { { MODKEY, XK_s, rioresize, {0} }, #endif // RIODRAW_PATCH { MODKEY, XK_b, togglebar, {0} }, + #if TOGGLETOPBAR_PATCH + { MODKEY|ShiftMask, XK_b, toggletopbar, {0} }, + #endif // TOGGLETOPBAR_PATCH #if TAB_PATCH { MODKEY|ControlMask, XK_b, tabmode, {-1} }, #endif // TAB_PATCH @@ -1394,6 +1397,9 @@ static const Signal signals[] = { { "focusstack", focusstack }, { "setmfact", setmfact }, { "togglebar", togglebar }, + #if TOGGLETOPBAR_PATCH + { "toggletopbar", toggletopbar }, + #endif // TOGGLETOPBAR_PATCH { "incnmaster", incnmaster }, { "togglefloating", togglefloating }, { "focusmon", focusmon }, @@ -1592,6 +1598,9 @@ static IPCCommand ipccommands[] = { IPCCOMMAND( tag, 1, {ARG_TYPE_UINT} ), IPCCOMMAND( tagmon, 1, {ARG_TYPE_UINT} ), IPCCOMMAND( togglebar, 1, {ARG_TYPE_NONE} ), + #if TOGGLETOPBAR_PATCH + IPCCOMMAND( toggletopbar, 1, {ARG_TYPE_NONE} ), + #endif // TOGGLETOPBAR_PATCH IPCCOMMAND( togglefloating, 1, {ARG_TYPE_NONE} ), IPCCOMMAND( toggletag, 1, {ARG_TYPE_UINT} ), IPCCOMMAND( toggleview, 1, {ARG_TYPE_UINT} ), diff --git a/patch/dwmc b/patch/dwmc index c2ddbe8..2500ba7 100755 --- a/patch/dwmc +++ b/patch/dwmc @@ -30,6 +30,7 @@ case $# in transferall) ;& togglealttag) ;& togglebar) ;& + toggletopbar) ;& togglefloating) ;& togglefullscreen) ;& fullscreen) ;& diff --git a/patch/include.c b/patch/include.c index 326323c..12de942 100644 --- a/patch/include.c +++ b/patch/include.c @@ -310,6 +310,9 @@ #if TOGGLEFULLSCREEN_PATCH #include "togglefullscreen.c" #endif +#if TOGGLETOPBAR_PATCH +#include "toggletopbar.c" +#endif #if TRANSFER_PATCH #include "transfer.c" #endif diff --git a/patch/include.h b/patch/include.h index 9ab7527..41031f6 100644 --- a/patch/include.h +++ b/patch/include.h @@ -312,6 +312,9 @@ #if TOGGLEFULLSCREEN_PATCH #include "togglefullscreen.h" #endif +#if TOGGLETOPBAR_PATCH +#include "toggletopbar.h" +#endif #if TRANSFER_PATCH #include "transfer.h" #endif diff --git a/patch/toggletopbar.c b/patch/toggletopbar.c new file mode 100644 index 0000000..8ccc9ac --- /dev/null +++ b/patch/toggletopbar.c @@ -0,0 +1,20 @@ +void +toggletopbar(const Arg *arg) +{ + Bar *bar; + Monitor *m = selmon; + + for (bar = m->bar; bar; bar = bar->next) + bar->topbar = !bar->topbar; + + if (!m->showbar) { + togglebar(NULL); + return; + } + + updatebarpos(m); + + for (bar = m->bar; bar; bar = bar->next) + XMoveResizeWindow(dpy, bar->win, bar->bx, bar->by, bar->bw, bar->bh); + arrange(m); +} diff --git a/patch/toggletopbar.h b/patch/toggletopbar.h new file mode 100644 index 0000000..af8e443 --- /dev/null +++ b/patch/toggletopbar.h @@ -0,0 +1 @@ +static void toggletopbar(const Arg *arg); diff --git a/patches.def.h b/patches.def.h index fe1a461..b7f9f8a 100644 --- a/patches.def.h +++ b/patches.def.h @@ -1255,6 +1255,11 @@ */ #define TOGGLEFULLSCREEN_PATCH 0 +/* This patch allows for the bar position (top or bottom) to be toggled during runtime. + * https://dwm.suckless.org/patches/toggletopbar/ + */ +#define TOGGLETOPBAR_PATCH 0 + /* Minor patch that lets you use the same keyboard shortcut to toggle to the previous layout if the * designated layout is already active. *