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.

I’d be really happy to help and want LightLocker, but can you make a PPA? Wanna test this… Hopefully lightlocker is default soon @fossfreedom also i pinged you on gh

This topic is for anyone who wants to get their hands dirty changing code to make things work

I have given pointers to where to look in the above posts … once someone has looked and fixed things up then it will be ready for ppa testing.

Anyone made leeway on this? :stuck_out_tongue:
It’s vital that it’s included in 20.04, imo. GNOME Screensaver, for me, has screen tearing and glitching and is just plain ugly. It also lacks some rather basic features, like shutting the computer down from the lock screen. Gotta admit, windows does a better job then GNOME Screensaver.
I notice, though, that GNOME doesn’t seem to use Screensaver, but wraps GDM in some way - that’s a great idea for Budgie too

I can test tomorrow, does Win+L invoke it properly?

Shouldn’t it be Budgie? just making sure.
And as I said, gnome-screensaver is very not integrated, lightlocker is not only welcome but a vital addition to 20.04

Came across this interesting post. Custom screen saver with XSecureLock

Both xsecurelock and xss-lock are in the repos so could be a viable alternative.

Looks nice! The only-png background could be easily worked around without touching i3lock itself, nor use a wrapper.