Вопрос или проблема
Ubuntu 24.04, Gnome fallback Metacity.
Я приостанавливаю систему через час по соображениям безопасности.
Я гашу экран через 15 минут для экономии энергии.
Я хочу, чтобы экран блокировался и требовал пароль после пробуждения из РЕЖИМА ОЖИДАНИЯ.
Я не хочу, чтобы экран блокировался и требовал пароль после пробуждения от ГАСНУЩЕГО ЭКРАНА.
Ничего очевидного или хоть сколько-нибудь ясного в меню dconf-editor. Много советов о не совсем таких же ситуациях.
Спасибо!
ВРЕМЕННОЕ и довольно неудобное решение, в ожидании лучшего.
Цель:
- Спящий режим через 10 минут бездействия. Приостановка системы через, например, час бездействия.
- Пробуждение от Гаснущего Экрана при активности клавиатуры или мыши НЕ ДОЛЖНО требовать разблокировки паролем.
- Пробуждение из Режима Ожидания ДОЛЖНО требовать разблокировку паролем.
Эта настройка (Ubuntu 24.04, Gnome flashback/fallback, Metacity) предлагает два метода Гашения Экрана и Приостановки: A, метод Gnome flashback (GF), который настраивается в Параметры/Энергия и может быть изменён с помощью gsettings и dconf-editor, и B, метод X/Xorg, который конфигурируется в файле xorg.conf и настраивается с помощью команды xset.
GF по умолчанию требует пароль как для Гашения Экрана, так и для Режима Ожидания. Это можно отключить с помощью
gsettings set org.gnome.desktop.lockdown disable-lock-screen true
но тогда пароль не будет требоваться ни для одного из режимов.
Можно также отключить обработку таймаутов простоя из GF, установив в dconf-editor
org/gnome/gnome-flashback idle-monitor OFF
но тогда вы полностью полагаетесь на X, который, я не смог добиться, чтобы обрабатывал Режим Ожидания.
X не требует пароля для Гашения Экрана. Как я уже говорил, мне не удалось заставить его обрабатывать Режим Ожидания, но я подозреваю, что для этого он также не требует пароля.
Итак, мы можем использовать X для Гашения Экрана и GF для Приостановки.
Проблема в том, что они конфликтуют. GF регулярно обнуляет таймауты, установленные в X.
Как правило, это происходит при активности клавиатуры или мыши после минуты или двух бездействия.
Способ обойти это обнуление — вызывать xset в цикле каждые несколько минут.
Практически.
в Настройках/Энергии:
Установить Гашение Экрана в GF на Никогда
Установить Автоматическую Приостановку в GF на необходимый таймаут
Создать баш-скрипт содержащий
while true do if [[ `xset q` = *Standby:\ 0* ]] then # xset s off may only need to be done once xset s off xset dpms 600 sleep 300 fi done
и установить его как приложение для автозапуска. Учтите, что установка таймаута перезапускает отсчёт, поэтому его следует устанавливать только если он был обнулён, иначе он никогда не истечёт, если цикл быстрее таймаута.
В общем, это функционирующий, но достаточно неудовлетворительный способ решения проблемы, и я надеюсь, что есть более подходящее решение, которое я могу принять как лучший ответ.
Перейдите в: Настройки > Конфиденциальность и безопасность > Блокировка экрана
Отсюда вы можете включить или отключить блокировку экрана при гашении и/или приостановке.
На Ubuntu 24.04 (GNOME), сессия Wayland.
.
Ответ или решение
Принимая во внимание описанные вами условия, вы используете Ubuntu 24.04 с GNOME Flashback (обычно он называют Gnome Fallback) и Metacity, возникает вполне конкретная задача: отключить требование пароля при выходе из режима блэкаута экрана и одновременно обеспечить требование пароля при выходе из режима сна.
Теория
В операционной системе Linux, и в частности в GNOME, управление настройками блокировки экрана осуществляется через несколько механизмов, включая настройки GNOME и настройки X.Org для X-сессий. Два основных сценария для управления энергопотреблением и безопасностью при простоях — это "Блэкаут экрана" и "Сон". Первый полезен для экономии энергии, второй — для полной остановки системы.
GNOME Flashback может управлять обеими функциями в едином интерфейсе настроек, однако множественные комбинации этих настроек могут привести к непредвиденному поведению. GNOME и X.Org могут взаимодействовать, например, GNOME может нулевать таймауты, установленные в настройках X.Org, что добавляет дополнительную сложность.
Пример
Учитывая ваш текущий способ настройки, очевидно, что GNOME требует пароля как для выхода из блэкаута экрана, так и из состояния сна, что не соответствует вашей цели. Вы уже обнаружили, что настройки GNOME можно изменять через dconf-editor
или gsettings
, однако эти изменения могут быть слишком глобальными и применяться ко всей системе управления экраном.
В текущем примере управление через X.Org позволило бы обойти требование пароля, но потерялась бы возможность автоматического перехода в сон. Ваша промежуточная стратегия с использованием скрипта bash и команды xset
работающего в цикле для постоянной проверки и установки таймаутов X.Org демонстрирует, что конфликты между двумя системами можно временно обойти.
Применение
Для достижения нужного вам результата потребуется более целенаправленный подход. Вот несколько шагов, которые могут помочь в решении:
-
Настройки GNOME:
- Откройте
dconf-editor
и отключите использование Flashback для блэкаута экрана. Это можно сделать через установкуorg/gnome/gnome-flashback idle-monitor
вfalse
. - Не отключайте полностью блокировку экрана в
org.gnome.desktop.lockdown
, так как это приведет к отключению пароля для обоих процессов.
- Откройте
-
Использование
xset
:- Убедитесь, что X.Org не требует пароля для блэкаута экрана. Это определенный способ избежать блокировки экрана через команду
xset s noblank
иxset s off
. - Избегайте вмешательства GNOME в настройки X, запуская ваш скрипт, чтобы он переустанавливал параметры каждые несколько минут, как вы уже указали.
- Убедитесь, что X.Org не требует пароля для блэкаута экрана. Это определенный способ избежать блокировки экрана через команду
-
Автоматизация через Скрипт:
- Убедитесь, что ваш bash скрипт включен в автозагрузку. Этот скрипт должен выполнять следующий цикл:
while true do if [[ `xset q` = *Standby:\ 0* ]] then xset s off xset dpms 600 sleep 300 fi done
- Этот скрипт гарантирует, что настройки X не будут сброшены даже при попытке GNOME изменить параметры таймаута.
- Убедитесь, что ваш bash скрипт включен в автозагрузку. Этот скрипт должен выполнять следующий цикл:
-
Изоляция процессов:
- Рассмотрите возможность использования пользовательских системных сервисов и скриптов для более точного контроля и изоляции функций GNOME и X.Org.
-
Дополнительные средства:
- Подумайте о возможности использования сторонних приложений, таких как
xscreensaver
илиlight-locker
, которые могут предоставить более тонкий контроль над поведением экранной блокировки.
- Подумайте о возможности использования сторонних приложений, таких как
Заключение
Этот подход требует детального управления несколькими элементами и знания о том, как GNOME и X.Org взаимодействуют. Попробуйте склонить баланс в пользу нужной вам функции, сохраняя ее постольку статической, насколько это возможно. Учтите, что описанное влияние GNOME и X с использованием скриптов может привести к неожиданностям или возможным сбоям, поэтому всегда сохраняйте изменения и тестируйте поведение системы при различных условиях.