36

I'm trying out XFCE on Arch Linux, and for some reason the Lock Screen option in the session menu doesn't do anything. Neither does running xflock4 at the command line (it exits 0 with no output).

xfce4-session is running.

Do I need to install a screensaver package or something?

cjm
  • 26,740
  • 12
  • 88
  • 84

9 Answers9

22
Do I need to install a screensaver package or something?

Yes, according to the wiki, you need to choose and install a locker. xflock4 will then activate it.

jasonwryan
  • 71,734
  • 34
  • 193
  • 226
  • 1
    Actually, gnome-screensaver is installed, and it was working under Gnome. Do I need to activate it somehow? – cjm Nov 19 '13 at 20:25
  • 3
    Ok, the problem seems to be that `gnome-screensaver-command` exists, but `gnome-screensaver` is not running. `xflock4` runs `gnome-screensaver-command --lock`, which does nothing but exits 0, so `xflock4` thinks it's done. – cjm Nov 19 '13 at 20:42
  • I prefer [i3lock](http://i3wm.org/i3lock/) as a simple screen locker, which isn't directly supported by `xflock4`, so I wrote a simple wrapper script as `/usr/bin/xscreensaver-command` that invokes `i3lock`. Since `xflock4` tries `xscreensaver-command` before `gnome-screensaver-command`, that fixes the problem. – cjm Nov 19 '13 at 20:53
  • 4
    `slock` is even simpler and now comes with a feature: colour! – jasonwryan Nov 19 '13 at 21:02
  • 1
    @jasonwryan: Ugh, just a gimmicky trend. Colour display is no more useful than having over 640k of RAM... – Mark K Cowan Apr 22 '15 at 08:26
  • 1
    Need to run `xfce4-screensaver &` after installing it too. I was wondering why it didn't work after install. – simonzack Feb 23 '20 at 07:12
12

First install light-locker.

$ xfconf-query -c xfce4-session -p /general/LockCommand -s "light-locker-command -l"

or if you don't have the variable yet:

$ xfconf-query -c xfce4-session -p /general/LockCommand -s "light-locker-command -l" --create -t string



Old stuff:

Looks like xflock4 does support external config now. What I did is:

$ xfconf-query -c xfce4-session -p /general/LockCommand -s "dm-tool lock"

Now that command is used for locking. I guess gnome-screen-saver broke on upgrade.

This is for XFCE. If you don't have that property already, you add it by:

$ xfconf-query -c xfce4-session -p /general/LockCommand -s "dm-tool lock" --create -t string

VERY IMPORTANT: you need a screensaver running to securely lock your screen. light-locker is one choice. At the end make sure switching consoles with ctrl+alt+F1 or some other F# does not let you circumvent the lock screen. See:

akostadinov
  • 944
  • 10
  • 19
8

Edit /usr/bin/xflock4 and append light-locker-command -l or dm-tool lock to the list.

for lock_cmd in \
"xscreensaver-command -lock" \
"gnome-screensaver-command --lock" \
"light-locker-command -l"\
"dm-tool lock"
holzkohlengrill
  • 472
  • 3
  • 9
Case_Of
  • 81
  • 1
  • 1
  • 1
    This also works for Linux Mint 19, if anyone is looking for that. – Kev Jul 20 '18 at 10:04
  • i was trying to use slock, built from source. slock is used as a fallback locker by default, but if you build from source you need to add `/usr/local/bin` to the path up top. – Fred Jan 13 '20 at 12:58
  • Thanks, just adding a shortcut to ```dm-tool lock``` to Keyboard does the job – Omar Jun 14 '23 at 13:09
2

Case_of's answer was close for me, but dm-tool was already listed in my /usr/local/bin/xflock4. But it tried xscreensaver-command and gnome-screensaver-command first. I moved those to the second for loop, and moved dm-tool up as the only option at first (removing the first for loop):

dm-tool lock >/dev/null 4>&1 && exit

# else run another access locking utility, if installed
for lock_cmd in \
  "xscreensaver-command -lock" \
  "gnome-screensaver-command --lock"
  "xlock -mode blank" \
  "slock"
  do
    set -- $lock_cmd
    if command -v -- $1 >/dev/null 2>&1; then
        $lock_cmd >/dev/null 2>&1 &
    # turn off display backlight:
    xset dpms force off
        exit
    fi
done

I also mapped it to Win+L, to be like Windows.

Nick
  • 153
  • 4
2

I had this problem and resolved it when I turned on Lock Screen in Settings>Screensaver>Lock Screen

Lock Screen settings

almaceleste
  • 548
  • 2
  • 5
  • 17
1

/usr/bin/xscreensaver was not running. Fixed by opening xfce4-settings-manager, opening screen saver section, it asked to run xscreensaver daemon, clicked yes and the locking works now.

andrej
  • 171
  • 4
1

You can also use loginctl to lock the system. in order to lock the screen you can simply do :

loginctl lock-session

You can selectively lock a specific session by providing a session id

loginctl lock-session sid

you can check the documentation for more information

Hossein
  • 243
  • 3
  • 5
  • 15
0

I just (January 2018) tried to get screen locking working under XFCE. I'm a little surprised it didn't work by default. I initially tried to install light-locker and xscreensaver but neither worked.

What worked for me was to install the xlockmore package which provided /usr/bin/xlock which seems to work great. With that command now installed, I was able to configure the xfce session to use it:

xfconf-query -c xfce4-session -p /general/LockCommand -s "xlock"

or if you don't have the variable yet:

xfconf-query -c xfce4-session -p /general/LockCommand -s "xlock" --create -t string

My /usr/bin/xflock4 script already pays attention to that LockCommand setting so there was no need to edit the script once I had the setting applied.

Xlock has a ton of different modes and settings which, by default, it randomizes through. I settled on:

xlock -mode goop -erasedelay 0

To test them use:

xlock -mode ... -nolock
Gray
  • 105
  • 6
0

Really weird, but

xscreensaver-command --lock

worked after enabled on the Screensaver preferences (GUI of Xscreensaver) the option "Lock screen after", and edit keyboard lock shortcut to the command above

obs: Ubuntu 20.04.2 LTS with xfce4 4.14