Compare commits
27 Commits
510b15c7b8
...
master
Author | SHA1 | Date | |
---|---|---|---|
|
d8b91c7e8b | ||
|
d0f7c11925 | ||
|
36cbcf53a2 | ||
|
bbfe23ff81 | ||
|
f4258747be | ||
|
3bc91e187c | ||
|
a10bfa96db | ||
|
f67b8be209 | ||
|
df75e113a9 | ||
|
b4b19e3a4c | ||
|
1ea3ac44ee | ||
|
8d754cd644 | ||
|
c9654817f8 | ||
|
c1e9e0b035 | ||
|
ce57068ced | ||
|
edb36a3a14 | ||
|
50df892d62 | ||
|
66770cfbcc | ||
|
018bb8eb18 | ||
|
dcd6287f78 | ||
|
8dee563611 | ||
|
d88c08a666 | ||
|
22f2f25a50 | ||
|
f0c6bd28a0 | ||
|
dd1e34dbd6 | ||
|
f925b6c896 | ||
|
0089c14d6e |
@@ -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):
|
||||
```c
|
||||
@@ -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~
|
||||
|
||||
|
150
README.org
150
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]]
|
||||
@@ -289,7 +292,7 @@ exec dwm
|
||||
|
||||
* 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]]:
|
||||
|
||||
@@ -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
|
||||
@@ -4327,6 +4364,7 @@ static const Rule rules[] = {
|
||||
RULE(.wintype = WTYPE "TOOLBAR", .isfloating = 1)
|
||||
RULE(.wintype = WTYPE "SPLASH", .isfloating = 1)
|
||||
RULE(.wintype = WTYPE "NOTIFICATION", .unmanaged = 1) // 1 - the window will be placed above all other windows
|
||||
RULE(.title = "notificationtoasts_11_desktop", .unmanaged = 1) // 1 - the window will be placed above all other windows
|
||||
RULE(.title = "Picture in picture", .isfloating = 1)
|
||||
RULE(.class = "Beeper", .tags = 1 << 0)
|
||||
RULE(.class = "Signal", .tags = 1 << 0)
|
||||
@@ -4349,7 +4387,9 @@ static const Rule rules[] = {
|
||||
RULE(.class = "obs", .tags = 1 << 3)
|
||||
RULE(.class = "kdenlive", .tags = 1 << 3)
|
||||
RULE(.class = "Blender", .tags = 1 << 3)
|
||||
RULE(.title = "GNU Image Manipulation Program", .tags = 1 << 3)
|
||||
RULE(.class = "Vivaldi-stable", .tags = 1 << 4)
|
||||
RULE(.class = "Links", .tags = 1 << 4)
|
||||
RULE(.class = "kitty", .tags = 1 << 5, .isterminal = 1)
|
||||
RULE(.class = "Emacs", .tags = 1 << 6)
|
||||
RULE(.class = "Code", .tags = 1 << 6)
|
||||
@@ -4361,6 +4401,7 @@ static const Rule rules[] = {
|
||||
RULE(.class = "PrismLauncher", .tags = 1 << 7)
|
||||
RULE(.class = "antimicrox", .tags = 1 << 7)
|
||||
RULE(.class = "ProtonUp-Qt", .tags = 1 << 7)
|
||||
RULE(.class = "heroic", .tags = 1 << 7)
|
||||
RULE(.class = "Thunar", .tags = 1 << 8)
|
||||
RULE(.class = "Syncthing GTK", .tags = 1 << 8)
|
||||
RULE(.class = "Nyrna", .tags = 1 << 8)
|
||||
@@ -4428,6 +4469,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
|
||||
@@ -4764,11 +4808,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() */
|
||||
@@ -5919,6 +5958,11 @@ media-playing-overline = ${self.background}
|
||||
tray-background = ${self.background}
|
||||
|
||||
; right
|
||||
system76-power-foreground = ${self.green}
|
||||
system76-power-background = ${self.background}
|
||||
system76-power-underline = ${self.background}
|
||||
system76-power-overline = ${self.background}
|
||||
|
||||
kernel-foreground = ${self.orange}
|
||||
kernel-background = ${self.background}
|
||||
kernel-underline = ${self.background}
|
||||
@@ -5996,6 +6040,7 @@ Define module update intervals in seconds.
|
||||
#+BEGIN_SRC conf :tangle polybar/config.ini
|
||||
[intervals]
|
||||
media-playing = 1
|
||||
system76-power = 86400
|
||||
kernel = 86400
|
||||
cpu = 1
|
||||
memory = 1
|
||||
@@ -6138,6 +6183,9 @@ font-2 = "DroidSansM Nerd Font:size=11;3"
|
||||
font-3 = "IPAPGothic:size=11;3"
|
||||
font-4 = "Baekmuk Dotum:size=11;3"
|
||||
font-5 = "IPAPGothic:size=11;3"
|
||||
font-6 = "NotoSansNerdFont:size=11;3"
|
||||
font-7 = "NotoSansCJK:size=11;3"
|
||||
font-8 = "NotoSansYi:size=11;3"
|
||||
|
||||
; Modules are added to one of the available blocks
|
||||
; modules-left = cpu ram
|
||||
@@ -6145,7 +6193,7 @@ font-5 = "IPAPGothic:size=11;3"
|
||||
; modules-right = ipc clock
|
||||
modules-left = powermenu-left powermenu powermenu-right dwm volume-left volume volume-right media-playing-left media-playing-change media-playing-prev media-playing-play-pause media-playing-next media-playing media-playing-right
|
||||
; modules-center =
|
||||
modules-right = kernel-left kernel kernel-right cpu-left cpu cpu-right memory-left memory memory-right filesystem-left filesystem filesystem-right date-left date date-right time-left time time-right dunst-left dunst-status dunst-clear dunst-history-view dunst-history-clear dunst-history-length dunst-right
|
||||
modules-right = kernel-left kernel kernel-right system76-power-left system76-power system76-power-right cpu-left cpu cpu-right memory-left memory memory-right filesystem-left filesystem filesystem-right date-left date date-right time-left time time-right dunst-left dunst-status dunst-clear dunst-history-view dunst-history-clear dunst-history-length dunst-right
|
||||
|
||||
; The separator will be inserted between the output of each module
|
||||
separator = ""
|
||||
@@ -6760,7 +6808,7 @@ interval = ${intervals.kernel}
|
||||
; Available tags:
|
||||
; <output> - deprecated
|
||||
; <label> (default)
|
||||
format = %{A1:kitty bash -c "fastfetch && nvidia-smi && sleep 15":}<label>%{A}
|
||||
format = %{A1:kitty bash -c "fastfetch && sleep 15":}<label>%{A}
|
||||
format-foreground = ${colors.kernel-foreground}
|
||||
format-background = ${colors.kernel-background}
|
||||
format-underline = ${colors.kernel-underline}
|
||||
@@ -6793,6 +6841,86 @@ label-padding = ${sizes.module-padding}
|
||||
; scroll-down = echo scroll down %counter%
|
||||
#+END_SRC
|
||||
|
||||
**** System76 Power
|
||||
|
||||
#+BEGIN_SRC conf :tangle polybar/config.ini
|
||||
[module/system76-power-left]
|
||||
type = custom/text
|
||||
content = " "
|
||||
content-foreground = ${colors.system76-power-background}
|
||||
content-underline = ${colors.system76-power-underline}
|
||||
content-overline = ${colors.system76-power-overline}
|
||||
content-padding = ${sizes.module-padding}
|
||||
#+END_SRC
|
||||
|
||||
#+BEGIN_SRC conf :tangle polybar/config.ini
|
||||
[module/system76-power-right]
|
||||
type = custom/text
|
||||
content = " "
|
||||
content-foreground = ${colors.system76-power-background}
|
||||
content-underline = ${colors.system76-power-underline}
|
||||
content-overline = ${colors.system76-power-overline}
|
||||
content-padding = ${sizes.module-padding}
|
||||
#+END_SRC
|
||||
|
||||
#+BEGIN_SRC conf :tangle polybar/config.ini
|
||||
[module/system76-power]
|
||||
type = custom/script
|
||||
|
||||
; Available tokens:
|
||||
; %counter%
|
||||
; Command to be executed (using "/bin/sh -c [command]")
|
||||
exec = echo " $(sudo system76-power graphics)"
|
||||
|
||||
; Conditional command that, if defined, needs to exit successfully
|
||||
; before the main exec command is invoked.
|
||||
; Default: ""
|
||||
; exec-if = pgrep -x myservice
|
||||
|
||||
; Will the script output continous content?
|
||||
; Default: false
|
||||
tail = false
|
||||
|
||||
; Seconds to sleep between updates
|
||||
; Default: 5 (0 if `tail = true`)
|
||||
interval = ${intervals.system76-power}
|
||||
|
||||
; Available tags:
|
||||
; <output> - deprecated
|
||||
; <label> (default)
|
||||
format = <label>
|
||||
format-foreground = ${colors.system76-power-foreground}
|
||||
format-background = ${colors.system76-power-background}
|
||||
format-underline = ${colors.system76-power-underline}
|
||||
format-overline = ${colors.system76-power-overline}
|
||||
|
||||
; Available tokens:
|
||||
; %output%
|
||||
; Default: %output%
|
||||
label = %output%
|
||||
label-padding = ${sizes.module-padding}
|
||||
|
||||
; Available tokens:
|
||||
; %counter%
|
||||
; %pid%
|
||||
;
|
||||
; "click-(left|middle|right)" will be executed using "/bin/sh -c [command]"
|
||||
click-left = nvidia-settings
|
||||
; click-middle = echo middle %counter%
|
||||
click-right = ~/.scripts/cpu-gpu.sh --rofi
|
||||
; double-click-left = echo double left %counter%
|
||||
; double-click-middle = echo double middle %counter%
|
||||
; double-click-right = echo double right %counter%
|
||||
|
||||
; Available tokens:
|
||||
; %counter%
|
||||
; %pid%
|
||||
;
|
||||
; "scroll-(up|down)" will be executed using "/bin/sh -c [command]"
|
||||
; scroll-up = echo scroll up %counter%
|
||||
; scroll-down = echo scroll down %counter%
|
||||
#+END_SRC
|
||||
|
||||
**** CPU
|
||||
|
||||
#+BEGIN_SRC conf :tangle polybar/config.ini
|
||||
@@ -7117,7 +7245,7 @@ label-background = ${colors.dunst-background}
|
||||
label-underline = ${colors.dunst-underline}
|
||||
label-overline = ${colors.dunst-overline}
|
||||
label-padding = ${sizes.module-padding}
|
||||
click-left = "dunstctl set-paused toggle"
|
||||
click-left = "~/.scripts/dunst.sh --dnd"
|
||||
click-right = "~/.scripts/dunst.sh --rofi"
|
||||
#+END_SRC
|
||||
|
||||
@@ -7130,7 +7258,7 @@ content-background = ${colors.dunst-background}
|
||||
content-underline = ${colors.dunst-underline}
|
||||
content-overline = ${colors.dunst-overline}
|
||||
content-padding = 1
|
||||
click-left = "dunstctl close-all"
|
||||
click-left = "~/.scripts/dunst.sh --close-all"
|
||||
#+END_SRC
|
||||
|
||||
#+BEGIN_SRC conf :tangle polybar/config.ini
|
||||
@@ -7154,7 +7282,7 @@ content-background = ${colors.dunst-background}
|
||||
content-underline = ${colors.dunst-underline}
|
||||
content-overline = ${colors.dunst-overline}
|
||||
content-padding = 1
|
||||
click-left = "dunstctl history-clear"
|
||||
click-left = "~/.scripts/dunst.sh --history-clear"
|
||||
#+END_SRC
|
||||
|
||||
#+BEGIN_SRC conf :tangle polybar/config.ini
|
||||
|
20
config.def.h
20
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,
|
||||
@@ -474,6 +484,7 @@ static const Rule rules[] = {
|
||||
RULE(.wintype = WTYPE "TOOLBAR", .isfloating = 1)
|
||||
RULE(.wintype = WTYPE "SPLASH", .isfloating = 1)
|
||||
RULE(.wintype = WTYPE "NOTIFICATION", .unmanaged = 1) // 1 - the window will be placed above all other windows
|
||||
RULE(.title = "notificationtoasts_11_desktop", .unmanaged = 1) // 1 - the window will be placed above all other windows
|
||||
RULE(.title = "Picture in picture", .isfloating = 1)
|
||||
RULE(.class = "Beeper", .tags = 1 << 0)
|
||||
RULE(.class = "Signal", .tags = 1 << 0)
|
||||
@@ -496,7 +507,9 @@ static const Rule rules[] = {
|
||||
RULE(.class = "obs", .tags = 1 << 3)
|
||||
RULE(.class = "kdenlive", .tags = 1 << 3)
|
||||
RULE(.class = "Blender", .tags = 1 << 3)
|
||||
RULE(.title = "GNU Image Manipulation Program", .tags = 1 << 3)
|
||||
RULE(.class = "Vivaldi-stable", .tags = 1 << 4)
|
||||
RULE(.class = "Links", .tags = 1 << 4)
|
||||
RULE(.class = "kitty", .tags = 1 << 5, .isterminal = 1)
|
||||
RULE(.class = "Emacs", .tags = 1 << 6)
|
||||
RULE(.class = "Code", .tags = 1 << 6)
|
||||
@@ -508,6 +521,7 @@ static const Rule rules[] = {
|
||||
RULE(.class = "PrismLauncher", .tags = 1 << 7)
|
||||
RULE(.class = "antimicrox", .tags = 1 << 7)
|
||||
RULE(.class = "ProtonUp-Qt", .tags = 1 << 7)
|
||||
RULE(.class = "heroic", .tags = 1 << 7)
|
||||
RULE(.class = "Thunar", .tags = 1 << 8)
|
||||
RULE(.class = "Syncthing GTK", .tags = 1 << 8)
|
||||
RULE(.class = "Nyrna", .tags = 1 << 8)
|
||||
@@ -550,6 +564,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
|
||||
@@ -857,9 +874,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
|
||||
|
20
drw.c
20
drw.c
@@ -436,10 +436,10 @@ drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lp
|
||||
{
|
||||
#if BAR_PANGO_PATCH
|
||||
char buf[1024];
|
||||
int ty;
|
||||
unsigned int ew;
|
||||
int i, ty, th;
|
||||
unsigned int ew, eh;
|
||||
XftDraw *d = NULL;
|
||||
size_t i, len;
|
||||
size_t len;
|
||||
int render = x || y || w || h;
|
||||
|
||||
if (!drw || (render && !drw->scheme) || !text || !drw->fonts)
|
||||
@@ -464,10 +464,14 @@ drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lp
|
||||
len = strlen(text);
|
||||
|
||||
if (len) {
|
||||
drw_font_getexts(drw->fonts, text, len, &ew, NULL, markup);
|
||||
drw_font_getexts(drw->fonts, text, len, &ew, &eh, markup);
|
||||
th = eh;
|
||||
/* shorten text if necessary */
|
||||
for (len = MIN(len, sizeof(buf) - 1); len && ew > w; len--)
|
||||
drw_font_getexts(drw->fonts, text, len, &ew, NULL, markup);
|
||||
for (len = MIN(len, sizeof(buf) - 1); len && ew > w; len--) {
|
||||
drw_font_getexts(drw->fonts, text, len, &ew, &eh, markup);
|
||||
if (eh > th)
|
||||
th = eh;
|
||||
}
|
||||
|
||||
if (len) {
|
||||
memcpy(buf, text, len);
|
||||
@@ -477,7 +481,7 @@ drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lp
|
||||
; /* NOP */
|
||||
|
||||
if (render) {
|
||||
ty = y + (h - drw->fonts->h) / 2;
|
||||
ty = y + (h - th) / 2;
|
||||
if (markup)
|
||||
pango_layout_set_markup(drw->fonts->layout, buf, len);
|
||||
else
|
||||
@@ -709,7 +713,7 @@ drw_font_getexts(Fnt *font, const char *text, unsigned int len, unsigned int *w,
|
||||
if (w)
|
||||
*w = r.width / PANGO_SCALE;
|
||||
if (h)
|
||||
*h = font->h;
|
||||
*h = r.height / PANGO_SCALE;
|
||||
}
|
||||
#else
|
||||
void
|
||||
|
15
dwm.c
15
dwm.c
@@ -968,6 +968,7 @@ applyrules(Client *c)
|
||||
if (r->switchtag)
|
||||
#endif // SWALLOW_PATCH
|
||||
{
|
||||
unfocus(selmon->sel, 1, NULL);
|
||||
selmon = c->mon;
|
||||
if (r->switchtag == 2 || r->switchtag == 4)
|
||||
newtagset = c->mon->tagset[c->mon->seltags] ^ c->tags;
|
||||
@@ -3312,7 +3313,6 @@ run(void)
|
||||
event_fd, events[i].data.ptr, events[i].data.u32,
|
||||
events[i].data.u64);
|
||||
fprintf(stderr, " with events %d\n", events[i].events);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4283,10 +4283,21 @@ togglefloating(const Arg *arg)
|
||||
#endif // !FAKEFULLSCREEN_PATCH
|
||||
c->isfloating = !c->isfloating || c->isfixed;
|
||||
#if !BAR_FLEXWINTITLE_PATCH
|
||||
#if RENAMED_SCRATCHPADS_PATCH
|
||||
if (c->scratchkey != 0 && c->isfloating)
|
||||
XSetWindowBorder(dpy, c->win, scheme[SchemeScratchSel][ColFloat].pixel);
|
||||
else if (c->scratchkey != 0)
|
||||
XSetWindowBorder(dpy, c->win, scheme[SchemeScratchSel][ColBorder].pixel);
|
||||
else if (c->isfloating)
|
||||
XSetWindowBorder(dpy, c->win, scheme[SchemeSel][ColFloat].pixel);
|
||||
else
|
||||
XSetWindowBorder(dpy, c->win, scheme[SchemeSel][ColBorder].pixel);
|
||||
#else
|
||||
if (c->isfloating)
|
||||
XSetWindowBorder(dpy, c->win, scheme[SchemeSel][ColFloat].pixel);
|
||||
else
|
||||
XSetWindowBorder(dpy, c->win, scheme[SchemeSel][ColBorder].pixel);
|
||||
#endif // RENAMED_SCRATCHPADS_PATCH
|
||||
#endif // BAR_FLEXWINTITLE_PATCH
|
||||
if (c->isfloating) {
|
||||
#if SAVEFLOATS_PATCH || EXRESIZE_PATCH
|
||||
@@ -4785,7 +4796,7 @@ updatebarpos(Monitor *m)
|
||||
}
|
||||
|
||||
void
|
||||
updateclientlist()
|
||||
updateclientlist(void)
|
||||
{
|
||||
Client *c;
|
||||
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;
|
||||
}
|
||||
|
||||
|
@@ -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)]);
|
||||
|
@@ -94,6 +94,12 @@ draw_systray(Bar *bar, BarArg *a)
|
||||
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);
|
||||
return w;
|
||||
}
|
||||
|
@@ -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
|
||||
|
@@ -13,6 +13,9 @@ swallow(Client *p, Client *c)
|
||||
{
|
||||
Client *s;
|
||||
XWindowChanges wc;
|
||||
#if NOBORDER_PATCH
|
||||
int border_padding = 0;
|
||||
#endif // NOBORDER_PATCH
|
||||
|
||||
if (c->noswallow > 0 || c->isterminal)
|
||||
return 0;
|
||||
@@ -46,9 +49,21 @@ swallow(Client *p, Client *c)
|
||||
setfloatinghint(s);
|
||||
#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;
|
||||
XConfigureWindow(dpy, p->win, CWBorderWidth, &wc);
|
||||
XMoveResizeWindow(dpy, p->win, s->x, s->y, s->w, s->h);
|
||||
#endif // NOBORDER_PATCH
|
||||
|
||||
#if !BAR_FLEXWINTITLE_PATCH
|
||||
XSetWindowBorder(dpy, p->win, scheme[SchemeNorm][ColBorder].pixel);
|
||||
#endif // BAR_FLEXWINTITLE_PATCH
|
||||
@@ -65,6 +80,9 @@ unswallow(Client *c)
|
||||
{
|
||||
XWindowChanges wc;
|
||||
c->win = c->swallowing->win;
|
||||
#if NOBORDER_PATCH
|
||||
int border_padding = 0;
|
||||
#endif // NOBORDER_PATCH
|
||||
|
||||
free(c->swallowing);
|
||||
c->swallowing = NULL;
|
||||
@@ -80,9 +98,20 @@ unswallow(Client *c)
|
||||
arrange(c->mon);
|
||||
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;
|
||||
XConfigureWindow(dpy, c->win, CWBorderWidth, &wc);
|
||||
XMoveResizeWindow(dpy, c->win, c->x, c->y, c->w, c->h);
|
||||
#endif // NOBORDER_PATCH
|
||||
#if !BAR_FLEXWINTITLE_PATCH
|
||||
XSetWindowBorder(dpy, c->win, scheme[SchemeNorm][ColBorder].pixel);
|
||||
#endif // BAR_FLEXWINTITLE_PATCH
|
||||
|
@@ -132,6 +132,11 @@ xrdb(const Arg *arg)
|
||||
#endif // BAR_ALPHA_PATCH
|
||||
ColCount
|
||||
);
|
||||
#if BAR_SYSTRAY_PATCH && !BAR_ALPHA_PATCH
|
||||
if (systray) {
|
||||
XMoveWindow(dpy, systray->win, -32000, -32000);
|
||||
}
|
||||
#endif // BAR_SYSTRAY_PATCH
|
||||
arrange(NULL);
|
||||
focus(NULL);
|
||||
}
|
||||
|
@@ -8,6 +8,8 @@
|
||||
|
||||
#define BAR_FLEXWINTITLE_PATCH 0
|
||||
|
||||
#define BAR_LAUNCHER_PATCH 0
|
||||
|
||||
#define BAR_LAYOUTMENU_PATCH 0
|
||||
|
||||
#define BAR_LTSYMBOL_PATCH 0
|
||||
|
@@ -74,6 +74,11 @@ media-playing-overline = ${self.background}
|
||||
tray-background = ${self.background}
|
||||
|
||||
; right
|
||||
system76-power-foreground = ${self.green}
|
||||
system76-power-background = ${self.background}
|
||||
system76-power-underline = ${self.background}
|
||||
system76-power-overline = ${self.background}
|
||||
|
||||
kernel-foreground = ${self.orange}
|
||||
kernel-background = ${self.background}
|
||||
kernel-underline = ${self.background}
|
||||
@@ -135,6 +140,7 @@ maxlen = ${xrdb:polybar.maxlen:50}
|
||||
|
||||
[intervals]
|
||||
media-playing = 1
|
||||
system76-power = 86400
|
||||
kernel = 86400
|
||||
cpu = 1
|
||||
memory = 1
|
||||
@@ -269,6 +275,9 @@ font-2 = "DroidSansM Nerd Font:size=11;3"
|
||||
font-3 = "IPAPGothic:size=11;3"
|
||||
font-4 = "Baekmuk Dotum:size=11;3"
|
||||
font-5 = "IPAPGothic:size=11;3"
|
||||
font-6 = "NotoSansNerdFont:size=11;3"
|
||||
font-7 = "NotoSansCJK:size=11;3"
|
||||
font-8 = "NotoSansYi:size=11;3"
|
||||
|
||||
; Modules are added to one of the available blocks
|
||||
; modules-left = cpu ram
|
||||
@@ -276,7 +285,7 @@ font-5 = "IPAPGothic:size=11;3"
|
||||
; modules-right = ipc clock
|
||||
modules-left = powermenu-left powermenu powermenu-right dwm volume-left volume volume-right media-playing-left media-playing-change media-playing-prev media-playing-play-pause media-playing-next media-playing media-playing-right
|
||||
; modules-center =
|
||||
modules-right = kernel-left kernel kernel-right cpu-left cpu cpu-right memory-left memory memory-right filesystem-left filesystem filesystem-right date-left date date-right time-left time time-right dunst-left dunst-status dunst-clear dunst-history-view dunst-history-clear dunst-history-length dunst-right
|
||||
modules-right = kernel-left kernel kernel-right system76-power-left system76-power system76-power-right cpu-left cpu cpu-right memory-left memory memory-right filesystem-left filesystem filesystem-right date-left date date-right time-left time time-right dunst-left dunst-status dunst-clear dunst-history-view dunst-history-clear dunst-history-length dunst-right
|
||||
|
||||
; The separator will be inserted between the output of each module
|
||||
separator = ""
|
||||
@@ -744,7 +753,7 @@ interval = ${intervals.kernel}
|
||||
; Available tags:
|
||||
; <output> - deprecated
|
||||
; <label> (default)
|
||||
format = %{A1:kitty bash -c "fastfetch && nvidia-smi && sleep 15":}<label>%{A}
|
||||
format = %{A1:kitty bash -c "fastfetch && sleep 15":}<label>%{A}
|
||||
format-foreground = ${colors.kernel-foreground}
|
||||
format-background = ${colors.kernel-background}
|
||||
format-underline = ${colors.kernel-underline}
|
||||
@@ -776,6 +785,78 @@ label-padding = ${sizes.module-padding}
|
||||
; scroll-up = echo scroll up %counter%
|
||||
; scroll-down = echo scroll down %counter%
|
||||
|
||||
[module/system76-power-left]
|
||||
type = custom/text
|
||||
content = " "
|
||||
content-foreground = ${colors.system76-power-background}
|
||||
content-underline = ${colors.system76-power-underline}
|
||||
content-overline = ${colors.system76-power-overline}
|
||||
content-padding = ${sizes.module-padding}
|
||||
|
||||
[module/system76-power-right]
|
||||
type = custom/text
|
||||
content = " "
|
||||
content-foreground = ${colors.system76-power-background}
|
||||
content-underline = ${colors.system76-power-underline}
|
||||
content-overline = ${colors.system76-power-overline}
|
||||
content-padding = ${sizes.module-padding}
|
||||
|
||||
[module/system76-power]
|
||||
type = custom/script
|
||||
|
||||
; Available tokens:
|
||||
; %counter%
|
||||
; Command to be executed (using "/bin/sh -c [command]")
|
||||
exec = echo " $(sudo system76-power graphics)"
|
||||
|
||||
; Conditional command that, if defined, needs to exit successfully
|
||||
; before the main exec command is invoked.
|
||||
; Default: ""
|
||||
; exec-if = pgrep -x myservice
|
||||
|
||||
; Will the script output continous content?
|
||||
; Default: false
|
||||
tail = false
|
||||
|
||||
; Seconds to sleep between updates
|
||||
; Default: 5 (0 if `tail = true`)
|
||||
interval = ${intervals.system76-power}
|
||||
|
||||
; Available tags:
|
||||
; <output> - deprecated
|
||||
; <label> (default)
|
||||
format = <label>
|
||||
format-foreground = ${colors.system76-power-foreground}
|
||||
format-background = ${colors.system76-power-background}
|
||||
format-underline = ${colors.system76-power-underline}
|
||||
format-overline = ${colors.system76-power-overline}
|
||||
|
||||
; Available tokens:
|
||||
; %output%
|
||||
; Default: %output%
|
||||
label = %output%
|
||||
label-padding = ${sizes.module-padding}
|
||||
|
||||
; Available tokens:
|
||||
; %counter%
|
||||
; %pid%
|
||||
;
|
||||
; "click-(left|middle|right)" will be executed using "/bin/sh -c [command]"
|
||||
click-left = nvidia-settings
|
||||
; click-middle = echo middle %counter%
|
||||
click-right = ~/.scripts/cpu-gpu.sh --rofi
|
||||
; double-click-left = echo double left %counter%
|
||||
; double-click-middle = echo double middle %counter%
|
||||
; double-click-right = echo double right %counter%
|
||||
|
||||
; Available tokens:
|
||||
; %counter%
|
||||
; %pid%
|
||||
;
|
||||
; "scroll-(up|down)" will be executed using "/bin/sh -c [command]"
|
||||
; scroll-up = echo scroll up %counter%
|
||||
; scroll-down = echo scroll down %counter%
|
||||
|
||||
[module/cpu-left]
|
||||
type = custom/text
|
||||
content = " "
|
||||
@@ -1059,7 +1140,7 @@ label-background = ${colors.dunst-background}
|
||||
label-underline = ${colors.dunst-underline}
|
||||
label-overline = ${colors.dunst-overline}
|
||||
label-padding = ${sizes.module-padding}
|
||||
click-left = "dunstctl set-paused toggle"
|
||||
click-left = "~/.scripts/dunst.sh --dnd"
|
||||
click-right = "~/.scripts/dunst.sh --rofi"
|
||||
|
||||
[module/dunst-clear]
|
||||
@@ -1070,7 +1151,7 @@ content-background = ${colors.dunst-background}
|
||||
content-underline = ${colors.dunst-underline}
|
||||
content-overline = ${colors.dunst-overline}
|
||||
content-padding = 1
|
||||
click-left = "dunstctl close-all"
|
||||
click-left = "~/.scripts/dunst.sh --close-all"
|
||||
|
||||
[module/dunst-history-view]
|
||||
type = custom/text
|
||||
@@ -1090,7 +1171,7 @@ content-background = ${colors.dunst-background}
|
||||
content-underline = ${colors.dunst-underline}
|
||||
content-overline = ${colors.dunst-overline}
|
||||
content-padding = 1
|
||||
click-left = "dunstctl history-clear"
|
||||
click-left = "~/.scripts/dunst.sh --history-clear"
|
||||
|
||||
[module/dunst-history-length]
|
||||
type = custom/script
|
||||
|
Reference in New Issue
Block a user