Merge pull request #89 from gx2b/master

Layoutmenu patch
This commit is contained in:
Stein Gunnar Bakkeby 2021-01-22 11:12:04 +01:00 committed by GitHub
commit 1b3a348d5d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 55 additions and 3 deletions

View File

@ -15,6 +15,8 @@ Refer to [https://dwm.suckless.org/](https://dwm.suckless.org/) for details on t
### Changelog:
2021-01-02 - Added the Layoutmenu patch
2020-10-26 - Added the \_NET\_CLIENT\_LIST\_STACKING patch
2020-09-29 - Added the on\_empty\_keys patch (ported from InstantOS)

View File

@ -297,6 +297,10 @@ static char *statuscolors[][ColCount] = {
};
#endif // BAR_POWERLINE_STATUS_PATCH
#if BAR_LAYOUTMENU_PATCH
static const char *layoutmenu_cmd = "layoutmenu.sh";
#endif
#if COOL_AUTOSTART_PATCH
static const char *const autostart[] = {
"st", NULL,
@ -1134,8 +1138,12 @@ static Button buttons[] = {
{ ClkButton, 0, Button1, spawn, {.v = dmenucmd } },
#endif // BAR_STATUSBUTTON_PATCH
{ ClkLtSymbol, 0, Button1, setlayout, {0} },
#if BAR_LAYOUTMENU_PATCH
{ ClkLtSymbol, 0, Button3, layoutmenu, {0} },
#else
{ ClkLtSymbol, 0, Button3, setlayout, {.v = &layouts[2]} },
#if BAR_WINTITLEACTIONS_PATCH
#endif // BAR_LAYOUTMENU_PATCH
#if BAR_WINTITLEACTIONS_PATCH
{ ClkWinTitle, 0, Button1, togglewin, {0} },
{ ClkWinTitle, 0, Button3, showhideclient, {0} },
#endif // BAR_WINTITLEACTIONS_PATCH

18
patch/bar_layoutmenu.c Normal file
View File

@ -0,0 +1,18 @@
void
layoutmenu(const Arg *arg) {
FILE *p;
char c[3], *s;
int i;
if (!(p = popen(layoutmenu_cmd, "r")))
return;
s = fgets(c, sizeof(c), p);
pclose(p);
if (!s || *s == '\0' || c == '\0')
return;
i = atoi(c);
setlayout(&((Arg) { .v = &layouts[i] }));
}

1
patch/bar_layoutmenu.h Normal file
View File

@ -0,0 +1 @@
static void layoutmenu(const Arg *arg);

View File

@ -83,6 +83,9 @@
#if BAR_WINTITLEACTIONS_PATCH
#include "bar_wintitleactions.c"
#endif
#if BAR_LAYOUTMENU_PATCH
#include "bar_layoutmenu.c"
#endif
/* Other patches */
#if ASPECTRESIZE_PATCH
@ -328,4 +331,4 @@
#endif
#if TILE_LAYOUT
#include "layout_tile.c"
#endif
#endif

View File

@ -80,6 +80,9 @@
#if BAR_WINTITLEACTIONS_PATCH
#include "bar_wintitleactions.h"
#endif
#if BAR_LAYOUTMENU_PATCH
#include "bar_layoutmenu.h"
#endif
/* Other patches */
#if ASPECTRESIZE_PATCH
@ -318,4 +321,4 @@
#endif
#if TILE_LAYOUT
#include "layout_tile.h"
#endif
#endif

8
patch/layoutmenu.sh Executable file
View File

@ -0,0 +1,8 @@
#!/bin/sh
cat <<EOF | xmenu
[]= Tiled Layout 0
><> Floating Layout 1
[M] Monocle Layout 2
EOF

View File

@ -42,6 +42,15 @@
*/
#define BAR_FLEXWINTITLE_PATCH 0
/* This patch adds a context menu for layout switching.
* - xmenu needs to be installed.
* - Edit layoutmenu.sh with the installed layouts and with correct indexes.
* - Place layoutmenu.sh in PATH.
* - The text of the menu items is for display only. Name them however you want.
* https://dwm.suckless.org/patches/layoutmenu/
*/
#define BAR_LAYOUTMENU_PATCH 0
/* Show layout symbol in bar */
#define BAR_LTSYMBOL_PATCH 1