Controlando el brillo del teclado y pantalla en un MacBook con NixOS y XMonad
Cuando instalas NixOS en un MacBook Pro, el control de brillo no viene gratis. No hay teclas dedicadas que funcionen out-of-the-box como en macOS. Hay que currarselo.
Aqui documento como tengo configurado el control de brillo de pantalla y del teclado en mi MacBook Pro 13,2 (2016) con XMonad.
Lo que necesitas
Un solo paquete: brightnessctl.
Controla tanto la pantalla como el teclado.
environment.systemPackages = [ pkgs.brightnessctl ];Para que funcione sin root, una regla udev que abra permisos al backlight:
services.udev.extraRules = ''
ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="intel_backlight",
RUN+="${pkgs.coreutils}/bin/chmod 666 /sys/class/backlight/intel_backlight/brightness"
'';Y el parametro de kernel para que use el driver nativo de Apple:
boot.kernelParams = [ "acpi_backlight=native" ];Descubriendo los dispositivos
Lo primero es ver que dispositivos de brillo tienes:
brightnessctl --listEn el MacBook Pro 13,2 aparecen dos:
intel_backlight– la pantallaspi::kbd_backlight– el teclado (conectado por SPI, no USB)
Brillo de pantalla
Control manual:
brightnessctl set 50% # Poner al 50%
brightnessctl set +5% # Subir 5%
brightnessctl set 5%- # Bajar 5%En XMonad, como el MacBook no tiene teclas de brillo dedicadas (las F-keys estan remapeadas con keyd), uso Shift + teclas de volumen:
-- Shift + Volumen Abajo = bajar brillo
, ("S-<XF86AudioLowerVolume>", spawn "brightnessctl set 5%-")
-- Shift + Volumen Arriba = subir brillo
, ("S-<XF86AudioRaiseVolume>", spawn "brightnessctl set +5%")Logica: las teclas de volumen estan al lado de las de brillo en un teclado Apple. Shift las convierte en control de brillo. Facil de recordar.
Backlight del teclado
El backlight del teclado en este MacBook es binario en la practica: o lo quieres encendido o apagado. No tiene mucho sentido tenerlo a medio gas.
Control manual:
brightnessctl --device='spi::kbd_backlight' set 100% # Encender
brightnessctl --device='spi::kbd_backlight' set 0 # ApagarPara el toggle, un script simple (scripts/toggle-kbd-backlight):
#!/usr/bin/env bash
cur=$(brightnessctl --device=spi::kbd_backlight get)
if [ "$cur" -eq 0 ]; then
brightnessctl --device=spi::kbd_backlight set 100%
else
brightnessctl --device=spi::kbd_backlight set 0
fiY en XMonad, Shift + Eject hace el toggle:
, ("S-<XF86Eject>", spawn "/home/passh/dotfiles/scripts/toggle-kbd-backlight")Eject es la tecla que en macOS expulsa discos. En NixOS no hace nada, asi que la reciclamos. Al arrancar XMonad, el backlight se apaga automaticamente para no gastar bateria:
spawn "brightnessctl --device='spi::kbd_backlight' set 0 2>/dev/null"El 2>/dev/null es para que no
moleste en maquinas que no tienen ese dispositivo (como mi workstation
de sobremesa).
El detalle que importa: el nombre del dispositivo
Si buscas en internet como controlar el backlight del teclado en un
MacBook con Linux, la mayoria de guias dicen que el dispositivo se llama
apple::kbd_backlight. En el MacBook Pro
13,2 con NixOS, el dispositivo real es spi::kbd_backlight.
La forma segura de saberlo:
brightnessctl --list | grep kbdEsto me costo un rato de depuracion. El script funcionaba desde terminal, pero el keybinding de XMonad no hacia nada. Al final era una combinacion de: nombre incorrecto del dispositivo, la virgula con el path, y que XMonad necesitaba un rebuild de NixOS para actualizar el xmonad.hs (gestionado por home-manager, que genera un symlink al nix store).
Resumen de keybindings
| Atajo | Accion |
|---|---|
| Shift + Volumen Abajo | Bajar brillo pantalla 5% |
| Shift + Volumen Arriba | Subir brillo pantalla 5% |
| Shift + Eject | Toggle backlight teclado |
Todo el codigo esta en mi repo de dotfiles.
Comentarios (0)
Sin comentarios todavia. Se el primero!
Deja un comentario