Вопрос или проблема
У меня есть система, собранная с помощью Ansible, которая должна оставаться в сети в течение 2 часов, прежде чем экран заблокируется. Однако, что бы я ни пробовал, мне не удается изменить настройки системы – параметры питания – выпадающий список “Выключить экран при неактивности на” без физического клика по выпадающему списку и изменения его, что совершенно противоречит цели наличия системы Ansible.
Запуская:
gsettings set org.cinnamon.desktop.session idle-delay 7200
Я успешно модифицирую встроенное средство сохранения экрана, чтобы оно включалось через 7200 секунд (2 часа). Однако задолго до этого момента достигается стандартная (15 минут) настройка для ‘Выключить экран при неактивности на’, и экран выключается. Я использовал команду:
xset dpms 40 40 40
Чтобы экран становился черным через 40 секунд, но когда я устанавливаю большее значение, чем в выпадающем меню, приоритет имеет выпадающее меню, и экран становится черным через стандартные 15 минут. Ни одно из следующих не сработало:
gsettings set org.cinnamon.desktop.session idle-delay 7200
dconf write /org/cinnamon/settings-daemon/plugins/power/turn-off-screen-on-idle 7200
И когда я проверял, ни /etc/xdg/cinnamon-settings-daemon/power.conf, ни ~/.config/cinnamon-settings-daemon/power.conf не существуют для изменения.
Я разобрался. Чтобы узнать, какая системная переменная изменяется при переключении любых настроек в меню GUI, вам просто нужно открыть окно терминала и запустить:
dconf watch /
Затем измените настройку и посмотрите, какие строки появляются. В конечном итоге я добавил в свой скрипт Ansible как ручное изменение настройки, так и добавление его в .bashrc, чтобы каждый раз, когда пользователь входит в систему, настройка изменялась обратно на 2 часа, как я и хотел.
-
name: desktop.yml – Добавить в ~/.bashrc
blockinfile:
state: present
insertafter: EOF
dest: /home/{{item.0.name}}/.bashrc
block: |
dconf write /org/cinnamon/settings-daemon/plugins/power/sleep-display-ac 7200
dconf write /org/cinnamon/desktop/session/idle-delay 7200
marker: “# {mark}” # Добавляет маркер для идентификации этого блока
with_nested:- “{{ users }}”
-
name: Установить значение dconf для выключения дисплея
become: true
become_user: “{{ item.name }}”
command: dbus-launch dconf write /org/cinnamon/settings-daemon/plugins/power/sleep-display-ac 7200
with_items:- “{{ users }}”
-
name: Установить значение dconf для задержки бездействия (ск screensaver)
become: true
become_user: “{{ item.name }}”
command: dbus-launch dconf write /org/cinnamon/desktop/session/idle-delay 7200
with_items:- “{{ users }}”
Ответ или решение
Для изменения настройки ‘Выключать экран при бездействии’ в среде рабочего стола Cinnamon с использованием Ansible, вам нужно установить соответствующие значения в dconf. Вы уже нашли нужные параметры, и сейчас я предложу вам полный пример Ansible-плейбука, который решает вашу задачу.
- Используйте команду
dconf watch /
, чтобы отследить изменения настроек в графическом интерфейсе и найти нужные параметры. - После этого создайте Ansible-плейбук.
Вот пример плейбука, который выполняет необходимые изменения:
---
- name: Настройка параметров питания в Cinnamon
hosts: ваши_хосты
tasks:
- name: Добавить команды dconf в .bashrc
blockinfile:
state: present
insertafter: EOF
dest: /home/{{ item.name }}/.bashrc
block: |
dconf write /org/cinnamon/settings-daemon/plugins/power/sleep-display-ac 7200
dconf write /org/cinnamon/desktop/session/idle-delay 7200
marker: "# {mark}"
with_items:
- "{{ users }}"
- name: Установить dconf значение для отключения дисплея
become: true
become_user: "{{ item.name }}"
command: dbus-launch dconf write /org/cinnamon/settings-daemon/plugins/power/sleep-display-ac 7200
with_items:
- "{{ users }}"
- name: Установить dconf значение для задержки бездействия (экранныйSaver)
become: true
become_user: "{{ item.name }}"
command: dbus-launch dconf write /org/cinnamon/desktop/session/idle-delay 7200
with_items:
- "{{ users }}"
Объяснение:
- Мы используем
blockinfile
, чтобы добавить команды dconf в конец файла.bashrc
для каждого пользователя из спискаusers
. Это гарантирует, что настройки будут применяться каждый раз при входе в систему. - Команды dconf выполняются с помощью
command
, используяdbus-launch
для выполнения их под нужным пользователем. - Вы устанавливаете два параметра:
sleep-display-ac
– время, после которого экран отключится при подключенном зарядном устройстве.idle-delay
– время, после которого сработает экранныйSaver.
Люди:
Убедитесь, что переменная users
содержит список пользователей, для которых вы хотите применить эти настройки.
Этот плейбук полностью решает вашу задачу и может быть использован для автоматизации настройки системы, избегая необходимости делать изменения вручную.