我试图从ssh使用gsettings
为Ubuntu 14.04
设置idle timeout
。
我使用的命令是这样的
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
周期内执行命令后,这些更改正在发生,但是这些超时更改在重新启动或注销后丢失。
是否可以使超时更改在重新启动/注销时持久化
基本上,当您使用dbus-launch
启动一个新的dbus实例时,您通过启动一个新的dbus将配置保存到错误的位置。虽然将dbus-launch
添加到gsettings
调用的开头将删除任何错误消息,但您不会保存更改。
对于目标用户存在一个现有的dbus进程,并且通过ssh,您的终端没有接收到正确的环境变量来对它进行寻址。
通过ssh编辑gsettings的正确方法是首先识别现有dbus进程的DBUS_SESSION_BUS_ADDRESS
,并将其设置为环境变量。因此:
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
在Ubuntu 18.04上,您不仅要设置DBUS_SESSION_BUS_ADDRESS
,还要设置XDG_RUNTIME_DIR
。您可以使用以下命令(将121
替换为UID,将gdm
替换为user):
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'