Subject: [bug#72714] [PATCH v4] home: services: Add 'home-sway-service-type'.

From: "pelzflorian (Florian Pelz)" <[email-masked]>
Date: Fri, 20 Sep 2024 18:45:00 +0200

Hello Arnaud.  I’m still looking at the details of sway, so I could
myself push your patch with confidence to guix.git, but would also be
happy if others pushed it.  I am already using it on my family’s media
PC now [1].  Thank you for it!

Arnaud Daby-Seesaram <[email-masked]> writes:
>>> The function @code{sway-configuration->file} defined below can be used
>>> to provide the value for the @code{sway-configuration} field of
>>> @code{greetd-wlgreet-sway-session}.
>>
>> Good.  Even though it is a little strange that one would add a home
>> module (gnu home services sway) to the operating-system configuration,
>> I know no better place for this `sway-configuration->file' procedure,
>> since the record is for Guix Home and being able to use it for greetd
>> is just an extra feature.
> Yes, I agree; I could not find a better place for this function either.
> Do you think that this note is helpful, or should I remove it?
>
> Best regards,

That one can use your `sway-configuration' enables one to configure the
inputs field declaratively to use another keyboard layout in the
greeter.  It is a good feature.  But perhaps add the word “optionally”
to make clear users do not have to provide a sway-configuration to the
greeter.

> @lisp
> (service home-sway-service-type
>          (sway-configuration
>           (gestures
>            '((swipe:3:down . "move to scratchpad")
>              (swipe:3:up   . "scratchpad show")))
>           (outputs
>            (list (sway-output
>                   (identifier '*)
>                   (bg (file-append guix-backgrounds
>                      "\
> /share/backgrounds/guix/guix-checkered-16-9.svg")))))))
> @end lisp

Now that I tested this code, I notice that SVG backgrounds work only
if and only if librsvg is found.  Still, I think it is better this way
with file-append.  Perhaps add a note to doc/guix.texi here that this
librsvg must be installed or propagated in the packages field.

> @table @asis
> @item @code{mode-name} (default @code{"default"})
> Name of the mode.
> @item  @code{keybindings} (default @code{'()})

These fields are missing a colon “default: ”.  In other places you
correctly write “default: ”.

Regards,
Florian

[1] https://lists.gnu.org/archive/html/guile-user/2024-09/msg00041.html