[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Add helper for .desktop file creation?

From: Nicolas Goaziou
Subject: Re: Add helper for .desktop file creation?
Date: Sat, 25 May 2019 14:06:20 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/26.2 (gnu/linux)


Pierre Neidhardt <address@hidden> writes:

> Quite a bunch of packages need to provide their own .desktop since
> upstream does not provide them.  It's very evident in games.scm in
> particular.

Interestingly, I had the same itch recently.

> It seems to be a good opportunity to factor this out.  What about the
> following?
> --8<---------------cut here---------------start------------->8---
> (define* (make-desktop-file destination #:key
>                             (encoding "UTF-8")
>                             name
>                             (generic-name name)
>                             comment
>                             exec
>                             icon
>                             (startup-notify "true")
>                             (terminal "false")
>                             (type "Application")
>                             (categories "Application"))
>   "Create a desktop file at DESTINATION for executable EXEC with name NAME.
> Other arguments are optional."
>   (let ((maybe-print (lambda (key value)
>                        (if value
>                            (string-append key "=" value "\n")
>                            ""))))
>     (mkdir-p (dirname destination))
>     (with-output-to-file destination
>       (lambda _
>         (display
>          (string-append
>           "[Desktop Entry]" "\n"
>           "Encoding=" encoding "\n"
>           "Name=" name "\n"
>           "GenericName=" generic-name "\n"
>           (maybe-print "Comment" comment)
>           "Exec=" exec "\n"
>           (maybe-print "Icon" icon)
>           "StartupNotify=" startup-notify "\n"
>           "Terminal=" terminal "\n"
>           "Type=" type "\n"
>           "Categories=" categories "\n"))))))
> --8<---------------cut here---------------end--------------->8---

It looks interesting. I have a couple of suggestions, if you don't mind:
- some items are missing, e.g., "Keywords". 

  As you may know, you can have a look at
  spec-latest.html> for a full list.

- some items you use a list of strings instead of a string (e.g.,
  "Keywords", "Categories"),

- it would be nice to handle localized values for keys. For example
  `drascula' package uses "Comment[fr]". It could possibly be
  implemented with an alist as the value.

I know Nix provides such a function, but I haven't looked at its
implementation yet.


Nicolas Goaziou

reply via email to

[Prev in Thread] Current Thread [Next in Thread]