94

I am using Ubuntu 12.04. Is there any way to lock the screen or session from a terminal command or script?

0

11 Answers 11

95

Simple:

gnome-screensaver-command -l

The following can also work, if the screensaver is set to lock when activate (see screensaver settings), since the command activates the screensaver:

gnome-screensaver-command -a

You can add an alias to the command by editing the file .bashrc (or .bash_aliases) in your home directory:

gedit $HOME/.bashrc

and adding the following line:

alias lock='gnome-screensaver-command -l'

Then from terminal:

source .profile

This will activate the alias. From now on, the alias lock in a terminal will have the effect of locking the screen.

7
  • Sorry, I had to modify your changes. (i) no need to use sudo (ii) better .profile than .bashrc, since .bashrc gets called every time you create a new shell and (iii) alias works only when called from shell.
    – January
    Sep 21, 2012 at 14:18
  • ok now its looking good , you like the idea ?
    – rɑːdʒɑ
    Sep 21, 2012 at 14:50
  • 1
    sure. I usually lock with a single keypress, though, makes it quicker when leaving the office for a coffee.
    – January
    Sep 21, 2012 at 14:56
  • 3
    Doesn't work, on my Linux mint mate, instead xdg-screensaver lock works.
    – Eric
    Jun 2, 2021 at 12:50
  • 1
    @user218867 perfect for Pop_OS too. Another command is loginctl lock-session. To unlock the screen loginctl unlock-session.
    – aasutossh
    Sep 8, 2021 at 7:21
33

In addition to what January said, this also works:

gnome-screensaver-command --lock

or

gnome-screensaver-command -l

According to the gnome-screensaver-command man page...

-l, --lock                 Tells the running screensaver process to lock the screen immediately
-a, --activate             Turn the screensaver on (blank the screen)

For further clarification, here is another question/answer (also by January) which describes the differences between invoking the lock and activating your screensaver:

Difference between gnome-screensaver-command -a and gnome-screensaver-command -l

0
23

Starting in Ubuntu 14.04, Unity's lock screen no longer uses gnome-screensaver. The command gnome-screensaver-command -l will still work in most cases, but see this question for exceptions.

If that command does not work (say, for instance, that gnome-screensaver is not installed), bringing up the proper Unity lock screen (not the greeter where you can switch users) can be done via this command in a terminal:

dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock
17

Please install vlock. Then you can switch to a VT (text terminal, using Ctrl+Alt+F1) and run

vlock -a -s

This works whether you have X11 running or not.

4
  • 1
    looking nice . ok I'll try and let you know . thank you .
    – rɑːdʒɑ
    Sep 14, 2012 at 7:14
  • 1
    ok its looking good , but suits only for TTY .
    – rɑːdʒɑ
    Sep 14, 2012 at 12:59
  • Version 2.0.4 of vlock does not seem to have the -s switch anymore. Just running vlock -a works fine. Nov 27, 2017 at 11:08
  • In Version 2.2.2, the s flag exists and is defined as -s or --disable-sysrq: disable SysRq while consoles are locked to prevent killing vlock with SAK. SAK is the secure attention key, which protects against trojan password capturing according to kernel.org. In a tty the a flag is enough to password protect.
    – Timo
    May 31, 2020 at 4:56
16
$!(sleep 10s ;  xset dpms force suspend) & xdg-screensaver lock

this starts the screen saver in locked mode and then puts your display in standby. sweet and simple, no sudo. command line or shell script works fine. i use this for a keyboard hotkey. Ubuntu Mate 15.10

4
  • Works on Kubuntu 16.04 too.
    – jippie
    Oct 23, 2016 at 9:52
  • ty for xdg-screensaver lock, +1, however your answer didn't do the trick on ubuntu 16.10 gnome 3, i use: xdg-screensaver lock && sleep 2s && sudo pm-suspend. i have this aliased, and also with pm-suspend in my sudoers.d: yourusername yourhostame = NOPASSWD: /usr/sbin/pm-suspend
    – zamnuts
    Jan 3, 2017 at 7:52
  • ERROR: Unknown command 'lock' in Lubuntu 18.4. LTs
    – Timo
    Jun 5, 2020 at 4:20
  • Thank you - this works without installing gnome screen save
    – Amin
    Jul 14, 2020 at 19:52
15

In case that you need to lock the screen on a terminal in a non-GUI environment you could make use of screen

While in screen press the following key combinations to lock the terminal.

Ctrl + a

Ctrl + x

2
  • Thank you . now I'm in mobile . I'll try and let you know
    – rɑːdʒɑ
    Sep 12, 2012 at 11:00
  • For Tmux, set-option -g lock-command vlock (require vlock)
    – Bohr
    Jun 27, 2015 at 14:51
9

In my case xdg-screensaver lock is works perfectly fine. Also I save it by the setting or when I press window+L it will lock the screen immediately

3
  • holms@debian:~$ xdg-screensaver lock ERROR: Unknown command 'lock'
    – holms
    Mar 16, 2021 at 22:41
  • 1
    This works on Mint mate 20.1, which is based on Ubuntu 20.04.
    – Eric
    Jun 2, 2021 at 12:49
  • 2
    The accepted answer uses a command that I don't even have installed on Ubuntu 20.04. This one works without installing anything extra.
    – electrovir
    Jun 24, 2021 at 16:31
8

For LightDM users, try dm-tool switch-to-greeter.

3
  • 1
    dm-tool lock seems better as that just locks the screen. "switch to greeter" ended my session when I tried it.
    – pbhj
    Sep 7, 2015 at 16:19
  • Using this in a cron job does not work? Script : lock_script.sh #!/bin/sh dm-tool switch-to-greeter Cron-job : 42 9 * * * /home/user/lock-script.sh
    – Dinesh
    May 4, 2017 at 7:43
  • dm-tool is not very safe. Not on my system, anyway. Try going to a text TTY (Alt-Ctrl-F2) then back to your X TTY (Ctrl-Alt-F7 for me). It makes the lock screen disappear!
    – Rolf
    May 30, 2017 at 15:16
6

A dirty hack of using the shortcut Ctrl+Alt+L for the locking the screen from a terminal:

  1. Install xdotool from the software center or from the terminal as follows:

    sudo apt-get install xdotool
    
  2. Type the following to lock the screen from the terminal:

    xdotool key Ctrl+alt+l
    

Refer to the manual page for xdotool for more.

2
  • This was definitely the best - because the other "screen-saver" based ones gave you a different "lock screen" which ONLY allows you to enter a password (no changer-user, logout, restart, etc). Also: May want to do stuff like: DISPLAY=:0 sudo -u username xdotool key Ctrll+alt+l
    – Brad
    Nov 18, 2017 at 16:01
  • nothing happens in dwm
    – holms
    Mar 16, 2021 at 22:41
3

It depends on your display manager. I have lightdm, I can do dm-tool lock to bring up a lock screen. It's not really secure, though, I found an easy way to bypass it.

1

A similar situation to lock the screen in lubuntu

in lubuntu 17.10 (not ubuntu) this works xset dpms force off

Not the answer you're looking for? Browse other questions tagged or ask your own question.