How can I set a global timeout for the screensaver?

I am trying to to set a global screensaver and blanking idle timout (with screen locking) that will affect all new user accounts. I noticed that gnome-screensaver in 12.04 when configured by a user, writes some data to a blob in ~/.dconf, but I have no idea how to set it globally. I also know that the global timeout is 10 minutes with blanking, but have no idea where this is set system wide. I find the whole dconf transition a bit difficult.

If it is not possible to configure gnome-screensaver this way, I would be quite interested in a solution with xscreensaver/xlock.

The purpose of this is to set a blank screen with automatic locking. Both because of resource usage and security.

Forgot to mention that this is a default Ubuntu 12.04 desktop install with Unity and LightDM. I will however install gnome-shell and gnome-session-fallback to let people choose. It would be nice if a solution works across different sessions.


Solution 1:

Which dconf keys are used

To know which keys are changed in dconf, you can use dconf watch / while changing settings. In this case, you'll see something like :

/org/gnome/settings-daemon/plugins/power/sleep-display-ac
  1800

/org/gnome/settings-daemon/plugins/power/sleep-display-battery
  1800

/org/gnome/desktop/session/idle-delay
  uint32 1800

Then, you put these keys in a file in /etc/dconf.

Create and activate /etc/dconf

If this directory does not exists, you have to create it and activate its use with these commands :

mkdir -p /etc/dconf/profile /etc/dconf/db/local.d
cat <<EOF >/etc/dconf/profile/user
user-db:user
system-db:local
EOF

cf: https://live.gnome.org/dconf/SystemAdministrators

Put your global settings

Use a file in /etc/dconf/db/local.d named, for example, screensaver-delay:

[org/gnome/settings-daemon/plugins/power]
sleep-display-ac=1800
sleep-display-battery=1800

[org/gnome/desktop/session]
idle-delay=1800

Apply it running the command: dconf update. It will (re)generate the file /etc/dconf/db/local which will be used if keys do not conflict with user defined values.

Force global values

If you want to force these global values over user selected values, you can do it by using a file in /etc/dconf/db/local.d/locks named, for example, screensaver-delay:

# Force screensaver delay
/org/gnome/settings-daemon/plugins/power/sleep-display-ac
/org/gnome/settings-daemon/plugins/power/sleep-display-battery
/org/gnome/desktop/session/idle-delay

Solution 2:

xscreensaver option (tested on Xubuntu 12.04): Edit /etc/X11/app-defaults/XScreenSaver (as root) to set lock to True and lockTimeout to whatever time you want. This will change the default for all users, but the users can still change it using the normal preference mechanism.