Автоматическое автоматическое отключение при срабатывании устройства / оттаивании

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

5
задан 16 August 2011 в 00:28

10 ответов

Это сработало для меня (я использую 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
ответ дан 25 July 2018 в 21:27

Я искал эту вещь с автоматическим отключением в 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
2
ответ дан 25 July 2018 в 21:27
  • 1
    да, это действительно правильный автоприбор. Я сейчас не в городе и не нуждаюсь в такой функциональности, но я буду тестировать и сообщать как можно скорее. Можно ли сделать то же самое при загрузке? – Dang Khoa 20 August 2011 в 05:40
  • 2
    @ strictrude27: пока у вас не будет сеанса X, поэтому вы можете запустить его в приложениях для запуска. – geirha 20 August 2011 в 14:40
  • 3
    вот что я сейчас делаю. Может быть, можно заставить его работать, как только я доберусь до экрана входа в систему? – Dang Khoa 21 August 2011 в 01:45
  • 4
    это на самом деле не работает. :( Файл, конечно, написан, однако. – Dang Khoa 18 September 2011 в 07:36

Это сработало для меня (я использую 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
ответ дан 2 August 2018 в 03:06

Я искал эту вещь с автоматическим отключением в 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
2
ответ дан 2 August 2018 в 03:06
  • 1
    да, это действительно правильный автоприбор. Я сейчас не в городе и не нуждаюсь в такой функциональности, но я буду тестировать и сообщать как можно скорее. Можно ли сделать то же самое при загрузке? – Dang Khoa 20 August 2011 в 05:40
  • 2
    @ strictrude27: пока у вас не будет сеанса X, поэтому вы можете запустить его в приложениях для запуска. – geirha 20 August 2011 в 14:40
  • 3
    вот что я сейчас делаю. Может быть, можно заставить его работать, как только я доберусь до экрана входа в систему? – Dang Khoa 21 August 2011 в 01:45
  • 4
    это на самом деле не работает. :( Файл, конечно, написан, однако. – Dang Khoa 18 September 2011 в 07:36

Это сработало для меня (я использую 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
ответ дан 4 August 2018 в 18:56

Я искал эту вещь с автоматическим отключением в 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
2
ответ дан 4 August 2018 в 18:56
  • 1
    да, это действительно правильный автоприбор. Я сейчас не в городе и не нуждаюсь в такой функциональности, но я буду тестировать и сообщать как можно скорее. Можно ли сделать то же самое при загрузке? – Dang Khoa 20 August 2011 в 05:40
  • 2
    @ strictrude27: пока у вас не будет сеанса X, поэтому вы можете запустить его в приложениях для запуска. – geirha 20 August 2011 в 14:40
  • 3
    вот что я сейчас делаю. Может быть, можно заставить его работать, как только я доберусь до экрана входа в систему? – Dang Khoa 21 August 2011 в 01:45
  • 4
    это на самом деле не работает. :( Файл, конечно, написан, однако. – Dang Khoa 18 September 2011 в 07:36

Это сработало для меня (я использую 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
ответ дан 6 August 2018 в 03:18

Я искал эту вещь с автоматическим отключением в 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
2
ответ дан 6 August 2018 в 03:18
  • 1
    да, это действительно правильный автоприбор. Я сейчас не в городе и не нуждаюсь в такой функциональности, но я буду тестировать и сообщать как можно скорее. Можно ли сделать то же самое при загрузке? – Dang Khoa 20 August 2011 в 05:40
  • 2
    @ strictrude27: пока у вас не будет сеанса X, поэтому вы можете запустить его в приложениях для запуска. – geirha 20 August 2011 в 14:40
  • 3
    вот что я сейчас делаю. Может быть, можно заставить его работать, как только я доберусь до экрана входа в систему? – Dang Khoa 21 August 2011 в 01:45
  • 4
    это на самом деле не работает. :( Файл, конечно, написан, однако. – Dang Khoa 18 September 2011 в 07:36

Это сработало для меня (я использую 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
ответ дан 7 August 2018 в 21:00

Я искал эту вещь с автоматическим отключением в 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
2
ответ дан 7 August 2018 в 21:00
  • 1
    да, это действительно правильный авто-дисперсии. Я сейчас за городом и не нужно иметь такую возможность, но я буду проверить и сообщить как можно скорее. Можно ли сделать то же самое при загрузке? – Dang Khoa 20 August 2011 в 05:40
  • 2
    @ strictrude27: пока у вас не будет сеанса X, поэтому вы можете запустить его в приложениях для запуска. – geirha 20 August 2011 в 14:40
  • 3
    вот что я сейчас делаю. Может быть, можно заставить его работать, как только я доберусь до экрана входа в систему? – Dang Khoa 21 August 2011 в 01:45
  • 4
    это на самом деле не работает. :( Файл, конечно, написан, однако. – Dang Khoa 18 September 2011 в 07:36

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

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