As regras do Udev envolvendo o X11 não são executadas na inicialização

1

Eu tenho algumas regras do udev escritas para serem executadas quando conecto certos dispositivos usb. Por exemplo, altero a velocidade do ponteiro para determinados mouses e altero o xmodmaps para teclados específicos.

Os scripts funcionam bem ao conectar os dispositivos quando o computador está ligado e também funcionam enquanto os conectam enquanto o computador está suspenso. No entanto, essas regras do udev parecem não disparar se o dispositivo estiver conectado antes inicializar ou fazer login. Existe uma maneira de executá-las na inicialização?

Estou usando o (K) Ubuntu 13.04. Aqui estão alguns exemplos das minhas regras e scripts do udev.

/etc/udev/rules.d/00-teck.rules :

ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="0e6a", ATTR{idProduct}=="030c", RUN+="/usr/local/bin/TECK_connect"
ACTION=="remove", SUBSYSTEM=="usb", RUN+="/usr/local/bin/TECK_disconnect"

/usr/local/bin/TECK_connect :

#!/usr/bin/env bash

export DISPLAY=:0.0
cp -f /home/sparhawk/HDD/Computer/Xmodmaps/Xmodmap_for_TECK /home/sparhawk/.Xmodmap
sudo -u sparhawk setxkbmap -layout us -variant altgr-intl
sudo -u sparhawk xmodmap /home/sparhawk/.Xmodmap
sudo -u sparhawk pkill xcape
sudo -u sparhawk xcape -e 'Alt_L=Return' && sudo -u sparhawk notify-send "xmodmap" "TECK connected." -i /usr/share/icons/oxygen/48x48/devices/input-keyboard.png --hint=int:transient:1

/etc/udev/rules.d/90-razerwakeup-slowdown.rules :

ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="1532", ATTRS{idProduct}=="0016" RUN+="/bin/sh -c 'echo $env{DEVPATH} | grep -q usb./[^/]*/[^/]*/[^/]*$ && echo enabled > /sys$env{DEVPATH}/../power/wakeup; razer_slowdown'"

/usr/local/bin/razer_slowdown :

#!/usr/bin/env bash
# slow down the tracking speed of a razer mouse.
# to check, $ xinput --list-props "Razer Razer DeathAdder"| grep 'Constant Deceleration'
# which was originally 1

scriptproper () {
        sleep 0.5 # perhaps not necessary, but putting it in background is.
        export DISPLAY=:0.0
        sudo -u sparhawk xinput --set-prop "Razer Razer DeathAdder" "Device Accel Constant Deceleration" 3
}

scriptproper &
    
por Sparhawk 19.05.2013 / 06:33

1 resposta

3

Não, pois as operações que você descreve requerem um servidor X em execução. Você deve considerar a criação de um item de início automático para eles.

    
por 19.05.2013 / 06:45