diff --git a/overlay/rootfs/home/user/.config/sxmo/hooks/sxmo_hook_start.sh b/overlay/rootfs/home/user/.config/sxmo/hooks/sxmo_hook_start.sh index 23a5758..19b6471 100755 --- a/overlay/rootfs/home/user/.config/sxmo/hooks/sxmo_hook_start.sh +++ b/overlay/rootfs/home/user/.config/sxmo/hooks/sxmo_hook_start.sh @@ -89,7 +89,7 @@ if [ -z "$SXMO_NO_MODEM" ] && command -v ModemManager > /dev/null; then fi # Start the desktop widget (e.g. clock) -pidof -s conky >/dev/null 2>&1 || (DISPLAY=:0 CONKY_DPY=:0 setsid conky -c /home/user/.config/sxmo/conky.conf >/dev/null 2>&1 /dev/null 2>&1 || DISPLAY=:0 CONKY_DPY=:0 conky -c /home/user/.config/sxmo/conky.conf -d >/dev/null 2>&1 /dev/null 2>&1 || true fi +SESSION_PID_FILE="/tmp/bananarchy-x11-session.pid" +printf "%s\n" "$$" > "$SESSION_PID_FILE" +for old_pid in $(pgrep -f "/usr/bin/bananarchy-x11-session.sh" 2>/dev/null || true); do + if [ "$old_pid" != "$$" ] && [ "$old_pid" != "$PPID" ]; then + kill -9 "$old_pid" >/dev/null 2>&1 || true + fi +done +pkill -x dwm >/dev/null 2>&1 || true +trap 'rm -f "$SESSION_PID_FILE"; pkill -P $$ >/dev/null 2>&1 || true; exit 0' INT TERM HUP QUIT + pkill -9 -x conky >/dev/null 2>&1 || true rm -rf /tmp/sxmo_conky_time_state /tmp/sxmo_conky_restart.lock -(DISPLAY=:0 CONKY_DPY=:0 setsid conky -c /home/user/.config/sxmo/conky.conf >/dev/null 2>&1 /dev/null 2>&1 /dev/null 2>&1 || fcitx5 -d >/tmp/fcitx5.log 2>&1 /tmp/sxmo_hook_start.log 2>&1 /dev/null)" = "$$" ]; do + if pidof -s dwm >/dev/null 2>&1; then + exit 0 + fi xrdb -merge "$HOME/.Xresources" >/dev/null 2>&1 || true WP_FILE="/usr/share/wallpapers/bananarchy.png" if [ -f "$XDG_CONFIG_HOME/sxmo/wallpaper" ]; then @@ -111,10 +124,13 @@ while :; do sleep 0.05 pkill -9 -x conky >/dev/null 2>&1 || true rm -rf /tmp/sxmo_conky_time_state /tmp/sxmo_conky_restart.lock - (DISPLAY=:0 CONKY_DPY=:0 setsid conky -c /home/user/.config/sxmo/conky.conf >/dev/null 2>&1 /dev/null 2>&1 /dev/null 2>&1 || fcitx5 -d >/tmp/fcitx5.log 2>&1 /tmp/dwm.log 2>&1 || true + if [ "$(cat "$SESSION_PID_FILE" 2>/dev/null)" != "$$" ] || pidof -s dwm >/dev/null 2>&1; then + exit 0 + fi sleep 0.2 done diff --git a/overlay/rootfs/usr/sbin/setup-timezone b/overlay/rootfs/usr/sbin/setup-timezone index 1c67263..315f16d 100755 --- a/overlay/rootfs/usr/sbin/setup-timezone +++ b/overlay/rootfs/usr/sbin/setup-timezone @@ -68,7 +68,7 @@ setup_tz() { export XDG_CONFIG_HOME="/home/user/.config" sxmo_hook_statusbar.sh time >/dev/null 2>&1 || { pkill -9 -x conky >/dev/null 2>&1 || true - (DISPLAY=:0 CONKY_DPY=:0 setsid conky -c /home/user/.config/sxmo/conky.conf >/dev/null 2>&1 /dev/null 2>&1 /dev/null 2>&1 || true fi diff --git a/overlay/rootfs/usr/share/sxmo/default_hooks/sxmo_hook_start.sh b/overlay/rootfs/usr/share/sxmo/default_hooks/sxmo_hook_start.sh index 23a5758..19b6471 100755 --- a/overlay/rootfs/usr/share/sxmo/default_hooks/sxmo_hook_start.sh +++ b/overlay/rootfs/usr/share/sxmo/default_hooks/sxmo_hook_start.sh @@ -89,7 +89,7 @@ if [ -z "$SXMO_NO_MODEM" ] && command -v ModemManager > /dev/null; then fi # Start the desktop widget (e.g. clock) -pidof -s conky >/dev/null 2>&1 || (DISPLAY=:0 CONKY_DPY=:0 setsid conky -c /home/user/.config/sxmo/conky.conf >/dev/null 2>&1 /dev/null 2>&1 || DISPLAY=:0 CONKY_DPY=:0 conky -c /home/user/.config/sxmo/conky.conf -d >/dev/null 2>&1 /dev/null 2>&1 || true sleep 0.05 pkill -9 -x conky >/dev/null 2>&1 || true - ( - DISPLAY="${DISPLAY:-:0}" CONKY_DPY="${DISPLAY:-:0}" \ - setsid conky -c "${XDG_CONFIG_HOME:-/home/user/.config}/sxmo/conky.conf" >/dev/null 2>&1 /dev/null 2>&1 /dev/null || true }