Subject: Improvements to emacs-mail.desktop

From: Peter Oliver <[email-masked]>
Date: Wed, 30 Jun 2021 15:07:18 +0100 (BST)

Attached are three patches to improve emacs-mail.desktop, which is new in Emacs 28:

- Provide an emacsclient-mail.desktop, for consistency with emacsclient.desktop.
- Install emacs-mail.desktop and emacsclient-mail.desktop.
- Hide emacs-mail.desktop, emacsclient-mail.desktop from menus.

-- 
Peter Oliver

From 22a63ad477b530e225b1dcb535076ec045486afa Mon Sep 17 00:00:00 2001
From: Peter Oliver <[email-masked]>
Date: Wed, 9 Jun 2021 12:44:32 +0100
Subject: [PATCH 1/3] Provide an emacsclient-mail.desktop
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

We provide both an emacs.desktop and an emacsclient.desktop, so for
consistency let’s do the same with mail.

* etc/emacs-mail.desktop: Extract suggestions for using emacsclient
from comments to create emacsclient-mail.desktop.
* etc/emacsclient-mail.desktop: Send mail using an existing Emacs
rather than starting a new one.
---
 etc/NEWS                     |  1 +
 etc/emacs-mail.desktop       | 14 +-------------
 etc/emacsclient-mail.desktop | 19 +++++++++++++++++++
 3 files changed, 21 insertions(+), 13 deletions(-)
 create mode 100644 etc/emacsclient-mail.desktop

diff --git a/etc/NEWS b/etc/NEWS
index 701b9a73a8..3106bb1bed 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1073,6 +1073,7 @@ Clicking on a 'mailto:' link in other applications will then open
 Emacs with headers filled out according to the link, e.g.
 "mailto:[email-masked]?subject=This+is+a+test".  If you prefer
 emacsclient, use "emacsclient -e '(message-mailto "%u")'"
+or "emacsclient-mail.desktop".
 
 ---
 *** Change to default value of 'message-draft-headers' user option.
diff --git a/etc/emacs-mail.desktop b/etc/emacs-mail.desktop
index 251afa100c..3a96b9ec8c 100644
--- a/etc/emacs-mail.desktop
+++ b/etc/emacs-mail.desktop
@@ -1,22 +1,10 @@
 [Desktop Entry]
 Categories=Network;Email;
 Comment=GNU Emacs is an extensible, customizable text editor - and more
+Exec=emacs -f message-mailto %u
 Icon=emacs
 Name=Emacs (Mail)
 MimeType=x-scheme-handler/mailto;
 NoDisplay=false
 Terminal=false
 Type=Application
-
-Exec=emacs -f message-mailto %u
-# # If you prefer to use emacsclient, use this instead:
-# Exec=sh -c 'emacsclient --alternate-editor= --display="$DISPLAY" --eval "(message-mailto \"%u\")"'
-# Actions=new-window;new-instance;
-
-# [Desktop Action new-window]
-# Name=New Window
-# Exec=emacsclient --alternate-editor= --create-frame --eval '(message-mailto "%u")'
-
-# [Desktop Action new-instance]
-# Name=New Instance
-# Exec=emacs -f message-mailto %u
diff --git a/etc/emacsclient-mail.desktop b/etc/emacsclient-mail.desktop
new file mode 100644
index 0000000000..200389c4b5
--- /dev/null
+++ b/etc/emacsclient-mail.desktop
@@ -0,0 +1,19 @@
+[Desktop Entry]
+Categories=Network;Email;
+Comment=GNU Emacs is an extensible, customizable text editor - and more
+Exec=sh -c 'emacsclient --alternate-editor= --display="$DISPLAY" --eval "(message-mailto \"%u\")"'
+Icon=emacs
+Name=Emacs (Mail, Client)
+MimeType=x-scheme-handler/mailto;
+NoDisplay=false
+Terminal=false
+Type=Application
+Actions=new-window;new-instance;
+
+[Desktop Action new-window]
+Name=New Window
+Exec=emacsclient --alternate-editor= --create-frame --eval '(message-mailto "%u")'
+
+[Desktop Action new-instance]
+Name=New Instance
+Exec=emacs -f message-mailto %u
-- 
2.31.1

From ae9e2fd889e7fb8a4348ace9304a9052a3cbc4e2 Mon Sep 17 00:00:00 2001
From: Peter Oliver <[email-masked]>
Date: Wed, 9 Jun 2021 12:51:15 +0100
Subject: [PATCH 2/3] Install emacs-mail.desktop and emacsclient-mail.desktop

* Makefile.in (install-etc): Install emacs-mail.desktop and
emacsclient-mail.desktop
---
 Makefile.in | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/Makefile.in b/Makefile.in
index 8fccdf7580..07081ec48e 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -742,6 +742,19 @@ install-etc:
 	  ${srcdir}/etc/emacsclient.desktop > $${tmp}; \
 	${INSTALL_DATA} $${tmp} "$(DESTDIR)${desktopdir}/$${client_name}.desktop"; \
 	rm -f $${tmp}
+	tmp=etc/emacs-mail.tmpdesktop; rm -f $${tmp}; \
+	sed -e "/^Exec=emacs/ s/emacs/${EMACS_NAME}/" \
+	  -e "/^Icon=emacs/ s/emacs/${EMACS_NAME}/" \
+	  ${srcdir}/etc/emacs-mail.desktop > $${tmp}; \
+	${INSTALL_DATA} $${tmp} "$(DESTDIR)${desktopdir}/${EMACS_NAME}-mail.desktop"; \
+	rm -f $${tmp}
+	tmp=etc/emacsclient-mail.tmpdesktop; rm -f $${tmp}; \
+	client_name=`echo emacsclient | sed '$(TRANSFORM)'`${EXEEXT}; \
+	sed -e "/^Exec=emacsclient/ s|emacsclient|${bindir}/$${client_name}|" \
+	  -e "/^Icon=emacs/ s/emacs/${EMACS_NAME}/" \
+	  ${srcdir}/etc/emacsclient-mail.desktop > $${tmp}; \
+	${INSTALL_DATA} $${tmp} "$(DESTDIR)${desktopdir}/$${client_name}-mail.desktop"; \
+	rm -f $${tmp}
 	umask 022; ${MKDIR_P} "$(DESTDIR)${metainfodir}"
 	tmp=etc/emacs.tmpmetainfo; rm -f $${tmp}; \
 	sed -e "s/emacs\.desktop/${EMACS_NAME}.desktop/" \
-- 
2.31.1

From 79a34c97b9a344d14e5b7183eff49eac82a16b15 Mon Sep 17 00:00:00 2001
From: Peter Oliver <[email-masked]>
Date: Wed, 9 Jun 2021 12:58:39 +0100
Subject: [PATCH 3/3] Hide emacs-mail.desktop, emacsclient-mail.desktop from
 menus
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

These are intended for use as mailto: URL handlers, not for launching
directly, so we can reduce clutter by hiding them from a desktop
environment’s menus.

* etc/emacs-mail.desktop, etc/emacsclient-mail.desktop: NoDisplay=true
---
 etc/emacs-mail.desktop       | 2 +-
 etc/emacsclient-mail.desktop | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/etc/emacs-mail.desktop b/etc/emacs-mail.desktop
index 3a96b9ec8c..3468033584 100644
--- a/etc/emacs-mail.desktop
+++ b/etc/emacs-mail.desktop
@@ -5,6 +5,6 @@ Exec=emacs -f message-mailto %u
 Icon=emacs
 Name=Emacs (Mail)
 MimeType=x-scheme-handler/mailto;
-NoDisplay=false
+NoDisplay=true
 Terminal=false
 Type=Application
diff --git a/etc/emacsclient-mail.desktop b/etc/emacsclient-mail.desktop
index 200389c4b5..95f1f8008c 100644
--- a/etc/emacsclient-mail.desktop
+++ b/etc/emacsclient-mail.desktop
@@ -5,7 +5,7 @@ Exec=sh -c 'emacsclient --alternate-editor= --display="$DISPLAY" --eval "(messag
 Icon=emacs
 Name=Emacs (Mail, Client)
 MimeType=x-scheme-handler/mailto;
-NoDisplay=false
+NoDisplay=true
 Terminal=false
 Type=Application
 Actions=new-window;new-instance;
-- 
2.31.1