[Enhancement] The one screensaver/lock screen entry point (xflock4)
What does [`xflock4`](https://gitlab.xfce.org/xfce/xfce4-session/-/blob/xfce4-session-4.17.1/scripts/xflock4) do? 1. [Tries to run](https://gitlab.xfce.org/xfce/xfce4-session/-/blob/xfce4-session-4.17.1/scripts/xflock4#L29-37) the command set in the session's xfconf channel. 2. [Tries to run](https://gitlab.xfce.org/xfce/xfce4-session/-/blob/xfce4-session-4.17.1/scripts/xflock4#L39-45) `xscreensaver-command`, `light-locker-command`, `xfce4-screensaver-command`. Where is it called? 1. In `xfce4-session`: `Run xflock4 before suspending or hibernating the system` (BTW, [it](https://gitlab.xfce.org/xfce/xfce4-session/-/blob/xfce4-session-4.17.1/settings/xfce4-session-settings.ui#L271) is not true: `xfce4_screensaver_lock` [tries](https://gitlab.xfce.org/xfce/xfce4-session/-/blob/xfce4-session-4.17.1/xfce4-session/xfce-screensaver.c#L497) other options before [running `xflock4`](https://gitlab.xfce.org/xfce/xfce4-session/-/blob/xfce4-session-4.17.1/xfce4-session/xfce-screensaver.c#L553-560).) 2. [The same for `xfce4-power-manager`](https://gitlab.xfce.org/xfce/xfce4-power-manager/-/blob/xfce4-power-manager-4.17.0/src/xfce-screensaver.c#L569) (but [without a tooltip](https://gitlab.xfce.org/xfce/xfce4-power-manager/-/blob/xfce4-power-manager-4.17.0/data/interfaces/xfpm-settings.ui#L2068)). 3. [In `xfce4-panel`](https://gitlab.xfce.org/xfce/xfce4-panel/-/blob/xfce4-panel-4.17.4/plugins/actions/actions.c#L1110-1112). 4. As a [keyboard shortcut](https://gitlab.xfce.org/xfce/libxfce4ui/-/blob/libxfce4ui-4.17.8/libxfce4kbd-private/xfce4-keyboard-shortcuts.xml#L14). 5. In several plugins. So, in pp. 3-5 it is called directly. But in in pp. 1, 2, D-Bus-based screensavers are tried first. And then, `xflock4` is called (which [tries to call `xfce4-screensaver-command`](https://gitlab.xfce.org/xfce/xfce4-session/-/blob/xfce4-session-4.17.1/scripts/xflock4#L39-45) and [is a fork bomb](https://gitlab.xfce.org/xfce/xfce4-session/-/issues/120), among other things). As I understand, `xfce4-screensaver` provides a D-Bus-based screensaver entry point. So, `xflock` tries to call it one more time. So: sometimes, `xflock4` is a screensaver/lock screen entry point. Sometimes, it's not. Sometimes, it will be recursive. I have an idea: to have **one screensave/lock screen entry point**. Maybe in Bash, maybe in C. Which tries (or doesn't try - **according to command line/XfConf options**) to send relevant DBus messages, run relevant binaries. Everything will call it. By one line. To one behavior only. --- See also / possibly related / possibly will (partially) solve / is solving by: * https://bugzilla.xfce.org/show_bug.cgi?id=11488, * https://bugzilla.xfce.org/show_bug.cgi?id=15151, * https://bugzilla.xfce.org/show_bug.cgi?id=15300, * https://bugzilla.xfce.org/show_bug.cgi?id=16738, * https://gitlab.xfce.org/xfce/xfce4-session/-/issues/15 / https://gitlab.xfce.org/xfce/libxfce4ui/-/issues/70, * https://gitlab.xfce.org/xfce/xfce4-session/-/issues/17, * https://gitlab.xfce.org/xfce/xfce4-session/-/issues/68, * https://gitlab.xfce.org/xfce/xfce4-session/-/issues/69, * https://gitlab.xfce.org/xfce/xfce4-session/-/issues/79, * https://gitlab.xfce.org/xfce/xfce4-session/-/issues/108, * https://gitlab.xfce.org/xfce/xfce4-session/-/issues/110, * https://gitlab.xfce.org/xfce/xfce4-session/-/issues/115, * https://gitlab.xfce.org/xfce/xfce4-session/-/issues/120, * https://gitlab.xfce.org/xfce/xfce4-session/-/issues/148, * https://gitlab.xfce.org/xfce/xfce4-session/-/issues/150, * https://gitlab.xfce.org/xfce/xfce4-session/-/issues/175, * https://gitlab.xfce.org/xfce/xfce4-session/-/issues/178, * https://gitlab.xfce.org/xfce/xfce4-session/-/issues/182, * https://gitlab.xfce.org/xfce/xfce4-session/-/merge_requests/20, * https://gitlab.xfce.org/xfce/xfce4-session/-/merge_requests/23, * https://gitlab.xfce.org/xfce/xfce4-session/-/merge_requests/24, * https://gitlab.xfce.org/xfce/xfce4-session/-/merge_requests/41, * https://gitlab.xfce.org/xfce/xfce4-session/-/commit/7c846f57a5776f831d2777687b6d4b154c55b505, * https://gitlab.xfce.org/xfce/xfce4-session/-/commit/ec4f05ba944085c00798f91fe53b7a975ea496a0, * https://gitlab.xfce.org/xfce/xfce4-power-manager/-/issues/5, * https://gitlab.xfce.org/xfce/xfce4-power-manager/-/issues/7, * https://gitlab.xfce.org/xfce/xfce4-power-manager/-/issues/12, * https://gitlab.xfce.org/xfce/xfce4-power-manager/-/issues/19, * https://gitlab.xfce.org/xfce/xfce4-power-manager/-/issues/28, * https://gitlab.xfce.org/xfce/xfce4-power-manager/-/issues/51 / https://gitlab.xfce.org/xfce/libxfce4ui/-/issues/63, * https://gitlab.xfce.org/xfce/xfce4-power-manager/-/issues/65, * https://gitlab.xfce.org/xfce/xfce4-power-manager/-/issues/68, * https://gitlab.xfce.org/xfce/xfce4-power-manager/-/issues/71, * https://gitlab.xfce.org/xfce/xfce4-power-manager/-/issues/81, * https://gitlab.xfce.org/xfce/xfce4-power-manager/-/issues/83, * https://gitlab.xfce.org/xfce/xfce4-power-manager/-/issues/84, * https://gitlab.xfce.org/xfce/xfce4-power-manager/-/issues/113, * https://gitlab.xfce.org/xfce/xfce4-power-manager/-/issues/127 / https://gitlab.xfce.org/xfce/libxfce4ui/-/issues/64, * https://gitlab.xfce.org/xfce/xfce4-power-manager/-/issues/142, * https://gitlab.xfce.org/xfce/xfce4-power-manager/-/issues/153, * https://gitlab.xfce.org/xfce/xfce4-power-manager/-/issues/187, * https://gitlab.xfce.org/xfce/xfce4-power-manager/-/issues/202, * https://gitlab.xfce.org/xfce/xfce4-power-manager/-/issues/209, * https://gitlab.xfce.org/xfce/xfce4-power-manager/-/issues/210, * https://gitlab.xfce.org/xfce/xfce4-power-manager/-/issues/248, * https://gitlab.xfce.org/xfce/xfce4-power-manager/-/issues/250, * https://gitlab.xfce.org/xfce/xfce4-power-manager/-/issues/252, * https://gitlab.xfce.org/xfce/xfce4-power-manager/-/merge_requests/24, * https://gitlab.xfce.org/xfce/xfce4-power-manager/-/merge_requests/32, * https://gitlab.xfce.org/xfce/xfce4-power-manager/-/merge_requests/43, * https://gitlab.xfce.org/xfce/xfce4-power-manager/-/merge_requests/50, * https://gitlab.xfce.org/xfce/xfce4-power-manager/-/merge_requests/52, * https://gitlab.xfce.org/apps/xfce4-screensaver/-/issues/1 (and many duplicates), * https://gitlab.xfce.org/apps/xfce4-screensaver/-/issues/12 (and many duplicates), * https://gitlab.xfce.org/apps/xfce4-screensaver/-/issues/20, * https://gitlab.xfce.org/apps/xfce4-screensaver/-/issues/28, * https://gitlab.xfce.org/apps/xfce4-screensaver/-/issues/36, * https://gitlab.xfce.org/apps/xfce4-screensaver/-/issues/53, * https://gitlab.xfce.org/apps/xfce4-screensaver/-/issues/75, * https://gitlab.xfce.org/apps/xfce4-screensaver/-/issues/78, * https://gitlab.xfce.org/apps/xfce4-screensaver/-/issues/96, * https://gitlab.xfce.org/apps/xfce4-screensaver/-/issues/104 / https://gitlab.xfce.org/apps/xfce4-screensaver/-/issues/159 / https://gitlab.xfce.org/xfce/xfce4-power-manager/-/issues/251, * https://gitlab.xfce.org/apps/xfce4-screensaver/-/issues/107, * https://gitlab.xfce.org/apps/xfce4-screensaver/-/issues/111, * https://gitlab.xfce.org/apps/xfce4-screensaver/-/issues/129, * https://gitlab.xfce.org/apps/xfce4-screensaver/-/issues/130, * https://gitlab.xfce.org/apps/xfce4-screensaver/-/issues/133, * https://gitlab.xfce.org/apps/xfce4-screensaver/-/issues/134, * https://gitlab.xfce.org/apps/xfce4-screensaver/-/issues/138, * https://gitlab.xfce.org/apps/xfce4-screensaver/-/issues/140, * https://gitlab.xfce.org/apps/xfce4-screensaver/-/issues/143, * https://gitlab.xfce.org/apps/xfce4-screensaver/-/issues/146, * https://gitlab.xfce.org/apps/xfce4-screensaver/-/merge_requests/21, * https://gitlab.xfce.org/apps/xfce4-screensaver/-/commit/b4ede5236656532a3c05925c1909c7aabb07f733, * https://gitlab.xfce.org/apps/xfce4-screensaver/-/commit/9df3ad56d7c607dbdd101afc3ff6bcce6d565832, * https://gitlab.xfce.org/xfce/xfwm4/-/issues/541, * https://gitlab.xfce.org/xfce/xfwm4/-/issues/715, * https://gitlab.xfce.org/xfce/xfwm4/-/issues/753, * https://gitlab.xfce.org/xfce/libxfce4ui/-/issues/62, * https://gitlab.xfce.org/xfce/libxfce4ui/-/merge_requests/97, * https://gitlab.xfce.org/xfce/libxfce4ui/-/merge_requests/98, * https://gitlab.xfce.org/xfce/libxfce4ui/-/merge_requests/99, * https://gitlab.xfce.org/xfce/libxfce4ui/-/commit/a25f036b656546f2d5ad840ea2aa1a49d8ece232, * https://gitlab.xfce.org/xfce/libxfce4ui/-/commit/32f761266658e2f59093af259655e44efecf31a9, * https://gitlab.xfce.org/xfce/xfce4-panel/-/issues/55, * https://gitlab.xfce.org/xfce/xfce4-panel/-/issues/843, * https://forum.xfce.org/viewtopic.php?id=16953, * https://gitlab.gnome.org/GNOME/gtk/-/issues/3659, * https://bugs.launchpad.net/ubuntu/+source/xscreensaver/+bug/1858027.
issue