изменения gsettings не работают через ssh

Я пытаюсь установить idle timeout для Ubuntu 14.04, используя gsettings из ssh.

Команды, которые я использую, такие

dbus-launch gsettings set org.gnome.desktop.session idle-delay 600

dbus-launch gsettings set org.gnome.desktop.screensaver lock-delay 0

dbus-launch gsettings set org.gnome.desktop.screensaver lock-enabled true

dbus-launch gsettings set org.gnome.desktop.screensaver idle-activation-enabled true

После выполнения команд с различными периодами timeout изменения происходят, но эти изменения времени ожидания теряются после перезагрузки или выхода из системы.

Возможно ли сделать изменение тайм-аута постоянным при перезагрузке/выходе из системы.


person Govind Karmakar    schedule 15.05.2015    source источник


Ответы (2)


По сути, когда вы запускаете новый экземпляр dbus с помощью dbus-launch, вы сохраняете конфигурации в неправильном месте, запуская новый dbus. Хотя добавление dbus-launch в начало вызова gsettings удалит все сообщения об ошибках, вы не сохраните изменения.

Для целевого пользователя существует существующий процесс dbus, и через ssh ваш терминал не получает правильные переменные среды, с помощью которых можно его адресовать.

Правильный способ редактирования gsettings через ssh — сначала определить DBUS_SESSION_BUS_ADDRESS существующего процесса dbus и установить его как переменную среды. Таким образом:

PID=$(pgrep gnome-session)
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ)
# And now:
gsettings set org.gnome.desktop.session idle-delay 600
person tyleha    schedule 01.12.2017

В Ubuntu 18.04 необходимо установить не только DBUS_SESSION_BUS_ADDRESS, но и XDG_RUNTIME_DIR. Вы можете сделать это с помощью этой команды (замените 121 на UID и gdm на пользователя):

su gdm -s /bin/bash -c 'XDG_RUNTIME_DIR=/run/user/121 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/121/bus gsettings get org.gnome.desktop.session idle-delay'
person mejem    schedule 03.10.2019