VOOZH about

URL: https://bbs.archlinux.org/viewtopic.php?id=148829

โ‡ฑ [SOLVED] xlock+suspend with systemd / Applications & Desktop Environments / Arch Linux Forums


Arch Linux

You are not logged in.

#1 2012-09-12 09:18:49

fixje
Member
From: Germany
Registered: 2010-02-13
Posts: 9

[SOLVED] xlock+suspend with systemd

I just switched from sysvinit to systemd on my ThinkPad X220 and tried to use most of its features. Thereby, I used its capability to handle sleep key events and suspend to RAM which beforehead has been done by acpid+pm. If I put my notebook to sleep I want xlock to be started. I don't care if that takes place before or after sleep mode is entered. I just want my notebook to be locked after wake up. For this purpose I had a hook in /etc/acpi/actions/sleep-button.sh:

...
export DISPLAY=:0
xhost +
su -c "DISPLAY=:0; xlock" fixje 2>> /tmp/udev.log &
#suspend
/usr/sbin/pm-suspend

Moving to systemd I created a hook in /usr/lib/systemd/system-sleep/lock-screen.sh

if [ "$1" = "pre" ]
then 
 export DISPLAY=:0
 xhost +
 su -c "DISPLAY=:0; xlock -mode blank -bg black -fg green" fixje >> /tmp/udev.log &
fi

Now the problems are as follows:

1. Using the hook stated above, my screen wents black after wakeup and xlock takes 100% of one CPU core. I have to login on a TTY and kill X ๐Ÿ‘ sad

2. If I switched "pre" to "post" nothing happened at all. I don't even get any output in the log. I know the hook is executed, because I tested it with some "echo" statements.

P.S.: I'm using awesome wm, acpid is disabled and not running.

Any ideas?

Last edited by fixje (2012-09-12 20:48:37)

Offline

#2 2012-09-12 13:20:13

lahwaacz
Wiki Admin
From: Czech Republic
Registered: 2012-05-29
Posts: 776

Re: [SOLVED] xlock+suspend with systemd

Problem is, that scripts in /usr/lib/systemd/system-sleep/ must exit before the sleep process can continue. The alternative is to create xlock.service with the following (and run 'systemctl enable xlock.service of course):

[Install]
WantedBy=sleep.target

However, I've encountered some problems with xlock starting as daemon, so now I'm using slimlock with following slimlock.service:

[Unit]
Description=Lock X session using slimlock

[Service]
User=lahwaacz
ExecStart=/usr/bin/slimlock

[Install]
WantedBy=sleep.target

Offline

#3 2012-09-12 20:47:16

fixje
Member
From: Germany
Registered: 2010-02-13
Posts: 9

Re: [SOLVED] xlock+suspend with systemd

Thank you for the input, lahwaacz. I took your simlock.service and adjusted it to use xlock, which works like a charm.

[Unit]
Description=Lock X session using xlock

[Service]
User=fixje
Environment=DISPLAY=:0
ExecStart=/usr/bin/xlock -mode blank -bg black -fg green

[Install]
WantedBy=sleep.target

Creating a service seems to be the most elegant solution as you don't have to fiddle around in /usr/lib.

Offline

#4 2012-09-15 12:35:47

tomk
Forum Fellow
๐Ÿ‘ Image
From: Ireland
Registered: 2004-07-21
Posts: 9,839

Re: [SOLVED] xlock+suspend with systemd

In case anyone's interested, the solution above also works with slock, for those of us who don't need all the bells and whistles that xlock provides. ๐Ÿ‘ smile

Unfortunately, it doesn't work with i3lock, which I like because it lets me use an image for the lock screen, instead a solid colour.

Offline

#5 2012-09-15 14:51:09

65kid
Member
From: Germany
Registered: 2011-01-26
Posts: 663

Re: [SOLVED] xlock+suspend with systemd

tomk wrote:

In case anyone's interested, the solution above also works with slock, for those of us who don't need all the bells and whistles that xlock provides. ๐Ÿ‘ smile

Unfortunately, it doesn't work with i3lock, which I like because it lets me use an image for the lock screen, instead a solid colour.

works fine for me... ๐Ÿ‘ wink

[Unit]
Description=i3lock
Before=sleep.target

[Service]
User=<user>
Type=forking
Environment=DISPLAY=:0
ExecStart=/usr/bin/i3lock -c 000000

[Install]
WantedBy=sleep.target

Offline

#6 2012-09-15 15:09:04

tomk
Forum Fellow
๐Ÿ‘ Image
From: Ireland
Registered: 2004-07-21
Posts: 9,839

Re: [SOLVED] xlock+suspend with systemd

oooh.... thanks, let's try that. Have to admit I've been trying to shortcut the learning curve here, by copy/pasting stuff before I know what it does. ๐Ÿ‘ yikes

Yeah, that's awesome, working perfectly. Thanks 65kid.

Last edited by tomk (2012-09-15 15:20:32)

Offline

#7 2012-10-31 00:16:47

jakob
Member
From: Berlin
Registered: 2005-10-27
Posts: 430

Re: [SOLVED] xlock+suspend with systemd

I use xtrlock and my service looks like this:

[Unit]
Description=Lock X session using xtrlock

[Service]
User=jakob
Environment=DISPLAY=:0
ExecStart=/usr/bin/xtrlock

[Install]
WantedBy=sleep.target

I wonder whether it would be wise to create a lock-session@.service and activate it via "systemctl enable lock-session@{xtrlock,slimlock,xlock}.service and have a line calling

ExecStart=/usr/bin/%i

Probably not, as some of the lockers seem to need arguments and one needs to adjust user & display variables as wellโ€ฆ

Last edited by jakob (2012-10-31 00:17:02)

Offline

#8 2012-12-31 22:14:43

twistedcubic
Member
Registered: 2012-03-01
Posts: 22

Re: [SOLVED] xlock+suspend with systemd

Thanks for this!

Just to save a look to the wiki for some... this file should be created in /etc/systemd/system

Offline

#9 2013-01-24 20:31:37

browntown
Member
From: Salem, OR USA
Registered: 2012-11-20
Posts: 63

Re: [SOLVED] xlock+suspend with systemd

lahwaacz wrote:

slimlock with following slimlock.service:

[Unit]
Description=Lock X session using slimlock

[Service]
User=lahwaacz
ExecStart=/usr/bin/slimlock

[Install]
WantedBy=sleep.target

Perfect, THANK you.  Been messing with it for an hour. This should go in the wiki.

twistedcubic wrote:

this file should be created in /etc/systemd/system

Extra thanks, that was my first question.

Offline

Board footer

Atom topic feed

Powered by FluxBB