* fix: display lock died screen on restart after crash
* refactor to expose events in SessionLockManager and listen from Compositor
* update Hyprland CLI help output
* add clearSessionLock() and fix allow_session_lock_restore
* implement --locked CLI flag
* exec lockscreen directly without lua
* separate --locked into --locked-cmd and --locked
* fix clang-format problems
* misc: silence warnings about ignoring return value on reads
silence warnings on ignored return values on read() and print an error
if it occurs.
* misc: silence warnings about ignoring return value on writes
silence warnings on ignored return values on write() and print an error
where we can, or pass them the maybe_unused attribute.
* misc: silence warnings about ignoring return value on pipe
silence warnings on ignored return value on pipe(), print an error and
exit on failure.
* Add parent-death handling for BSDs
prctl() is a system call specific to Linux. So we cannot use it on BSDs.
FreeBSD has a system call procctl() which is similar to prctl(). We can
use it with PROC_PDEATHSIG_CTL.
OpenBSD, NetBSD, and DragonFly BSD do not appear to have a similar
mechanism. So intead of relying on a system call, we need to manually
poll ppid to see if the parent process has died.
With the changes, the spawned Hyprland process is terminated when the
launcher process exits, matching Linux behavior as closely as possible
on BSD platforms.
* Remove ppid polling on OpenBSD, NetBSD, and DragonFly BSD
- Take out signal set up into a subroutine;
- Use `sigaction` instead of `signal` for consistent behavior across UNIX platforms;
- Enable a warning when a signal handler set up fails;
- Don't do anything to SIGKILL, since it cannot be handled.