Add three `systemd` user units that reset volume, screen brightness, and keyboard backlight, so that every session starts from a known state. Values come from ~/.config/environment.d/50-defaults.conf, and can be overridden per machine via an untracked 90-local.conf
47 lines
1.1 KiB
Shell
Executable file
47 lines
1.1 KiB
Shell
Executable file
#!/bin/sh
|
|
|
|
set -eu
|
|
|
|
|
|
# Loaded from ~/.config/environment.d/50-defaults.conf or a local override
|
|
BRIGHTNESS="${DEFAULT_KEYBOARD_BRIGHTNESS:?unset, check ~/.config/environment.d/}"
|
|
|
|
|
|
# Nothing to do on machines without a keyboard backlight
|
|
KBD_DEVICE=
|
|
for led in /sys/class/leds/*kbd_backlight*; do
|
|
[ -e "$led" ] || break
|
|
KBD_DEVICE=$led
|
|
break
|
|
done
|
|
|
|
if [ -z "$KBD_DEVICE" ]; then
|
|
echo "No keyboard backlight, skipping"
|
|
exit 0
|
|
fi
|
|
|
|
|
|
kbd_set() {
|
|
gdbus call --session \
|
|
--dest org.gnome.SettingsDaemon.Power \
|
|
--object-path /org/gnome/SettingsDaemon/Power \
|
|
--method org.freedesktop.DBus.Properties.Set \
|
|
org.gnome.SettingsDaemon.Power.Keyboard Brightness "<int32 $BRIGHTNESS>" \
|
|
>/dev/null
|
|
}
|
|
|
|
|
|
gdbus wait --session --timeout 10 org.gnome.SettingsDaemon.Power
|
|
|
|
|
|
# `gsd-power` owns its bus name before it has probed the keyboard
|
|
# backlight, so at login the first write may silently be discarded
|
|
kbd_set
|
|
|
|
if [ "$(cat "$KBD_DEVICE/brightness")" = "0" ]; then
|
|
sleep 3
|
|
kbd_set
|
|
fi
|
|
|
|
|
|
echo "Set keyboard brightness to $BRIGHTNESS"
|