ACPID kann keine Befehle in Skripts ausführen

323
Nefirim

Ich habe ein HP Elitebook 2740p, das den alten Monitormonitor für den Tablet-Modus hat. Diese Drehung erzeugt ein ACPI-Ereignis, das ich verwende, um ein Skript auszuführen, das den Bildschirm sowie die Berührung und die Stifteingabe dreht, wenn der Monitor in und aus dem Tablettmodus gedreht wird. Bei Verwendung von ACPID werden die Befehle Xrandr, Xinput und Krita nicht ausgeführt. Die Protokollierung zeigt jedoch, dass das Skript ausgeführt wurde. Die Bildschirm- und Stift- / Berührungseingaben drehen sich nicht und es werden keine Fehler protokolliert. Wenn Sie die Skripts jedoch manuell als root oder als Benutzer ausführen, werden sie wie vorgesehen ausgeführt und drehen die Bildschirm-, Berührungs- und Stifteingaben. Die DISPLAY-Variable wird in den Skripten nicht festgelegt

Die Skripte lauten wie folgt

/ 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 
1
Können Sie klarstellen, was Sie unter "bestimmte Befehle werden nicht ausgeführt" verstehen? G-Man vor 5 Jahren 0
Die Befehle xrandr, xinput und Krita werden nicht ausgeführt. Nefirim vor 5 Jahren 0
(1) Was ist Ihre Basis, um das zu sagen? Bekommen Sie Fehlermeldungen? (Wenn ja, was sind sie?) Oder beobachten Sie nur, welche Funktionalität nicht auftritt? (2) Ist DISPLAY für Ihre ereignisgesteuerten Skripts festgelegt? Funktionieren Ihre Skripts korrekt, wenn Sie interaktiv / manuell ausgeführt werden, wenn Sie DISPLAY aufheben? ………………………………………………………………………………… Bitte antworten Sie nicht in Kommentaren; Bearbeiten Sie Ihre Frage, um sie klarer und vollständiger zu machen. G-Man vor 5 Jahren 0
Die Frage wurde aktualisiert, aber ich habe einige Tests anhand Ihrer DISPLAY-Variablenfragen durchgeführt und konnte sie lösen. Da DISPLAY nicht gesetzt wurde, habe ich es in den .Xdbus eingefügt, damit es jedes Mal exportiert wird, wenn die Quelle ausgeführt wird Nefirim vor 5 Jahren 0
Danke für die Antwort. Wenn Sie das Problem gelöst haben, können Sie anderen Personen, die dieses Problem in der Zukunft haben, helfen, indem Sie die Lösung als Antwort posten. Gehen Sie in das Feld "Ihre Antwort" (unten) und beschreiben Sie, was Sie getan haben. Nimm deinen Kommentar (oben) und füge im Idealfall etwas mehr Details hinzu. G-Man vor 5 Jahren 0

1 Antwort auf die Frage

0
G-Man

Für Programme, die die Anzeige bearbeiten, muss die DISPLAYUmgebungsvariable festgelegt sein, um sie mitzuteilen, welche Anzeige verwendet werden soll. Dies gilt insbesondere für Befehle, deren Namen mit und beginnen x, wie xrandrund xinput. Die DISPLAYVariable wird automatisch für Shells festgelegt, die auf dem Terminal ausgeführt werden, nicht jedoch für Skripts, die durch Ereignisse ausgelöst werden.

Sie müssen den Namen der Anzeige bestimmen, für die die ACPI-Ereignisse gelten, und die DISPLAYUmgebungsvariable entsprechend einstellen .