Скрипт не работает при возобновлении

Я использую 11.04 на Asus UL30. Я пытаюсь запустить скрипт, чтобы исправить мои настройки синхронизатора (которые теряются при возобновлении работы). Я написал следующий скрипт в /etc/pm/sleep.d/10_touchpad:

#!/bin/sh

#change synclient settings on resume

case "$1" in 

    resume|thaw)

        sleep 15 && synclient TapButton2=2 TapButton3=3 ;;
esac

/ var / log / pm-suspend и показывает следующее:

/ etc /pm/sleep.d/10_grub-common suspend suspend: success. Запуск хука /etc/pm/sleep.d/10_touchpad suspend suspend: /etc/pm/sleep.d/10_unattended-upgrades-hibernate возобновить suspend: успешно. Запуск ловушки /etc/pm/sleep.d/10_touchpad возобновить приостановку: не удалось подключиться к X-серверу.

/etc/pm/sleep.d/10_touchpad возобновить приостановить: успех. Запуск хука /etc/pm/sleep.d/10_grub-common

Не совсем уверен, почему изменения сценария не изменяются этим сценарием при возобновлении. Был бы признателен за любую проницательность ....

4
задан 10 November 2017 в 23:53

1 ответ

Прямой ответ

Чтобы достичь своей цели (запустить зависимый от X-сеанса сценарий пространства пользователя при возобновлении работы компьютера), вы должны:

  1. запустить сценарий как соответствующий пользователь; и
  2. гарантируют, что переменная DISPLAY установлена.

Я бы переместил строку sleep 15 && synclient TapButton2=2 TapButton3=3 в отдельный файл скажем /usr/local/sbin/setupTouchpad.sh и заменил строку на:

   export DISPLAY=:0
   su -c - <yourusername> /usr/local/sbin/setupTouchpad.sh

Где следует заменить <yourusername>. Обратите внимание, что все еще неплохо бы иметь некоторое время сна, чтобы убедиться, что система активна перед запуском кода. Кроме того, обязательно chmod +x, что setupTouchpad.sh сценарий.


Лучший способ

Проблема с вышесказанным заключается в том, что вам приходится жестко кодировать свое имя пользователя (или использовать какой-нибудь хакерский способ, чтобы узнать, какой пользователь вошел в систему и имеет активный сеанс X) , Лучше установить общесистемные настройки сенсорной панели для X.

Эти параметры могут быть установлены в /usr/share/X11/xorg.conf.d/

Для меня правильный файл для редактирования - 50-synaptics.conf здесь я установил параметры, вот часть этого файла:

Section "InputClass"
        Identifier "touchpad catchall"
        Driver "synaptics"
        MatchIsTouchpad "on"

        Option          "TapButton2"              "2"
        Option          "TapButton3"              "3"

        # Etc...
EndSection

Как вы, возможно, уже знаете, чтобы увидеть действительные опции, просто запустите synclient.

Примечание необходимо перезагрузить X, чтобы эти изменения вступили в силу. Например, для этого в Ubuntu вы можете запустить sudo /etc/init.d/lightdm restart

. Для предварительного просмотра изменений вы можете попробовать запустить следующую строку (или какой-либо вариант). Снимите | bash с конца, чтобы увидеть команды, которые он выдает.

cat /usr/share/X11/xorg.conf.d/50-synaptics.conf | grep Option | grep -v "^\#" | awk '{print "synclient " $2 "=" $3}' | sed 's/\"//g' | bash

Если вы поищите в Google touchpad settings synaptics xorg.conf.d, вы также найдете несколько хороших обзоров вариантов.


Ссылки

0
ответ дан 10 November 2017 в 23:53

Другие вопросы по тегам:

Похожие вопросы: