Я наткнулся на 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, если вы хотите опубликовать ответ, я соглашусь. Спасибо за помощь!
Тот факт, что журнал содержал /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. Это значение по умолчанию, но оно может измениться особенно в многопользовательской настройке.