The laptop model's hardware module and a memory-pressure module for any machine (hq research 027/03, 026/05, to-be 42 phase 3). The predecessor's polling auto-profile and mem-guard user scripts become each module's own Go code launched by the node runtime (ADR 0198): a profile switcher woken by the kernel's power-supply uevents, and a guard that warns on RAM, swap or PSI before systemd-oomd acts, on the desktop over the account's bus and always as an event. supergfxctl and triggerhappy are kept as found (research 027 Q1).
34 lines
1.2 KiB
Bash
Executable File
34 lines
1.2 KiB
Bash
Executable File
#!/bin/bash
|
|
# zephyrus-backlight + | - | PERCENT — step or set the internal panel's backlight, never below 1 %.
|
|
# Shipped by the mesh's asus-zephyrus-g14 module; edit the catalogue.
|
|
#
|
|
# The panel is the backlight beneath the eDP connector, not a name: in hybrid mode this model also
|
|
# registers the discrete GPU's backlight (nvidia_0), which moves nothing. Writable by the video group
|
|
# through the module's udev rule, so the vendor-key trigger needs no root.
|
|
set -u
|
|
STEP=5
|
|
dev=""
|
|
for d in /sys/class/backlight/*; do
|
|
[ -e "$d" ] || continue
|
|
case "$(readlink -f "$d")" in *-eDP-*) dev=$d; break ;; esac
|
|
done
|
|
if [ -z "$dev" ]; then
|
|
for d in /sys/class/backlight/*; do [ -e "$d" ] && { dev=$d; break; }; done
|
|
fi
|
|
[ -n "$dev" ] || { echo "zephyrus-backlight: no backlight" >&2; exit 1; }
|
|
cur=$(cat "$dev/brightness")
|
|
max=$(cat "$dev/max_brightness")
|
|
pct=$(( cur * 100 / max ))
|
|
case "${1:-}" in
|
|
+|up|Up) pct=$(( pct + STEP )) ;;
|
|
-|down|Down) pct=$(( pct - STEP )) ;;
|
|
''|*[!0-9]*) echo "usage: zephyrus-backlight + | - | PERCENT" >&2; exit 2 ;;
|
|
*) pct=$1 ;;
|
|
esac
|
|
(( pct < 1 )) && pct=1
|
|
(( pct > 100 )) && pct=100
|
|
new=$(( max * pct / 100 ))
|
|
(( new < 1 )) && new=1
|
|
printf '%s' "$new" >"$dev/brightness" || exit 1
|
|
exec "$(dirname "$0")/zephyrus-notify" 5555 "Brightness: ${pct}%"
|