From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Davide Masserut via "Bug reports for GNU Emacs, the Swiss army knife of text editors" Newsgroups: gmane.emacs.bugs Subject: bug#65509: [PATCH] Use correct env var when opening frames with freedesktop menu entries Date: Wed, 06 Sep 2023 16:01:58 +0200 Message-ID: <87il8ncruu.fsf@mssdvd.com> References: <87ttsomgb5.fsf@mssdvd.com> <83msy7eesk.fsf@gnu.org> <87pm33sazt.fsf@yahoo.com> <835y4tbtpj.fsf@gnu.org> <87pm303499.fsf@mssdvd.com> <8334zwa4vi.fsf@gnu.org> <87y1hokr6v.fsf@yahoo.com> <83jzt795wi.fsf@gnu.org> <87r0nflrhb.fsf@yahoo.com> <87lednqw1v.fsf@mssdvd.com> <871qffl97z.fsf@yahoo.com> <87wmx7jts3.fsf@yahoo.com> <87lednz6u8.fsf@mssdvd.com> <87edjekc1k.fsf@yahoo.com> <87il8oodrm.fsf@mssdvd.com> Reply-To: Davide Masserut Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="10127"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Eli Zaretskii , Stefan Kangas , 65509@debbugs.gnu.org To: Po Lu Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Wed Sep 06 16:14:20 2023 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qdtIR-0002TC-U6 for geb-bug-gnu-emacs@m.gmane-mx.org; Wed, 06 Sep 2023 16:14:20 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qdtIF-0007fi-AS; Wed, 06 Sep 2023 10:14:07 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qdtI9-0007Zl-2w for bug-gnu-emacs@gnu.org; Wed, 06 Sep 2023 10:14:01 -0400 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qdtI8-0001Xt-Ph for bug-gnu-emacs@gnu.org; Wed, 06 Sep 2023 10:14:00 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1qdtI9-0003SO-Ib for bug-gnu-emacs@gnu.org; Wed, 06 Sep 2023 10:14:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Davide Masserut Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 06 Sep 2023 14:14:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 65509 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 65509-submit@debbugs.gnu.org id=B65509.169400960313236 (code B ref 65509); Wed, 06 Sep 2023 14:14:01 +0000 Original-Received: (at 65509) by debbugs.gnu.org; 6 Sep 2023 14:13:23 +0000 Original-Received: from localhost ([127.0.0.1]:37072 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qdtHX-0003RP-1f for submit@debbugs.gnu.org; Wed, 06 Sep 2023 10:13:23 -0400 Original-Received: from out-227.mta0.migadu.com ([2001:41d0:1004:224b::e3]:15344) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qdtHU-0003RF-4t for 65509@debbugs.gnu.org; Wed, 06 Sep 2023 10:13:21 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mssdvd.com; s=key1; t=1694009596; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=8/3/0/IDQXLmB6FZoecpEs9HTC8IifeFa4hh2v/IMt4=; b=pKLYQiwTyihcxFyibPtR1OQh+cA6xT9Eo0dupKi8AthNaTobLILluk11pS1KDRJjkJAijI 0sFn0GVE1dy3huw69nIKdRbDcMHSHIyWZl3Mek7MEOLUhu6feoAW9oUB3qNk90oYfReycI lykQMHxN3mMOzu63aN0FrwGHLW32bhr0dbKk0A2AyPBNhR16raJApgEuFcdAlVwXqApy4Q Dy+mFgz731eHSL2K/jsHwKxwnihKVRgdlp0IbrY2iEAlu8ZmhOIdOQRV7pJRZ3qHSgucMv VxnOjicVrBK9yf8LoE7Ux5C14j4mdFPsfNwLL20vIn2018uijvaXTWtw3PZcGg== X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. In-reply-to: X-Migadu-Flow: FLOW_OUT X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:269547 Archived-At: --=-=-= Content-Type: text/plain; format=flowed Po Lu writes: > Davide Masserut writes: > >> Correct. However, that TTY is occupied by the X window manager, >> which hides the Emacs interface. >> >> When the argument of --display doesn't exits or is empty, should we >> check if $DISPLAY is present in the environment and use its value? >> >> When PGTK is enabled, we could check $WAYLAND_DISPLAY and then >> $DISPLAY before resorting to displaying the frame in a terminal or in >> a TTY. >> >> I tested this with Gnome and i3, both started from a TTY using >> startx. I'm not sure how this behaves when using a display manager. > > Display selection is GTK's territory, and we basically give it carte > blanche to judge which displays are suitable, since we can't account > for every present and future GDK backend. > > Only subsequent to the establishment of the display connection are we > capable of taking display-specific action, such as displaying a > warning message. It turns out that Emacs 29 has new CLI option that solves exactly these problems. The attached patch replaces the usage of --display=$DISPLAY with --reuse-frame. --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-Avoid-using-display-to-reuse-frames.patch >From bb7ba852c9add6ed5b3c1edd783aaf07eca08a46 Mon Sep 17 00:00:00 2001 From: Davide Masserut Date: Wed, 6 Sep 2023 15:35:47 +0200 Subject: [PATCH] Avoid using --display to reuse frames Using hard-coded display values can cause graphical frames to open using the wrong backend or not open at all. * etc/emacsclient-mail.desktop, etc/emacsclient.desktop: Use --reuse-frame instead of --display. --- etc/emacsclient-mail.desktop | 4 ++-- etc/emacsclient.desktop | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/etc/emacsclient-mail.desktop b/etc/emacsclient-mail.desktop index 0a2420ddead..819e3855567 100644 --- a/etc/emacsclient-mail.desktop +++ b/etc/emacsclient-mail.desktop @@ -2,9 +2,9 @@ Categories=Network;Email; Comment=GNU Emacs is an extensible, customizable text editor - and more # We want to pass the following commands to the shell wrapper: -# u=$(echo "$1" | sed 's/[\"]/\\&/g'); exec emacsclient --alternate-editor= --display="$DISPLAY" --eval "(message-mailto \"$u\")" +# u=$(echo "$1" | sed 's/[\"]/\\&/g'); exec emacsclient --alternate-editor= --reuse-frame --eval "(message-mailto \"$u\")" # Special chars '"', '$', and '\' must be escaped as '\\"', '\\$', and '\\\\'. -Exec=sh -c "u=\\$(echo \\"\\$1\\" | sed 's/[\\\\\\"]/\\\\\\\\&/g'); exec emacsclient --alternate-editor= --display=\\"\\$DISPLAY\\" --eval \\"(message-mailto \\\\\\"\\$u\\\\\\")\\"" sh %u +Exec=sh -c "u=\\$(echo \\"\\$1\\" | sed 's/[\\\\\\"]/\\\\\\\\&/g'); exec emacsclient --alternate-editor= --reuse-frame --eval \\"(message-mailto \\\\\\"\\$u\\\\\\")\\"" sh %u Icon=emacs Name=Emacs (Mail, Client) MimeType=x-scheme-handler/mailto; diff --git a/etc/emacsclient.desktop b/etc/emacsclient.desktop index 4395d3b02bc..cfbd4d97979 100644 --- a/etc/emacsclient.desktop +++ b/etc/emacsclient.desktop @@ -3,7 +3,7 @@ Name=Emacs (Client) GenericName=Text Editor Comment=Edit text MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;x-scheme-handler/org-protocol; -Exec=sh -c "if [ -n \\"\\$*\\" ]; then exec emacsclient --alternate-editor= --display=\\"\\$DISPLAY\\" \\"\\$@\\"; else exec emacsclient --alternate-editor= --create-frame; fi" sh %F +Exec=sh -c "if [ -n \\"\\$*\\" ]; then exec emacsclient --alternate-editor= --reuse-frame \\"\\$@\\"; else exec emacsclient --alternate-editor= --create-frame; fi" sh %F Icon=emacs Type=Application Terminal=false -- 2.42.0 --=-=-=--