helloSystem / ISO

helloSystem Live and installation ISO
https://github.com/helloSystem/
BSD 3-Clause "New" or "Revised" License
806 stars 58 forks source link

Make it possible to lock the screen without logging out #339

Open probonopd opened 2 years ago

probonopd commented 2 years ago

There is a keyboard shortcut available for locking the screen, however it just doesn't work. Even when I try to invoke the command from a command line, xdg-screensaver doesn't recognize the lock command, even though it's a command in the xdg-screensaver man page.

In the Shortcut Keys Preferences application there is xdg-screensaver lock but it is without effect. We should remove it to avoid confusion.

At this time, we are not really using a screensaver since screensavers are basically obsolete when you can save power by switching the screen off (which we do after 10 minutes of inactivity by default).

xdg-screensaver lock tries to do the following, which doesn't work on helloSystem:

fstatat(AT_FDCWD,"/home/user/bin/xautolock",0x7fffffffe1a0,0x0) ERR#2 'No such file or directory'
fstatat(AT_FDCWD,"/home/user/.local/bin/xautolock",0x7fffffffe1a0,0x0) ERR#2 'No such file or directory'
fstatat(AT_FDCWD,"/usr/local/sbin/xautolock",0x7fffffffe1a0,0x0) ERR#2 'No such file or directory'
fstatat(AT_FDCWD,"/usr/local/bin/xautolock",0x7fffffffe1a0,0x0) ERR#2 'No such file or directory'
fstatat(AT_FDCWD,"/usr/games/xautolock",0x7fffffffe1a0,0x0) ERR#2 'No such file or directory'
fstatat(AT_FDCWD,"/usr/sbin/xautolock",0x7fffffffe1a0,0x0) ERR#2 'No such file or directory'
fstatat(AT_FDCWD,"/usr/bin/xautolock",0x7fffffffe1a0,0x0) ERR#2 'No such file or directory'
fstatat(AT_FDCWD,"/sbin/xautolock",0x7fffffffe1a0,0x0) ERR#2 'No such file or directory'
fstatat(AT_FDCWD,"/bin/xautolock",0x7fffffffe1a0,0x0) ERR#2 'No such file or directory'
fork()                                           = 3277 (0xccd)
wait4(-1,{ EXITED,val=127 },0x0,0x0)             = 3277 (0xccd)
fcntl(1,F_DUPFD_CLOEXEC,0xa)                     = 12 (0xc)
dup2(2,1)                                        = 1 (0x1)
ERROR: Unknown command 'lock'
write(1,"ERROR: Unknown command 'lock'\n",30)    = 30 (0x1e)

slim is said to come with slimlock but this seems not to be the case on FreeBSD:

https://ehouse.io/blog/openbsd-x11-setup.html

I was playing around with slimlock originally but it is incompatible with FreeBSD. It requires specific libraries only available in the Linux kernel.

Specifically:

lack of VT_UNLOCKSWITCH in sys/consio.h

If someone really feels strongly enough about this we might want to consider moving from slim to another session manager, such as a fork of the Lumina Desktop session manager. We would have to change it significantly however, e.g., to make it not mess with the keyboard layout and language which gets autodetected on helloSystem even before the login window shows.

In the meantime, we should remove the bogus entry from the Shortcut Keys Preferences application.