Compare commits
14 Commits
ce57068ced
...
master
Author | SHA1 | Date | |
---|---|---|---|
|
d8b91c7e8b | ||
|
d0f7c11925 | ||
|
36cbcf53a2 | ||
|
bbfe23ff81 | ||
|
f4258747be | ||
|
3bc91e187c | ||
|
a10bfa96db | ||
|
f67b8be209 | ||
|
df75e113a9 | ||
|
b4b19e3a4c | ||
|
1ea3ac44ee | ||
|
8d754cd644 | ||
|
c9654817f8 | ||
|
c1e9e0b035 |
@@ -1,4 +1,4 @@
|
|||||||
This dwm 6.5 (061e9fe, 2024-03-19) side project has a different take on dwm patching. It uses preprocessor directives to decide whether or not to include a patch during build time. Essentially this means that this build, for better or worse, contains both the patched _and_ the original code. The aim being that you can select which patches to include and the build will contain that code and nothing more. Due to the complexity of some of the patches dwm-flexipatch has diverged from mainstream dwm by making some core patches non-optional for maintenance reasons. For the classic dwm-flexipatch build refer to branch [dwm-flexipatch-1.0](https://github.com/bakkeby/dwm-flexipatch/tree/dwm-flexipatch-1.0).
|
This dwm 6.5 (5687f46, 2024-06-08) side project has a different take on dwm patching. It uses preprocessor directives to decide whether or not to include a patch during build time. Essentially this means that this build, for better or worse, contains both the patched _and_ the original code. The aim being that you can select which patches to include and the build will contain that code and nothing more. Due to the complexity of some of the patches dwm-flexipatch has diverged from mainstream dwm by making some core patches non-optional for maintenance reasons. For the classic dwm-flexipatch build refer to branch [dwm-flexipatch-1.0](https://github.com/bakkeby/dwm-flexipatch/tree/dwm-flexipatch-1.0).
|
||||||
|
|
||||||
For example to include the `alpha` patch then you would only need to flip this setting from 0 to 1 in [patches.h](https://github.com/bakkeby/dwm-flexipatch/blob/master/patches.def.h):
|
For example to include the `alpha` patch then you would only need to flip this setting from 0 to 1 in [patches.h](https://github.com/bakkeby/dwm-flexipatch/blob/master/patches.def.h):
|
||||||
```c
|
```c
|
||||||
@@ -19,6 +19,8 @@ Browsing patches? There is a [map of patches](https://coggle.it/diagram/X9IiSSM6
|
|||||||
|
|
||||||
### Changelog:
|
### Changelog:
|
||||||
|
|
||||||
|
2024-07-11 - Added variant of the launcher patch
|
||||||
|
|
||||||
2024-01-31 - Added the placedir patch
|
2024-01-31 - Added the placedir patch
|
||||||
|
|
||||||
2023-12-22 - Added the do-not-die-on-color-allocation-failure 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/)
|
- [killunsel](https://dwm.suckless.org/patches/killunsel/)
|
||||||
- kills all visible clients that are not selected (only the selected client will remain)
|
- 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/)
|
- [~leftlayout~](http://dwm.suckless.org/patches/leftlayout/)
|
||||||
- ~moves the layout symbol in the status bar to the left hand side~
|
- ~moves the layout symbol in the status bar to the left hand side~
|
||||||
|
|
||||||
|
48
README.org
48
README.org
@@ -19,6 +19,7 @@
|
|||||||
- [[#dwm-blocks][DWM Blocks]]
|
- [[#dwm-blocks][DWM Blocks]]
|
||||||
- [[#fancy-bar][Fancy Bar]]
|
- [[#fancy-bar][Fancy Bar]]
|
||||||
- [[#flex-win-title][Flex Win Title]]
|
- [[#flex-win-title][Flex Win Title]]
|
||||||
|
- [[#bar-launcher][Bar Launcher]]
|
||||||
- [[#layout-menu][Layout Menu]]
|
- [[#layout-menu][Layout Menu]]
|
||||||
- [[#layout-symbol][Layout Symbol]]
|
- [[#layout-symbol][Layout Symbol]]
|
||||||
- [[#powerline][Powerline]]
|
- [[#powerline][Powerline]]
|
||||||
@@ -198,6 +199,7 @@
|
|||||||
- [[#make-config][Make Config]]
|
- [[#make-config][Make Config]]
|
||||||
- [[#makefile][Makefile]]
|
- [[#makefile][Makefile]]
|
||||||
- [[#dwm-configuration][DWM Configuration]]
|
- [[#dwm-configuration][DWM Configuration]]
|
||||||
|
- [[#helper-macros-for-spawning-commands][Helper Macros for Spawning Commands]]
|
||||||
- [[#appearance][Appearance]]
|
- [[#appearance][Appearance]]
|
||||||
- [[#indicators][Indicators]]
|
- [[#indicators][Indicators]]
|
||||||
- [[#colors][Colors]]
|
- [[#colors][Colors]]
|
||||||
@@ -209,6 +211,7 @@
|
|||||||
- [[#set-colors][Set Colors]]
|
- [[#set-colors][Set Colors]]
|
||||||
- [[#powerline-1][Powerline]]
|
- [[#powerline-1][Powerline]]
|
||||||
- [[#layout-menu-1][Layout Menu]]
|
- [[#layout-menu-1][Layout Menu]]
|
||||||
|
- [[#bar-launcher-1][Bar Launcher]]
|
||||||
- [[#autostart][Autostart]]
|
- [[#autostart][Autostart]]
|
||||||
- [[#scratchpads][Scratchpads]]
|
- [[#scratchpads][Scratchpads]]
|
||||||
- [[#tags-1][Tags]]
|
- [[#tags-1][Tags]]
|
||||||
@@ -289,7 +292,7 @@ exec dwm
|
|||||||
|
|
||||||
* dwm flexipatch
|
* dwm flexipatch
|
||||||
|
|
||||||
This dwm 6.5 (061e9fe, 2024-03-19) side project has a different take on dwm patching. It uses preprocessor directives to decide whether or not to include a patch during build time. Essentially this means that this build, for better or worse, contains both the patched _and_ the original code. The aim being that you can select which patches to include and the build will contain that code and nothing more. Due to the complexity of some of the patches dwm-flexipatch has diverged from mainstream dwm by making some core patches non-optional for maintenance reasons. For the classic dwm-flexipatch build refer to branch [[https://github.com/bakkeby/dwm-flexipatch/tree/dwm-flexipatch-1.0][dwm-flexipatch-1.0]].
|
This dwm 6.5 (5687f46, 2024-06-08) side project has a different take on dwm patching. It uses preprocessor directives to decide whether or not to include a patch during build time. Essentially this means that this build, for better or worse, contains both the patched _and_ the original code. The aim being that you can select which patches to include and the build will contain that code and nothing more. Due to the complexity of some of the patches dwm-flexipatch has diverged from mainstream dwm by making some core patches non-optional for maintenance reasons. For the classic dwm-flexipatch build refer to branch [[https://github.com/bakkeby/dwm-flexipatch/tree/dwm-flexipatch-1.0][dwm-flexipatch-1.0]].
|
||||||
|
|
||||||
For example to include the ~alpha~ patch then you would only need to flip this setting from 0 to 1 in [[https://github.com/bakkeby/dwm-flexipatch/blob/master/patches.def.h][patches.h]]:
|
For example to include the ~alpha~ patch then you would only need to flip this setting from 0 to 1 in [[https://github.com/bakkeby/dwm-flexipatch/blob/master/patches.def.h][patches.h]]:
|
||||||
|
|
||||||
@@ -309,6 +312,8 @@ Browsing patches? There is a [[https://coggle.it/diagram/X9IiSSM6PTWOM9Wz][map o
|
|||||||
|
|
||||||
** Changelog
|
** Changelog
|
||||||
|
|
||||||
|
2024-07-11 - Added variant of the launcher patch
|
||||||
|
|
||||||
2024-01-31 - Added the placedir patch
|
2024-01-31 - Added the placedir patch
|
||||||
|
|
||||||
2023-12-22 - Added the do-not-die-on-color-allocation-failure 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]]
|
- [[https://dwm.suckless.org/patches/killunsel/][killunsel]]
|
||||||
- kills all visible clients that are not selected (only the selected client will remain)
|
- 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]]+
|
- +[[http://dwm.suckless.org/patches/leftlayout/][leftlayout]]+
|
||||||
- +moves the layout symbol in the status bar to the left hand side+
|
- +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
|
#define BAR_FLEXWINTITLE_PATCH 0
|
||||||
#+END_SRC
|
#+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
|
*** Layout Menu
|
||||||
|
|
||||||
This patch adds a context menu for layout switching.
|
This patch adds a context menu for layout switching.
|
||||||
@@ -3677,6 +3695,13 @@ uninstall:
|
|||||||
|
|
||||||
* DWM Configuration
|
* 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
|
** Appearance
|
||||||
|
|
||||||
#+BEGIN_SRC c :tangle config.def.h
|
#+BEGIN_SRC c :tangle config.def.h
|
||||||
@@ -4212,6 +4237,18 @@ static const char *layoutmenu_cmd = "layoutmenu.sh";
|
|||||||
#endif
|
#endif
|
||||||
#+END_SRC
|
#+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
|
** Autostart
|
||||||
|
|
||||||
#+BEGIN_SRC c :tangle config.def.h
|
#+BEGIN_SRC c :tangle config.def.h
|
||||||
@@ -4364,6 +4401,7 @@ static const Rule rules[] = {
|
|||||||
RULE(.class = "PrismLauncher", .tags = 1 << 7)
|
RULE(.class = "PrismLauncher", .tags = 1 << 7)
|
||||||
RULE(.class = "antimicrox", .tags = 1 << 7)
|
RULE(.class = "antimicrox", .tags = 1 << 7)
|
||||||
RULE(.class = "ProtonUp-Qt", .tags = 1 << 7)
|
RULE(.class = "ProtonUp-Qt", .tags = 1 << 7)
|
||||||
|
RULE(.class = "heroic", .tags = 1 << 7)
|
||||||
RULE(.class = "Thunar", .tags = 1 << 8)
|
RULE(.class = "Thunar", .tags = 1 << 8)
|
||||||
RULE(.class = "Syncthing GTK", .tags = 1 << 8)
|
RULE(.class = "Syncthing GTK", .tags = 1 << 8)
|
||||||
RULE(.class = "Nyrna", .tags = 1 << 8)
|
RULE(.class = "Nyrna", .tags = 1 << 8)
|
||||||
@@ -4431,6 +4469,9 @@ static const BarRule barrules[] = {
|
|||||||
#if BAR_STATUSBUTTON_PATCH
|
#if BAR_STATUSBUTTON_PATCH
|
||||||
{ -1, 0, BAR_ALIGN_LEFT, width_stbutton, draw_stbutton, click_stbutton, NULL, "statusbutton" },
|
{ -1, 0, BAR_ALIGN_LEFT, width_stbutton, draw_stbutton, click_stbutton, NULL, "statusbutton" },
|
||||||
#endif // BAR_STATUSBUTTON_PATCH
|
#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
|
#if BAR_POWERLINE_TAGS_PATCH
|
||||||
{ 0, 0, BAR_ALIGN_LEFT, width_pwrl_tags, draw_pwrl_tags, click_pwrl_tags, hover_pwrl_tags, "powerline_tags" },
|
{ 0, 0, BAR_ALIGN_LEFT, width_pwrl_tags, draw_pwrl_tags, click_pwrl_tags, hover_pwrl_tags, "powerline_tags" },
|
||||||
#endif // BAR_POWERLINE_TAGS_PATCH
|
#endif // BAR_POWERLINE_TAGS_PATCH
|
||||||
@@ -4767,11 +4808,6 @@ static const char *xkb_layouts[] = {
|
|||||||
#endif // BAR_HOLDBAR_PATCH
|
#endif // BAR_HOLDBAR_PATCH
|
||||||
#+END_SRC
|
#+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
|
#+BEGIN_SRC c :tangle config.def.h
|
||||||
#if !NODMENU_PATCH
|
#if !NODMENU_PATCH
|
||||||
static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */
|
static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */
|
||||||
|
17
config.def.h
17
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
|
#if ROUNDED_CORNERS_PATCH
|
||||||
static const unsigned int borderpx = 0; /* border pixel of windows */
|
static const unsigned int borderpx = 0; /* border pixel of windows */
|
||||||
static const int corner_radius = 10;
|
static const int corner_radius = 10;
|
||||||
@@ -425,6 +428,13 @@ static char *statuscolors[][ColCount] = {
|
|||||||
static const char *layoutmenu_cmd = "layoutmenu.sh";
|
static const char *layoutmenu_cmd = "layoutmenu.sh";
|
||||||
#endif
|
#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
|
#if COOL_AUTOSTART_PATCH
|
||||||
static const char *const autostart[] = {
|
static const char *const autostart[] = {
|
||||||
"st", NULL,
|
"st", NULL,
|
||||||
@@ -511,6 +521,7 @@ static const Rule rules[] = {
|
|||||||
RULE(.class = "PrismLauncher", .tags = 1 << 7)
|
RULE(.class = "PrismLauncher", .tags = 1 << 7)
|
||||||
RULE(.class = "antimicrox", .tags = 1 << 7)
|
RULE(.class = "antimicrox", .tags = 1 << 7)
|
||||||
RULE(.class = "ProtonUp-Qt", .tags = 1 << 7)
|
RULE(.class = "ProtonUp-Qt", .tags = 1 << 7)
|
||||||
|
RULE(.class = "heroic", .tags = 1 << 7)
|
||||||
RULE(.class = "Thunar", .tags = 1 << 8)
|
RULE(.class = "Thunar", .tags = 1 << 8)
|
||||||
RULE(.class = "Syncthing GTK", .tags = 1 << 8)
|
RULE(.class = "Syncthing GTK", .tags = 1 << 8)
|
||||||
RULE(.class = "Nyrna", .tags = 1 << 8)
|
RULE(.class = "Nyrna", .tags = 1 << 8)
|
||||||
@@ -553,6 +564,9 @@ static const BarRule barrules[] = {
|
|||||||
#if BAR_STATUSBUTTON_PATCH
|
#if BAR_STATUSBUTTON_PATCH
|
||||||
{ -1, 0, BAR_ALIGN_LEFT, width_stbutton, draw_stbutton, click_stbutton, NULL, "statusbutton" },
|
{ -1, 0, BAR_ALIGN_LEFT, width_stbutton, draw_stbutton, click_stbutton, NULL, "statusbutton" },
|
||||||
#endif // BAR_STATUSBUTTON_PATCH
|
#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
|
#if BAR_POWERLINE_TAGS_PATCH
|
||||||
{ 0, 0, BAR_ALIGN_LEFT, width_pwrl_tags, draw_pwrl_tags, click_pwrl_tags, hover_pwrl_tags, "powerline_tags" },
|
{ 0, 0, BAR_ALIGN_LEFT, width_pwrl_tags, draw_pwrl_tags, click_pwrl_tags, hover_pwrl_tags, "powerline_tags" },
|
||||||
#endif // BAR_POWERLINE_TAGS_PATCH
|
#endif // BAR_POWERLINE_TAGS_PATCH
|
||||||
@@ -860,9 +874,6 @@ static const char *xkb_layouts[] = {
|
|||||||
#define HOLDKEY 0 // replace 0 with the keysym to activate holdbar
|
#define HOLDKEY 0 // replace 0 with the keysym to activate holdbar
|
||||||
#endif // BAR_HOLDBAR_PATCH
|
#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
|
#if !NODMENU_PATCH
|
||||||
static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */
|
static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */
|
||||||
#endif // NODMENU_PATCH
|
#endif // NODMENU_PATCH
|
||||||
|
3
dwm.c
3
dwm.c
@@ -3313,7 +3313,6 @@ run(void)
|
|||||||
event_fd, events[i].data.ptr, events[i].data.u32,
|
event_fd, events[i].data.ptr, events[i].data.u32,
|
||||||
events[i].data.u64);
|
events[i].data.u64);
|
||||||
fprintf(stderr, " with events %d\n", events[i].events);
|
fprintf(stderr, " with events %d\n", events[i].events);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4797,7 +4796,7 @@ updatebarpos(Monitor *m)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
updateclientlist()
|
updateclientlist(void)
|
||||||
{
|
{
|
||||||
Client *c;
|
Client *c;
|
||||||
Monitor *m;
|
Monitor *m;
|
||||||
|
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;
|
return ClkLtSymbol;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,4 +1,3 @@
|
|||||||
static int width_ltsymbol(Bar *bar, BarArg *a);
|
static int width_ltsymbol(Bar *bar, BarArg *a);
|
||||||
static int draw_ltsymbol(Bar *bar, BarArg *a);
|
static int draw_ltsymbol(Bar *bar, BarArg *a);
|
||||||
static int click_ltsymbol(Bar *bar, Arg *arg, BarArg *a);
|
static int click_ltsymbol(Bar *bar, Arg *arg, BarArg *a);
|
||||||
|
|
||||||
|
@@ -96,6 +96,7 @@ drawstatusbar(BarArg *a, char* stext)
|
|||||||
#else
|
#else
|
||||||
memcpy(text, stext, len);
|
memcpy(text, stext, len);
|
||||||
#endif // BAR_STATUSCMD_PATCH
|
#endif // BAR_STATUSCMD_PATCH
|
||||||
|
text[len] = '\0';
|
||||||
|
|
||||||
x += lrpad / 2;
|
x += lrpad / 2;
|
||||||
drw_setscheme(drw, scheme[LENGTH(colors)]);
|
drw_setscheme(drw, scheme[LENGTH(colors)]);
|
||||||
|
@@ -94,6 +94,12 @@ draw_systray(Bar *bar, BarArg *a)
|
|||||||
i->mon = bar->mon;
|
i->mon = bar->mon;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if !BAR_ALPHA_PATCH
|
||||||
|
wa.background_pixel = scheme[SchemeNorm][ColBg].pixel;
|
||||||
|
XChangeWindowAttributes(dpy, systray->win, CWBackPixel, &wa);
|
||||||
|
XClearWindow(dpy, systray->win);
|
||||||
|
#endif // BAR_ALPHA_PATCH
|
||||||
|
|
||||||
XMoveResizeWindow(dpy, systray->win, bar->bx + a->x + lrpad / 2, (w ? bar->by + a->y + (a->h - systray->h) / 2: -systray->h), MAX(w, 1), systray->h);
|
XMoveResizeWindow(dpy, systray->win, bar->bx + a->x + lrpad / 2, (w ? bar->by + a->y + (a->h - systray->h) / 2: -systray->h), MAX(w, 1), systray->h);
|
||||||
return w;
|
return w;
|
||||||
}
|
}
|
||||||
|
@@ -21,6 +21,9 @@
|
|||||||
#if COMBO_PATCH
|
#if COMBO_PATCH
|
||||||
#include "combo.c"
|
#include "combo.c"
|
||||||
#endif
|
#endif
|
||||||
|
#if BAR_LAUNCHER_PATCH
|
||||||
|
#include "bar_launcher.c"
|
||||||
|
#endif
|
||||||
#if BAR_LTSYMBOL_PATCH
|
#if BAR_LTSYMBOL_PATCH
|
||||||
#include "bar_ltsymbol.c"
|
#include "bar_ltsymbol.c"
|
||||||
#endif
|
#endif
|
||||||
|
@@ -24,6 +24,9 @@
|
|||||||
#if BAR_HOLDBAR_PATCH
|
#if BAR_HOLDBAR_PATCH
|
||||||
#include "bar_holdbar.h"
|
#include "bar_holdbar.h"
|
||||||
#endif
|
#endif
|
||||||
|
#if BAR_LAUNCHER_PATCH
|
||||||
|
#include "bar_launcher.h"
|
||||||
|
#endif
|
||||||
#if BAR_LTSYMBOL_PATCH
|
#if BAR_LTSYMBOL_PATCH
|
||||||
#include "bar_ltsymbol.h"
|
#include "bar_ltsymbol.h"
|
||||||
#endif
|
#endif
|
||||||
|
@@ -13,6 +13,9 @@ swallow(Client *p, Client *c)
|
|||||||
{
|
{
|
||||||
Client *s;
|
Client *s;
|
||||||
XWindowChanges wc;
|
XWindowChanges wc;
|
||||||
|
#if NOBORDER_PATCH
|
||||||
|
int border_padding = 0;
|
||||||
|
#endif // NOBORDER_PATCH
|
||||||
|
|
||||||
if (c->noswallow > 0 || c->isterminal)
|
if (c->noswallow > 0 || c->isterminal)
|
||||||
return 0;
|
return 0;
|
||||||
@@ -46,9 +49,21 @@ swallow(Client *p, Client *c)
|
|||||||
setfloatinghint(s);
|
setfloatinghint(s);
|
||||||
#endif // BAR_EWMHTAGS_PATCH
|
#endif // BAR_EWMHTAGS_PATCH
|
||||||
|
|
||||||
|
#if NOBORDER_PATCH
|
||||||
|
wc.border_width = p->bw;
|
||||||
|
if (noborder(p)) {
|
||||||
|
wc.border_width = 0;
|
||||||
|
border_padding = p->bw * 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
XConfigureWindow(dpy, p->win, CWBorderWidth, &wc);
|
||||||
|
XMoveResizeWindow(dpy, p->win, s->x, s->y, s->w + border_padding, s->h + border_padding);
|
||||||
|
#else
|
||||||
wc.border_width = p->bw;
|
wc.border_width = p->bw;
|
||||||
XConfigureWindow(dpy, p->win, CWBorderWidth, &wc);
|
XConfigureWindow(dpy, p->win, CWBorderWidth, &wc);
|
||||||
XMoveResizeWindow(dpy, p->win, s->x, s->y, s->w, s->h);
|
XMoveResizeWindow(dpy, p->win, s->x, s->y, s->w, s->h);
|
||||||
|
#endif // NOBORDER_PATCH
|
||||||
|
|
||||||
#if !BAR_FLEXWINTITLE_PATCH
|
#if !BAR_FLEXWINTITLE_PATCH
|
||||||
XSetWindowBorder(dpy, p->win, scheme[SchemeNorm][ColBorder].pixel);
|
XSetWindowBorder(dpy, p->win, scheme[SchemeNorm][ColBorder].pixel);
|
||||||
#endif // BAR_FLEXWINTITLE_PATCH
|
#endif // BAR_FLEXWINTITLE_PATCH
|
||||||
@@ -65,6 +80,9 @@ unswallow(Client *c)
|
|||||||
{
|
{
|
||||||
XWindowChanges wc;
|
XWindowChanges wc;
|
||||||
c->win = c->swallowing->win;
|
c->win = c->swallowing->win;
|
||||||
|
#if NOBORDER_PATCH
|
||||||
|
int border_padding = 0;
|
||||||
|
#endif // NOBORDER_PATCH
|
||||||
|
|
||||||
free(c->swallowing);
|
free(c->swallowing);
|
||||||
c->swallowing = NULL;
|
c->swallowing = NULL;
|
||||||
@@ -80,9 +98,20 @@ unswallow(Client *c)
|
|||||||
arrange(c->mon);
|
arrange(c->mon);
|
||||||
XMapWindow(dpy, c->win);
|
XMapWindow(dpy, c->win);
|
||||||
|
|
||||||
|
#if NOBORDER_PATCH
|
||||||
|
wc.border_width = c->bw;
|
||||||
|
if (noborder(c)) {
|
||||||
|
wc.border_width = 0;
|
||||||
|
border_padding = c->bw * 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
XConfigureWindow(dpy, c->win, CWBorderWidth, &wc);
|
||||||
|
XMoveResizeWindow(dpy, c->win, c->x, c->y, c->w + border_padding, c->h + border_padding);
|
||||||
|
#else
|
||||||
wc.border_width = c->bw;
|
wc.border_width = c->bw;
|
||||||
XConfigureWindow(dpy, c->win, CWBorderWidth, &wc);
|
XConfigureWindow(dpy, c->win, CWBorderWidth, &wc);
|
||||||
XMoveResizeWindow(dpy, c->win, c->x, c->y, c->w, c->h);
|
XMoveResizeWindow(dpy, c->win, c->x, c->y, c->w, c->h);
|
||||||
|
#endif // NOBORDER_PATCH
|
||||||
#if !BAR_FLEXWINTITLE_PATCH
|
#if !BAR_FLEXWINTITLE_PATCH
|
||||||
XSetWindowBorder(dpy, c->win, scheme[SchemeNorm][ColBorder].pixel);
|
XSetWindowBorder(dpy, c->win, scheme[SchemeNorm][ColBorder].pixel);
|
||||||
#endif // BAR_FLEXWINTITLE_PATCH
|
#endif // BAR_FLEXWINTITLE_PATCH
|
||||||
|
@@ -132,6 +132,11 @@ xrdb(const Arg *arg)
|
|||||||
#endif // BAR_ALPHA_PATCH
|
#endif // BAR_ALPHA_PATCH
|
||||||
ColCount
|
ColCount
|
||||||
);
|
);
|
||||||
|
#if BAR_SYSTRAY_PATCH && !BAR_ALPHA_PATCH
|
||||||
|
if (systray) {
|
||||||
|
XMoveWindow(dpy, systray->win, -32000, -32000);
|
||||||
|
}
|
||||||
|
#endif // BAR_SYSTRAY_PATCH
|
||||||
arrange(NULL);
|
arrange(NULL);
|
||||||
focus(NULL);
|
focus(NULL);
|
||||||
}
|
}
|
||||||
|
@@ -8,6 +8,8 @@
|
|||||||
|
|
||||||
#define BAR_FLEXWINTITLE_PATCH 0
|
#define BAR_FLEXWINTITLE_PATCH 0
|
||||||
|
|
||||||
|
#define BAR_LAUNCHER_PATCH 0
|
||||||
|
|
||||||
#define BAR_LAYOUTMENU_PATCH 0
|
#define BAR_LAYOUTMENU_PATCH 0
|
||||||
|
|
||||||
#define BAR_LTSYMBOL_PATCH 0
|
#define BAR_LTSYMBOL_PATCH 0
|
||||||
|
Reference in New Issue
Block a user