More stable and deterministic polybar launch script

master
Meliurwen 3 years ago
parent 30734e2010
commit 270655afe0
Signed by: meliurwen
GPG Key ID: 818A8B35E9F1CE10
  1. 49
      polybar/.config/polybar/launch.sh

@ -1,33 +1,46 @@
#!/bin/sh
# Terminate already running bar instances
killall -q polybar
# Wait until the processes have been shut down
while pgrep -u "$(id -u)" -x polybar >/dev/null; do sleep 1; done
# Launch polybar
#polybar main -c $HOME/.config/polybar/config &
# Set Monitors
#xrandr --output HDMI1 --auto --left-of LVDS1
POLY_IFACES="$(ip link show | awk '/^[0-9]+:/ {sub(/:/,"",$2); print $2}')"
set -e
# If at least one polybar process is running send a SIGTERM to all:
# - Give a grace period of N cycles to all processes to terminate gracefully
# - When the grace period is expired, send a SIGKILL to all
cycle=0
while pgrep -u "$(id -u)" -x polybar >/dev/null
do
if [ $cycle -eq 0 ]; then
# Terminate already running bar instances
pkill -U "$(id -u)" -15 polybar
elif [ $cycle -eq 4 ]; then
# At the 5th cylcle SIGKILL
pkill -U "$(id -u)" -9 polybar
fi
sleep 1
cycle=$((cycle + 1))
done
unset cycle
for NET_IFACE in $POLY_IFACES ; do
NET_IFACES="$(ip link show | awk '/^[0-9]+:/ {sub(/:/,"",$2); print $2}')"
for NET_IFACE in $NET_IFACES ; do
case $NET_IFACE in
wlp* ) POLY_WLP=$NET_IFACE ;;
enp* ) POLY_ENP=$NET_IFACE ;;
esac
done
unset NET_IFACES
HWMON_BASEDIR="$(find "/sys/devices/platform/coretemp.0/hwmon/" -maxdepth 1 -type d -name 'hwmon*' | tail -n +2 | head -1)"
POLY_HWMON="$HWMON_BASEDIR"/temp1_input
HWMON_MODULE="/sys/devices/platform/coretemp.0/hwmon/"
if [ -d "$HWMON_MODULE" ]; then
HWMON_BASEDIR="$(find "$HWMON_MODULE" -maxdepth 1 -type d -name 'hwmon*' | tail -n +2 | head -1)"
POLY_HWMON="$HWMON_BASEDIR"/temp1_input
unset HWMON_BASEDIR
fi
unset HWMON_MODULE
if type "xrandr"; then
for m in $(xrandr --query | grep " connected" | cut -d" " -f1); do
POLY_WLP=$POLY_WLP POLY_ENP=$POLY_ENP POLY_HWMON=$POLY_HWMON MONITOR=$m polybar main -c "$HOME/.config/polybar/config" &
done
else
POLY_WLP=$POLY_WLP POLY_ENP=$POLY_ENP POLY_HWMON=$POLY_HWMON MONITOR=$m polybar main -c "$HOME/.config/polybar/config" &
fi
unset POLY_WLP POLY_ENP POLY_HWMON

Loading…
Cancel
Save