diff options
Diffstat (limited to 'dotfiles/hyprland/.local/bin/airplane-mode')
| -rwxr-xr-x | dotfiles/hyprland/.local/bin/airplane-mode | 110 |
1 files changed, 0 insertions, 110 deletions
diff --git a/dotfiles/hyprland/.local/bin/airplane-mode b/dotfiles/hyprland/.local/bin/airplane-mode deleted file mode 100755 index 4f5ed9c..0000000 --- a/dotfiles/hyprland/.local/bin/airplane-mode +++ /dev/null @@ -1,110 +0,0 @@ -#!/bin/sh -# airplane-mode — toggle a low-power "airplane" state for a laptop. -# -# Engage: record the current state of each lever, then apply low-power values: -# - wifi off (nmcli; bluetooth is left alone, on purpose — earbuds) -# - CPU energy-performance preference -> power (intel_pstate, via sysfs) -# - display brightness dimmed -# - stop network-only services (VPNs, sync, discovery, inbound SSH) -# Disengage: read the recorded state and restore exactly what was there. A -# lever already in its low-power position before engaging (e.g. wifi already -# off, a service already stopped) is left untouched on disengage. -# -# State lives at $XDG_RUNTIME_DIR/airplane-state as key=value lines. The -# waybar-airplane indicator reads `mode` from it. -# -# Env knobs (defaults are the real system; tests override them): -# AIRPLANE_EPP_GLOB glob of EPP sysfs files -# AIRPLANE_BRIGHTNESS_LOW brightnessctl target while engaged -# AIRPLANE_SYSTEM_SERVICES system units to stop (sudo) -# AIRPLANE_USER_SERVICES --user units to stop - -STATE_FILE="${XDG_RUNTIME_DIR:-/tmp}/airplane-state" -SUDO="${AIRPLANE_SUDO:-sudo}" -EPP_GLOB="${AIRPLANE_EPP_GLOB:-/sys/devices/system/cpu/cpu*/cpufreq/energy_performance_preference}" -BRIGHTNESS_LOW="${AIRPLANE_BRIGHTNESS_LOW:-35%}" -SYSTEM_SERVICES="${AIRPLANE_SYSTEM_SERVICES:-tailscaled.service proton.VPN.service avahi-daemon.service cups.service wsdd.service geoclue.service sshd.service fail2ban.service}" -USER_SERVICES="${AIRPLANE_USER_SERVICES:-syncthing.service}" - -read_key() { sed -n "s/^$1=//p" "$STATE_FILE" 2>/dev/null | head -n1; } - -set_epp() { - # Write $1 to every EPP file. Needs root; glob expands inside the subshell. - $SUDO sh -c "for f in $EPP_GLOB; do [ -e \"\$f\" ] && echo $1 > \"\$f\"; done" 2>/dev/null -} - -first_epp() { - for f in $EPP_GLOB; do - [ -e "$f" ] && { cat "$f"; return; } - done -} - -engage() { - # --- record current state --- - wifi_was=$(nmcli radio wifi 2>/dev/null) - epp_was=$(first_epp) - bright_was=$(brightnessctl get 2>/dev/null) - - stopped_system="" - for s in $SYSTEM_SERVICES; do - if systemctl is-active --quiet "$s" 2>/dev/null; then - $SUDO systemctl stop "$s" 2>/dev/null && stopped_system="$stopped_system $s" - fi - done - stopped_user="" - for s in $USER_SERVICES; do - if systemctl --user is-active --quiet "$s" 2>/dev/null; then - systemctl --user stop "$s" 2>/dev/null && stopped_user="$stopped_user $s" - fi - done - - # --- apply low-power settings --- - nmcli radio wifi off 2>/dev/null - set_epp power - brightnessctl set "$BRIGHTNESS_LOW" >/dev/null 2>&1 - - # --- persist what we recorded --- - { - echo "mode=on" - echo "wifi=$wifi_was" - echo "epp=$epp_was" - echo "brightness=$bright_was" - echo "stopped_system=$stopped_system" - echo "stopped_user=$stopped_user" - } > "$STATE_FILE" - - notify info "Airplane mode" "ON — wifi off, low power" 2>/dev/null -} - -disengage() { - wifi_was=$(read_key wifi) - epp_was=$(read_key epp) - bright_was=$(read_key brightness) - stopped_system=$(read_key stopped_system) - stopped_user=$(read_key stopped_user) - - # Only restore a lever that was NOT already in its low-power state. - [ "$wifi_was" = "enabled" ] && nmcli radio wifi on 2>/dev/null - [ -n "$epp_was" ] && set_epp "$epp_was" - [ -n "$bright_was" ] && brightnessctl set "$bright_was" >/dev/null 2>&1 - - for s in $stopped_system; do - $SUDO systemctl start "$s" 2>/dev/null - done - for s in $stopped_user; do - systemctl --user start "$s" 2>/dev/null - done - - echo "mode=off" > "$STATE_FILE" - notify info "Airplane mode" "OFF — settings restored" 2>/dev/null -} - -case "$(read_key mode)" in - on) disengage ;; - *) engage ;; -esac - -# Refresh the waybar indicator immediately (custom/airplane listens on signal 10). -pkill -RTMIN+10 waybar 2>/dev/null - -exit 0 |
