Как перезапустить Unity после выхода из режима ожидания?

Как перезапустить Unity после выхода из режима ожидания?

Это может показаться глупой идеей, но мне нравится прозрачная верхняя панель, которую можно настроить в Compiz Config Settings Manager, но когда я возобновляю работу из спящего режима, она больше не прозрачна и дает графический сбой при вызове панели. Это проходит, если я перезапускаю Unity, выполнив команду "unity". Поэтому мне было интересно, можно ли этого добиться? Я попробовал установить скрипт, /etc/pm/sleep.d/как указано вкак выполнить команду после выхода из режима ожидания?но это не сработало, полагаю, он запускается до того, как я снова вхожу в систему, и Unity возобновляет работу.

Есть ли способ добиться желаемого или мне следует просто сдаться?

решение1

Идти кСистемные настройки > Клавиатура > Сочетания клавиш > Пользовательские сочетания клавиш

и создайте новый:

введите описание изображения здесь

затем задайте простое сочетание клавиш, например Alt+, Rчтобы легко запустить быстрый перезапуск Unity после приостановки.

Я не страдаю от вашей ошибки, но мне нужно запускать эту команду в каждом новом сеансе, потому что Unity не запоминает привязки ребер в новых сеансах.

решение2

Прямо изруководство для systemd-suspend.service:

Immediately before entering system suspend and/or hibernation systemd-suspend.service (and the other mentioned units, respectively) will run all executables in /usr/lib/systemd/system-sleep/ and pass two arguments to them. The first argument will be "pre", the second either "suspend", "hibernate", or "hybrid-sleep" depending on the chosen action. Immediately after leaving system suspend and/or hibernation the same executables are run, but the first argument is now "post". All executables in this directory are executed in parallel, and execution of the action is not continued until all executables have finished.

Я провел некоторое тестирование и обнаружил, что если вы поместите скрипт (отмеченный как исполняемый всеми, что достигается с помощью chmod a+x) в/lib/systemd/system-sleep,без /usr, он будет выполнен, как указано.

Однако, есть один недостаток, который заставляет вас думать, что он не работает: среда другая. Графические командыне работает. Вероятно, есть способ обойти это, но по умолчанию,unity --replace не удастсяпотому что он не может подключиться к X-серверу (и поэтому никакие команды, которые не работают, если вы нажмете CTRL-ALT-F1 и перейдете в настоящую консоль без вмешательства, работать не будут).

Хорошо, я просто прекратил печатать, чтобы провести небольшое исследование: после просмотрабазовая chroot-вики(потому что у меня была та же проблема в chroot), я обнаружил, что если вручную вызватьxhost + доприостановка, графические команды (в моем случае zenity --info --text "1:$1 2:$1") функционируют правильно. Однако вы не можете вызвать xhost +из скрипта. Что выможетнужно добавить программу в "автозапускаемые приложения" для автоматического вызова xhost +при входе в систему (добавьте ее туда, а не в, .bashrcпотому что если ее добавить, .bashrcона будет запускаться каждый раз при открытии эмулятора терминала). В Unity это может быть по-другому, но в Ubuntu MATE я могу перейти System → Preferences → Personal → Startup Applicationsи нажать Добавить, чтобы сделать это.

Затем создайте файл /lib/systemd/system-sleep/restart-unityсо следующим содержимым:

#!/bin/bash
export DISPLAY=:0
if [[ "$1" == "post" && "$2" == "suspend" ]]
then
    sleep 5
    unity --replace
fi

и запустите sudo chmod a+x /lib/systemd/system-sleep/restart-unity(убедитесь, что файл принадлежит пользователю root и запись доступна только ему).

Обратите внимание, что этодолжениспользуйте bash. Это из-за оператора "if". Когда я попробовал оператор вручную в sh, я получил различные ошибки от &&части.

Он sleepтам есть, потому что без него unity --replaceне удастся подключиться к X-серверу (или так кажется).

Судя по моим собственным тестам на Zesty, это должно работать.

Я потратил 15 минут, пытаясь понять, почему это не работает, и понял, что забыл строку export DISPLAY=:0.

решение3

Они кажутся полезными:

Это тот самый глюк, который вы видите?

плохая_прозрачность_после_сна.png

Связанный контент