Raising this topic for anyone who is interested in tidying up the following.
Quite a few people over the years have asked how to replace gnome-screensaver (the budgie default lockscreen) with something else like light-locker or i3lock.
Its possible for those that are adventurous - you’ll need to build your own budgie-desktop and purge all bits of gnome-screensaver from your installation.
A couple of patches will get you going with light-locker:
--- budgie-desktop-10.5.orig/src/applets/user-indicator/UserIndicatorWindow.vala
+++ budgie-desktop-10.5/src/applets/user-indicator/UserIndicatorWindow.vala
@@ -63,7 +63,7 @@ public class UserIndicatorWindow : Budgi
}
try {
- saver = yield Bus.get_proxy(BusType.SESSION, "org.gnome.ScreenSaver", "/org/gnome/ScreenSaver");
+ saver = yield Bus.get_proxy(BusType.SESSION, "org.freedesktop.ScreenSaver", "/org/freedesktop/ScreenSaver");
} catch (Error e) {
warning(UNABLE_CONTACT + "gnome-screensaver: %s", e.message);
return;
&
Index: budgie-desktop-10.5/src/applets/user-indicator/DBusInterfaces.vala
===================================================================
--- budgie-desktop-10.5.orig/src/applets/user-indicator/DBusInterfaces.vala
+++ budgie-desktop-10.5/src/applets/user-indicator/DBusInterfaces.vala
@@ -40,12 +40,13 @@ public interface SessionManager : Object
public abstract async void Shutdown() throws Error;
}
-[DBus (name="org.gnome.ScreenSaver")]
+[DBus (name="org.freedesktop.ScreenSaver")]
public interface ScreenSaver : Object
{
public abstract void lock() throws Error;
}
+
/*
* Editor modelines - https://www.wireshark.org/tools/modelines.html
*
Index: budgie-desktop-10.5/src/raven/powerstrip.vala
===================================================================
--- budgie-desktop-10.5.orig/src/raven/powerstrip.vala
+++ budgie-desktop-10.5/src/raven/powerstrip.vala
@@ -13,12 +13,13 @@ namespace Budgie
{
-[DBus (name="org.gnome.ScreenSaver")]
+[DBus (name="org.freedesktop.ScreenSaver")]
public interface ScreenSaver : Object
{
public abstract void lock() throws Error;
}
+
[DBus (name="org.gnome.SessionManager")]
public interface SessionManager : Object
{
@@ -38,11 +39,12 @@ class PowerStrip : Gtk.EventBox
async void setup_dbus()
{
try {
- saver = yield Bus.get_proxy(BusType.SESSION, "org.gnome.ScreenSaver", "/org/gnome/ScreenSaver");
+ saver = yield Bus.get_proxy(BusType.SESSION, "org.freedesktop.ScreenSaver", "/org/freedesktop/ScreenSaver");
} catch (Error e) {
warning("Unable to contact login manager: %s", e.message);
return;
}
+
try {
session = yield Bus.get_proxy(BusType.SESSION, "org.gnome.SessionManager", "/org/gnome/SessionManager");
} catch (Error e) {
Index: budgie-desktop-10.5/src/session/budgie-desktop-screensaver.desktop.in
===================================================================
--- budgie-desktop-10.5.orig/src/session/budgie-desktop-screensaver.desktop.in
+++ budgie-desktop-10.5/src/session/budgie-desktop-screensaver.desktop.in
@@ -3,8 +3,8 @@ Type=Application
Name=Screensaver (Budgie Desktop)
Comment=Launch screensaver and locker program
Icon=preferences-desktop-screensaver
-Exec=gnome-screensaver
-TryExec=gnome-screensaver
+Exec=light-locker
+TryExec=light-locker
OnlyShowIn=Budgie;
NoDisplay=true
X-GNOME-Autostart-Phase=Application
Index: budgie-desktop-10.5/src/session/meson.build
===================================================================
--- budgie-desktop-10.5.orig/src/session/meson.build
+++ budgie-desktop-10.5/src/session/meson.build
@@ -20,7 +20,6 @@ gnome_session_324_components = [
'org.gnome.SettingsDaemon.Power',
'org.gnome.SettingsDaemon.PrintNotifications',
'org.gnome.SettingsDaemon.Rfkill',
- 'org.gnome.SettingsDaemon.ScreensaverProxy',
'org.gnome.SettingsDaemon.Sharing',
'org.gnome.SettingsDaemon.Smartcard',
'org.gnome.SettingsDaemon.Sound',
@@ -28,6 +27,9 @@ gnome_session_324_components = [
'org.gnome.SettingsDaemon.XSettings',
]
+# 'org.gnome.SettingsDaemon.ScreensaverProxy',
+
+
gsd_324_key = [
'org.gnome.SettingsDaemon.A11yKeyboard'
]
It kind of works - invoking a lock from the panel/powerstrip switches to the default greeter (e.g. slick-greeter) - you can then relogin to the same session.
The screen blanks but instantly changes to the greeter - I havent found out how to make it stay blank until you hit a key/wiggle your mouse. Also the very first use of the lock/unlock you are prompted for a further authentication box which you can cancel.
Only tested in a virtual machine - not real life multimonitors switching VT’s etc.
As I said - more than happy for anyone to take the above and run with this to iron out all the bumps.