Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

I am using the i3 tiling windows manager in combination with light-locker to lock the screen.

Light-locker displays a lock message on the locked TTY and shows the password screen on a second TTY.

When closing the notebook lid or executing systemctl suspend from a terminal emulator, the lock messages appears for a short time, then the system goes into S3 state. On resume, the lock message is visible for a short time again, then light-locker switches to the password entry-TTY, which is the desired behaviour.

The problem occurs when I bind the systemctl command to a specific key via the i3 config file like this:

bindsym s exec --no-startup-id systemctl suspend, mode "default"

When pressing $mod + s, the screen turns black immediately, not showing the lock message.

On resume, the screen turns on, displaying the unlocked desktop for a half second, then the lock messages flashes for the fraction of a second and then the password entry-TTY is shown.

This behaviour is not acceptable, as it exposes the desktop after suspending the computer, even the desktop is only visible for a short time.

My guess is, that when using bash to execute systemctl suspend, the command takes longer time or sth. like that, making it possible for light-locker to switch to the lock message before the system suspends.

How can I avoid or circumvent the different behaviour of the key binding?

share|improve this question
    
Use a script or something that explicitly locks the screen then calls suspend. –  goldilocks Jan 7 '14 at 12:29
    
Unfortunately, after calling the command to explictly lock the screen, the suspend command gets not executed. –  Alexander Willer Jan 7 '14 at 13:37

1 Answer 1

I was able to solve problem by using the following commands:

(sleep 0.5 && systemctl suspend) &

It would be interesting to know, why exactly the sleep command is needed to get the desired behaviour.

share|improve this answer
    
Did you have that '&' fork in there at all before? If i3's exec waits, that would affect behaviour. Evidently light locker was catching a signal after the suspend resumes, as if it and i3 were suspended until the exec completed, whereas when run from a shell that is not an issue. Forking it off allows them to resume and catch the signal from suspend without it being deferred. –  goldilocks Jan 7 '14 at 14:05

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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