GNU bug report logs -
#54333
29.0.50; browse-url-chrome in Wayland/pgtk
Previous Next
Reported by: Stephen Eglen <sje30 <at> cam.ac.uk>
Date: Thu, 10 Mar 2022 23:20:02 UTC
Severity: normal
Found in version 29.0.50
Done: Po Lu <luangruo <at> yahoo.com>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 54333 in the body.
You can then email your comments to 54333 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#54333
; Package
emacs
.
(Thu, 10 Mar 2022 23:20:02 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Stephen Eglen <sje30 <at> cam.ac.uk>
:
New bug report received and forwarded. Copy sent to
bug-gnu-emacs <at> gnu.org
.
(Thu, 10 Mar 2022 23:20:02 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
Hi,
using pgtk under Wayland with sway window manager, the following file
should reproduce the error I'm seeing:
----------------------------------------------------------------------
;; 1. works
(browse-url-firefox "http://news.bbc.co.uk")
;; 2. works (opens in chrome)
(browse-url-xdg-open "http://news.bbc.co.uk")
;; 3. doesn't work
(browse-url-chrome "http://news.bbc.co.uk")
;; 4. doesn't work
(browse-url-chromium "http://news.bbc.co.uk")
;; 5. works, after deleting the process-environment line
(defun browse-url-chrome1 (url &optional _new-window)
"Ask the Google Chrome WWW browser to load URL.
Default to the URL around or before point. The strings in
variable `browse-url-chrome-arguments' are also passed to
Google Chrome.
The optional argument NEW-WINDOW is not used."
(interactive (browse-url-interactive-arg "URL: "))
(setq url (browse-url-encode-url url))
(apply #'start-process
(concat "google-chrome " url) nil
browse-url-chrome-program
(append
browse-url-chrome-arguments
(list url))))
(browse-url-chrome1 "http://news.bbc.co.uk")
----------------------------------------------------------------------
browse-url-firefox and browse-url-xdg-open work as expected, opening the
web page in firefox and chrome respectively (chrome is my default under
xdg-open)
If however I do 3 or 4, I can't get the page to open in chrome or
chromium.
If I delete the following line from the defun of browse-url-chrome
(let* ((process-environment (browse-url-process-environment)))
then browse-url-chrome1 works as expected. Is there something about the
logic in browse-url-emacs-display that assumes X, rather than wayland?
(browse-url-emacs-display) returns "wayland-1"
whereas $DISPLAY in the shell is :0
Stephen
In GNU Emacs 29.0.50 (build 3, x86_64-pc-linux-gnu, GTK+ Version 3.24.31, cairo version 1.17.4)
of 2022-03-10 built on light
Repository revision: c6e079ae15002268d90869a43f66d962175e4cdb
Repository branch: master
System Description: Manjaro Linux
Configured using:
'configure --with-pgtk'
Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
JSON LCMS2 LIBOTF LIBSYSTEMD LIBXML2 MODULES NOTIFY INOTIFY PDUMPER PGTK
PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS WEBP XIM
GTK3 ZLIB
Important settings:
value of $LANG: en_GB.UTF-8
locale-coding-system: utf-8-unix
Major mode: Lisp
Minor modes in effect:
vertico-mode: t
global-fasd-mode: t
windmove-mode: t
pdf-occur-global-minor-mode: t
global-git-commit-mode: t
magit-auto-revert-mode: t
global-edit-server-edit-mode: t
csv-field-index-mode: t
shell-dirtrack-mode: t
recentf-mode: t
TeX-PDF-mode: t
straight-use-package-mode: t
straight-package-neutering-mode: t
display-time-mode: t
tooltip-mode: t
global-eldoc-mode: t
show-paren-mode: t
electric-indent-mode: t
mouse-wheel-mode: t
menu-bar-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
blink-cursor-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t
line-number-mode: t
indent-tabs-mode: t
transient-mark-mode: t
Load-path shadows:
/home/stephen/.emacs.d/straight/build/ivy/elpa hides /home/stephen/.emacs.d/straight/build/lispy/elpa
/home/stephen/.emacs.d/straight/build/loccur/loccur hides ~/langs/emacs/elisp-ds/loccur
/home/stephen/.emacs.d/straight/build/csv-mode/csv-mode hides ~/langs/emacs/elisp-ds/csv-mode
~/langs/emacs/elisp-ds/emaxima/maxima-font-lock hides ~/langs/emacs/maxima-font-lock
~/langs/emacs/elisp-ds/emaxima/maxima hides ~/langs/emacs/maxima
/home/stephen/.emacs.d/straight/build/transient/transient hides /usr/local/share/emacs/29.0.50/lisp/transient
~/langs/emacs/mspools hides /usr/local/share/emacs/29.0.50/lisp/mail/mspools
/home/stephen/.emacs.d/straight/build/let-alist/let-alist hides /usr/local/share/emacs/29.0.50/lisp/emacs-lisp/let-alist
Features:
(shadow emacsbug shortdoc cursor-sensor vc-mtn vc-hg vc-bzr vc-src
vc-sccs vc-svn vc-cvs vc-rcs cl-print descr-text emoji-labels emoji
multisession sqlite misearch multi-isearch dired-aux gnus-dired pdf-sync
pdf-annot facemenu pdf-outline pdf-links pdf-history dabbrev shr-color
gnus-cite smiley mm-archive mail-extr textsec uni-scripts idna-mapping
ucs-normalize uni-confusable textsec-check qp so-long view mu4e mu4e-org
mu4e-main org-id vc-git ol-eww eww url-queue mm-url ol-rmail ol-mhe
ol-irc ol-info ol-gnus nnselect ol-docview ol-bibtex ol-bbdb ol-w3m
ol-doi org-link-doi lispy delsel lispy-inline avy etags fileloop edebug
backtrace help-fns lispy-tags json-mode json-snatcher js cc-mode
cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine
json-mode-autoloads json-snatcher-autoloads sudo-edit
sudo-edit-autoloads deadgrep spinner deadgrep-autoloads
spinner-autoloads yasnippet yasnippet-autoloads
flymake-shellcheck-autoloads wolfram-mode-autoloads orderless
orderless-autoloads consult-vertico vertico vertico-autoloads consult
consult-autoloads rg vc vc-dispatcher rg-info-hack rg-menu rg-ibuffer
rg-result wgrep-rg wgrep rg-history rg-header grep rg-autoloads
wgrep-autoloads fasd fasd-autoloads loccur loccur-autoloads
fd-dired-autoloads notdeft-global notdeft-org9 notdeft-autoloads hydra
lv lispy-autoloads zoutline-autoloads hydra-autoloads lv-autoloads
swiper-autoloads ivy-autoloads iedit-autoloads ace-window-autoloads
avy-autoloads gif-screencast xdg gif-screencast-autoloads keycast
keycast-autoloads olivetti olivetti-autoloads wwg
writer-word-goals-autoloads windswap windmove windswap-autoloads
list-unicode-display list-unicode-display-autoloads shackle trace
shackle-autoloads visual-fill-column visual-fill-column-autoloads
lua-mode lua-mode-autoloads hugo-autoloads org-recoll
yesterbox-autoloads package-lint finder package-lint-autoloads
docker-tramp-autoloads docker-tramp tramp-cache dockerfile-mode
sh-script smie executable dockerfile-mode-autoloads yaml-mode
yaml-mode-autoloads vterm-toggle tramp-sh vterm-toggle-autoloads vterm
tramp tramp-loaddefs trampver tramp-integration files-x tramp-compat
ls-lisp face-remap term disp-table ehelp vterm-module term/xterm xterm
vterm-autoloads keychain-environment keychain-environment-autoloads
zygospore zygospore-autoloads solarized-light-theme solarized-theme
solarized solarized-faces solarized-theme-autoloads pdf-occur ibuf-ext
ibuffer ibuffer-loaddefs tablist tablist-filter semantic/wisent/comp
semantic/wisent semantic/wisent/wisent semantic/util-modes semantic/util
semantic semantic/tag semantic/lex semantic/fw mode-local cedet
pdf-isearch let-alist pdf-misc pdf-tools cus-edit cus-load pdf-view
magit-bookmark bookmark pp pdf-cache pdf-info tq pdf-util pdf-macs
pdf-tools-autoloads let-alist-autoloads tablist-autoloads
magit-submodule magit-obsolete magit-blame magit-stash magit-reflog
magit-bisect magit-push magit-pull magit-fetch magit-clone magit-remote
magit-commit magit-sequence magit-notes magit-worktree magit-tag
magit-merge magit-branch magit-reset magit-files magit-refs magit-status
magit package url-handlers magit-repos magit-apply magit-wip magit-log
which-func imenu magit-diff smerge-mode diff diff-mode git-commit
log-edit pcvs-util add-log magit-core magit-autorevert autorevert
filenotify magit-margin magit-transient magit-process with-editor
magit-mode transient magit-git magit-section magit-utils dash
magit-autoloads magit-section-autoloads git-commit-autoloads
with-editor-autoloads transient-autoloads dash-autoloads s edit-server
edit-server-autoloads poly-R poly-noweb ess-r-mode ess-r-flymake
flymake-proc flymake warnings ess-r-xref xref ess-trns ess-r-package
ess-r-completion ess-roxy ess-r-syntax ess-rd ess-s-lang ess-help
ess-mode ess-inf ess-tracebug compile poly-R-autoloads
poly-noweb-autoloads poly-markdown markdown-mode polymode poly-lock
polymode-base polymode-weave polymode-export polymode-compat
polymode-methods polymode-core polymode-classes eieio-custom eieio-base
color poly-markdown-autoloads polymode-autoloads ess-knitr
markdown-mode-autoloads org-mu4e midnight mu4e-icalendar mu4e-view
mu4e-view-gnus mu4e-view-common mu4e-headers mu4e-compose mu4e-context
mu4e-draft mu4e-actions ido rfc2368 smtpmail sendmail mule-util hl-line
mu4e-mark mu4e-proc mu4e-utils doc-view jka-compr image-mode exif
mu4e-lists mu4e-message flow-fill mu4e-vars mu4e-meta gnus-icalendar
org-capture gnus-art mm-uu mml2015 mm-view mml-smime smime dig gnus-sum
shr pixel-fill kinsoku url-file url-dired svg dom browse-url url
url-proxy url-privacy url-expand url-methods url-history url-cookie
url-domsuf url-util gnus-group gnus-undo gnus-start gnus-dbus gnus-cloud
nnimap nnmail mail-source utf7 netrc nnoo parse-time gnus-spec gnus-int
gnus-range message mailcap yank-media rmc puny dired-x dired
dired-loaddefs rfc822 mml mml-sec epa derived epg rfc6068 epg-config
mailheader gnus-win gnus nnheader gnus-util text-property-search
mail-utils range mm-decode mm-bodies mm-encode mail-parse rfc2231
rfc2047 rfc2045 mm-util ietf-drums mail-prsvr gmm-utils icalendar
diary-lib diary-loaddefs csv-mode sort csv-mode-autoloads finder-inf
ob-latex ob-ditaa ob-dot ob-shell shell ob-R recentf tree-widget
wid-edit ox-beamer ox-odt rng-loc rng-uri rng-parse rng-match rng-dt
rng-util rng-pttrn nxml-parse nxml-ns nxml-enc xmltok nxml-util ox-latex
ox-icalendar org-agenda org-refile ox-html table ox-ascii ox-publish ox
org-element org ob ob-tangle ob-ref ob-lob ob-table org-macro
org-footnote org-src ob-comint org-pcomplete pcomplete org-list
org-faces org-entities org-version ob-emacs-lisp org-table org-keys
org-loaddefs find-func avl-tree generator ol rx oc-basic bibtex iso8601
time-date oc ob-exp ob-core org-compat advice ob-eval org-macs
format-spec server hideshow-org hideshow cc-vars cc-defs ess ess-utils
ess-custom project ess-autoloads julia-repl-autoloads s-autoloads
julia-mode comint ansi-color ring julia-mode-latexsubs
julia-mode-autoloads fm emacs-keys move ff-paths cl ffap url-parse
auth-source eieio eieio-core eieio-loaddefs password-cache json map
url-vars my-tex tex dbus xml crm texmathp auctex-autoloads tex-site
use-package-core my-elisp time-stamp my-c tempo-examples tempo
others-elisp cal-menu calendar cal-loaddefs mailabbrev
use-package-autoloads bind-key-autoloads straight-autoloads cl-extra
straight info autoload radix-tree cl-seq pcase checkdoc lisp-mnt
thingatpt help-mode seq subr-x byte-opt cl-macs gv bytecomp byte-compile
cconv outlines edmacro kmacro cl-loaddefs cl-lib noutline outline
easy-mmode time iso-transl tooltip eldoc paren electric uniquify
ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/pgtk-win
pgtk-win term/common-win tool-bar dnd fontset image regexp-opt fringe
tabulated-list replace newcomment text-mode lisp-mode prog-mode register
page tab-bar menu-bar rfn-eshadow isearch easymenu timer select
scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors
frame minibuffer cl-generic cham georgian utf-8-lang misc-lang
vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932
hebrew greek romanian slovak czech european ethiopic indian cyrillic
chinese composite emoji-zwj charscript charprop case-table epa-hook
jka-cmpr-hook help simple abbrev obarray cl-preloaded nadvice button
loaddefs faces cus-face macroexp files window text-properties overlay
sha1 md5 base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads dbusbind inotify
dynamic-setting system-font-setting font-render-setting cairo gtk pgtk
lcms2 multi-tty make-network-process emacs)
Memory information:
((conses 16 1527588 185323)
(symbols 48 83353 30)
(strings 32 352021 25187)
(string-bytes 1 34475083)
(vectors 16 128303)
(vector-slots 8 2973038 290558)
(floats 8 8075 1347)
(intervals 56 75233 6235)
(buffers 992 73))
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#54333
; Package
emacs
.
(Fri, 11 Mar 2022 00:48:01 GMT)
Full text and
rfc822 format available.
Message #8 received at 54333 <at> debbugs.gnu.org (full text, mbox):
Stephen Eglen <sje30 <at> cam.ac.uk> writes:
> then browse-url-chrome1 works as expected. Is there something about the
> logic in browse-url-emacs-display that assumes X, rather than wayland?
>
> (browse-url-emacs-display) returns "wayland-1"
Indeed. I'll look into that, thanks.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#54333
; Package
emacs
.
(Fri, 11 Mar 2022 01:50:01 GMT)
Full text and
rfc822 format available.
Message #11 received at 54333 <at> debbugs.gnu.org (full text, mbox):
Po Lu <luangruo <at> yahoo.com> writes:
> Indeed. I'll look into that, thanks.
Does this patch solve the problem?
diff --git a/lisp/net/browse-url.el b/lisp/net/browse-url.el
index 6d28e318ff..776f774172 100644
--- a/lisp/net/browse-url.el
+++ b/lisp/net/browse-url.el
@@ -970,7 +970,13 @@ browse-url-process-environment
environment, otherwise just use the current environment."
(let ((display (or browse-url-browser-display (browse-url-emacs-display))))
(if display
- (cons (concat "DISPLAY=" display) process-environment)
+ (cons (concat (if (and (eq window-system 'pgtk)
+ (equal (pgtk-backend-display-class)
+ "GdkWaylandDisplay"))
+ "WAYLAND_DISPLAY="
+ "DISPLAY=")
+ display)
+ process-environment)
process-environment)))
(defun browse-url-emacs-display ()
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#54333
; Package
emacs
.
(Fri, 11 Mar 2022 08:32:01 GMT)
Full text and
rfc822 format available.
Message #14 received at 54333 <at> debbugs.gnu.org (full text, mbox):
yes, thanks. It does fix my bug report.
Stephen
On Fri, Mar 11 2022, Po Lu wrote:
> Po Lu <luangruo <at> yahoo.com> writes:
>
>> Indeed. I'll look into that, thanks.
>
> Does this patch solve the problem?
>
> diff --git a/lisp/net/browse-url.el b/lisp/net/browse-url.el
> index 6d28e318ff..776f774172 100644
> --- a/lisp/net/browse-url.el
> +++ b/lisp/net/browse-url.el
> @@ -970,7 +970,13 @@ browse-url-process-environment
> environment, otherwise just use the current environment."
> (let ((display (or browse-url-browser-display (browse-url-emacs-display))))
> (if display
> - (cons (concat "DISPLAY=" display) process-environment)
> + (cons (concat (if (and (eq window-system 'pgtk)
> + (equal (pgtk-backend-display-class)
> + "GdkWaylandDisplay"))
> + "WAYLAND_DISPLAY="
> + "DISPLAY=")
> + display)
> + process-environment)
> process-environment)))
>
> (defun browse-url-emacs-display ()
>
Reply sent
to
Po Lu <luangruo <at> yahoo.com>
:
You have taken responsibility.
(Fri, 11 Mar 2022 08:39:01 GMT)
Full text and
rfc822 format available.
Notification sent
to
Stephen Eglen <sje30 <at> cam.ac.uk>
:
bug acknowledged by developer.
(Fri, 11 Mar 2022 08:39:02 GMT)
Full text and
rfc822 format available.
Message #19 received at 54333-done <at> debbugs.gnu.org (full text, mbox):
Stephen Eglen <sje30 <at> cam.ac.uk> writes:
> yes, thanks. It does fix my bug report.
Installed, thanks for testing. I'm closing this bug.
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Fri, 08 Apr 2022 11:24:07 GMT)
Full text and
rfc822 format available.
This bug report was last modified 3 years and 152 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.