Merge remote-tracking branch 'upstream/master'
This commit is contained in:
		@@ -19,6 +19,8 @@ Browsing patches? There is a [map of patches](https://coggle.it/diagram/X9IiSSM6
 | 
			
		||||
 | 
			
		||||
### Changelog:
 | 
			
		||||
 | 
			
		||||
2024-07-11 - Added variant of the launcher patch
 | 
			
		||||
 | 
			
		||||
2024-01-31 - Added the placedir patch
 | 
			
		||||
 | 
			
		||||
2023-12-22 - Added the do-not-die-on-color-allocation-failure patch
 | 
			
		||||
@@ -522,6 +524,9 @@ Browsing patches? There is a [map of patches](https://coggle.it/diagram/X9IiSSM6
 | 
			
		||||
   - [killunsel](https://dwm.suckless.org/patches/killunsel/)
 | 
			
		||||
      - kills all visible clients that are not selected (only the selected client will remain)
 | 
			
		||||
 | 
			
		||||
   - [launcher](https://dwm.suckless.org/patches/launcher/)
 | 
			
		||||
      - adds buttons to the bar that can be used to launch applications
 | 
			
		||||
 | 
			
		||||
   - [~leftlayout~](http://dwm.suckless.org/patches/leftlayout/)
 | 
			
		||||
      - ~moves the layout symbol in the status bar to the left hand side~
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										45
									
								
								README.org
									
									
									
									
									
								
							
							
						
						
									
										45
									
								
								README.org
									
									
									
									
									
								
							@@ -19,6 +19,7 @@
 | 
			
		||||
    - [[#dwm-blocks][DWM Blocks]]
 | 
			
		||||
    - [[#fancy-bar][Fancy Bar]]
 | 
			
		||||
    - [[#flex-win-title][Flex Win Title]]
 | 
			
		||||
    - [[#bar-launcher][Bar Launcher]]
 | 
			
		||||
    - [[#layout-menu][Layout Menu]]
 | 
			
		||||
    - [[#layout-symbol][Layout Symbol]]
 | 
			
		||||
    - [[#powerline][Powerline]]
 | 
			
		||||
@@ -198,6 +199,7 @@
 | 
			
		||||
  - [[#make-config][Make Config]]
 | 
			
		||||
  - [[#makefile][Makefile]]
 | 
			
		||||
- [[#dwm-configuration][DWM Configuration]]
 | 
			
		||||
  - [[#helper-macros-for-spawning-commands][Helper Macros for Spawning Commands]]
 | 
			
		||||
  - [[#appearance][Appearance]]
 | 
			
		||||
  - [[#indicators][Indicators]]
 | 
			
		||||
  - [[#colors][Colors]]
 | 
			
		||||
@@ -209,6 +211,7 @@
 | 
			
		||||
    - [[#set-colors][Set Colors]]
 | 
			
		||||
    - [[#powerline-1][Powerline]]
 | 
			
		||||
  - [[#layout-menu-1][Layout Menu]]
 | 
			
		||||
  - [[#bar-launcher-1][Bar Launcher]]
 | 
			
		||||
  - [[#autostart][Autostart]]
 | 
			
		||||
  - [[#scratchpads][Scratchpads]]
 | 
			
		||||
  - [[#tags-1][Tags]]
 | 
			
		||||
@@ -309,6 +312,8 @@ Browsing patches? There is a [[https://coggle.it/diagram/X9IiSSM6PTWOM9Wz][map o
 | 
			
		||||
 | 
			
		||||
** Changelog
 | 
			
		||||
 | 
			
		||||
2024-07-11 - Added variant of the launcher patch
 | 
			
		||||
 | 
			
		||||
2024-01-31 - Added the placedir patch
 | 
			
		||||
 | 
			
		||||
2023-12-22 - Added the do-not-die-on-color-allocation-failure patch
 | 
			
		||||
@@ -771,6 +776,9 @@ Browsing patches? There is a [[https://coggle.it/diagram/X9IiSSM6PTWOM9Wz][map o
 | 
			
		||||
   - [[https://dwm.suckless.org/patches/killunsel/][killunsel]]
 | 
			
		||||
     - kills all visible clients that are not selected (only the selected client will remain)
 | 
			
		||||
 | 
			
		||||
   - [[https://dwm.suckless.org/patches/launcher/][launcher]]
 | 
			
		||||
     - adds buttons to the bar that can be used to launch applications
 | 
			
		||||
 | 
			
		||||
   - +[[http://dwm.suckless.org/patches/leftlayout/][leftlayout]]+
 | 
			
		||||
     - +moves the layout symbol in the status bar to the left hand side+
 | 
			
		||||
 | 
			
		||||
@@ -1210,6 +1218,16 @@ Being an evolution of the bartabgroups patch the flexwintitle patch specifically
 | 
			
		||||
#define BAR_FLEXWINTITLE_PATCH 0
 | 
			
		||||
#+END_SRC
 | 
			
		||||
 | 
			
		||||
*** Bar Launcher
 | 
			
		||||
 | 
			
		||||
Adds buttons to the bar that can be used to launch applications.
 | 
			
		||||
 | 
			
		||||
https://dwm.suckless.org/patches/launcher/
 | 
			
		||||
 | 
			
		||||
#+BEGIN_SRC c :tangle patches.def.h
 | 
			
		||||
#define BAR_LAUNCHER_PATCH 0
 | 
			
		||||
#+END_SRC
 | 
			
		||||
 | 
			
		||||
*** Layout Menu
 | 
			
		||||
 | 
			
		||||
This patch adds a context menu for layout switching.
 | 
			
		||||
@@ -3677,6 +3695,13 @@ uninstall:
 | 
			
		||||
 | 
			
		||||
* DWM Configuration
 | 
			
		||||
 | 
			
		||||
** Helper Macros for Spawning Commands
 | 
			
		||||
 | 
			
		||||
#+BEGIN_SRC c :tangle config.def.h
 | 
			
		||||
#define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } }
 | 
			
		||||
#define CMD(...)   { .v = (const char*[]){ __VA_ARGS__, NULL } }
 | 
			
		||||
#+END_SRC
 | 
			
		||||
 | 
			
		||||
** Appearance
 | 
			
		||||
 | 
			
		||||
#+BEGIN_SRC c :tangle config.def.h
 | 
			
		||||
@@ -4212,6 +4237,18 @@ static const char *layoutmenu_cmd = "layoutmenu.sh";
 | 
			
		||||
#endif
 | 
			
		||||
#+END_SRC
 | 
			
		||||
 | 
			
		||||
** Bar Launcher
 | 
			
		||||
 | 
			
		||||
#+BEGIN_SRC c :tangle config.def.h
 | 
			
		||||
#if BAR_LAUNCHER_PATCH
 | 
			
		||||
static const Launcher launchers[] = {
 | 
			
		||||
	/* icon to display      command        */
 | 
			
		||||
	{ "surf",               CMD("surf", "duckduckgo.com") },
 | 
			
		||||
};
 | 
			
		||||
#endif // BAR_LAUNCHER_PATCH
 | 
			
		||||
#+END_SRC
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
** Autostart
 | 
			
		||||
 | 
			
		||||
#+BEGIN_SRC c :tangle config.def.h
 | 
			
		||||
@@ -4431,6 +4468,9 @@ static const BarRule barrules[] = {
 | 
			
		||||
        #if BAR_STATUSBUTTON_PATCH
 | 
			
		||||
        { -1,        0,     BAR_ALIGN_LEFT,   width_stbutton,           draw_stbutton,          click_stbutton,          NULL,                    "statusbutton" },
 | 
			
		||||
        #endif // BAR_STATUSBUTTON_PATCH
 | 
			
		||||
        #if BAR_LAUNCHER_PATCH
 | 
			
		||||
        { -1,        0,     BAR_ALIGN_LEFT,   width_launcher,           draw_launcher,          click_launcher,          NULL,                    "launcher" },
 | 
			
		||||
        #endif // BAR_LAUNCHER_PATCH
 | 
			
		||||
        #if BAR_POWERLINE_TAGS_PATCH
 | 
			
		||||
        {  0,        0,     BAR_ALIGN_LEFT,   width_pwrl_tags,          draw_pwrl_tags,         click_pwrl_tags,         hover_pwrl_tags,         "powerline_tags" },
 | 
			
		||||
        #endif // BAR_POWERLINE_TAGS_PATCH
 | 
			
		||||
@@ -4767,11 +4807,6 @@ static const char *xkb_layouts[]  = {
 | 
			
		||||
#endif // BAR_HOLDBAR_PATCH
 | 
			
		||||
#+END_SRC
 | 
			
		||||
 | 
			
		||||
#+BEGIN_SRC c :tangle config.def.h
 | 
			
		||||
/* helper for spawning shell commands in the pre dwm-5.0 fashion */
 | 
			
		||||
#define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } }
 | 
			
		||||
#+END_SRC
 | 
			
		||||
 | 
			
		||||
#+BEGIN_SRC c :tangle config.def.h
 | 
			
		||||
#if !NODMENU_PATCH
 | 
			
		||||
static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										16
									
								
								config.def.h
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								config.def.h
									
									
									
									
									
								
							@@ -1,3 +1,6 @@
 | 
			
		||||
#define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } }
 | 
			
		||||
#define CMD(...)   { .v = (const char*[]){ __VA_ARGS__, NULL } }
 | 
			
		||||
 | 
			
		||||
#if ROUNDED_CORNERS_PATCH
 | 
			
		||||
static const unsigned int borderpx       = 0;   /* border pixel of windows */
 | 
			
		||||
static const int corner_radius           = 10;
 | 
			
		||||
@@ -425,6 +428,13 @@ static char *statuscolors[][ColCount] = {
 | 
			
		||||
static const char *layoutmenu_cmd = "layoutmenu.sh";
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if BAR_LAUNCHER_PATCH
 | 
			
		||||
static const Launcher launchers[] = {
 | 
			
		||||
	/* icon to display      command        */
 | 
			
		||||
	{ "surf",               CMD("surf", "duckduckgo.com") },
 | 
			
		||||
};
 | 
			
		||||
#endif // BAR_LAUNCHER_PATCH
 | 
			
		||||
 | 
			
		||||
#if COOL_AUTOSTART_PATCH
 | 
			
		||||
static const char *const autostart[] = {
 | 
			
		||||
        "st", NULL,
 | 
			
		||||
@@ -553,6 +563,9 @@ static const BarRule barrules[] = {
 | 
			
		||||
        #if BAR_STATUSBUTTON_PATCH
 | 
			
		||||
        { -1,        0,     BAR_ALIGN_LEFT,   width_stbutton,           draw_stbutton,          click_stbutton,          NULL,                    "statusbutton" },
 | 
			
		||||
        #endif // BAR_STATUSBUTTON_PATCH
 | 
			
		||||
        #if BAR_LAUNCHER_PATCH
 | 
			
		||||
        { -1,        0,     BAR_ALIGN_LEFT,   width_launcher,           draw_launcher,          click_launcher,          NULL,                    "launcher" },
 | 
			
		||||
        #endif // BAR_LAUNCHER_PATCH
 | 
			
		||||
        #if BAR_POWERLINE_TAGS_PATCH
 | 
			
		||||
        {  0,        0,     BAR_ALIGN_LEFT,   width_pwrl_tags,          draw_pwrl_tags,         click_pwrl_tags,         hover_pwrl_tags,         "powerline_tags" },
 | 
			
		||||
        #endif // BAR_POWERLINE_TAGS_PATCH
 | 
			
		||||
@@ -860,9 +873,6 @@ static const char *xkb_layouts[]  = {
 | 
			
		||||
#define HOLDKEY 0 // replace 0 with the keysym to activate holdbar
 | 
			
		||||
#endif // BAR_HOLDBAR_PATCH
 | 
			
		||||
 | 
			
		||||
/* helper for spawning shell commands in the pre dwm-5.0 fashion */
 | 
			
		||||
#define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } }
 | 
			
		||||
 | 
			
		||||
#if !NODMENU_PATCH
 | 
			
		||||
static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */
 | 
			
		||||
#endif // NODMENU_PATCH
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1
									
								
								dwm.c
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								dwm.c
									
									
									
									
									
								
							@@ -4102,6 +4102,7 @@ spawn(const Arg *arg)
 | 
			
		||||
	if (arg->v == dmenucmd)
 | 
			
		||||
		dmenumon[0] = '0' + selmon->num;
 | 
			
		||||
	#endif // NODMENU_PATCH
 | 
			
		||||
fprintf(stderr, "spawn running cmd:\n");
 | 
			
		||||
 | 
			
		||||
	#if RIODRAW_PATCH
 | 
			
		||||
	if ((pid = fork()) == 0)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										81
									
								
								patch/bar_launcher.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								patch/bar_launcher.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,81 @@
 | 
			
		||||
#if BAR_STATUS2D_PATCH
 | 
			
		||||
int
 | 
			
		||||
width_launcher(Bar *bar, BarArg *a)
 | 
			
		||||
{
 | 
			
		||||
	int i, x = 0;
 | 
			
		||||
 | 
			
		||||
	for (i = 0; i < LENGTH(launchers); i++) {
 | 
			
		||||
		x += status2dtextlength(launchers[i].name) + lrpad;
 | 
			
		||||
	}
 | 
			
		||||
	return x;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
draw_launcher(Bar *bar, BarArg *a)
 | 
			
		||||
{
 | 
			
		||||
	int i, w = 0;;
 | 
			
		||||
 | 
			
		||||
	for (i = 0; i < LENGTH(launchers); i++) {
 | 
			
		||||
		w = status2dtextlength(launchers[i].name);
 | 
			
		||||
		drawstatusbar(a, launchers[i].name);
 | 
			
		||||
		a->x += w + lrpad;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return a->x ;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
click_launcher(Bar *bar, Arg *arg, BarArg *a)
 | 
			
		||||
{
 | 
			
		||||
	int i, x = 0;
 | 
			
		||||
 | 
			
		||||
	for (i = 0; i < LENGTH(launchers); i++) {
 | 
			
		||||
		x += status2dtextlength(launchers[i].name) + lrpad;
 | 
			
		||||
		if (a->x < x) {
 | 
			
		||||
		    spawn(&launchers[i].command);
 | 
			
		||||
		    break;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return -1;
 | 
			
		||||
}
 | 
			
		||||
#else
 | 
			
		||||
int
 | 
			
		||||
width_launcher(Bar *bar, BarArg *a)
 | 
			
		||||
{
 | 
			
		||||
	int i, x = 0;
 | 
			
		||||
 | 
			
		||||
	for (i = 0; i < LENGTH(launchers); i++) {
 | 
			
		||||
		x += TEXTW(launchers[i].name);
 | 
			
		||||
	}
 | 
			
		||||
	return x;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
draw_launcher(Bar *bar, BarArg *a)
 | 
			
		||||
{
 | 
			
		||||
	int i, x = 0, w = 0;;
 | 
			
		||||
 | 
			
		||||
	for (i = 0; i < LENGTH(launchers); i++) {
 | 
			
		||||
		w = TEXTW(launchers[i].name);
 | 
			
		||||
		drw_text(drw, x, 0, w, bh, lrpad / 2, launchers[i].name, 0, True);
 | 
			
		||||
		x += w;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return x;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
click_launcher(Bar *bar, Arg *arg, BarArg *a)
 | 
			
		||||
{
 | 
			
		||||
	int i, x = 0;
 | 
			
		||||
 | 
			
		||||
	for (i = 0; i < LENGTH(launchers); i++) {
 | 
			
		||||
		x += TEXTW(launchers[i].name);
 | 
			
		||||
		if (a->x < x) {
 | 
			
		||||
		    spawn(&launchers[i].command);
 | 
			
		||||
		    break;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return -1;
 | 
			
		||||
}
 | 
			
		||||
#endif // BAR_STATUS2D_PATCH
 | 
			
		||||
							
								
								
									
										8
									
								
								patch/bar_launcher.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								patch/bar_launcher.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
typedef struct {
 | 
			
		||||
	char* name;
 | 
			
		||||
	const Arg command;
 | 
			
		||||
} Launcher;
 | 
			
		||||
 | 
			
		||||
static int width_launcher(Bar *bar, BarArg *a);
 | 
			
		||||
static int draw_launcher(Bar *bar, BarArg *a);
 | 
			
		||||
static int click_launcher(Bar *bar, Arg *arg, BarArg *a);
 | 
			
		||||
@@ -15,4 +15,3 @@ click_ltsymbol(Bar *bar, Arg *arg, BarArg *a)
 | 
			
		||||
{
 | 
			
		||||
	return ClkLtSymbol;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,3 @@
 | 
			
		||||
static int width_ltsymbol(Bar *bar, BarArg *a);
 | 
			
		||||
static int draw_ltsymbol(Bar *bar, BarArg *a);
 | 
			
		||||
static int click_ltsymbol(Bar *bar, Arg *arg, BarArg *a);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -96,6 +96,7 @@ drawstatusbar(BarArg *a, char* stext)
 | 
			
		||||
	#else
 | 
			
		||||
	memcpy(text, stext, len);
 | 
			
		||||
	#endif // BAR_STATUSCMD_PATCH
 | 
			
		||||
	text[len] = '\0';
 | 
			
		||||
 | 
			
		||||
	x += lrpad / 2;
 | 
			
		||||
	drw_setscheme(drw, scheme[LENGTH(colors)]);
 | 
			
		||||
 
 | 
			
		||||
@@ -21,6 +21,9 @@
 | 
			
		||||
#if COMBO_PATCH
 | 
			
		||||
#include "combo.c"
 | 
			
		||||
#endif
 | 
			
		||||
#if BAR_LAUNCHER_PATCH
 | 
			
		||||
#include "bar_launcher.c"
 | 
			
		||||
#endif
 | 
			
		||||
#if BAR_LTSYMBOL_PATCH
 | 
			
		||||
#include "bar_ltsymbol.c"
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -24,6 +24,9 @@
 | 
			
		||||
#if BAR_HOLDBAR_PATCH
 | 
			
		||||
#include "bar_holdbar.h"
 | 
			
		||||
#endif
 | 
			
		||||
#if BAR_LAUNCHER_PATCH
 | 
			
		||||
#include "bar_launcher.h"
 | 
			
		||||
#endif
 | 
			
		||||
#if BAR_LTSYMBOL_PATCH
 | 
			
		||||
#include "bar_ltsymbol.h"
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -8,6 +8,8 @@
 | 
			
		||||
 | 
			
		||||
#define BAR_FLEXWINTITLE_PATCH 0
 | 
			
		||||
 | 
			
		||||
#define BAR_LAUNCHER_PATCH 0
 | 
			
		||||
 | 
			
		||||
#define BAR_LAYOUTMENU_PATCH 0
 | 
			
		||||
 | 
			
		||||
#define BAR_LTSYMBOL_PATCH 0
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user