Subject: [bug#76619] [PATCH] gnu: home: services: Add 'wayland-display' service.

From: Simon Tournier <[email-masked]>
Date: Fri, 22 Aug 2025 14:14:52 +0200

Hi,

What is the status of this patch

    https://issues.guix.gnu.org/issue/76619

?

On Tue, 11 Mar 2025 at 22:39, Hilton Chain <[email-masked]> wrote:

> I finally realized...!  ‘x11-display’ has a fundamental issue: It actually
> relies on pre-existing graphical session!
>
> 1. Shepherd loads service definitons
>   - 'service' dependending on ‘x11-display’ calls ‘(getenv "DISPLAY")’ in its
>     definiton -> it depends on existing DISPLAY.
>   - Shepherd actually fails at this stage if there's no pre-existing DISPLAY.
> 2. Shepherd starts ‘x11-display’
>   - ‘x11-display’ finds socket and sets DISPLAY.
> 3. Shepherd starts 'service'
>   - 'service' is already loaded in (1.), DISPLAY set in (2.) won't affect it.
>
> Bad news, but simplifies the whole thing a lot :)
>
> We can just remove socket finding part from ‘x11-display’ and use ‘getenv’
> instead.  Then For a ‘graphical-session’ provision, Shepherd should be started
> by... a graphical session.  Previously for ‘x11-display’ I think Shepherd was
> supposed to be started by a display manager, but I'm not sure if WAYLAND_DISPLAY
> changes when using a display manager.
>
> home-shepherd-service-type doesn't set default environment variables so
> Shepherd's starting environment is inherited.  Then no need to worry about
> importing environment variables if we want to keep this behavior.
>
> So a graphical session setup is what I have mentioned before: Disable
> auto-starting of Shepherd, and start it in your desktop environment.
>
> I'm using this snippet btw:
>
> pgrep --uid $USER shepherd > /dev/null || shepherd

[...]

> Either services marked not to auto-start starting or those marked as auto-start
> not starting? :P  I'm not sure which side to choose.
>
> For the specific case this is unnecessary now, as there's no need to wait to
> import environment variables.

Cheers,
simon