Я использую 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 для данных профиля]).
Я искал эту 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
Это работало на меня (я использую 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 дважды, но я еще не проверял