aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-08-13 22:34:42 -0500
committerCraig Jennings <c@cjennings.net>2026-08-13 22:34:42 -0500
commita42e06d6ef4fc6296a17c69580aa9911667a6c88 (patch)
tree74475a705d891f8f0347e11b877812ffe0f85377 /docs
parentab44b307f67159915fafa88b09b81a37b59b8e23 (diff)
downloadarchsetup-a42e06d6ef4fc6296a17c69580aa9911667a6c88.tar.gz
archsetup-a42e06d6ef4fc6296a17c69580aa9911667a6c88.zip
feat(installer): grant brightness control to the video group
Arch's brightnessctl ships no udev rules and leans on logind, which grants brightness writes only to the active seat session. Anything outside that session (a script, an ssh shell, a panel launched into a different one) meets root-owned sysfs and gets EPERM. On velox both panel sliders were dead after a fresh install. configure_backlight_access writes a udev rule making the backlight and keyboard-LED brightness attributes group-writable by video, which create_user already adds the user to. I granted the keyboard LED to video rather than input: anyone in input can read every input device, which is too much authority for dimming a keyboard. essential_services is already marked complete on machines installed before this step, so a re-run skips them. The post-install checklist carries the manual route.
Diffstat (limited to 'docs')
-rw-r--r--docs/post-install-checklist.org29
1 files changed, 29 insertions, 0 deletions
diff --git a/docs/post-install-checklist.org b/docs/post-install-checklist.org
index fa704b6..97fc0d5 100644
--- a/docs/post-install-checklist.org
+++ b/docs/post-install-checklist.org
@@ -37,6 +37,35 @@ Trusted devices reconnect on their own after reboot; if one doesn't, check
=rfkill list= first (radios should be unblocked — TLP owns radio state and
enables bluetooth/wifi at startup per =/etc/tlp.d/01-custom.conf=).
+** Brightness control on a machine installed before 2026-08-13
+
+Only for a machine whose install predates =configure_backlight_access=. New
+installs get the rule automatically, and a re-run of =archsetup= skips the
+step because =essential_services= is already marked complete, so an older
+machine needs one of these by hand:
+
+#+begin_src bash
+# either drop the rule in directly...
+sudo tee /etc/udev/rules.d/90-backlight.rules > /dev/null << 'EOF'
+ACTION=="add", SUBSYSTEM=="backlight", RUN+="/usr/bin/chgrp video /sys/class/backlight/%k/brightness"
+ACTION=="add", SUBSYSTEM=="backlight", RUN+="/usr/bin/chmod g+w /sys/class/backlight/%k/brightness"
+ACTION=="add", SUBSYSTEM=="leds", KERNEL=="*kbd_backlight", RUN+="/usr/bin/chgrp video /sys/class/leds/%k/brightness"
+ACTION=="add", SUBSYSTEM=="leds", KERNEL=="*kbd_backlight", RUN+="/usr/bin/chmod g+w /sys/class/leds/%k/brightness"
+EOF
+sudo udevadm control --reload
+sudo udevadm trigger --subsystem-match=backlight --action=add
+sudo udevadm trigger --subsystem-match=leds --action=add
+
+# ...or clear the marker and re-run just that step
+sudo rm /var/lib/archsetup/state/essential_services
+#+end_src
+
+Verify: =ls -l /sys/class/backlight/*/brightness= shows group =video= with
+=g+w=, and =brightnessctl -c backlight set 70%= succeeds without sudo.
+
+Only laptops have these devices; on a desktop the rule is inert and nothing
+needs doing.
+
** Proton Mail Bridge (cmail)
The installer's completion message carries the steps; recorded here too so