ACPID não é capaz de executar comandos em scripts

1

Eu tenho um HP Elitebook 2740p que tem o monitor rotativo antigo para o modo tablet. Essa rotação gera um evento ACPI que estou usando para executar um script que gira a tela, bem como a entrada de toque e caneta quando o monitor é girado para dentro e para fora do modo de tablet. Ao usar o ACPID, os comandos Xrandr, Xinput e Krita não são executados, mas o log mostra que o script foi executado. As entradas de tela e caneta / toque não giram e nenhum erro é registrado. No entanto, ao executar os scripts manualmente como raiz ou como usuário, eles são executados conforme planejado e rotacionam as entradas de tela, toque e caneta. A variável DISPLAY não está definida nos scripts

Os scripts são os seguintes

/ etc / acpi / events / tabletmode

event=video/tabletmode.*
action=/etc/acpi/actions/tabletmode.sh

/etc/acpi/actions/tabletmode.sh

#!/bin/bash
logger "tabletmode.sh executed"
grep -q 0 /sys/devices/platform/hp-wmi/tablet
if [ $? = 0 ]
then
    /home/foo/scripts/tabletmodeoff ;
else
    /home/foo/scripts/tabletmodeon ;
fi

/ home / foo / scripts / tabletmodeoff

#!/bin/sh
source /home/foo/.Xdbus
/usr/bin/xrandr -o normal
/usr/bin/xinput set-prop "Wacom Serial Penabled 2FG Touchscreen Pen Pen (0)" 144 1 0 0 0 1 0 0 0 1
/usr/bin/xinput set-prop "Wacom Serial Penabled 2FG Touchscreen Finger" 144  1 0 0 0 1 0 0 0 1

/ home / foo / scripts / tabletmodeon

#!/bin/sh
source /home/foo/.Xdbus
/usr/bin/xrandr -o inverted
/usr/bin/xinput set-prop "Wacom Serial Penabled 2FG Touchscreen Pen Pen (0)" 144 -1 0 1 0 -1 1 0 0 1
/usr/bin/xinput set-prop "Wacom Serial Penabled 2FG Touchscreen Finger" 144 -1 0 1 0 -1 1 0 0 1
su -c /usr/bin/krita foo
    
por Nefirim 19.05.2018 / 01:49

1 resposta

0

Programas que manipulam a exibição precisa ter o conjunto de variáveis de ambiente DISPLAY para dizer a eles quais são exibidos. Isso é tipicamente verdade, em particular, para comandos cujos nomes começam com x , como xrandr e xinput . A variável DISPLAY é definida apropriadamente automaticamente para shells que estão sendo executados no terminal, mas não para scripts acionados por eventos.

Você precisa determinar o nome da exibição para a qual os eventos da ACPI são e defina a variável de ambiente DISPLAY de acordo.

    
por 22.05.2018 / 04:22