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