Duas modificações fizeram com que esse caso específico funcionasse:
o script kbd
precisava de uma adição DISPLAY:0.0
a regra do udev reagiu a um evento que era muito cedo. Eu mudei o subsistema para input
.
e tudo funcionou bem.
Eu tenho um teclado USB que eu conecto no meu desktop no trabalho. Ao usá-lo, tende a definir manualmente a seguinte opção setxkbmap :
setxkbmap -option compose:ralt
setxkbmap -option ctrl:swap_rwin_rctl
setxkbmap -option ctrl:swap_lwin_lctl
Como faço isso frequentemente, eu queria automatizar o processo usando uma regra udev . A regra a seguir corresponde ao evento quando eu plug-in no teclado:
ACTION=="add", SUBSYSTEM=="usb", DRIVER=="usb", ATTRS{idVendor}=="046a", ATTRS{idProduct}=="0023", RUN+="/home/cutuchiqueno/.local/bin/kbd_udev", OWNER="cutuchiqueno"
o script que é RUN contém as três linhas do início desta pergunta:
#!/bin/bash
setxkbmap -option compose:ralt
setxkbmap -option ctrl:swap_rwin_rctl
setxkbmap -option ctrl:swap_lwin_lctl
echo 'date +%T' >> /home/cutuchiqueno/udevtest
(adicionei a última linha apenas para fins de depuração). Infelizmente as opções não são colocadas. Eu posso imaginar que isso tem algo a ver com os parâmetros do ambiente, embora eu não saiba realmente como abordar o problema.
Duas modificações fizeram com que esse caso específico funcionasse:
o script kbd
precisava de uma adição DISPLAY:0.0
a regra do udev reagiu a um evento que era muito cedo. Eu mudei o subsistema para input
.
e tudo funcionou bem.
Tags xorg keyboard-layout xkb udev