Отключение экрана до входа в систему.

Ответить
bbv62
Сообщения: 154
Зарегистрирован: 18 ноя 2018, 22:30
Operating system: Rosa

Отключение экрана до входа в систему.

Сообщение bbv62 »

Про вечно горящий экран много постов было. Моих в том числе.
Сейчас я озаботился другой задачей: подключение к Росе по rdp.
Пока я спал, Оказалось, Что прикручен, И прекрасно работает xrdp. Всё устраивает, кроме одной детали: режим ожидания подключения должен быть в незалогненной системе. То есть система загружена, но в режиме смены пользователя. Во всех других вариантах = чёрный экран.
Но! В таком режиме экран не отключается! То есть до входа в систему, или после выхода из неё срабатывает таймер, и экран гаснет (не засекал, но похоже на 2 мин). А в режиме "Смены пользователя" горит вечно.
Каждый раз перед уходом выключать все мониторы утомительно.
Какие варианты решения существуют?
Вот как комментирует это Дипсик (на косяки в логике внимания не обращайте):
Ещё момент: при загрузки системы, в режиме входа (выбор пользователя и ввода пароля) экран выключается через ... Минут.
В режиме "после кнопки сменить пользователя", который меня интересует для rdp, экран не выключается.
Можно-ли это победить? Ведь без загруженной системы совокупление не произойдёт?
Найдено 24 веб-страниц
Это интересный нюанс, и он связан с тем, как устроен процесс смены пользователя в KDE и SDDM.

Короткий ответ: «Победить» это штатными настройками KDE, скорее всего, не получится. Экран в режиме «Сменить пользователя» (когда вы видите список пользователей для входа) не гаснет автоматически из-за архитектурных особенностей: этот экран обслуживается SDDM (менеджером входа), а не вашей пользовательской сессией KDE. А у SDDM, как правило, нет встроенного таймера для отключения экрана по бездействию.

🤔 Почему так происходит?
Вы наблюдаете два разных состояния:

При загрузке: Экран входа (SDDM) может гаснуть, если в вашей системе (в зависимости от версии SDDM и настроек X11) всё же срабатывает какой-то таймер или если это особенность конкретной сборки ROSA.

После «Сменить пользователя»: KDE переключает вас на тот же экран SDDM, но, судя по всему, в этом сценарии таймер бездействия не запускается. Это известная проблема, которую обсуждают пользователи KDE и SDDM: экран входа часто не гасится автоматически, и это считается скорее недоработкой самого SDDM, чем настройкой, которую можно исправить в «Параметрах системы».

Ваше предположение абсолютно верно: пока вы не вошли в систему, службы KDE (включая управление питанием powerdevil) не работают, поэтому стандартные настройки «Выключить экран через N минут» здесь не действуют.

🛠️ Что можно попробовать?
Раз штатного переключателя нет, остаются обходные пути. Поскольку вы уже используете ярлыки и скрипты, самый надёжный вариант — принудительно гасить экран перед тем, как отойти, или сразу после выхода из сессии.

Вариант А: Использовать ярлык/скрипт для выключения экрана
У вас уже есть скрипт для гашения экрана (xset dpms force off), который вы используете в сеансе. Вы можете запускать его перед тем, как нажать «Сменить пользователя», или сразу после того, как окажетесь на экране входа. Это не автоматика, но это работает и не требует правки системных файлов.

Вариант Б: Попробовать «костыль» через SDDM (сложно и рискованно)
Теоретически можно попытаться заставить SDDM гасить экран через скрипт Xsetup, который выполняется при старте экрана входа. Но, судя по обсуждениям, это плохо работает с современными версиями SDDM (особенно если используется Wayland или KWin в качестве композитора для SDDM). В вашей ROSA, вероятно, используется X11 для SDDM, но даже в этом случае настройка может не сработать или сломать вход.

Вариант В: Смириться и использовать монитор
Самый простой, хотя и не идеальный путь — положиться на встроенную функцию самого монитора (автоматическое отключение при отсутствии сигнала или по таймеру в меню самого монитора). Это не решение на уровне ОС, но если вам просто нужно, чтобы экран не светился, пока вы ждёте RDP, это может быть достаточно.

💎 Итог
Для вашего сценария с RDP проще всего продолжать использовать ярлык для гашения экрана перед выходом из локальной сессии. Автоматическое гашение на экране «Сменить пользователя» — это проблема самого SDDM, и надёжного способа исправить её только средствами KDE или ROSA, судя по доступной информации, нет.
Гасить экран перед выходом - как? Ничего ж не видно будет ). Да и он снова в новом режиме включится.
Встроенной функции отключения в моих мониторах нет.
turik02
Сообщения: 871
Зарегистрирован: 01 июн 2022, 13:47
Operating system: РОСА «ФРЕШ» 13.3 GNOME 64-bit

Re: Отключение экрана до входа в систему.

Сообщение turik02 »

Ну а вот как это комментирует алиса ai:
Дипсик диагноз поставил верный, а вот вывод — нет. На экране «Сменить пользователя» действительно нет powerdevil и штатной галочки в Параметрах системы. Но гасить экран там всё равно можно, потому что и экран входа SDDM, и greeter после «сменить пользователя» — это обычный X-сервер, а у X-сервера есть собственные таймеры DPMS, которые задаются глобально, вне зависимости от того, кто запустил сессию. Кстати, тот факт, что при загрузке экран гаснет через пару минут, а после «смены» — нет, только подтверждает: механизм DPMS в системе есть, просто применяется не везде.

## Вариант 1: DPMS на уровне X-сервера (основной)

Создайте `/etc/X11/xorg.conf.d/10-dpms.conf`:

```
Section "ServerFlags"
Option "DPMS" "true"
Option "BlankTime" "2"
Option "StandbyTime" "2"
Option "SuspendTime" "3"
Option "OffTime" "4"
EndSection
```

Время здесь в **минутах**. Эти параметры читает любой X-сервер при старте — и сессионный, и greeter SDDM, независимо от того, как он запущен (при загрузке или через SwitchToGreeter). Именно поэтому этот способ надёжнее всего «ловит» оба ваших сценария. Перезагрузка не обязательна, но для чистоты теста — лучше. [```30```](https://manpages.ubuntu.com/manpages/bi ... onf.5.html)[```29```](https://web.archive.org/web/20211027015 ... title/DPMS)

Нюансы:
- Внутри вашей сессии Plasma powerdevil продолжит управлять питанием по своим настройкам — они перекроют эти дефолты, так что конфликта не будет.
- Если `OffTime` не сработает (бывает на некоторых драйверах), монитор хотя бы погаснет через `BlankTime` — это «чёрный, но не обесточенный» режим, для цели «не светит в лицо» тоже годится. [```29```](https://web.archive.org/web/20211027015 ... title/DPMS)
- Способ не работает, только если SDDM у вас переведён на Wayland (`DisplayServer=wayland` в sddm.conf). В ROSA Fresh по умолчанию X11, так что, скорее всего, не ваш случай — но проверьте разок: `grep -ri displayserver /etc/sddm.conf*`.

## Вариант 2: скрипт запуска greeter'а (ROSA-специфика)

У ROSA в `/etc/sddm.conf` в секции `[X11]` прописан `DisplayCommand=/usr/share/X11/xdm/Xsetup_0` — скрипт, который выполняется от root при старте каждого display server'а SDDM, и он, в свою очередь, подхватывает скрипты из `/etc/X11/xsetup.d/`. Туда можно добавить: [```33```](https://forum.rosa.ru/viewtopic.php?t=7600)[```38```](https://github.com/OpenMandrivaAssociat ... /sddm.conf)

```
xset s 120 120
xset +dpms
xset dpms 120 120 180
```

(время в секундах). Плюс бонус-трюк: если в конец добавить `xset dpms force off`, greeter после «смены пользователя» будет стартовать **сразу погашенным** — светиться станет только когда кто-то дёрнет мышь. Для вашего сценария «ушёл, ждём RDP» — самое то.

Единственный риск — не подтверждено на 100%, что SwitchToGreeter в вашей версии SDDM запускает новый X-сервер и выполняет Xsetup заново. Поэтому вариант 1 я бы делал первым, а этот — добавкой сверху.

## Вариант 3: watchdog (запасной)

Если оба варианта не сработают — маленький демон по cron/systemd timer, который раз в минуту проверяет, запущен ли `sddm-greeter`, и при простое делает `xset dpms force off` с правами на display sddm:

```
DISPLAY=:0 XAUTHORITY=$(ls /var/run/sddm/{*}) xset dpms force off
```

Костыль, но работает железно. Заодно это же можно использовать для x11vnc — судя по постам на форуме ROSA, вы там уже с этим работали.

## Про «погасить перед выходом»

Вы правы, Дипсик тут дал ерунду: force off живёт в контексте конкретного X-сервера, а greeter поднимает новый — и монитор просыпается вместе с картинкой входа. Так что этот совет можно смело выкинуть.

Начните с варианта 1 — это одна строка конфига без правки скриптов. Если после переключения пользователя экран всё ещё горит через 5 минут — напишите, что показывает `xset -q` внутри greeter-сессии (можно снять по ssh), тогда разберёмся, кто перехватывает DPMS

Настройки
Вложения
.
И гигачат:
Проблема действительно кроется в архитектуре: пока вы не вошли в систему, управление питанием (PowerDevil) не работает, а SDDM (экран выбора пользователя) не имеет встроенного таймера отключения дисплея.

Поскольку встроенной функции в мониторах нет, а оставлять их включенными нельзя, решение должно быть автоматизированным и работать на уровне системы, а не пользовательской сессии KDE.

Вот рабочие варианты, от самого простого к более сложному.

Вариант 1. Скрипт, который гасит экран после нажатия «Сменить пользователя» (самый надежный)

Вы правы, гасить экран перед выходом неудобно. Но можно сделать так, чтобы скрипт срабатывал автоматически в тот момент, когда вы уже вышли из своей сессии и оказались на экране SDDM.

Для этого нужно отредактировать файл конфигурации SDDM. В ROSA с KDE он обычно находится по пути /etc/sddm.conf или в каталоге /etc/sddm.conf.d/.

Откройте файл с правами суперпользователя:
sudo nano /etc/sddm.conf
(Если файла нет, создайте его или найдите существующий в /etc/sddm.conf.d/).

Найдите секцию [General]. Если ее нет, создайте.

Добавьте или измените параметр DisplayCommand, чтобы он запускал ваш скрипт гашения:
DisplayCommand=/usr/local/bin/sddm_screen_off.sh

Создайте сам скрипт:
sudo nano /usr/local/bin/sddm_screen_off.sh

Вставьте в него содержимое (используя xset, так как на экране входа у вас, скорее всего, X11):

bash
Копировать
#!/bin/bash
# Даем экрану 5 секунд на инициализацию после переключения пользователя
sleep 5
# Принудительно гасим все мониторы
/usr/bin/xset -display :0 dpms force off

Если в вашей сборке ROSA для экрана входа используется Wayland, xset не сработает. Тогда в скрипте нужно использовать swayidle или loginctl lock-session (хотя для SDDM это менее тривиально), но начать стоит с xset.

Сделайте скрипт исполняемым:
sudo chmod +x /usr/local/bin/sddm_screen_off.sh

Перезапустите SDDM (или просто перезагрузите компьютер):
sudo systemctl restart sddm

Как это работает: когда вы нажимаете «Сменить пользователя», KDE передает управление SDDM. SDDM запускает свой X-сервер и выполняет команду из DisplayCommand. Экран успеет на мгновение включиться, скрипт отработает и тут же его погасит. При подключении по RDP (xrdp обычно поднимает свой собственный X-сервер, например :10) это никак не помешает.

Вариант 2. Сервис systemd, который следит за RDP и гасит экран (гибкий подход)

Этот метод не трогает экран входа SDDM, но решает проблему иначе: он гасит экран физической консоли, как только вы подключаетесь по RDP, и включает обратно, когда отключаетесь. Это даже удобнее, если вы иногда оставляете систему залогиненной локально.

Создайте скрипт, который будет проверять наличие RDP-сессии. Для xrdp активные сессии обычно видны через who или w (искать rdp или порт 3389). Но надежнее смотреть на процессы xrdp-sesman.
/usr/local/bin/rdp_screen_manager.sh:
bash
Копировать
#!/bin/bash

# Проверяем, есть ли активный процесс xrdp для входящих подключений
if pgrep -f "xrdp-sesman" > /dev/null; then
# Если RDP активен, гасим физические экраны (DPMS)
XAUTHORITY=$(ls /var/run/sddm/* | head -n 1) DISPLAY=:0 /usr/bin/xset dpms force off
else
# Если RDP не активен, принудительно включаем экраны, чтобы не оставить их выключенными
XAUTHORITY=$(ls /var/run/sddm/* | head -n 1) DISPLAY=:0 /usr/bin/xset dpms force on
fi

(Путь к XAUTHORITY может отличаться, иногда это /var/lib/sddm/.Xauthority)

Создайте юнит systemd, который будет запускать этот скрипт каждые 10 секунд:
sudo nano /etc/systemd/system/rdp-screen-guard.service
ini
Копировать
[Unit]
Description=Guard physical screen state based on RDP connection

[Service]
Type=oneshot
ExecStart=/usr/local/bin/rdp_screen_manager.sh

sudo nano /etc/systemd/system/rdp-screen-guard.timer

ini
Копировать
[Unit]
Description=Run RDP screen guard every 10 seconds

[Timer]
OnBootSec=30s
OnUnitActiveSec=10s
Unit=rdp-screen-guard.service

[Install]
WantedBy=timers.target
Включите таймер:
sudo systemctl daemon-reload
sudo systemctl enable --now rdp-screen-guard.timer

Теперь система сама будет следить за подключениями и управлять питанием мониторов.

Вариант 3. Аппаратный «костыль» с эмуляцией HDMI-CEC

Если программные методы с xset не сработают (например, из-за особенностей видеодрайвера или DRM), можно использовать аппаратный метод. Существуют дешевые USB-донглы (например, на базе микроконтроллеров вроде Raspberry Pi Pico), которые эмулируют нажатие кнопок монитора по протоколу HDMI-CEC или просто имитируют отключение кабеля.
Скрипт на Linux может отправлять такому донглу команду по USB при выходе в SDDM. Это 100% рабочий способ, если мониторы поддерживают CEC, но требует покупки устройства.

Вариант 4. Использование vbetool (устаревающий, для X11)

Если в системе для SDDM используется старый X-сервер, можно попробовать управлять состоянием напрямую через консоль:
sudo vbetool dpms off
Этот метод часто работает даже тогда, когда xset бессилен, но считается устаревшим и может не поддерживаться на современном оборудовании.

С чего начать:
Поскольку у вас уже есть работающий xset dpms force off внутри KDE, начните с Варианта 1. Он требует минимальных изменений и использует ту же самую команду. Если после нажатия «Сменить пользователя» экран на долю секунды вспыхнет и тут же погаснет — задача решена. Если xset на экране входа выдаст ошибку «unable to open display ":0"», значит, SDDM использует другой дисплей (проверьте вывод echo $DISPLAY в контексте SDDM) или Wayland — тогда пробуйте Вариант 2 или уточняйте дисплей в скрипте (например, export DISPLAY=:0).
bbv62
Сообщения: 154
Зарегистрирован: 18 ноя 2018, 22:30
Operating system: Rosa

Re: Отключение экрана до входа в систему.

Сообщение bbv62 »

Прекрасно!
Алискин первый вариант сработал на раз!
Разная квалификация у этих сетей. Я, в основном, пользую для работы qwen (из-за удобства интерфейса больше), реже Дипсик. А Алиску больше для баловства держу, хотя бывает, и ейные варианты решения оказываются верней.
Спасибо за решение!
Ответить

Вернуться в «Обсуждение РОСА Фреш 13 (платформа РОСА 13)»