Replacing the lock screen with something else

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.

How to use xscreen saver ubn a buggy session in Ubuntu? if I want to uninstal gnome-screen saver, the whole buggy desktop is uninstalled…

You need to unpack the budgie desktop package, replace various code sections that depend on gnome-screensaver .

That’s the challenge of this task.