From 6aca08966183c9ec6bce8a6f346b48a79b30fc1e Mon Sep 17 00:00:00 2001 From: matt Date: Fri, 19 Jun 2020 23:18:50 +0200 Subject: [PATCH] Adding tagothermonitor patch --- README.md | 2 ++ config.def.h | 11 +++++++++++ patch/dwmc.c | 16 +++++++++++++++- patch/dwmc.h | 6 +++++- patch/include.c | 5 ++++- patch/include.h | 5 ++++- patch/tagothermonitor.c | 29 +++++++++++++++++++++++++++++ patch/tagothermonitor.h | 3 +++ patches.def.h | 6 ++++++ 9 files changed, 79 insertions(+), 4 deletions(-) create mode 100644 patch/tagothermonitor.c create mode 100644 patch/tagothermonitor.h diff --git a/README.md b/README.md index 82a4f82..bb6aee7 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,8 @@ Refer to [https://dwm.suckless.org/](https://dwm.suckless.org/) for details on t ### Changelog: +2020-06-19 - Added tagothermonitor patch + 2020-06-15 - Added sizehints patch 2020-06-14 - Added RULE macro to replace rules setup making the default config less of an abomination and making it simpler to include new rules based patches diff --git a/config.def.h b/config.def.h index 6392e2c..f693266 100644 --- a/config.def.h +++ b/config.def.h @@ -511,6 +511,10 @@ static Signal signals[] = { #if XRDB_PATCH && !VTCOLORS_PATCH { "xrdb", xrdb }, #endif // XRDB_PATCH + #if TAGOTHERMONITOR_PATCH + { "tagnextmonex", tagnextmonex }, + { "tagprevmonex", tagprevmonex }, + #endif // TAGOTHERMONITOR_PATCH { "quit", quit }, { "setlayout", setlayout }, { "setlayoutex", setlayoutex }, @@ -683,6 +687,13 @@ static const Layout layouts[] = { { MODKEY|ControlMask|ShiftMask, KEY, toggletag, {.ui = 1 << TAG} }, #endif // COMBO_PATCH / SWAPTAGS_PATCH +#if TAGOTHERMONITOR_PATCH +/* TODO: Choose keybindings for TAGOTHERMONITOR_PATCH + { MODKEY|Mod4Mask, KEY, tagnextmon, {.ui = 1 << TAG} }, \ + { MODKEY|Mod4Mask|ShiftMask, KEY, tagprevmon, {.ui = 1 << TAG} }, \ +*/ +#endif // TAGOTHERMONITOR_PATCH + #if STACKER_PATCH #define STACKKEYS(MOD,ACTION) \ { MOD, XK_j, ACTION##stack, {.i = INC(+1) } }, \ diff --git a/patch/dwmc.c b/patch/dwmc.c index 8b62cda..5b1c5e4 100644 --- a/patch/dwmc.c +++ b/patch/dwmc.c @@ -40,6 +40,20 @@ tagallex(const Arg *arg) tag(&((Arg){.ui = ~0})); } +#if TAGOTHERMONITOR_PATCH +void +tagnextmonex(const Arg *arg) +{ + tagnextmon(&((Arg) { .ui = 1 << arg->ui })); +} + +void +tagprevmonex(const Arg *arg) +{ + tagprevmon(&((Arg) { .ui = 1 << arg->ui })); +} +#endif + int fake_signal(void) { @@ -81,4 +95,4 @@ fake_signal(void) // No fake signal was sent, so proceed with update return 0; -} \ No newline at end of file +} diff --git a/patch/dwmc.h b/patch/dwmc.h index 1711081..c30cdaf 100644 --- a/patch/dwmc.h +++ b/patch/dwmc.h @@ -10,4 +10,8 @@ static void toggleviewex(const Arg *arg); static void tagex(const Arg *arg); static void toggletagex(const Arg *arg); static void tagallex(const Arg *arg); -static int fake_signal(void); \ No newline at end of file +#if TAGOTHERMONITOR_PATCH +static void tagnextmonex(const Arg *arg); +static void tagprevmonex(const Arg *arg); +#endif +static int fake_signal(void); diff --git a/patch/include.c b/patch/include.c index 77abf89..47136f2 100644 --- a/patch/include.c +++ b/patch/include.c @@ -164,6 +164,9 @@ #if TAGGRID_PATCH #include "taggrid.c" #endif +#if TAGOTHERMONITOR_PATCH +#include "tagothermonitor.c" +#endif #if TAGSWAPMON_PATCH #include "tagswapmon.c" #endif @@ -245,4 +248,4 @@ #endif #if TILE_LAYOUT #include "tile.c" -#endif \ No newline at end of file +#endif diff --git a/patch/include.h b/patch/include.h index 93442f1..dca2120 100644 --- a/patch/include.h +++ b/patch/include.h @@ -164,6 +164,9 @@ #if TAGGRID_PATCH #include "taggrid.h" #endif +#if TAGOTHERMONITOR_PATCH +#include "tagothermonitor.h" +#endif #if TAGSWAPMON_PATCH #include "tagswapmon.h" #endif @@ -239,4 +242,4 @@ #endif #if TILE_LAYOUT #include "tile.h" -#endif \ No newline at end of file +#endif diff --git a/patch/tagothermonitor.c b/patch/tagothermonitor.c new file mode 100644 index 0000000..6f39212 --- /dev/null +++ b/patch/tagothermonitor.c @@ -0,0 +1,29 @@ +void +tagnextmon(const Arg *arg) +{ + tagothermon(arg, 1); +} + +void +tagprevmon(const Arg *arg) +{ + tagothermon(arg, -1); +} + +void +tagothermon(const Arg *arg, int dir) +{ + Client *sel; + Monitor *newmon; + + if (!selmon->sel || !mons->next) + return; + sel = selmon->sel; + newmon = dirtomon(dir); + sendmon(sel, newmon); + if (arg->ui & TAGMASK) { + sel->tags = arg->ui & TAGMASK; + focus(NULL); + arrange(newmon); + } +} diff --git a/patch/tagothermonitor.h b/patch/tagothermonitor.h new file mode 100644 index 0000000..44258bc --- /dev/null +++ b/patch/tagothermonitor.h @@ -0,0 +1,3 @@ +static void tagnextmon(const Arg *arg); +static void tagprevmon(const Arg *arg); +static void tagothermon(const Arg *arg, int dir); diff --git a/patches.def.h b/patches.def.h index 64dbd1f..d7f4e4b 100644 --- a/patches.def.h +++ b/patches.def.h @@ -681,6 +681,12 @@ */ #define TAGMONFIXFS_PATCH 0 +/* Add functions and keybindings to tag a window to a desired tag on the next (right) + * or previous (left) monitor from the currently selected monitor. + * https://dwm.suckless.org/patches/tagothermonitor/ + */ +#define TAGOTHERMONITOR_PATCH 0 + /* This patch allows you to swap all visible windows on one monitor with those of an * adjacent monitor. * https://github.com/bakkeby/patches/tree/master/dwm/dwm-tagswapmon-6.2.diff