Difference between revisions of "Session lock"

From ArchWiki
Jump to navigation Jump to search
(Refactoring)
(Add vlock)
Line 7: Line 7:
 
= By environment =
 
= By environment =
  
== Terminal ==
+
== Virtual Console ==
setterm --blank 1
 
  
virtual console
+
You can use {{ic|vlock}} to lock a virtual console.
{{Expansion|vlock?}}
+
 
 +
{{Expansion|Inactivity}}
  
 
== Xorg ==
 
== Xorg ==

Revision as of 12:40, 13 April 2019


There are numerous utilities to lock the screen of a session. But it is important to note that the utility to use is highly dependant on the environment your are in, either the virtual console, or a specific display server (Xorg or Wayland).

See List of screen lockers.

By environment

Virtual Console

You can use vlock to lock a virtual console.

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: Inactivity (Discuss in Talk:Session lock#)

Xorg

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: please use the first argument of the template to provide a brief explanation. (Discuss in Talk:Session lock#)

Wayland tools

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: please use the first argument of the template to provide a brief explanation. (Discuss in Talk:Session lock#)

Triggering the lock

You can lock a session using different methods:

  • from a terminal
  • using a GUI:
 * from a desktop icon
 * using hot corners
 * from a menu (mouse or keyboard driven)
 * inactivity
 * another action (suspend, hibernate, ...)

The last point (triggering a lock from an event) is the trickiest, because you can do it one of two ways:

 * get the action trigger to execute your lock, then to execute the initial action.
 * from the event trigger, add the lock to the event chain. So far this can only be done using systemd.

List of triggers

Manual

Inactivity

You can trigger a lock on inactivity using systemd, DPMS (see xss-lock or xautolock

Suspend / Hibernate

See systemd

 Service file dependency
 Hook to xss-lock

Xorg triggers

xss-lock

xss-lock is triggered by one of two things:

The advantage of this is that you can control a lock issued manually, by inactivity, and by a suspend command at the same place.

To execute an action on one of those events:

xss-lock <locker-utility>

systemd events

By default, xss-lock subscribes to suspend, hibernate, lock-session, and unlock-session with appropriate actions (run locker and wait for user to unlock or kill locker).

You can prevent xss-lock from being triggered by suspend and hibernate using --ignore-sleep.

You can trigger a manual lock using loginctl lock-session.

DPMS

To configure DPMS signaling timeout:

  # Trigger screensaver after 10 minutes of inactivity
  xset s on
  xset s 600

DPMS signaling can also be configured in /etc/X11/xorg.conf.d/ in the Monitor section.

Using DPMS signaling, you can set a second timer, for exemple to notify the user or to dim the screen. For exemple (from xss-lock(5):

# Dim the screen after three minutes of inactivity, lock the screen two minutes later using i3lock:

xset 180 120
xss-lock -n dim-screen.sh -- i3lock -n
Note:

When using xss-lock with DPMS, you will have to blank the screen yourself. It won't be triggered when looking at videos

xautolock

xautolock -time 12 -locker "systemctl suspend" -detectsleep
Note:

xautolock has restrictive timer limits:

  • 1 min to 1 hour for time
  • 10 min to 2 hour for killtime

It might be necessary to add -detectsleep to prevent xautolock from locking the session after resuming. One nice feature of xautolock is the corners.

Wayland triggers

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: please use the first argument of the template to provide a brief explanation. (Discuss in Talk:Session lock#)

SystemD triggers

DBUS Notification

Using loginctl lock-session, or the lock action in logind.conf(5), you can notify the system through DBUS that you want to lock. This notification can the be processed, for exemple by xss-lock.

Inactivity

In logind.con(5), you can configure the IdleAction to lock. This will trigger a DBUS notification, that will have to be processed (for exemple by xsslock) to lock the session.

Note that this is for a global system (so this is not ideal for a multi user environment).

Note also that "this requires that user sessions correctly report the idle status to the system".

Units

Before suspend/hibernate

You can use a Sleep hook.

[Unit]
Description=Lock the screen
Before=sleep.target
 
[Service]
#User=user
Environment=DISPLAY=:0
ExecStart=i3lock
 
[Install]
WantedBy=sleep.target

Lid closing

You can use the lock action using the related ACPI Event

Actions after the lock has been triggered

Suspend/Hibernate after X Shudown screen

See also