Instead of hardcoding the paths of all the scripts, use env variables
that are set in launch.sh. This way the config also works with
XDG_CONFIG_HOME not set to ~/.config.
Sadly polybar only accepts references that stand on their own.
(So something like ${env:XDG_CONFIG_HOME:~/.config}/polybar/<script>
does not work.) Hence the mess with the associative array and the
variables for every module.
36 lines
1.0 KiB
Bash
Executable File
36 lines
1.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
XDG_CONF="${XDG_CONFIG_HOME:-$HOME/.config}"
|
|
BASE_DIR="$XDG_CONF/polybar"
|
|
|
|
declare -A module_flags
|
|
module_flags=(
|
|
[battery]="$BASE_DIR/scripts/battery.sh"
|
|
[bluetooth]="$BASE_DIR/scripts/bluetooth.sh"
|
|
[bluetooth_click_left]="$BASE/scripts/bluetooth.sh --toggle &"
|
|
[media]="$BASE_DIR/scripts/media.sh"
|
|
[powermenu]="%{A1:$XDG_CONF/rofi/powermenu.sh &:}%{T2}...%{T-}%{A}"
|
|
[vpn]="$BASE_DIR/scripts/vpn.sh"
|
|
[vpn_click_left]="$BASE_DIR/scripts/pub_ipv4.sh &"
|
|
)
|
|
for module in "${!module_flags[@]}"; do
|
|
export POLYBAR_${module^^}="${module_flags[$module]}"
|
|
done
|
|
|
|
# if there is no running instance
|
|
if ! pgrep -ax polybar >/dev/null 2>&1; then
|
|
# launch Polybar on every monitor
|
|
# https://github.com/polybar/polybar/issues/763
|
|
primary="$(xrandr -q | grep primary | cut -d' ' -f1)"
|
|
for m in $(polybar --list-monitors | cut -d':' -f1); do
|
|
export TRAY_POS=none
|
|
[ "$m" != "$primary" ] || export TRAY_POS=right
|
|
export MONITOR="$m"
|
|
polybar --reload -c "$BASE_DIR/config" main &
|
|
done
|
|
|
|
echo "Polybar launched..."
|
|
else
|
|
polybar-msg cmd restart
|
|
fi
|