# --- global dunst state --- : "${XDG_RUNTIME_DIR:=$HOME/.cache}" # fallback if XDG_RUNTIME_DIR not set export DUNST_STATE_FILE="$XDG_RUNTIME_DIR/dunst.paused" printf "false" > "$DUNST_STATE_FILE" # initialize false # Toggle Dunst (reads/writes global state + shows result) super + shift + n sh -c 'S="${DUNST_STATE_FILE:-$HOME/.cache/dunst.paused}"; P="$(cat "$S" 2>/dev/null || echo false)"; if [ "$P" = true ]; then dunstctl set-paused false && echo false >"$S" && notify-send -u low "🔔 Dunst active"; else dunstctl set-paused true && echo true >"$S" && notify-send -u low "🔕 Dunst muted"; fi' # Check Dunst status (no toggle) super + n sh -c 'S="${DUNST_STATE_FILE:-$HOME/.cache/dunst.paused}"; P="$(cat "$S" 2>/dev/null || echo false)"; [ "$P" = true ] && notify-send -u low "🔕 Dunst muted" || notify-send -u low "🔔 Dunst active"' # Menu items super + d rofi -show combi # Super key = Mod4 # Launch terminal super + Return alacritty super + shift + Return konsole --profile Hyperkonsole # Close / kill super + q bspc node -c super + shift + q bspc node -k # super + Escape # sxhd-reload-safe # --- quit / restart bspwm (works reliably) --- super + alt + q bspc quit super + alt + r bspc wm -r # temporarily release all key grabs (useful for games/VMs); press again to re-grab super + shift + Escape pkill -USR2 -x sxhkd # Focus movement super + {h,j,k,l} bspc node -f {west,south,north,east} # Move node super + shift + {h,j,k,l} bspc node -s {west,south,north,east} # Split / rotate super + b bspc node -p cancel; bspc node -B east super + r bspc node @/ -R 90 # Monocle / tiled toggle super + m bspc node -t {tiled,fullscreen,monocle} # Move to desktop 1..9 / focus desktops super + {1-9} bspc desktop -f '^{1-9}' super + shift + {1-9} bspc node -d '^{1-9}'