LINUX.ORG.RU

bash, systemd - создание юнита

 , , ,


0

1

OC - fedora

Проблема в том, что каждый раз при выходе из режима сна слетает настройка монитора подключенного по hdmi. 1. Обращался к офф. странице xrandr, создание xprofile не решило проблему, т.к настройка сбрасывается при выходе из сна. 2. Запили юнит, добавил его в сервисы положил в /etc/systemd/system Код юнита:

[Unit]
Description=Close display app and set correct resolution of display instantly
After=suspend.target
After=hibernate.target
After=hybrid-sleep.target

[Service]
Type=oneshot
ExecStart=/usr/lib64/pm-utils/sleep.d/xrandr.sh
User=root
Group=root

[Install]
WantedBy=suspend.target hibernate.target hybrid-sleep.target

xrandr.sh:

var=$(sudo xrandr | grep "HDMI1")
var2='1920x1080'
var3='xfce4-display-settings'
var4=$(ps aux | grep $var3)
	if [[ "$var4" == *"$var3"* ]];then
	var5=$(grep -Eo -m 1 '[0-9]{4,5}' <<< "$var4" | head -1)
	sudo kill "$var5"
	fi
	if [[ "$var" != *"$var2"* ]]; then
	sudo xrandr --output HDMI1 --mode 1920x1080 --rate 60.0
	fi

По факту: при выходе из сна - закрывает снова открывающийся display-setting(открывается когда типа обнаружено устройство новое hdmi), закрывает это приложение, но вот почему-то xrandr не выполняет, постоянно пишет:
No protocol specified Can't open display :0.0
Magic в том, что когда я вызываю терминал через ctr+alt+e(после выхода из сна и после того как мое кастомное разрешение было сброшено) то сразу же меняется разрешение на нужное...
Пример: вышли из режима сна - у нас 4к разрешение, вызываю терминал - разрешение меняется на то, которое указано в скрипте( или может где-то запоминает пред. разрешение)

Ответ на: комментарий от Kuzz

Всё верно. На базе федоры. Я же не ищу спецов по qubes, написал доступно, а так да, естественно выполняется из dom0. Увы, практика показывает что на гите квебесов только баг-репорты и не оч активно они их фиксят. А такие «фичи» даже разбирать не будут.

hanover ()

А может скрипт запускается до того, как успели восстановится иксы? Попробуй добавить задержку.

Если не поможет, то сдампь env из скрипта и сравни с тем, что в терминале.

Ivan_qrt ★★★★★ ()
Ответ на: комментарий от anonymous2

Попробовал добавить XAUTHORITY - заработало!
Спасибо! Но другой вопрос, задался «а что если» при выдергивании кабеля hdmi, и при повторном подключении - не восстанавливается нужные настройки, а когда комп уходит в длинный сон, видимо от отключает порт hdmi, а при «прокидывании от сна» снова подключает,при тестах - уходил в сон, ждал 5 сек и возобновлял работу.

hanover ()
Ответ на: комментарий от Ivan_qrt

пробовал, скрипт выполняется, т.к когда идет подключение внешнего монитора с ним же происходит запуск display-setting и я его принудительно закрываю в этом же скрипте, после закрытия апки настройки дисплея должно восстановится разрешение, но не выходило, если скрипт руками запустить - всё работало.

Сейчас занят немного, уже с утра гляну по поводу отключения hdmi при «долгом» сне, в дополнии к предыдущему посту моему и если решу вопрос - то закрою тему, а в данный момент, авось умный человек анонимус2 подскажет путь.

hanover ()