[Sync] Lua Hyprland chain, licence cleanup
This commit is contained in:
1 parent
93b4f695ce
commit
47166d877f
183 files changed
+5618
-5839
No files matched your search
Executable
+70
@@ -0,0 +1,70 @@
|
||||
#!/usr/bin/env bash
|
||||
# wbar — run the custom waybar rig (layouts/custom.jsonc + custom.css) as a
|
||||
# supervised systemd user service, and control it.
|
||||
#
|
||||
# Why a service: waybar 0.15.0 segfaults when the LG 4K drops its DisplayPort
|
||||
# link on power-off (output removed) and again when it comes back (output
|
||||
# re-added). Launched as a bare scope nothing relaunched it, so the bar was gone
|
||||
# every morning. As a transient *service* with Restart=always systemd brings it
|
||||
# back after RestartSec, at both ends of the cycle. StartLimitIntervalSec=0 keeps
|
||||
# systemd from giving up while the monitor is gone and Hyprland sits on its
|
||||
# headless fallback output (the default limit of 5 starts per 10 s would
|
||||
# reproduce the original "stays dead" behavior). RestartSec=3 keeps that
|
||||
# potential loop cheap; `systemctl --user show dots-waybar.service -p NRestarts`
|
||||
# after a night says how many restarts a sleep cycle really costs.
|
||||
#
|
||||
# The unit is dots-owned on purpose. HyDE's own bar unit
|
||||
# (hyde-$XDG_SESSION_DESKTOP-bar.service) is masked on rig hosts (README.md) so
|
||||
# waybar.py can never spawn a second, plain bar — reusing that name would need
|
||||
# the mask lifted. Under a different name HyDE keeps seeing "no bar", exactly as
|
||||
# before.
|
||||
#
|
||||
# Because a killed waybar now comes straight back, every killall-based control
|
||||
# goes through here:
|
||||
# wbar restart (what the old `wbar` abbr did) also: hc.start.bar
|
||||
# wbar toggle Ctrl+Alt+W
|
||||
# wbar reload re-read config + CSS in place (SIGUSR2), no restart
|
||||
# wbar start|stop|status
|
||||
set -euo pipefail
|
||||
|
||||
unit="dots-waybar.service"
|
||||
cfg="$HOME/.config/waybar/layouts/custom.jsonc"
|
||||
css="$HOME/.config/waybar/layouts/custom.css"
|
||||
|
||||
active() { systemctl --user is-active --quiet "$unit"; }
|
||||
|
||||
start() {
|
||||
active && return 0
|
||||
systemctl --user reset-failed "$unit" 2>/dev/null || true
|
||||
# A service gets the user manager's environment, not Hyprland's. Forward the
|
||||
# session vars app2unit forwards for HyDE's own units, plus GTK scaling
|
||||
# (GDK_SCALE=1 is what keeps the bar sized right on the 1.25-scaled output).
|
||||
local -a env=()
|
||||
local v
|
||||
for v in XDG_VTNR XDG_SEAT XDG_SEAT_PATH XDG_SESSION_ID XDG_SESSION_PATH GDK_SCALE GDK_DPI_SCALE; do
|
||||
[ -n "${!v:-}" ] && env+=("--setenv=$v=${!v}")
|
||||
done
|
||||
systemd-run --user --quiet --collect \
|
||||
--unit="$unit" --slice=app-graphical.slice --description="waybar (dots custom rig)" \
|
||||
--property=Type=exec --property=ExitType=cgroup \
|
||||
--property=Restart=always --property=RestartSec=3 --property=StartLimitIntervalSec=0 \
|
||||
--property=After=graphical-session.target --property=PartOf=graphical-session.target \
|
||||
"${env[@]}" -- waybar -c "$cfg" -s "$css"
|
||||
}
|
||||
|
||||
case "${1:-restart}" in
|
||||
start) start ;;
|
||||
stop) systemctl --user stop "$unit" ;;
|
||||
restart)
|
||||
if active; then systemctl --user restart "$unit"; else start; fi
|
||||
;;
|
||||
toggle)
|
||||
if active; then systemctl --user stop "$unit"; else start; fi
|
||||
;;
|
||||
reload) systemctl --user kill -s SIGUSR2 "$unit" ;;
|
||||
status) systemctl --user status --no-pager "$unit" ;;
|
||||
*)
|
||||
echo "usage: wbar [start|stop|restart|toggle|reload|status] (default: restart)" >&2
|
||||
exit 2
|
||||
;;
|
||||
esac
|
||||
Reference in new issue
Block a user