1

У меня HP Elitebook 2740p, у которого есть вращающийся монитор старого стиля для режима планшета. Это вращение генерирует событие ACPI, которое я использую для запуска сценария, который поворачивает экран, а также сенсорный и перьевой ввод, когда монитор поворачивается в режим планшета и из него. При использовании ACPID команды Xrandr, Xinput и Krita не выполняются, но ведение журнала показывает, что скрипт выполнен. Экран и перьевой / сенсорный вводы не вращаются, и ошибки не регистрируются. Однако при запуске сценариев вручную от имени пользователя root или от имени пользователя они выполняются по назначению и поворачивают экранные, сенсорные и перьевые вводы. Переменная DISPLAY не установлена в скриптах

Сценарии таковы

/ И т.д. / ACPI / События / 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

/ Главная / Foo / скрипты / 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

/ Главная / Foo / скрипты / 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 ответ1

0

Программы, которые управляют дисплеем, должны иметь переменную окружения DISPLAY чтобы указать им, какой дисплей использовать.  Это обычно верно, в частности, для команд, имена которых начинаются с x , таких как xrandr и xinput .  Переменная DISPLAY устанавливается соответствующим образом автоматически для оболочек, работающих на терминале, но не для сценариев, запускаемых событиями.

Вам нужно будет определить имя дисплея, для которого предназначены события ACPI, и соответственно установить переменную среды DISPLAY .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .