Выполненный auto-disper автоматически на следе/оттепели устройства

Я использую Thinkpad W510 и постоянно изменяю местоположения. Я использую disper и auto-disper для изменения экранных профилей (расстыкованный; экран ноутбука + внешний экран; два внешних экрана).

Я хотел работать auto-disper --change после пробуждения, таким образом, я вставил следующий сценарий /etc/pm/sleep.d:

#!/bin/bash

case "$1" in
    thaw | resume )
        auto-disper --change &> /home/myHome/autodisper_on_wake.txt
        ;;
esac

На след я вкладываю следующее autodisper_on_wake.txt, указание, что сценарий действительно стрелял:

Assuming disper defaults...
'NoneType' object has no attribute 'endswith'
Unable to fingerprint display configuration
home
school
undocked

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

Какие-либо идеи, как продолжить двигаться? (FWIW, я изменил autorandr, чтобы иметь ПРОФИЛЬ, и КОНФИГУРАЦИЯ указывают на мой абсолютный корневой каталог, а не ~ [я думал, возможно, что сценарии следа выполняются как корень, таким образом, это посмотрело бы в ~root для данных профиля]).

5
задан 15 August 2011 в 12:28

2 ответа

Я искал эту auto-disper вещь на Google и нашел что-то тем именем в https://github.com/wertarbyte/auto-disper и посмотрел на источник. Это, кажется, работает, X11 основывал команды, но Ваш пополудни-сценарий, вероятно, не выполняется со средой X11. Нет никакого очевидного способа, чтобы сделать это, но если Вы делаете предположение, что Ваши X сессий будут работать демонстрирующийся 0 (который будет обычно иметь место, если Вы будете единственным, зарегистрированным графически), Вы могли бы получить его работающий путем выполнения команды как пользователь и установки переменной среды ДИСПЛЕЯ.

#!/bin/bash

case "$1" in
    thaw | resume )
        sudo -u yourusername env DISPLAY=:0 auto-disper --change &> /home/myHome/autodisper_on_wake.txt
    ;;
esac
2
ответ дан 23 November 2019 в 09:38

Это работало на меня (я использую Ubuntu 12.04 с lightdm):

#!/bin/bash

USERNAME="xxx"
export DISPLAY=":0.0"
export HOME=/home/$USERNAME

if [ "$1" = "suspend" ]
then
    echo "Switching back disper"
    su $USERNAME -c "/usr/bin/python /usr/bin/disper -s" 
fi

if [ "$1" = "resume" ]
then
    echo "Change disper" 
    su $USERNAME -c "DISPLAY=:0.0 disper -l ; sleep 1; DISPLAY=:0.0 disper -S ; sleep 4; DISPLAY=:0.0 disper -S" 
fi

Возможно, также без disper-l и звонящий disper дважды, но я еще не проверял

2
ответ дан 23 November 2019 в 09:38

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

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