Subject: [bug#75270] [PATCH v4 2/3] gnu: Add gtkgreet.

From: Maxim Cournoyer <[email-masked]>
Date: Wed, 29 Jan 2025 13:35:54 +0900

Hi,

muradm <[email-masked]> writes:

> Hello,
>
> Maxim Cournoyer <[email-masked]> writes:
>
>> Hello,
>>
>> muradm <[email-masked]> writes:
>>
>>> * gnu/packages/admin.scm (gtkgreet): New variable.
>>> (gtkgreet-adwaita-dark): New variable.
>>
>> Please split packages submission in different commits (1 package = 1
>> commit).
>>
>
> It is one package + variation, still split?

Yes.

>>> +    (build-system meson-build-system)
>>> +    (native-inputs (list pkg-config scdoc))
>>> +    (inputs (list gtk+ gtk-layer-shell json-c))
>>> +    (synopsis "GTK based greeter for greetd")
>>> +    (description
>>> +     "GTK based greeter for greetd, to be run under cage or
>>> similar.")
>>
>> I'd spell GTK-based, despite what upstream used.
>
> I copied and pasted what upstream says.

That's why I mentioned 'despite what upstream used' :-) As far as my
English grammar knowledge goes, when you use a compound adjective made
of a modified nound (such as GTK-based), it typically takes a hyphen.
There's apparently no strict rule [0], but in my opinion it helps
reading this correctly (you might pause a bit longer between GTK and
based if it were not joined by a hyphen).

[0]  https://www.merriam-webster.com/grammar/hyphen-rules-open-closed-compound-words

>> What does 'to be run
>> under cage' means?  What is cage?  Shouldn't that run under greetd?
>> I'm
>> confused.  Please expand the description.
>
> While greeter is getting started by greetd, for graphical greeters you
> need some compositor. So that greetd starts compositor which starts
> the greeter. I suppose author here may refer to Cage wayland kiosk
> (guix package --show=cage) compositor as an example. The idea is to
> run greeter in such configuration that only one application is
> executed.

I see!  Maybe it could thus be expound to:

"GTK-based greeter for greetd, to be run under a compositor such as
Cage."

>>> +    (home-page "https://git.sr.ht/~kennylevinsen/gtkgreet")
>>> +    (license license:gpl3+)))
>>> +
>>> +(define-public gtkgreet-adwaita-dark
>>> +  (package
>>> +   (inherit gtkgreet)
>>> +   (name "gtkgreet-adwaita-dark")
>>> +   (arguments
>>> +    (list
>>> +     #:phases
>>> +     #~(modify-phases
>>> +        %standard-phases
>>> +        (add-after 'install 'wrap-gtkgreet-for-theme
>>> +                   (lambda _
>>> +                     (wrap-program
>>> +                      (string-append #$output "/bin/gtkgreet")
>>> +                      '("GTK_THEME" "" = ("Adwaita:dark"))))))))
>>
>> Hm, that rebuilds gtkgreet just to change its theme?  Couldn't its
>> service be configurable and take care of that instead?
>
> There is nothing usable to extract into configuration. I found it
> easier to configure package than to have alternative package inlined
> into configuration. For instance `<greetd-gtkgreet-sway-session>` has
> two fields holding packages `sway` and `gtkgreet`. Is there any way to
> specify value of `gtkgreet` to hold multiple packages to achieve
> similar effect wihout building package?

If the configuration record allowed provided a 'assets' or field, to put
in the environment greetd/gtkgreet runs, coupled with a
'environment-variables' field, the user could add the gnome-themes-extra
package to the 'assets' field and pass "GTK_THEME=Adwaita:dark" as an
environment variable to be set in the environment.

Your greetd-user-session already comes with 'extra-env', which could
accept the above.  It'd just need a new 'assets' field.  The
lightdm-gtk-greeter-configuration can be used for inspiration.  The
'gdm-configuration' record also has a 'gnome-shell-assets' field serving
a similar purpose.

Note that there is a convention to end configuration records wih
'-configuration' in the name.  I believe it will help users see more
clearly through the code if you follow this convention for the proposed
new records.

-- 
Thanks,
Maxim