Add support for Budgie Desktop using GNOME Screensaver

Bug #1703690 reported by fossfreedom
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
gnome-desktop3 (Ubuntu)
Fix Released
Undecided
fossfreedom
gnome-screensaver (Ubuntu)
Fix Released
Undecided
fossfreedom

Bug Description

Ubuntu Budgie and Budgie Desktop uses GNOME Screensaver for its lock-screen.

It also uses gnome-control-center to control both the desktop background and the lock-screen background.

GNOME Screensaver does not support gnome-control-center lock screen dialog - GNOME has changed to a gsettings path org.gnome.desktop.screensaver. GNOME Screensaver is expecting the path org.gnome.desktop.background.

To resolve this requires patches in two packages - gnome-screensaver and gnome-desktop3.

1. GNOME Screensaver has been patched to support Budgie Desktop and gnome-control-center.
Note - I've taken the opportunity to reuse the existing "Unity" patchwork which is now defunct (I believe) since Unity uses an alternative locking mechanism. The lock-screen is styled as per the old "Unity" implementation before Unity 16.04 moved to the new lock screen.

2. The consequence of making the requisite changes to GNOME Screensaver has unfortunately impacted gnome-desktop3. gnome-desktop3 has a Ubuntu specific patch to revert a GNOME upstream decision to remove a key called draw-background. GNOME Screensaver calls a public function in gnome-desktop3 - the gsettings path causes a segmentation fault since draw-background does not exist in org.gnome.desktop.screensaver. I have worked around this to check the path being called before pulling the draw-background key.

All of this is explained in the dep3 headers of the two debdiff patches attached

Tags: patch artful
Changed in gnome-desktop3 (Ubuntu):
assignee: nobody → fossfreedom (fossfreedom)
Changed in gnome-screensaver (Ubuntu):
assignee: nobody → fossfreedom (fossfreedom)
Changed in gnome-desktop3 (Ubuntu):
status: New → In Progress
Changed in gnome-screensaver (Ubuntu):
status: New → In Progress
tags: added: patch
Revision history for this message
Łukasz Zemczak (sil2100) wrote :

Hello! Thanks for submitting the bug and patches!

I looked briefly at the provided debdiffs and from the packaging POV they look good. I'm not sure about the contents though. I am not a GNOME developer so I'd like to get some opinion of someone that knows the code and would be able to say if it's the right way to go or not. Did you discuss these changes with the desktop team or anyone from the GNOME uploaders?

Checking the patches I'm a bit worried about a few things. In the gnome-screensaver part, the patch introduces the static function in_desktop() in both gs-lock-plug.c and gs-window-x11.c. I know it's nice to have helper functions like these 'local' but I'm always reluctant whenever I see boilerplate code like this. Maybe it could be made global and somehow shared? I guess it's fine if there's a lot of boilerplate there already, would have to check the codebase.
The gnome-desktop3 part seems good but a little bit hacky. Wonder if this could be done in a more generic way. Maybe it's not possible though...

Anyway, let's get someone from the GNOME people to take a look before we decide about uploading it.

Revision history for this message
fossfreedom (fossfreedom) wrote : Re: [Bug 1703690] Re: Add support for Budgie Desktop using GNOME Screensaver
Download full text (4.1 KiB)

Thanks Łukasz

With regards to the gnome-desktop3 patch. I had a look through the
gsettings API and there didnt seem to be a method to say "is this
gsettings key you are about to use valid" - in fact all the
documentation basically says it is up to the programmer to ensure that
a key being used is actually there ("programmer error"). GSettings
doesnt seem to-do any validation which is a shame.

I would prefer if the whole "draw-background" ubuntu patch could be
dropped (and hence make this patch unnecessary) but I don't know
really what the current impact that would have on the Unity desktop.

Ack with regards to the static functions in gnome-screensaver. I
suppose its a coding style to keep code as localised as possible.

I did ping on both #ubuntu-devel and #ubuntu-desktop recently but no
takers. I don't really know anyone on the GNOME team other than
JBicha.

On 3 August 2017 at 10:15, Łukasz Zemczak <email address hidden> wrote:
> Hello! Thanks for submitting the bug and patches!
>
> I looked briefly at the provided debdiffs and from the packaging POV
> they look good. I'm not sure about the contents though. I am not a GNOME
> developer so I'd like to get some opinion of someone that knows the code
> and would be able to say if it's the right way to go or not. Did you
> discuss these changes with the desktop team or anyone from the GNOME
> uploaders?
>
> Checking the patches I'm a bit worried about a few things. In the gnome-screensaver part, the patch introduces the static function in_desktop() in both gs-lock-plug.c and gs-window-x11.c. I know it's nice to have helper functions like these 'local' but I'm always reluctant whenever I see boilerplate code like this. Maybe it could be made global and somehow shared? I guess it's fine if there's a lot of boilerplate there already, would have to check the codebase.
> The gnome-desktop3 part seems good but a little bit hacky. Wonder if this could be done in a more generic way. Maybe it's not possible though...
>
> Anyway, let's get someone from the GNOME people to take a look before we
> decide about uploading it.
>
> --
> You received this bug notification because you are subscribed to the bug
> report.
> https://bugs.launchpad.net/bugs/1703690
>
> Title:
> Add support for Budgie Desktop using GNOME Screensaver
>
> Status in gnome-desktop3 package in Ubuntu:
> In Progress
> Status in gnome-screensaver package in Ubuntu:
> In Progress
>
> Bug description:
> Ubuntu Budgie and Budgie Desktop uses GNOME Screensaver for its lock-
> screen.
>
> It also uses gnome-control-center to control both the desktop
> background and the lock-screen background.
>
> GNOME Screensaver does not support gnome-control-center lock screen
> dialog - GNOME has changed to a gsettings path
> org.gnome.desktop.screensaver. GNOME Screensaver is expecting the
> path org.gnome.desktop.background.
>
> To resolve this requires patches in two packages - gnome-screensaver
> and gnome-desktop3.
>
> 1. GNOME Screensaver has been patched to support Budgie Desktop and gnome-control-center.
> Note - I've taken the opportunity to reuse the existing "Unity" patchwork which is now defunct (I be...

Read more...

Revision history for this message
fossfreedom (fossfreedom) wrote :

discussed on IRC with Laney - suggestion:

make the is_enabled check use a new GSettings, like GSettings *background_settings; background_settings = g_settings_new ("org.gnome.desktop.background"); bg->is_enabled = g_settings_get_boolean (background_settings, BG_KEY_DRAW_BACKGROUND); g_object_unref (background_settings);

Revision history for this message
fossfreedom (fossfreedom) wrote :

additionally " two things on the gnome-screensaver one: in_desktop should probably use g_strv_contains instead of iterating the list and I think you should find (or create) a common file to contain that utility function rather than defining it multiple times"

Revision history for this message
fossfreedom (fossfreedom) wrote :
Revision history for this message
fossfreedom (fossfreedom) wrote :
Revision history for this message
fossfreedom (fossfreedom) wrote :

please find enc two revised patches that hopefully take into account Laney and Lukasz comments.

gnome-desktop3 is very much simplified to explicitly check the draw_background key from the background schema. Note - I haven't included a new changelog for this debdiff.

gnome-screensaver reworks to define the in_desktop check via its own module "gs-common.h/c". The in_desktop check simplifies the code as per Laney's recommendation.

Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package gnome-desktop3 - 3.25.91.1-0ubuntu2

---------------
gnome-desktop3 (3.25.91.1-0ubuntu2) artful; urgency=medium

  * debian/patches/git_revert_draw_background.patch: Check
    org.gnome.desktop.background explicitly, not via the passed-in GSettings.
    We're passed different schemas, but DRAW_BACKGROUND is always there. Patch
    from David Mohammed (LP: #1703690)

 -- Iain Lane <email address hidden> Mon, 04 Sep 2017 17:46:55 +0100

Changed in gnome-desktop3 (Ubuntu):
status: In Progress → Fix Released
Revision history for this message
Iain Lane (laney) wrote :

Sponsored, thanks. For gnome-desktop3, I merged your patch into the revert patch since I thought it made sense there. If that's too annoying in future, someone can split it back out.

Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package gnome-screensaver - 3.6.1-7ubuntu6

---------------
gnome-screensaver (3.6.1-7ubuntu6) artful; urgency=medium

  * Add support for Budgie Desktop (LP: #1703690)
    - enable support for gnome-control-center
    - style the lock-screen using the "Unity" patch-work

 -- David Mohammed <email address hidden> Thu, 31 Aug 2017 20:53:09 +0100

Changed in gnome-screensaver (Ubuntu):
status: In Progress → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.