Как я могу получить скрипт, который будет всегда запускаться при возобновлении в Lubuntu?

Я столкнулся с раздражением в Lubuntu 11.10, описанным здесь:

http://ubuntuforums.org/showthread.php?t=1869357

Я нашел обходной путь, описанный здесь:

http://ubuntuforums.org/showpost.php?p=11714061&postcount=30

Мой обход включает положить сценарий в /etc/pm/sleep.d для запуска в резюме.

Тем не менее, обходной путь, кажется, работает, только когда я приостановил использование pm-suspend. Когда я приостановил работу, закрыв крышку ноутбука, мой обходной путь не удался. Как я могу заставить скрипт работать, когда я возвращаюсь из сна, и этот сон был вызван закрытием крышки?

Подробности:

Я подозреваю, что это может быть связано с тем, что скрипты в / etc / pm / sleep.d не выполняются, когда я приостанавливаюсь, закрывая крышку. Приостановка с помощью pm-suspend, затем возобновление при закрытии / открытии крышки работает нормально. Я считаю, что Lubuntu использует xfce4-power-manager для управления подвеской из-за закрытия крышки, возможно, это важно? Я предпочитаю приостановить работу, закрыв крышку ноутбука, а не набирать команду терминала.

РЕДАКТИРОВАТЬ:

Изучив /var/log/pm-suspend.log в соответствии с предложением andrewsomething, мы видим, что скрипт reset_panel запускается при каждом возобновлении, он просто не работает при возобновлении, которое следует за срабатыванием lid приостановит. Я последовал его дальнейшему предложению добавить оператор экспорта в свой сценарий, и теперь все работает. Сценарий срабатывает слишком рано в процессе пробуждения, но это не сложно исправить. Текущая версия скрипта:

#!/bin/bash
case "$1" in
   suspend|hibernate)
      #do nothing
   ;;
   resume|thaw)
      export DISPLAY=:0 #What does this do? Are there side effects?
      sleep 5 && lxpanelctl restart & #Delayed so the battery icon can finish wrecking shop.
   ;;
   *)
      exit 1
   ;;
esac
exit 0

andrewsomething, если вы хотите опубликовать ответ, я приму. Спасибо за помощь!

4
задан 25 February 2012 в 08:33

1 ответ

Тот факт, что журнал содержит /etc/pm/sleep.d/reset_panel resume suspend: Cant connect to display:, указывает на то, что отображение не установлено, и вы пытаетесь запустить графическую программу. Когда вы запускаете pm-suspend из вашего сеанса, правильное отображение было установлено, вероятно, LightDM или каким бы то ни было вашим менеджером отображения. Когда он запускается автоматически при возобновлении, я предполагаю, что он запускается от имени пользователя root и не подключен к дисплею. Поэтому вам нужно установить переменную отображения самостоятельно, например, так:

#!/bin/bash
case "$1" in
   suspend|hibernate)
      #do nothing
   ;;
   resume|thaw)
      export DISPLAY=:0
      sleep 5 && lxpanelctl restart & #Delayed so the battery icon can finish wrecking shop.
   ;;
   *)
      exit 1
   ;;
esac
exit 0

Единственный недостаток - это то, что это не сработает, если вы на самом деле не отображаете :0 Это значение по умолчанию, но оно может особенно измениться в многопользовательском режиме.

0
ответ дан 25 February 2012 в 08:33

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

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