Я использую 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, чтобы PROFILE и CONFIG указывали на мой абсолютный домашний каталог, а не на ~ [Я думал, возможно, что сценарии пробуждения выполняются как root, поэтому он будет выглядеть в ~ корне для данных профиля]).
Это сработало для меня (я использую 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 дважды, но я еще не проверял
Я искал эту вещь с автоматическим отключением в google и нашел что-то под этим именем на https://github.com/wertarbyte/auto-disper и посмотрел на источник. Похоже, что они используют команды на основе X11, но ваш pm-скрипт, скорее всего, не запускается с окружением X11. Нет чистого способа сделать это, но если вы сделаете предположение, что ваш X-сеанс будет отображаться на дисплее 0 (что обычно будет иметь место, если вы только один зарегистрирован графически), вы можете заставить его работать, запустив в качестве пользователя и установки переменной среды DISPLAY.
#!/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 дважды, но я еще не проверял
Я искал эту вещь с автоматическим отключением в google и нашел что-то под этим именем на https://github.com/wertarbyte/auto-disper и посмотрел на источник. Похоже, что они используют команды на основе X11, но ваш pm-скрипт, скорее всего, не запускается с окружением X11. Нет чистого способа сделать это, но если вы сделаете предположение, что ваш X-сеанс будет отображаться на дисплее 0 (что обычно будет иметь место, если вы только один зарегистрирован графически), вы можете заставить его работать, запустив в качестве пользователя и установки переменной среды DISPLAY.
#!/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 дважды, но я еще не проверял
Я искал эту вещь с автоматическим отключением в google и нашел что-то под этим именем на https://github.com/wertarbyte/auto-disper и посмотрел на источник. Похоже, что они используют команды на основе X11, но ваш pm-скрипт, скорее всего, не запускается с окружением X11. Нет чистого способа сделать это, но если вы сделаете предположение, что ваш X-сеанс будет отображаться на дисплее 0 (что обычно будет иметь место, если вы только один зарегистрирован графически), вы можете заставить его работать, запустив в качестве пользователя и установки переменной среды DISPLAY.
#!/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 дважды, но я еще не проверял
Я искал эту вещь с автоматическим отключением в google и нашел что-то под этим именем на https://github.com/wertarbyte/auto-disper и посмотрел на источник. Похоже, что они используют команды на основе X11, но ваш pm-скрипт, скорее всего, не запускается с окружением X11. Нет чистого способа сделать это, но если вы сделаете предположение, что ваш X-сеанс будет отображаться на дисплее 0 (что обычно будет иметь место, если вы только один зарегистрирован графически), вы можете заставить его работать, запустив в качестве пользователя и установки переменной среды DISPLAY.
#!/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 дважды, но я еще не проверял
Я искал эту вещь с автоматическим отключением в google и нашел что-то под этим именем на https://github.com/wertarbyte/auto-disper и посмотрел на источник. Похоже, что они используют команды на основе X11, но ваш pm-скрипт, скорее всего, не запускается с окружением X11. Нет чистого способа сделать это, но если вы сделаете предположение, что ваш X-сеанс будет отображаться на дисплее 0 (что обычно будет иметь место, если вы только один зарегистрирован графически), вы можете заставить его работать, запустив в качестве пользователя и установки переменной среды DISPLAY.
#!/bin/bash
case "$1" in
thaw | resume )
sudo -u yourusername env DISPLAY=:0 auto-disper --change &> /home/myHome/autodisper_on_wake.txt
;;
esac