Subject: [bug#64263] [PATCH 3/3] gnu: rxvt-unicode: Use helper procedure to make desktop files.

From: Timotej Lazar <[email-masked]>
Date: Sat, 24 Jun 2023 13:28:05 +0200

* gnu/packages/xdisorg.scm (rxvt-unicode)[arguments]: Replace custom code with
make-desktop-entry-file. Specify categories and icon in desktop files.
---
 gnu/packages/xdisorg.scm | 45 +++++++++++++---------------------------
 1 file changed, 14 insertions(+), 31 deletions(-)

diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index ed642e7ce6..2e31d49b0a 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -1288,38 +1288,21 @@ (define-public rxvt-unicode
            #:make-flags #~(list (string-append "TERMINFO=" #$output "/share/terminfo"))
            #:phases
            #~(modify-phases %standard-phases
-               (add-after 'install 'install-desktop-urxvt
+               (add-after 'install 'install-desktop-entries
                  (lambda _
-                   (let ((desktop (string-append #$output "/share/applications")))
-                     (mkdir-p desktop)
-                     (with-output-to-file
-                         (string-append desktop "/urxvt.desktop")
-                       (lambda _
-                         (format #t
-                                 "[Desktop Entry]~@
-                                 Name=rxvt-unicode~@
-                                 Comment=~@
-                                 Exec=~a/bin/urxvt~@
-                                 TryExec=~@*~a/bin/urxvt~@
-                                 Icon=~@
-                                 Type=Application~%"
-                                 #$output))))))
-               (add-after 'install 'install-desktop-urxvtc
-                 (lambda _
-                   (let ((desktop (string-append #$output "/share/applications")))
-                     (mkdir-p desktop)
-                     (with-output-to-file
-                         (string-append desktop "/urxvtc.desktop")
-                       (lambda _
-                         (format #t
-                                 "[Desktop Entry]~@
-                                 Name=rxvt-unicode (client)~@
-                                 Comment=Rxvt clone with XFT and unicode support~@
-                                 Exec=~a/bin/urxvtc~@
-                                 TryExec=~@*~a/bin/urxvtc~@
-                                 Icon=~@
-                                 Type=Application~%"
-                                 #$output)))))))))
+                   (for-each (lambda (exec name)
+                               (make-desktop-entry-file
+                                (string-append #$output "/share/applications/"
+                                               exec ".desktop")
+                                #:type "Application"
+                                #:name name
+                                #:comment '((#f #$(package-synopsis this-package)))
+                                #:exec exec
+                                #:try-exec exec
+                                #:icon "utilities-terminal"
+                                #:categories '("System" "TerminalEmulator")))
+                             '("urxvt" "urxvtc")
+                             '("rxvt-unicode" "rxvt-unicode (client)")))))))
     (inputs
      (list libptytty libxft libx11 libxt libxext))
     (native-inputs
-- 
2.40.1