From: Peter Oliver <p.d.oliver@mavit.org.uk>
To: 48783@debbugs.gnu.org
Subject: bug#48783: Advertise support for Startup Notification when built with GTK
Date: Tue, 1 Jun 2021 19:40:01 +0100 (BST) [thread overview]
Message-ID: <1bd1659c-e19-9ebb-f2dd-62fdf7ee265b@froglet.home.mavit.org.uk> (raw)
[-- Attachment #1: Type: text/plain, Size: 857 bytes --]
The specification for the Startup Notification Protocol (https://specifications.freedesktop.org/startup-notification-spec/startup-notification-latest.txt) says that we should put “StartupNotify=true” in our .desktop files if we support it. Although we don’t cater for it directly, GTK gives us it for free from version 2.2 onwards (https://developer.gnome.org/platform-overview/stable/dev-launching-startupnotify.html.en). Hence, we should advertise support provided that this is a GTK build.
I have attached a patch to do this.
The practical effect of this change is that window managers will arrange for a slow to start Emacs to not steal the keyboard focus of a user who is typing into another application when Emacs pops onto the screen.
I have requested copyright assignment paperwork but am currently waiting to hear back.
--
Peter Oliver
[-- Attachment #2: Type: text/plain, Size: 3191 bytes --]
From c42203835c590fc85746f0db16fd63e955fd914b Mon Sep 17 00:00:00 2001
From: Peter Oliver <git@mavit.org.uk>
Date: Tue, 1 Jun 2021 19:31:39 +0100
Subject: [PATCH] Advertise support for Startup Notification when built with
GTK
* etc/emacsclient.desktop, etc/emacsclient.desktop: Specify
StartupNotify=true.
* configure.ac (USE_STARTUP_NOTIFICATION): New variable, yes iff
HAVE_GTK.
* Makefile.in (install-etc): Remove StartupNotify=true from
etc/*.desktop unless USE_STARTUP_NOTIFICATION.
---
Makefile.in | 7 +++++++
configure.ac | 6 ++++++
etc/emacs.desktop | 1 +
etc/emacsclient.desktop | 1 +
4 files changed, 15 insertions(+)
diff --git a/Makefile.in b/Makefile.in
index 65eceb2a0c..341892c622 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -100,6 +100,8 @@ FIND_DELETE =
HAVE_NATIVE_COMP = @HAVE_NATIVE_COMP@
+USE_STARTUP_NOTIFICATION = @USE_STARTUP_NOTIFICATION@
+
# ==================== Where To Install Things ====================
# Location to install Emacs.app under GNUstep / macOS.
@@ -706,11 +708,15 @@ install-man:
## Note: emacs22 does not have all the resolutions.
EMACS_ICON=emacs
+ifeq (${USE_STARTUP_NOTIFICATION},no)
+USE_STARTUP_NOTIFICATION_SED_CMD=-e "/^StartupNotify=true$$/d"
+endif
install-etc:
umask 022; ${MKDIR_P} "$(DESTDIR)${desktopdir}"
tmp=etc/emacs.tmpdesktop; rm -f $${tmp}; \
sed -e "/^Exec=emacs/ s/emacs/${EMACS_NAME}/" \
-e "/^Icon=emacs/ s/emacs/${EMACS_NAME}/" \
+ $(USE_STARTUP_NOTIFICATION_SED_CMD) \
${srcdir}/etc/emacs.desktop > $${tmp}; \
${INSTALL_DATA} $${tmp} "$(DESTDIR)${desktopdir}/${EMACS_NAME}.desktop"; \
rm -f $${tmp}
@@ -718,6 +724,7 @@ install-etc:
client_name=`echo emacsclient | sed '$(TRANSFORM)'`${EXEEXT}; \
sed -e "/^Exec=emacsclient/ s|emacsclient|${bindir}/$${client_name}|" \
-e "/^Icon=emacs/ s/emacs/${EMACS_NAME}/" \
+ $(USE_STARTUP_NOTIFICATION_SED_CMD) \
${srcdir}/etc/emacsclient.desktop > $${tmp}; \
${INSTALL_DATA} $${tmp} "$(DESTDIR)${desktopdir}/$${client_name}.desktop"; \
rm -f $${tmp}
diff --git a/configure.ac b/configure.ac
index d99e5395d3..a44a4730ad 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2892,6 +2892,12 @@ AC_DEFUN
AC_SUBST(SETTINGS_CFLAGS)
AC_SUBST(SETTINGS_LIBS)
+USE_STARTUP_NOTIFICATION=no
+if test "${HAVE_GTK}" = "yes"; then
+ USE_STARTUP_NOTIFICATION=yes
+fi
+AC_SUBST(USE_STARTUP_NOTIFICATION)
+
dnl SELinux is available for GNU/Linux only.
HAVE_LIBSELINUX=no
diff --git a/etc/emacs.desktop b/etc/emacs.desktop
index 2e6496e58c..81c53c6121 100644
--- a/etc/emacs.desktop
+++ b/etc/emacs.desktop
@@ -8,5 +8,6 @@ Icon=emacs
Type=Application
Terminal=false
Categories=Development;TextEditor;
+StartupNotify=true
StartupWMClass=Emacs
Keywords=Text;Editor;
diff --git a/etc/emacsclient.desktop b/etc/emacsclient.desktop
index 3feb83c729..2c1edb4b66 100644
--- a/etc/emacsclient.desktop
+++ b/etc/emacsclient.desktop
@@ -8,5 +8,6 @@ Icon=emacs
Type=Application
Terminal=false
Categories=Development;TextEditor;
+StartupNotify=true
StartupWMClass=Emacsd
Keywords=Text;Editor;
--
2.31.1
next reply other threads:[~2021-06-01 18:40 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-06-01 18:40 Peter Oliver [this message]
2021-06-04 10:05 ` bug#48783: Advertise support for Startup Notification when built with GTK Lars Ingebrigtsen
2021-06-22 10:50 ` Peter Oliver
2021-06-22 13:17 ` Lars Ingebrigtsen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1bd1659c-e19-9ebb-f2dd-62fdf7ee265b@froglet.home.mavit.org.uk \
--to=p.d.oliver@mavit.org.uk \
--cc=48783@debbugs.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).