From ab2d39c700270340e2b7451fc7ce14a3c1808497 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Wed, 19 Aug 2026 14:01:41 -0700 Subject: [PATCH 01/22] i3, add a battery nagging notification which expands upon existing functions. --- files/scripts/battery_nag.sh | 34 ++++++++++++++++++++++++++++++++++ files/settings/i3.config | 7 +++++-- 2 files changed, 39 insertions(+), 2 deletions(-) create mode 100755 files/scripts/battery_nag.sh diff --git a/files/scripts/battery_nag.sh b/files/scripts/battery_nag.sh new file mode 100755 index 0000000..f5b7f18 --- /dev/null +++ b/files/scripts/battery_nag.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash +# 20260819 Hyperling +# Call notify-send to alert the user every 5 minutes once the battery is low + + +# Default to 20%. +alert=20 +if [[ -n "$1" ]]; then + alert="$1" +fi + +# Default to 5 minutes. +sleep=300 +if [[ -n "$2" ]]; then + sleep="$2" +fi + +#which battery.function +source battery.function + +while true; do + + batt=`battery-display` + batt=${batt//%/} + + if (( batt <= alert )); then + title="Battery has dropped below ${alert}%" + message="Currently at ${batt}%" + cmd="`which fyi 2>/dev/null || which notify-send 2>/dev/null`" + $cmd "$title" "$message" + fi + + sleep $sleep +done diff --git a/files/settings/i3.config b/files/settings/i3.config index ea1b897..1b422c9 100644 --- a/files/settings/i3.config +++ b/files/settings/i3.config @@ -362,7 +362,10 @@ exec --no-startup-id "sleep 02; killall wireplumber; wireplumber >~/Reports/wire exec --no-startup-id "sleep 03; killall pipewire-pulse; pipewire-pulse >~/Reports/pipewire-pulse.log 2>&1 &" # Wallpaper -exec --no-startup-id feh --recursive --randomize --bg-fill ~/Pictures/Wallpapers +exec_always --no-startup-id feh --recursive --randomize --bg-fill ~/Pictures/Wallpapers # Compositor -exec_always --no-startup-id picom -f +exec_always --no-startup-id "killall picom; picom -f" + +# Battery +exec_always --no-startup-id "killall battery_nag.sh; battery_nag.sh" From 5f50b3d1d75a18eb2591d29f8ea8fd04cae68d9c Mon Sep 17 00:00:00 2001 From: Hyperling Date: Wed, 19 Aug 2026 14:14:13 -0700 Subject: [PATCH 02/22] battery_nag.sh, add output. --- files/scripts/battery_nag.sh | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/files/scripts/battery_nag.sh b/files/scripts/battery_nag.sh index f5b7f18..78ac0dc 100755 --- a/files/scripts/battery_nag.sh +++ b/files/scripts/battery_nag.sh @@ -2,6 +2,12 @@ # 20260819 Hyperling # Call notify-send to alert the user every 5 minutes once the battery is low +echo "`date` - Loading Functions" + +#which battery.function +source battery.function + +echo "`date` - Parsing Parameters" # Default to 20%. alert=20 @@ -15,8 +21,9 @@ if [[ -n "$2" ]]; then sleep="$2" fi -#which battery.function -source battery.function +echo "`date` - Alerting every ${sleep} seconds when under ${alert}%." + +echo "`date` - Starting Loop" while true; do @@ -24,10 +31,16 @@ while true; do batt=${batt//%/} if (( batt <= alert )); then - title="Battery has dropped below ${alert}%" - message="Currently at ${batt}%" + title="Battery is below ${alert}%!" + message="Currently at ${batt}%." cmd="`which fyi 2>/dev/null || which notify-send 2>/dev/null`" + $cmd "$title" "$message" + status="$?" + + echo "`date` - Nag returned status ${status}." + else + echo "`date` - Battery at ${batt}%, did not nag." fi sleep $sleep From d58d830206115ca2fa201b5b084240f1cf99f4f1 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Wed, 19 Aug 2026 14:17:47 -0700 Subject: [PATCH 03/22] battery_nag,sh, enhance the comment section. --- files/scripts/battery_nag.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/files/scripts/battery_nag.sh b/files/scripts/battery_nag.sh index 78ac0dc..4279c9e 100755 --- a/files/scripts/battery_nag.sh +++ b/files/scripts/battery_nag.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# 20260819 Hyperling -# Call notify-send to alert the user every 5 minutes once the battery is low +# 20260819 - Hyperling +# Alert the user every so often once the battery is low. echo "`date` - Loading Functions" From b0620734b6da3fcf8c1aa8d2cc8bd1c52965b637 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Wed, 19 Aug 2026 14:43:39 -0700 Subject: [PATCH 04/22] battery_nag.sh, add additional output as well as speeding up the nags as the percentage goes down. --- files/scripts/battery_nag.sh | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/files/scripts/battery_nag.sh b/files/scripts/battery_nag.sh index 4279c9e..89992cb 100755 --- a/files/scripts/battery_nag.sh +++ b/files/scripts/battery_nag.sh @@ -4,21 +4,27 @@ echo "`date` - Loading Functions" -#which battery.function +which battery.function source battery.function echo "`date` - Parsing Parameters" +typeset -i alert sleep + # Default to 20%. alert=20 if [[ -n "$1" ]]; then + echo -n "alert changed from '$alert' " alert="$1" + echo "to '$alert'" fi # Default to 5 minutes. sleep=300 if [[ -n "$2" ]]; then + echo -n "sleep changed from '$sleep' " sleep="$2" + echo "to '$sleep'" fi echo "`date` - Alerting every ${sleep} seconds when under ${alert}%." @@ -38,10 +44,30 @@ while true; do $cmd "$title" "$message" status="$?" - echo "`date` - Nag returned status ${status}." + if [[ "$status" == 0 ]]; then + echo -n "`date` - Success! " + else + echo -n "`date` - ERROR: " + fi + echo "Nag returned status ${status}." else echo "`date` - Battery at ${batt}%, did not nag." fi - sleep $sleep + time=$sleep + if (( batt <= 2 )); then + echo "Battery under 2, 16x speed." + time=$(( sleep / 16 )) + elif (( batt <= 5 )); then + echo "Battery under 5, 8x speed." + time=$(( sleep / 8 )) + elif (( batt <= 8 )); then + echo "Battery under 8, 4x speed." + time=$(( sleep / 4 )) + elif (( batt <= 10 )); then + echo "Battery under 10, 2x speed." + time=$(( sleep / 2 )) + fi + echo "`date` - Sleeping for ${time}" + sleep $time done From 8ec82bd3f16c01e6fcc7751cfe0bbbabd9892619 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Wed, 19 Aug 2026 14:47:06 -0700 Subject: [PATCH 05/22] battery_nag.sh, only run if not already running. --- files/scripts/battery_nag.sh | 9 +++++++++ files/settings/i3.config | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/files/scripts/battery_nag.sh b/files/scripts/battery_nag.sh index 89992cb..25d198d 100755 --- a/files/scripts/battery_nag.sh +++ b/files/scripts/battery_nag.sh @@ -2,6 +2,15 @@ # 20260819 - Hyperling # Alert the user every so often once the battery is low. +echo "`date` - Checking Active Programs" + +ps -ef | grep battery_nag.sh | grep -v grep +active="$?" +if [[ "$active" == 0 ]]; then + echo "Program already running, exiting." + exit 1 +fi + echo "`date` - Loading Functions" which battery.function diff --git a/files/settings/i3.config b/files/settings/i3.config index 1b422c9..e2ea21a 100644 --- a/files/settings/i3.config +++ b/files/settings/i3.config @@ -368,4 +368,4 @@ exec_always --no-startup-id feh --recursive --randomize --bg-fill ~/Pictures/Wal exec_always --no-startup-id "killall picom; picom -f" # Battery -exec_always --no-startup-id "killall battery_nag.sh; battery_nag.sh" +exec_always --no-startup-id battery_nag.sh From d5ef919e6dec39a186d0febc3d0560e393c9365e Mon Sep 17 00:00:00 2001 From: Hyperling Date: Wed, 19 Aug 2026 16:06:32 -0700 Subject: [PATCH 06/22] battery_nag, improve the active process checker and enhance edge case handling. --- files/scripts/battery_nag.sh | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/files/scripts/battery_nag.sh b/files/scripts/battery_nag.sh index 25d198d..05fb541 100755 --- a/files/scripts/battery_nag.sh +++ b/files/scripts/battery_nag.sh @@ -4,16 +4,21 @@ echo "`date` - Checking Active Programs" -ps -ef | grep battery_nag.sh | grep -v grep -active="$?" -if [[ "$active" == 0 ]]; then - echo "Program already running, exiting." +PID="$$" +ps -ef | grep battery_nag.sh | grep -v $$ | grep -v grep + +active=`ps -ef | grep battery_nag.sh | grep -v $$ | grep -vc grep` +if (( "$active" >= 1 )); then + echo "Program already running, exiting. Number of processes: $active" exit 1 fi echo "`date` - Loading Functions" -which battery.function +which battery.function || { + echo "ERROR: Battery function not found, exiting." + exit 2 +} source battery.function echo "`date` - Parsing Parameters" @@ -49,6 +54,11 @@ while true; do title="Battery is below ${alert}%!" message="Currently at ${batt}%." cmd="`which fyi 2>/dev/null || which notify-send 2>/dev/null`" + if [[ -z "$cmd" ]]; then + echo "ERROR: No command found to send notification, exiting." + echo "Please install 'fyi' or 'notify-send' to use this script." + exit 3 + fi $cmd "$title" "$message" status="$?" @@ -77,6 +87,9 @@ while true; do echo "Battery under 10, 2x speed." time=$(( sleep / 2 )) fi + if (( time < 10 )); then + time=10 + fi echo "`date` - Sleeping for ${time}" sleep $time done From f1a7025e07743bc54f27baf9c9696b5634cdb5f1 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Wed, 19 Aug 2026 16:07:04 -0700 Subject: [PATCH 07/22] i3, add note that the killall here is not actually working as desired since the process name is bash, not battery_nag.sh. --- files/settings/i3.config | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/files/settings/i3.config b/files/settings/i3.config index e2ea21a..70baa75 100644 --- a/files/settings/i3.config +++ b/files/settings/i3.config @@ -368,4 +368,9 @@ exec_always --no-startup-id feh --recursive --randomize --bg-fill ~/Pictures/Wal exec_always --no-startup-id "killall picom; picom -f" # Battery -exec_always --no-startup-id battery_nag.sh +exec_always --no-startup-id "killall battery_nag.sh; battery_nag.sh" +# TBD: +# - Figure out how to make this killall work! Process runs as: +# - 'bash /usr/local/bin/battery_nag.sh' +# - 'bash ~/battery_nag.sh' +# - 'bash ./battery_nag.sh' From 4d1c461fcfcfb1ac56f78a5e8dbb618d740f68fc Mon Sep 17 00:00:00 2001 From: Hyperling Date: Wed, 19 Aug 2026 18:30:45 -0700 Subject: [PATCH 08/22] battery_nag, simplify the acceleration and allow it to be turned off. --- files/scripts/battery_nag.sh | 43 ++++++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 16 deletions(-) diff --git a/files/scripts/battery_nag.sh b/files/scripts/battery_nag.sh index 05fb541..0af8422 100755 --- a/files/scripts/battery_nag.sh +++ b/files/scripts/battery_nag.sh @@ -41,7 +41,21 @@ if [[ -n "$2" ]]; then echo "to '$sleep'" fi -echo "`date` - Alerting every ${sleep} seconds when under ${alert}%." +accelerate="Y" +if [[ -n "$3" ]]; then + echo -n "accelerate changed from '$accelerate' " + accelerate="$3" + echo "to '$accelerate'" +fi + +echo "Alerting when under ${alert}%." +echo "Notifying every ${sleep} seconds." +if [[ "$accelerate" == "Y" ]]; then + echo -n "Speeding up notifications as % gets lower." +else + echo -n "Notifcations staying persistent." +fi +echo " (accelerate == $accelerate)" echo "`date` - Starting Loop" @@ -51,12 +65,13 @@ while true; do batt=${batt//%/} if (( batt <= alert )); then - title="Battery is below ${alert}%!" - message="Currently at ${batt}%." + title="Battery is below ${alert}%" + message="Currently at ${batt}%" cmd="`which fyi 2>/dev/null || which notify-send 2>/dev/null`" if [[ -z "$cmd" ]]; then echo "ERROR: No command found to send notification, exiting." echo "Please install 'fyi' or 'notify-send' to use this script." + echo "If not using a DE, also ensure 'dunst' or similar is running." exit 3 fi @@ -74,22 +89,18 @@ while true; do fi time=$sleep - if (( batt <= 2 )); then - echo "Battery under 2, 16x speed." - time=$(( sleep / 16 )) - elif (( batt <= 5 )); then - echo "Battery under 5, 8x speed." - time=$(( sleep / 8 )) - elif (( batt <= 8 )); then - echo "Battery under 8, 4x speed." - time=$(( sleep / 4 )) - elif (( batt <= 10 )); then - echo "Battery under 10, 2x speed." - time=$(( sleep / 2 )) + if [[ "$accelerate" == "Y" ]]; then + if (( batt > 0 )); then + time=$(( time / (alert / batt) )) + else + time=10 + fi fi + # Showing a notification every 10 seconds makes it persistent. + # Any more than that casues multiple to stack which is unnecessary. if (( time < 10 )); then time=10 fi - echo "`date` - Sleeping for ${time}" + echo "`date` - Sleeping for ${time}." sleep $time done From bb9ac37d9caeba8562e02f151b1fb2106dded8b2 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Wed, 19 Aug 2026 18:34:41 -0700 Subject: [PATCH 09/22] battery_nag, add comments. --- files/scripts/battery_nag.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/files/scripts/battery_nag.sh b/files/scripts/battery_nag.sh index 0af8422..b89ac08 100755 --- a/files/scripts/battery_nag.sh +++ b/files/scripts/battery_nag.sh @@ -2,6 +2,8 @@ # 20260819 - Hyperling # Alert the user every so often once the battery is low. +## Setup ## + echo "`date` - Checking Active Programs" PID="$$" @@ -21,6 +23,8 @@ which battery.function || { } source battery.function +## Params ## + echo "`date` - Parsing Parameters" typeset -i alert sleep @@ -41,6 +45,7 @@ if [[ -n "$2" ]]; then echo "to '$sleep'" fi +# Default to true. accelerate="Y" if [[ -n "$3" ]]; then echo -n "accelerate changed from '$accelerate' " @@ -57,6 +62,8 @@ else fi echo " (accelerate == $accelerate)" +## Main ## + echo "`date` - Starting Loop" while true; do From 154bb01c0eddeb14b480ff170ed64ca19fc0015e Mon Sep 17 00:00:00 2001 From: Hyperling Date: Wed, 19 Aug 2026 18:37:04 -0700 Subject: [PATCH 10/22] packages, add stress to general, move pipewire to workstation. --- facts/general/package.yml | 1 + tasks/general/software/packages.yml | 12 +----------- tasks/workstation/linux/software/packages.yml | 11 +++++++++++ 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/facts/general/package.yml b/facts/general/package.yml index 77e2166..7edd66f 100644 --- a/facts/general/package.yml +++ b/facts/general/package.yml @@ -20,6 +20,7 @@ ca_certificates: ca-certificates locate: mlocate alsa: alsa-utils + stress: stress - name: General | Facts | Package | Parrot OS Fixes set_fact: diff --git a/tasks/general/software/packages.yml b/tasks/general/software/packages.yml index b1f2e7c..9694101 100644 --- a/tasks/general/software/packages.yml +++ b/tasks/general/software/packages.yml @@ -66,6 +66,7 @@ - "{{ sendmail_mta }}" - "{{ ca_certificates }}" - "{{ alsa }}" + - "{{ stress }}" state: present - name: General | Software | Packages | Install Software (DEV) @@ -111,17 +112,6 @@ state: present when: ansible_pkg_mgr == "pacman" -- name: General | Software | Packages | Install Audio (Looking at you, Artix) - package: - name: - - pipewire - - pipewire-pulse - - wireplumber - - pipewire-alsa - state: present - when: ansible_pkg_mgr == "pacman" - and ansible_service_mgr == "runit" - - name: General | Software | Packages | Install Fix (Looking at you, openSUSE) package: name: diff --git a/tasks/workstation/linux/software/packages.yml b/tasks/workstation/linux/software/packages.yml index 6fca4bc..d1c2c6e 100644 --- a/tasks/workstation/linux/software/packages.yml +++ b/tasks/workstation/linux/software/packages.yml @@ -50,6 +50,17 @@ - "{{ mpv }}" state: present +- name: General | Software | Packages | Install Audio (Looking at you, Artix) + package: + name: + - pipewire + - pipewire-pulse + - wireplumber + - pipewire-alsa + state: present + when: ansible_pkg_mgr == "pacman" + and ansible_service_mgr == "runit" + - name: Workstation | Linux | Software | Packages | Extra For Liberated Init Systems package: name: From 7764260639f57ef0403421b11b7c0d221d7fc01c Mon Sep 17 00:00:00 2001 From: Hyperling Date: Wed, 19 Aug 2026 18:37:37 -0700 Subject: [PATCH 11/22] packages, fix name for pipewire now that it exists in workstation. --- tasks/workstation/linux/software/packages.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasks/workstation/linux/software/packages.yml b/tasks/workstation/linux/software/packages.yml index d1c2c6e..d909912 100644 --- a/tasks/workstation/linux/software/packages.yml +++ b/tasks/workstation/linux/software/packages.yml @@ -50,7 +50,7 @@ - "{{ mpv }}" state: present -- name: General | Software | Packages | Install Audio (Looking at you, Artix) +- name: Workstation | Linux | Software | Packages | Install Audio (Looking at you, Artix) package: name: - pipewire From d2b8cac45dc5e28d477cb02d5f8aff897561d7b1 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Thu, 20 Aug 2026 09:20:13 -0700 Subject: [PATCH 12/22] i3, drastically reduce the time that notify-send lingers on the screen, variablize the step counts for going up and down in brightness and volume. --- files/settings/i3.config | 80 ++++++++++++++++++++++------------------ 1 file changed, 44 insertions(+), 36 deletions(-) diff --git a/files/settings/i3.config b/files/settings/i3.config index 70baa75..35bf17e 100644 --- a/files/settings/i3.config +++ b/files/settings/i3.config @@ -141,37 +141,23 @@ bindsym $mod+c exec codium-flatpak ## Brightness ## -# Use the bracket keys to change the brightness. # light requires sudo privileges unless video group and udev are configured. -bindsym $mod+bracketleft exec --no-startup-id "light -U 05 && notify-send 'Brightness - ' $(light -G)" -bindsym $mod+bracketright exec --no-startup-id "light -A 05 && notify-send 'Brightness + ' $(light -G)" -bindsym $shift+$mod+bracketleft exec --no-startup-id "light -U 20 && notify-send 'Brightness ---' $(light -G)" -bindsym $shift+$mod+bracketright exec --no-startup-id "light -A 20 && notify-send 'Brightness +++' $(light -G)" + +set $time 1500 +set $small 5 +set $large 20 + +# Use the bracket keys to change the brightness. +bindsym $mod+bracketleft exec --no-startup-id "light -U $small && notify-send -t $time 'Brightness - ' $(light -G)" +bindsym $mod+bracketright exec --no-startup-id "light -A $small && notify-send -t $time 'Brightness + ' $(light -G)" +bindsym $shift+$mod+bracketleft exec --no-startup-id "light -U $large && notify-send -t $time 'Brightness ---' $(light -G)" +bindsym $shift+$mod+bracketright exec --no-startup-id "light -A $large && notify-send -t $time 'Brightness +++' $(light -G)" # Also get the actual brightness keys to work!! -bindsym XF86MonBrightnessUp exec --no-startup-id "light -A 05 && notify-send 'Brightness + ' $(light -G)" -bindsym XF86MonBrightnessDown exec --no-startup-id "light -U 05 && notify-send 'Brightness - ' $(light -G)" -bindsym $shift+XF86MonBrightnessUp exec --no-startup-id "light -A 20 && notify-send 'Brightness +++' $(light -G)" -bindsym $shift+XF86MonBrightnessDown exec --no-startup-id "light -U 20 && notify-send 'Brightness ---' $(light -G)" - - -## Volume ## -# The volume function is from https://git.hyperling.com/me/env-ansible - -# Use the comma and period keys to change volume. -bindsym $mod+comma exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume -05 && notify-send "Volume - " $(volume)' -bindsym $mod+period exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume +05 && notify-send "Volume + " $(volume)' -bindsym $shift+$mod+comma exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume -25 && notify-send "Volume ---" $(volume)' -bindsym $shift+$mod+period exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume +25 && notify-send "Volume +++" $(volume)' - -# Actual volume keys. -bindsym XF86AudioMute exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume mute && notify-send "Volume Muted" $(volume)' -bindsym XF86AudioRaiseVolume exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume +05 && notify-send "Volume + " $(volume)' -bindsym XF86AudioLowerVolume exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume -05 && notify-send "Volume - " $(volume)' -bindsym $shift+XF86AudioRaiseVolume exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume +25 && notify-send "Volume +++ " $(volume)' -bindsym $shift+XF86AudioLowerVolume exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume -25 && notify-send "Volume --- " $(volume)' - -bindsym $mod+slash exec pavucontrol +bindsym XF86MonBrightnessUp exec --no-startup-id "light -A $small && notify-send -t $time 'Brightness + ' $(light -G)" +bindsym XF86MonBrightnessDown exec --no-startup-id "light -U $small && notify-send -t $time 'Brightness - ' $(light -G)" +bindsym $shift+XF86MonBrightnessUp exec --no-startup-id "light -A $large && notify-send -t $time 'Brightness +++' $(light -G)" +bindsym $shift+XF86MonBrightnessDown exec --no-startup-id "light -U $large && notify-send -t $time 'Brightness ---' $(light -G)" ## Keyboard Brightness ## @@ -179,15 +165,37 @@ bindsym $mod+slash exec pavucontrol # Macbooks tend to use 'sysfs/leds/smc::kbd_backlight' # NovaCustom laptop is 'sysfs/leds/system76_acpi::kbd_backlight' # Some other laptops may be 'sysfs/class/leds/...', use ìght -L`to find out. -bindsym XF86KbdBrightnessUp exec "light -s sysfs/leds/smc::kbd_backlight -A 05 && notify-send 'Keyboard Brightness + ' $(light -s sysfs/leds/smc::kbd_backlight -G)" -bindsym XF86KbdBrightnessDown exec "light -s sysfs/leds/smc::kbd_backlight -U 05 && notify-send 'Keyboard Brightness - ' $(light -s sysfs/leds/smc::kbd_backlight -G)" -bindsym $shift+XF86KbdBrightnessUp exec "light -s sysfs/leds/smc::kbd_backlight -A 20 && notify-send 'Keyboard Brightness +++' $(light -s sysfs/leds/smc::kbd_backlight -G)" -bindsym $shift+XF86KbdBrightnessDown exec "light -s sysfs/leds/smc::kbd_backlight -U 20 && notify-send 'Keyboard Brightness ---' $(light -s sysfs/leds/smc::kbd_backlight -G)" +bindsym XF86KbdBrightnessUp exec "light -s sysfs/leds/smc::kbd_backlight -A 05 && notify-send -t 1500 'Keyboard Brightness + ' $(light -s sysfs/leds/smc::kbd_backlight -G)" +bindsym XF86KbdBrightnessDown exec "light -s sysfs/leds/smc::kbd_backlight -U 05 && notify-send -t 1500 'Keyboard Brightness - ' $(light -s sysfs/leds/smc::kbd_backlight -G)" +bindsym $shift+XF86KbdBrightnessUp exec "light -s sysfs/leds/smc::kbd_backlight -A 20 && notify-send -t 1500 'Keyboard Brightness +++' $(light -s sysfs/leds/smc::kbd_backlight -G)" +bindsym $shift+XF86KbdBrightnessDown exec "light -s sysfs/leds/smc::kbd_backlight -U 20 && notify-send -t 1500 'Keyboard Brightness ---' $(light -s sysfs/leds/smc::kbd_backlight -G)" + +bindsym $mod+apostrophe exec "light -s sysfs/leds/smc::kbd_backlight -A 05 && notify-send -t 1500 'Keyboard Brightness + ' $(light -s sysfs/leds/smc::kbd_backlight -G)" +bindsym $mod+semicolon exec "light -s sysfs/leds/smc::kbd_backlight -U 05 && notify-send -t 1500 'Keyboard Brightness - ' $(light -s sysfs/leds/smc::kbd_backlight -G)" +bindsym $shift+$mod+apostrophe exec "light -s sysfs/leds/smc::kbd_backlight -A 20 && notify-send -t 1500 'Keyboard Brightness +++' $(light -s sysfs/leds/smc::kbd_backlight -G)" +bindsym $shift+$mod+semicolon exec "light -s sysfs/leds/smc::kbd_backlight -U 20 && notify-send -t 1500 'Keyboard Brightness ---' $(light -s sysfs/leds/smc::kbd_backlight -G)" + + +## Volume ## +# The volume function is from https://git.hyperling.com/me/env-ansible + +set $large 25 + +# Use the comma and period keys to change volume. +bindsym $mod+comma exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume -$small && notify-send -t $time "Volume - " $(volume)' +bindsym $mod+period exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume +$small && notify-send -t $time "Volume + " $(volume)' +bindsym $shift+$mod+comma exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume -$large && notify-send -t $time "Volume ---" $(volume)' +bindsym $shift+$mod+period exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume +$large && notify-send -t $time "Volume +++" $(volume)' + +# Actual volume keys. +bindsym XF86AudioMute exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume mute && notify-send -t $time "Volume Muted" $(volume)' +bindsym XF86AudioRaiseVolume exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume +$small && notify-send -t $time "Volume + " $(volume)' +bindsym XF86AudioLowerVolume exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume -$small && notify-send -t $time "Volume - " $(volume)' +bindsym $shift+XF86AudioRaiseVolume exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume +$large && notify-send -t $time "Volume +++ " $(volume)' +bindsym $shift+XF86AudioLowerVolume exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume -$large && notify-send -t $time "Volume --- " $(volume)' + +bindsym $mod+slash exec pavucontrol -bindsym $mod+apostrophe exec "light -s sysfs/leds/smc::kbd_backlight -A 05 && notify-send 'Keyboard Brightness + ' $(light -s sysfs/leds/smc::kbd_backlight -G)" -bindsym $mod+semicolon exec "light -s sysfs/leds/smc::kbd_backlight -U 05 && notify-send 'Keyboard Brightness - ' $(light -s sysfs/leds/smc::kbd_backlight -G)" -bindsym $shift+$mod+apostrophe exec "light -s sysfs/leds/smc::kbd_backlight -A 20 && notify-send 'Keyboard Brightness +++' $(light -s sysfs/leds/smc::kbd_backlight -G)" -bindsym $shift+$mod+semicolon exec "light -s sysfs/leds/smc::kbd_backlight -U 20 && notify-send 'Keyboard Brightness ---' $(light -s sysfs/leds/smc::kbd_backlight -G)" ## Workspaces ## From 36f8aa36495000d055fec88237f30ed61090f5a9 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Thu, 20 Aug 2026 09:32:41 -0700 Subject: [PATCH 13/22] i3, change brightness and volume to use different timing and steps after all. --- files/settings/i3.config | 62 +++++++++++++++++++++------------------- 1 file changed, 33 insertions(+), 29 deletions(-) diff --git a/files/settings/i3.config b/files/settings/i3.config index 35bf17e..ff972f1 100644 --- a/files/settings/i3.config +++ b/files/settings/i3.config @@ -143,56 +143,60 @@ bindsym $mod+c exec codium-flatpak ## Brightness ## # light requires sudo privileges unless video group and udev are configured. -set $time 1500 -set $small 5 -set $large 20 +set $b_time 3000 +set $b_small 10 +set $b_large 20 # Use the bracket keys to change the brightness. -bindsym $mod+bracketleft exec --no-startup-id "light -U $small && notify-send -t $time 'Brightness - ' $(light -G)" -bindsym $mod+bracketright exec --no-startup-id "light -A $small && notify-send -t $time 'Brightness + ' $(light -G)" -bindsym $shift+$mod+bracketleft exec --no-startup-id "light -U $large && notify-send -t $time 'Brightness ---' $(light -G)" -bindsym $shift+$mod+bracketright exec --no-startup-id "light -A $large && notify-send -t $time 'Brightness +++' $(light -G)" +bindsym $mod+bracketleft exec --no-startup-id "light -U $b_small && notify-send -t $b_time 'Brightness - ' $(light -G)" +bindsym $mod+bracketright exec --no-startup-id "light -A $b_small && notify-send -t $b_time 'Brightness + ' $(light -G)" +bindsym $shift+$mod+bracketleft exec --no-startup-id "light -U $b_large && notify-send -t $b_time 'Brightness ---' $(light -G)" +bindsym $shift+$mod+bracketright exec --no-startup-id "light -A $b_large && notify-send -t $b_time 'Brightness +++' $(light -G)" # Also get the actual brightness keys to work!! -bindsym XF86MonBrightnessUp exec --no-startup-id "light -A $small && notify-send -t $time 'Brightness + ' $(light -G)" -bindsym XF86MonBrightnessDown exec --no-startup-id "light -U $small && notify-send -t $time 'Brightness - ' $(light -G)" -bindsym $shift+XF86MonBrightnessUp exec --no-startup-id "light -A $large && notify-send -t $time 'Brightness +++' $(light -G)" -bindsym $shift+XF86MonBrightnessDown exec --no-startup-id "light -U $large && notify-send -t $time 'Brightness ---' $(light -G)" +bindsym XF86MonBrightnessUp exec --no-startup-id "light -A $b_small && notify-send -t $b_time 'Brightness + ' $(light -G)" +bindsym XF86MonBrightnessDown exec --no-startup-id "light -U $b_small && notify-send -t $b_time 'Brightness - ' $(light -G)" +bindsym $shift+XF86MonBrightnessUp exec --no-startup-id "light -A $b_large && notify-send -t $b_time 'Brightness +++' $(light -G)" +bindsym $shift+XF86MonBrightnessDown exec --no-startup-id "light -U $b_large && notify-send -t $b_time 'Brightness ---' $(light -G)" ## Keyboard Brightness ## +# Use same timing and step size settings as above. + # Macbooks tend to use 'sysfs/leds/smc::kbd_backlight' # NovaCustom laptop is 'sysfs/leds/system76_acpi::kbd_backlight' # Some other laptops may be 'sysfs/class/leds/...', use ìght -L`to find out. -bindsym XF86KbdBrightnessUp exec "light -s sysfs/leds/smc::kbd_backlight -A 05 && notify-send -t 1500 'Keyboard Brightness + ' $(light -s sysfs/leds/smc::kbd_backlight -G)" -bindsym XF86KbdBrightnessDown exec "light -s sysfs/leds/smc::kbd_backlight -U 05 && notify-send -t 1500 'Keyboard Brightness - ' $(light -s sysfs/leds/smc::kbd_backlight -G)" -bindsym $shift+XF86KbdBrightnessUp exec "light -s sysfs/leds/smc::kbd_backlight -A 20 && notify-send -t 1500 'Keyboard Brightness +++' $(light -s sysfs/leds/smc::kbd_backlight -G)" -bindsym $shift+XF86KbdBrightnessDown exec "light -s sysfs/leds/smc::kbd_backlight -U 20 && notify-send -t 1500 'Keyboard Brightness ---' $(light -s sysfs/leds/smc::kbd_backlight -G)" +bindsym XF86KbdBrightnessUp exec "light -s sysfs/leds/smc::kbd_backlight -A $b_small && notify-send -t $b_time 'Keyboard Brightness + ' $(light -s sysfs/leds/smc::kbd_backlight -G)" +bindsym XF86KbdBrightnessDown exec "light -s sysfs/leds/smc::kbd_backlight -U $b_small && notify-send -t $b_time 'Keyboard Brightness - ' $(light -s sysfs/leds/smc::kbd_backlight -G)" +bindsym $shift+XF86KbdBrightnessUp exec "light -s sysfs/leds/smc::kbd_backlight -A $b_large && notify-send -t $b_time 'Keyboard Brightness +++' $(light -s sysfs/leds/smc::kbd_backlight -G)" +bindsym $shift+XF86KbdBrightnessDown exec "light -s sysfs/leds/smc::kbd_backlight -U $b_large && notify-send -t $b_time 'Keyboard Brightness ---' $(light -s sysfs/leds/smc::kbd_backlight -G)" -bindsym $mod+apostrophe exec "light -s sysfs/leds/smc::kbd_backlight -A 05 && notify-send -t 1500 'Keyboard Brightness + ' $(light -s sysfs/leds/smc::kbd_backlight -G)" -bindsym $mod+semicolon exec "light -s sysfs/leds/smc::kbd_backlight -U 05 && notify-send -t 1500 'Keyboard Brightness - ' $(light -s sysfs/leds/smc::kbd_backlight -G)" -bindsym $shift+$mod+apostrophe exec "light -s sysfs/leds/smc::kbd_backlight -A 20 && notify-send -t 1500 'Keyboard Brightness +++' $(light -s sysfs/leds/smc::kbd_backlight -G)" -bindsym $shift+$mod+semicolon exec "light -s sysfs/leds/smc::kbd_backlight -U 20 && notify-send -t 1500 'Keyboard Brightness ---' $(light -s sysfs/leds/smc::kbd_backlight -G)" +bindsym $mod+apostrophe exec "light -s sysfs/leds/smc::kbd_backlight -A $b_small && notify-send -t $b_time 'Keyboard Brightness + ' $(light -s sysfs/leds/smc::kbd_backlight -G)" +bindsym $mod+semicolon exec "light -s sysfs/leds/smc::kbd_backlight -U $b_small && notify-send -t $b_time 'Keyboard Brightness - ' $(light -s sysfs/leds/smc::kbd_backlight -G)" +bindsym $shift+$mod+apostrophe exec "light -s sysfs/leds/smc::kbd_backlight -A $b_large && notify-send -t $b_time 'Keyboard Brightness +++' $(light -s sysfs/leds/smc::kbd_backlight -G)" +bindsym $shift+$mod+semicolon exec "light -s sysfs/leds/smc::kbd_backlight -U $b_large && notify-send -t $b_time 'Keyboard Brightness ---' $(light -s sysfs/leds/smc::kbd_backlight -G)" ## Volume ## # The volume function is from https://git.hyperling.com/me/env-ansible -set $large 25 +set $v_time 1500 +set $v_small 5 +set $v_large 25 # Use the comma and period keys to change volume. -bindsym $mod+comma exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume -$small && notify-send -t $time "Volume - " $(volume)' -bindsym $mod+period exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume +$small && notify-send -t $time "Volume + " $(volume)' -bindsym $shift+$mod+comma exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume -$large && notify-send -t $time "Volume ---" $(volume)' -bindsym $shift+$mod+period exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume +$large && notify-send -t $time "Volume +++" $(volume)' +bindsym $mod+comma exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume -$v_small && notify-send -t $v_time "Volume - " $(volume)' +bindsym $mod+period exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume +$v_small && notify-send -t $v_time "Volume + " $(volume)' +bindsym $shift+$mod+comma exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume -$v_large && notify-send -t $v_time "Volume ---" $(volume)' +bindsym $shift+$mod+period exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume +$v_large && notify-send -t $v_time "Volume +++" $(volume)' # Actual volume keys. -bindsym XF86AudioMute exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume mute && notify-send -t $time "Volume Muted" $(volume)' -bindsym XF86AudioRaiseVolume exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume +$small && notify-send -t $time "Volume + " $(volume)' -bindsym XF86AudioLowerVolume exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume -$small && notify-send -t $time "Volume - " $(volume)' -bindsym $shift+XF86AudioRaiseVolume exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume +$large && notify-send -t $time "Volume +++ " $(volume)' -bindsym $shift+XF86AudioLowerVolume exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume -$large && notify-send -t $time "Volume --- " $(volume)' +bindsym XF86AudioMute exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume mute && notify-send -t $v_time "Volume Muted" $(volume)' +bindsym XF86AudioRaiseVolume exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume +$v_small && notify-send -t $v_time "Volume + " $(volume)' +bindsym XF86AudioLowerVolume exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume -$v_small && notify-send -t $v_time "Volume - " $(volume)' +bindsym $shift+XF86AudioRaiseVolume exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume +$v_large && notify-send -t $v_time "Volume +++ " $(volume)' +bindsym $shift+XF86AudioLowerVolume exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume -$v_large && notify-send -t $v_time "Volume --- " $(volume)' bindsym $mod+slash exec pavucontrol From 83104fac2568ab73e8fa1e7f17b74d0aab2e736d Mon Sep 17 00:00:00 2001 From: Hyperling Date: Thu, 20 Aug 2026 09:39:23 -0700 Subject: [PATCH 14/22] profile, add variable and function for using preferred notification executable. --- tasks/general/acct_mgmt/users.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tasks/general/acct_mgmt/users.yml b/tasks/general/acct_mgmt/users.yml index 5e7c4b9..9baed8c 100644 --- a/tasks/general/acct_mgmt/users.yml +++ b/tasks/general/acct_mgmt/users.yml @@ -141,6 +141,11 @@ if [[ -n "$XDG_SESSION_ID" ]]; then setxkbmap -layout us -variant altgr-intl fi + export_notify: | + export NOTIFY="`which fyi 2>/dev/null || which notify-send 2>/dev/null`" + function notify() { + $NOTIFY $@ + } - name: General | Account Management | Users | Files | RC Variables set_fact: @@ -1199,7 +1204,8 @@ {{ export_path_sbin }} {{ export_terminal }} {{ export_browser }} - {{ keyboard_settings}} + {{ keyboard_settings }} + {{ export_notify }} rc_common: | # Fixes "command not found" when using aliases within functions. shopt -s expand_aliases From 9bd7cb59b50322ef06473e122b69c26cb2932749 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Thu, 20 Aug 2026 09:39:43 -0700 Subject: [PATCH 15/22] i3, restart dunst on reloads. --- files/settings/i3.config | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/files/settings/i3.config b/files/settings/i3.config index ff972f1..82d90e1 100644 --- a/files/settings/i3.config +++ b/files/settings/i3.config @@ -362,10 +362,10 @@ exec --no-startup-id light -O exec --no-startup-id light -N 0 # Set the correct keymap. -exec --no-startup-id setxkbmap -layout us -variant altgr-intl +exec_always --no-startup-id setxkbmap -layout us -variant altgr-intl # Notifications (allows fyi and notify-send to work) -exec --no-startup-id dunst +exec_always --no-startup-id "killall dunst; dunst" # Audio exec --no-startup-id "sleep 00; dbus-launch --exit-with-session i3" From 3965f0a58725bee30d1b37e22b4f7e3dbd2f3e85 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Thu, 20 Aug 2026 17:22:11 -0700 Subject: [PATCH 16/22] i3, add a log for battery_nag. --- files/settings/i3.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/files/settings/i3.config b/files/settings/i3.config index 82d90e1..25f8317 100644 --- a/files/settings/i3.config +++ b/files/settings/i3.config @@ -380,7 +380,7 @@ exec_always --no-startup-id feh --recursive --randomize --bg-fill ~/Pictures/Wal exec_always --no-startup-id "killall picom; picom -f" # Battery -exec_always --no-startup-id "killall battery_nag.sh; battery_nag.sh" +exec_always --no-startup-id "killall battery_nag.sh; battery_nag.sh >~/Reports/battery_nag.log 2>&1" # TBD: # - Figure out how to make this killall work! Process runs as: # - 'bash /usr/local/bin/battery_nag.sh' From 7f6110a3f90e3e57f7e709afbead8c4dfb0ea79c Mon Sep 17 00:00:00 2001 From: Hyperling Date: Thu, 20 Aug 2026 17:24:04 -0700 Subject: [PATCH 17/22] battery_nag, ensure 'killall battery_nag.sh' doesn't make the program think it's already running. --- files/scripts/battery_nag.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/files/scripts/battery_nag.sh b/files/scripts/battery_nag.sh index b89ac08..b3cd499 100755 --- a/files/scripts/battery_nag.sh +++ b/files/scripts/battery_nag.sh @@ -7,9 +7,9 @@ echo "`date` - Checking Active Programs" PID="$$" -ps -ef | grep battery_nag.sh | grep -v $$ | grep -v grep +ps -ef | grep battery_nag.sh | grep -v grep | grep -v killall | grep -v $$ -active=`ps -ef | grep battery_nag.sh | grep -v $$ | grep -vc grep` +active=`ps -ef | grep battery_nag.sh | grep -v grep | grep -v killall | grep -vc $$` if (( "$active" >= 1 )); then echo "Program already running, exiting. Number of processes: $active" exit 1 From df622a175b6daf7f3a63b8dae1f9bb842ff31761 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Thu, 20 Aug 2026 17:26:09 -0700 Subject: [PATCH 18/22] battery_nag, add log output on what battery percentage caused the notification. --- files/scripts/battery_nag.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/files/scripts/battery_nag.sh b/files/scripts/battery_nag.sh index b3cd499..ab25f76 100755 --- a/files/scripts/battery_nag.sh +++ b/files/scripts/battery_nag.sh @@ -81,6 +81,7 @@ while true; do echo "If not using a DE, also ensure 'dunst' or similar is running." exit 3 fi + echo "`date` - Attempting to report battery level at ${batt}." $cmd "$title" "$message" status="$?" From f59a4f90badc28192bc7e2a199b5c6e19806cd92 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Thu, 20 Aug 2026 17:35:10 -0700 Subject: [PATCH 19/22] i3, use pkill to stop battery nag with the `full` option which looks through the entire command. --- files/settings/i3.config | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/files/settings/i3.config b/files/settings/i3.config index 25f8317..f296c97 100644 --- a/files/settings/i3.config +++ b/files/settings/i3.config @@ -380,9 +380,4 @@ exec_always --no-startup-id feh --recursive --randomize --bg-fill ~/Pictures/Wal exec_always --no-startup-id "killall picom; picom -f" # Battery -exec_always --no-startup-id "killall battery_nag.sh; battery_nag.sh >~/Reports/battery_nag.log 2>&1" -# TBD: -# - Figure out how to make this killall work! Process runs as: -# - 'bash /usr/local/bin/battery_nag.sh' -# - 'bash ~/battery_nag.sh' -# - 'bash ./battery_nag.sh' +exec_always --no-startup-id "pkill -f battery_nag.sh; battery_nag.sh >~/Reports/battery_nag.log 2>&1" From c4964a1a1e25b421cfba1556260863e4bcf3d85d Mon Sep 17 00:00:00 2001 From: Hyperling Date: Sat, 22 Aug 2026 12:12:43 -0700 Subject: [PATCH 20/22] i3 and battery_nag, reached a point where it successfully kills then restarts on each reload. --- files/scripts/battery_nag.sh | 9 +++++---- files/settings/i3.config | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/files/scripts/battery_nag.sh b/files/scripts/battery_nag.sh index ab25f76..073168e 100755 --- a/files/scripts/battery_nag.sh +++ b/files/scripts/battery_nag.sh @@ -6,10 +6,9 @@ echo "`date` - Checking Active Programs" -PID="$$" -ps -ef | grep battery_nag.sh | grep -v grep | grep -v killall | grep -v $$ +ps -ef | grep battery_nag.sh | grep -v grep | grep -v "sh -c" | grep -v kill | grep -v $$ -active=`ps -ef | grep battery_nag.sh | grep -v grep | grep -v killall | grep -vc $$` +active=`ps -ef | grep battery_nag.sh | grep -v grep | grep -v "sh -c" | grep -v kill | grep -vc $$` if (( "$active" >= 1 )); then echo "Program already running, exiting. Number of processes: $active" exit 1 @@ -97,7 +96,9 @@ while true; do fi time=$sleep - if [[ "$accelerate" == "Y" ]]; then + if [[ "$accelerate" == "Y" && $batt -lt $alert ]]; then + # Bash only returns whole numbers, so things like 20/11 only provide 1. + # Likewise, if the battery is full, 20/100 returns 0, which is bad. :) if (( batt > 0 )); then time=$(( time / (alert / batt) )) else diff --git a/files/settings/i3.config b/files/settings/i3.config index f296c97..38ab13b 100644 --- a/files/settings/i3.config +++ b/files/settings/i3.config @@ -380,4 +380,4 @@ exec_always --no-startup-id feh --recursive --randomize --bg-fill ~/Pictures/Wal exec_always --no-startup-id "killall picom; picom -f" # Battery -exec_always --no-startup-id "pkill -f battery_nag.sh; battery_nag.sh >~/Reports/battery_nag.log 2>&1" +exec_always --no-startup-id bash -c 'pkill -ef "bash `which battery_nag.sh`" >~/Reports/battery_nag.log 2>&1; battery_nag.sh >>~/Reports/battery_nag.log 2>&1' From 74a65af6404adf8a785ea9e6234a68d902308df1 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Mon, 24 Aug 2026 15:04:24 -0700 Subject: [PATCH 21/22] update, fix the auto accepting of pacman, currently always doing yes. --- facts/general/package.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/facts/general/package.yml b/facts/general/package.yml index 7edd66f..25b27e1 100644 --- a/facts/general/package.yml +++ b/facts/general/package.yml @@ -158,6 +158,11 @@ pacman) echo "*** Pacman ***" + auto_accept="" + if [[ -n "$accept" ]]; then + auto_accept="{{ update_accept_var }}" + fi + sudo pacman -Syu {{ update_accept_var }} || return 1 echo -e "\n" From c36dd8756c7bf9c2bc934794119af448d4899eb6 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Mon, 24 Aug 2026 15:20:12 -0700 Subject: [PATCH 22/22] mullvad, correct the location for pacman distros since it installs it directly. --- tasks/workstation/linux/software/vpn.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tasks/workstation/linux/software/vpn.yml b/tasks/workstation/linux/software/vpn.yml index c9a4e68..4930142 100644 --- a/tasks/workstation/linux/software/vpn.yml +++ b/tasks/workstation/linux/software/vpn.yml @@ -81,6 +81,11 @@ set_fact: mullvad_exe_new: "{{ global_bin }}/{{ mullvad_exe }}" +- name: Workstation | Software | VPN | Mullvad | PATH | Facts (pacman) + set_fact: + mullvad_exe_dir: '/usr/bin' + when: ansible_pkg_mgr == "pacman" + - name: Workstation | Software | VPN | Mullvad | PATH | Install shell: "{{ item }}" loop: