Как я могу заставить скрипт всегда запускаться в резюме в 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 для обработки подвески из-за закрытия крышки, возможно, это важно? Я предпочитаю приостановить, закрыв крышку ноутбука, вместо того, чтобы вводить команду терминала.

EDIT:

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

#!/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 в 10: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. Это значение по умолчанию, но оно может измениться особенно в многопользовательской настройке.

2
ответ дан 25 May 2018 в 13:58

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

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