[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) |
Hello,
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
<https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-
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.
Regards,
--
Nicolas Goaziou
- Add helper for .desktop file creation?, Pierre Neidhardt, 2019/05/24
- Re: Add helper for .desktop file creation?,
Nicolas Goaziou <=
- Re: Add helper for .desktop file creation?, Nicolas Goaziou, 2019/05/25
- Re: Add helper for .desktop file creation?, Pierre Neidhardt, 2019/05/25
- Re: Add helper for .desktop file creation?, Amin Bandali, 2019/05/25
- Re: Add helper for .desktop file creation?, Nicolas Goaziou, 2019/05/25
- Re: Add helper for .desktop file creation?, Nicolas Goaziou, 2019/05/25
- Re: Add helper for .desktop file creation?, Pierre Neidhardt, 2019/05/25
- Re: Add helper for .desktop file creation?, Pierre Neidhardt, 2019/05/25
- Re: Add helper for .desktop file creation?, Pierre Neidhardt, 2019/05/27
- Re: Add helper for .desktop file creation?, Nicolas Goaziou, 2019/05/27
- Re: Add helper for .desktop file creation?, Pierre Neidhardt, 2019/05/27