From unknown Sat Aug 09 13:21:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#74781: [PATCH] Add `browse-url-qutebrowser' Resent-From: Daniel Mendler Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 11 Dec 2024 07:05:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 74781 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: 74781@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.17339006892257 (code B ref -1); Wed, 11 Dec 2024 07:05:01 +0000 Received: (at submit) by debbugs.gnu.org; 11 Dec 2024 07:04:49 +0000 Received: from localhost ([127.0.0.1]:60913 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tLGm6-0000aF-5i for submit@debbugs.gnu.org; Wed, 11 Dec 2024 02:04:49 -0500 Received: from lists.gnu.org ([209.51.188.17]:58386) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tLGm3-0000a4-2U for submit@debbugs.gnu.org; Wed, 11 Dec 2024 02:04:44 -0500 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 1tLGm0-00020G-NY for bug-gnu-emacs@gnu.org; Wed, 11 Dec 2024 02:04:41 -0500 Received: from server.qxqx.de ([2a01:4f8:c012:9177::1] helo=mail.qxqx.de) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tLGlv-00048o-TY for bug-gnu-emacs@gnu.org; Wed, 11 Dec 2024 02:04:37 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=daniel-mendler.de; s=key; h=Content-Type:MIME-Version:Message-ID:Date: Subject:To:From:Sender:Reply-To:Cc:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=b1jV1Ge5YnZQDx5vTZR98aLn2ryZHXev5HSWMHLVlYk=; b=tE3YVdpcXG5eN5wc+XlM/J20UT XkqyjXQhn4pLVV4az7giKtReCRSwjhVVBK190a8SeXyj1lWhJjbJ44R3tizD/dP71mid2nPc26ki+ 3yvdg4P4dUHOKc4blDogMxp+COlwrBD9rJJv07xL3o1zq82GhrxO0XuPkONtEyMIt2H4=; From: Daniel Mendler Date: Wed, 11 Dec 2024 08:04:29 +0100 Message-ID: <87msh21z0i.fsf@daniel-mendler.de> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Received-SPF: pass client-ip=2a01:4f8:c012:9177::1; envelope-from=mail@daniel-mendler.de; helo=mail.qxqx.de X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.4 (-) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) --=-=-= Content-Type: text/plain Tags: patch The browser launcher supports the NEW-WINDOW argument and `browse-url-qutebrowser-new-window-is-tab' to open tabs. Furthermore opening new URLs is speed up via Unix socket IPC if available. --=-=-= Content-Type: text/patch Content-Disposition: attachment; filename=0001-Add-browse-url-qutebrowser.patch >From ea24ef81a4a8551a8212582a65dd4aa685c9c648 Mon Sep 17 00:00:00 2001 From: Daniel Mendler Date: Wed, 11 Dec 2024 07:36:16 +0100 Subject: [PATCH] Add `browse-url-qutebrowser' The browser launcher supports the NEW-WINDOW argument and `browse-url-qutebrowser-new-window-is-tab' to open tabs. Furthermore opening new URLs is speed up via Unix socket IPC if available. * lisp/net/browse-url.el (browse-url-qutebrowser-send): Function to send command to Qutebrowser via IPC. (browse-url-qutebrowser): New browser launcher. Use `browse-url-qutebrowser-send'. (browse-url-qutebrowser-program, browse-url-qutebrowser-arguments, browse-url-qutebrowser-new-window-is-tab): New customizables. --- lisp/net/browse-url.el | 68 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/lisp/net/browse-url.el b/lisp/net/browse-url.el index 8ec025d017b..3b6833715f4 100644 --- a/lisp/net/browse-url.el +++ b/lisp/net/browse-url.el @@ -342,6 +342,14 @@ browse-url-epiphany-startup-arguments `browse-url' is loaded." :type '(repeat (string :tag "Argument"))) +(defcustom browse-url-qutebrowser-program "qutebrowser" + "The name by which to invoke Qutebrowser." + :type 'string) + +(defcustom browse-url-qutebrowser-arguments nil + "A list of strings to pass to Qutebrowser when it starts up." + :type '(repeat (string :tag "Argument"))) + (defcustom browse-url-webpositive-program "WebPositive" "The name by which to invoke WebPositive." :type 'string @@ -387,6 +395,12 @@ browse-url-epiphany-new-window-is-tab `browse-url-epiphany' is asked to open it in a new window." :type 'boolean) +(defcustom browse-url-qutebrowser-new-window-is-tab nil + "Whether to open up new windows in a tab or a new window. +If non-nil, then open the URL in a new tab rather than a new window if +`browse-url-qutebrowser' is asked to open it in a new window." + :type 'boolean) + (defcustom browse-url-new-window-flag nil "Non-nil means always open a new browser window with appropriate browsers. Passing an interactive argument to \\[browse-url], or specific browser @@ -1294,6 +1308,60 @@ browse-url-epiphany-sentinel browse-url-epiphany-program (append browse-url-epiphany-startup-arguments (list url)))))) +(defun browse-url-qutebrowser-send (cmd) + "Send CMD to Qutebrowser via IPC." + (let* ((dir (getenv "XDG_RUNTIME_DIR")) + (sock (and dir (expand-file-name + (format "qutebrowser/ipc-%s" (md5 (user-login-name))) + dir)))) + (unless (file-exists-p sock) + (error "No Qutebrowser IPC socket found")) + (let ((proc + (make-network-process + :name "qutebrowser" + :family 'local + :service sock + :coding 'utf-8))) + (unwind-protect + (process-send-string + proc + (concat + (json-serialize `( :args [,cmd] + :target_arg :null + :protocol_version 1)) + "\n")) + (delete-process proc))))) + +(defun browse-url-qutebrowser (url &optional new-window) + "Ask the Qutebrowser WWW browser to load URL. +Default to the URL around or before point. + +When called interactively, if variable `browse-url-new-window-flag' is +non-nil, load the document in a new Qutebrowser window, otherwise use a +random existing one. A non-nil interactive prefix argument reverses +the effect of `browse-url-new-window-flag'. + +If `browse-url-qutebrowser-new-window-is-tab' is non-nil, then whenever a +document would otherwise be loaded in a new window, it is loaded in a +new tab in an existing window instead. + +When called non-interactively, optional second argument NEW-WINDOW is +used instead of `browse-url-new-window-flag'." + (interactive (browse-url-interactive-arg "URL: ")) + (let ((cmd (concat ":open " + (and (browse-url-maybe-new-window new-window) + (if browse-url-qutebrowser-new-window-is-tab + "-t " "-w ")) + (browse-url-encode-url url)))) + (condition-case nil + (browse-url-qutebrowser-send cmd) + (error + (apply #'start-process (concat "qutebrowser " url) nil + browse-url-qutebrowser-program + (append browse-url-qutebrowser-arguments (list cmd))))))) + +(function-put 'browse-url-qutebrowser 'browse-url-browser-kind 'external) + (defvar url-handler-regexp) ;;;###autoload -- 2.45.2 --=-=-=-- From unknown Sat Aug 09 13:21:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#74781: [PATCH] Add `browse-url-qutebrowser' Resent-From: Robert Pluim Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 11 Dec 2024 08:30:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 74781 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: 74781@debbugs.gnu.org Cc: Daniel Mendler Received: via spool by 74781-submit@debbugs.gnu.org id=B74781.173390574621271 (code B ref 74781); Wed, 11 Dec 2024 08:30:01 +0000 Received: (at 74781) by debbugs.gnu.org; 11 Dec 2024 08:29:06 +0000 Received: from localhost ([127.0.0.1]:32818 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tLI5d-0005Wg-UJ for submit@debbugs.gnu.org; Wed, 11 Dec 2024 03:29:06 -0500 Received: from mail-wr1-f51.google.com ([209.85.221.51]:50408) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tLI5Y-0005WN-Bh for 74781@debbugs.gnu.org; Wed, 11 Dec 2024 03:29:00 -0500 Received: by mail-wr1-f51.google.com with SMTP id ffacd0b85a97d-382610c7116so3303348f8f.0 for <74781@debbugs.gnu.org>; Wed, 11 Dec 2024 00:28:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1733905670; x=1734510470; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:from:to:cc:subject:date:message-id :reply-to; bh=tZIOCap6FMH/KmAq//PD9M/D+LXGz3Ezi858xbwA+hk=; b=ZuQ4c02cI6pLm2XViHni44Azx1X8XXaW494LiYnSfNejd1aQak1ku6MAd2VJ6OeIPJ fPS4pNVEyfIYy2DnclnjVQm4tLMklovSsNc+SikB5Imw9gSP4CKCyDCaTpRbQ2/Ro+D+ S18YK0rFXuHksXy6v54owSPrZKVMlAyX7HvmxWnXu//decXv7NfQkeENpe6B+HfCSJ/A W0wy1d5BBER/LVnwctkRqVQXRKxi90zSNoUevd3uY+OYeptwW8ey6UnYpydqtEuT7D75 Nl6DGrCIsUhfOvjQ1+IHBM4uLIVweFF8CVK6EX7np5UTKFGzwGFcH12mFcuwXxvpmN7o 8rwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733905670; x=1734510470; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=tZIOCap6FMH/KmAq//PD9M/D+LXGz3Ezi858xbwA+hk=; b=ceDPu2A+WsvKtwstCXxMVB3EqFD5XoIITzJLpdXUdo1GnTp9q7pGvqp//KdHmIxz9g VYysHZMcNVOT7zcGpyL/VTKUlzUbtFM1odVTDVH4QGuKqr1iZ/CMCflzPoMWDA4B0wD3 v1+MwRX2kBQ19blQjrop/LI+IFA0Rq9Ku6+NSMBG3bzDnXGQa/WxDL1kdHRbgDeYKmHV soD7u40emPIsab98Q9Z7JjVqFwbT8+NiBBw+bY/kwJj1cHzzFKef/0SJM2Q5itZx2ckJ 1ZwNcivyoZDt4wB+Ui+TOlRI1CkH4XggS+1NCGwo1e8DwWuqoavR5jXEDP7OPUShH1jy 654g== X-Gm-Message-State: AOJu0Yx8fvdbZnulFzSSl4sK0170wjY0jgR1b3hjeMubXecpp8rIDck6 Cr5zikvrpWi+8MyZGK13kU8WGKBdVQlEQruH0UzY5I6QEutFDUvqnuf1LQ== X-Gm-Gg: ASbGncv6dWglsDMWRTbAnZGC6hxA3DFFENNQI7ZopMAtDHDL60RnKmB8edwv7YIfoBG cR+RIl4xv+czizYM1G9sglLLKnioKpeLfvhdQzDNsMMJcFKbuMahU+PTsmj8X6x2LgdfNjT2uuJ bT51f1w4zcgF9gbJHG64LztiPXQUEPAMHNmHzbR/FRMtd/wxCQXMf4R15xg5oKV2kr9TASeDu+8 5hkM/JatpFUue6LcywyYHZ+oPfSnxd+paA52+qMCQ== X-Google-Smtp-Source: AGHT+IH0clTdStgEGbCbKY3sNF88cabejNjohxlAnPkWZDJjD5UYSbahfgBpGhbhvjSCYbVOauhn0A== X-Received: by 2002:a05:6000:4804:b0:385:e429:e59a with SMTP id ffacd0b85a97d-3864ce5ff30mr1606487f8f.25.1733905670099; Wed, 11 Dec 2024 00:27:50 -0800 (PST) Received: from rltb ([2a01:e0a:3f3:fb51:a443:b1bf:de94:83c1]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-435c1833d67sm42456875e9.5.2024.12.11.00.27.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Dec 2024 00:27:49 -0800 (PST) From: Robert Pluim In-Reply-To: <87msh21z0i.fsf@daniel-mendler.de> (Daniel Mendler via's message of "Wed, 11 Dec 2024 08:04:29 +0100") References: <87msh21z0i.fsf@daniel-mendler.de> Date: Wed, 11 Dec 2024 09:27:48 +0100 Message-ID: <87ed2e8vzv.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) >>>>> On Wed, 11 Dec 2024 08:04:29 +0100, Daniel Mendler via "Bug reports f= or GNU Emacs, the Swiss army knife of text editors" = said: =20 Daniel> +(defcustom browse-url-qutebrowser-program "qutebrowser" Daniel> + "The name by which to invoke Qutebrowser." Daniel> + :type 'string) Daniel> + Daniel> +(defcustom browse-url-qutebrowser-arguments nil Daniel> + "A list of strings to pass to Qutebrowser when it starts up." Daniel> + :type '(repeat (string :tag "Argument"))) Daniel> + :version tags please Daniel> (defcustom browse-url-webpositive-program "WebPositive" Daniel> "The name by which to invoke WebPositive." Daniel> :type 'string Daniel> @@ -387,6 +395,12 @@ browse-url-epiphany-new-window-is-tab Daniel> `browse-url-epiphany' is asked to open it in a new window." Daniel> :type 'boolean) =20 Daniel> +(defcustom browse-url-qutebrowser-new-window-is-tab nil Daniel> + "Whether to open up new windows in a tab or a new window. Daniel> +If non-nil, then open the URL in a new tab rather than a new w= indow if Daniel> +`browse-url-qutebrowser' is asked to open it in a new window." Daniel> + :type 'boolean) Daniel> + And here Daniel> (defcustom browse-url-new-window-flag nil Daniel> "Non-nil means always open a new browser window with appropr= iate browsers. Daniel> Passing an interactive argument to \\[browse-url], or specific= browser Daniel> @@ -1294,6 +1308,60 @@ browse-url-epiphany-sentinel Daniel> browse-url-epiphany-program Daniel> (append browse-url-epiphany-startup-arguments (list ur= l)))))) =20 Daniel> +(defun browse-url-qutebrowser-send (cmd) Daniel> + "Send CMD to Qutebrowser via IPC." Daniel> + (let* ((dir (getenv "XDG_RUNTIME_DIR")) We have `xdg-runtime-dir' in xdg.el Daniel> + (sock (and dir (expand-file-name Daniel> + (format "qutebrowser/ipc-%s" (md5 (us= er-login-name))) Daniel> + dir)))) Daniel> + (unless (file-exists-p sock) Daniel> + (error "No Qutebrowser IPC socket found")) Daniel> + (let ((proc Daniel> + (make-network-process Daniel> + :name "qutebrowser" Daniel> + :family 'local Daniel> + :service sock Daniel> + :coding 'utf-8))) Daniel> + (unwind-protect Daniel> + (process-send-string Daniel> + proc Daniel> + (concat Daniel> + (json-serialize `( :args [,cmd] Daniel> + :target_arg :null Daniel> + :protocol_version 1)) Daniel> + "\n")) Daniel> + (delete-process proc))))) Daniel> + Perhaps I=CA=BCm being paranoid, but maybe you should check the status of `proc' before sending it a string. Robert --=20 From unknown Sat Aug 09 13:21:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#74781: [PATCH] Add `browse-url-qutebrowser' Resent-From: Daniel Mendler Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 11 Dec 2024 09:10:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 74781 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Robert Pluim Cc: 74781@debbugs.gnu.org Received: via spool by 74781-submit@debbugs.gnu.org id=B74781.173390817529802 (code B ref 74781); Wed, 11 Dec 2024 09:10:02 +0000 Received: (at 74781) by debbugs.gnu.org; 11 Dec 2024 09:09:35 +0000 Received: from localhost ([127.0.0.1]:32870 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tLIis-0007ka-RV for submit@debbugs.gnu.org; Wed, 11 Dec 2024 04:09:35 -0500 Received: from server.qxqx.de ([49.12.34.165]:54637 helo=mail.qxqx.de) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tLIim-0007k9-Vc for 74781@debbugs.gnu.org; Wed, 11 Dec 2024 04:09:33 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=daniel-mendler.de; s=key; h=Content-Transfer-Encoding:Content-Type: MIME-Version:Message-ID:Date:References:In-Reply-To:Subject:Cc:To:From:Sender :Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=3EFa2MIm/jsQAS2fBCGmmxx/N27G4NHSI3U/0+hWqQE=; b=ZEOI1IfDcYa+iiHAstGoIl3HGL SE7em9qE4I0x412faM98hyimFqlZVT0nU9XvE4otLbxWl6dtoJ872D/+T2LBOlqc2+HnDaraQaiu5 c96G/vdkyoXsEajBHuGd6VHWrtKsBiMJ5n3tEfqdHiE3xf9B6blbS9EFyVtK0+iCFdNc=; From: Daniel Mendler In-Reply-To: <87ed2e8vzv.fsf@gmail.com> (Robert Pluim's message of "Wed, 11 Dec 2024 09:27:48 +0100") References: <87msh21z0i.fsf@daniel-mendler.de> <87ed2e8vzv.fsf@gmail.com> Date: Wed, 11 Dec 2024 10:07:08 +0100 Message-ID: <87jzc61tc3.fsf@daniel-mendler.de> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) Hi Robert, thank you for looking at the patch. I have a few questions. > Daniel> +(defcustom browse-url-qutebrowser-program "qutebrowser" > Daniel> + "The name by which to invoke Qutebrowser." > Daniel> + :type 'string) > Daniel> + > Daniel> +(defcustom browse-url-qutebrowser-arguments nil > Daniel> + "A list of strings to pass to Qutebrowser when it starts u= p." > Daniel> + :type '(repeat (string :tag "Argument"))) > Daniel> + > > :version tags please Other similar variables have been added recently and lack the version tags. I didn't add the tags for consistency with the other variables. I wonder if the Emacs help system does recognize automatically when variables got added? > Daniel> (defcustom browse-url-new-window-flag nil > Daniel> "Non-nil means always open a new browser window with appro= priate browsers. > Daniel> Passing an interactive argument to \\[browse-url], or specif= ic browser > Daniel> @@ -1294,6 +1308,60 @@ browse-url-epiphany-sentinel > Daniel> browse-url-epiphany-program > Daniel> (append browse-url-epiphany-startup-arguments (list = url)))))) > > Daniel> +(defun browse-url-qutebrowser-send (cmd) > Daniel> + "Send CMD to Qutebrowser via IPC." > Daniel> + (let* ((dir (getenv "XDG_RUNTIME_DIR")) > > We have `xdg-runtime-dir' in xdg.el The goal was to avoid loading `xdg.el' unnecessarily for this trivial function, which is just a wrapper around `getenv'. Do you suggest to use `declare-function' and require xdg inside `browse-url-qutebrowser-send'? > Daniel> + (sock (and dir (expand-file-name > Daniel> + (format "qutebrowser/ipc-%s" (md5 (= user-login-name))) > Daniel> + dir)))) > Daniel> + (unless (file-exists-p sock) > Daniel> + (error "No Qutebrowser IPC socket found")) > Daniel> + (let ((proc > Daniel> + (make-network-process > Daniel> + :name "qutebrowser" > Daniel> + :family 'local > Daniel> + :service sock > Daniel> + :coding 'utf-8))) > Daniel> + (unwind-protect > Daniel> + (process-send-string > Daniel> + proc > Daniel> + (concat > Daniel> + (json-serialize `( :args [,cmd] > Daniel> + :target_arg :null > Daniel> + :protocol_version 1)) > Daniel> + "\n")) > Daniel> + (delete-process proc))))) > Daniel> + > > Perhaps I=CA=BCm being paranoid, but maybe you should check the status of > `proc' before sending it a string. `process-send-string' throwns an error if opening the file failed, so a status check won't be beneficial. Also note that `make-network-process' fails if opening the socket file fails. Thanks again. Daniel From unknown Sat Aug 09 13:21:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#74781: [PATCH] Add `browse-url-qutebrowser' Resent-From: Robert Pluim Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 11 Dec 2024 10:00:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 74781 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Daniel Mendler Cc: 74781@debbugs.gnu.org Received: via spool by 74781-submit@debbugs.gnu.org id=B74781.17339111829872 (code B ref 74781); Wed, 11 Dec 2024 10:00:02 +0000 Received: (at 74781) by debbugs.gnu.org; 11 Dec 2024 09:59:42 +0000 Received: from localhost ([127.0.0.1]:32974 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tLJVN-0002Z8-Lp for submit@debbugs.gnu.org; Wed, 11 Dec 2024 04:59:42 -0500 Received: from mail-wr1-f43.google.com ([209.85.221.43]:47119) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tLJVK-0002Ym-Rb for 74781@debbugs.gnu.org; Wed, 11 Dec 2024 04:59:40 -0500 Received: by mail-wr1-f43.google.com with SMTP id ffacd0b85a97d-385e27c75f4so4758076f8f.2 for <74781@debbugs.gnu.org>; Wed, 11 Dec 2024 01:59:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1733911111; x=1734515911; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:from:to:cc:subject:date:message-id :reply-to; bh=LOPDGPk31Tt6kF8N9cK1CR64CHhDmbvlyxFfTuRCesA=; b=Q1yMIySzYQxv0n84QAZftMEpC3mpq47LHhiys/1D4XqwMuWyYmlWfFMRR5YlsLIKQi 974+2jvENrPx5e5PNyH82BalGnvElhVz1E0HhDdBxxAtrvpeMOJPHalOsn43QsNTJ07e hwM0QlSFJwV+dS+R253zOS3rDVabaiIE6LlEAR2RRvbuTrX/7O7tBAIjOsgb1bBaje0v 4Ei78Qp0Jq0FZFA97PtC/PjoXdlw/cSxMb7+qVQryN09mw5qVr68AvTDliZ3x9OTUEFV Sc+AJvRvSEeyXB7SqGR6m/Lx7xRYIKWXe8QWYCsClr7gDPEyNPEekMFZmitNJHlUFfmb pXlQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733911111; x=1734515911; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=LOPDGPk31Tt6kF8N9cK1CR64CHhDmbvlyxFfTuRCesA=; b=mHwtM6J8hHI2ks/rOyl467609Dty0QBa2KySzt84l9xjARw7YA4mZe8MHf5bADZObL 0oOX9BC/CcgQ50SmjeZUVt5vT08TKV5K7r+G+rJf12V1X4u+WjvwPYo5V4Gy/JT8yMEn cGyCnsPmfucMIGCu8w5rTKVqfytPTZuebia+XogXL0XoLKcp/VXjTJLpzStTX7UnTQNp owwGeizxnwz5nzlf+xAYd5SHI+33Ar6o80PLYJcD4Ob3tIXG0+00/PGt2s8et2+RPKTn 3lyT4ls1AnHxPt/2c2htpDzxgLHyx5aX5zD+y97wfRYhFDB/5SM6v7MsoC3BPB8tB5oS jjpQ== X-Gm-Message-State: AOJu0YylB578iqmnlGqJoieQRbYpvZurXe1YIgHhxIQ30ewf7SRYrKCR RStYx/IMk8EpgaacvqFYOJMM+CJIUR+6SglfH+8nLobuyOyaWHbu1N+3cg== X-Gm-Gg: ASbGncu3rjFegqPeJHQ90ROf9c56z80g4TFRLohxrrUdrN1oijrzSHy8l1w5F5wWSoq a0hm/MPcTjwxkfJJNqdOTrAq+U2UR55wwUCSPpFCQoIpXbQCHfof9AiJnl4XuRKM7la5ruuj4vu 7tP6nHTfancEbH57WjRYgHiEtA0nNU5VIwCQxSQZCRahjN4D9ozJMg1E8mVVBKRaTn3o8X0RBVg kQBrvMpWpD8FE6EoZCO6oe4M59HW3hEJOM/BXjKzw== X-Google-Smtp-Source: AGHT+IFTBLi4c8pCPdtNFHGBCf3Pe4j67vSmC9lNagYkBaAz5evpEolN7Xzme0N15+PiOmb0L1o7Fg== X-Received: by 2002:a05:6000:2b02:b0:385:ecdf:a30a with SMTP id ffacd0b85a97d-3864ce9fb55mr1249918f8f.33.1733911111279; Wed, 11 Dec 2024 01:58:31 -0800 (PST) Received: from rltb ([2a01:e0a:3f3:fb51:a443:b1bf:de94:83c1]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-387825296desm885410f8f.111.2024.12.11.01.58.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Dec 2024 01:58:30 -0800 (PST) From: Robert Pluim In-Reply-To: <87jzc61tc3.fsf@daniel-mendler.de> (Daniel Mendler's message of "Wed, 11 Dec 2024 10:07:08 +0100") References: <87msh21z0i.fsf@daniel-mendler.de> <87ed2e8vzv.fsf@gmail.com> <87jzc61tc3.fsf@daniel-mendler.de> Date: Wed, 11 Dec 2024 10:58:30 +0100 Message-ID: <87a5d28rsp.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) >>>>> On Wed, 11 Dec 2024 10:07:08 +0100, Daniel Mendler said: Daniel> Hi Robert, Daniel> thank you for looking at the patch. I have a few questions. Daniel> +(defcustom browse-url-qutebrowser-program "qutebrowser" Daniel> + "The name by which to invoke Qutebrowser." Daniel> + :type 'string) Daniel> + Daniel> +(defcustom browse-url-qutebrowser-arguments nil Daniel> + "A list of strings to pass to Qutebrowser when it starts up." Daniel> + :type '(repeat (string :tag "Argument"))) Daniel> + >>=20 >> :version tags please Daniel> Other similar variables have been added recently and lack the v= ersion Daniel> tags. I didn't add the tags for consistency with the other vari= ables. I Daniel> wonder if the Emacs help system does recognize automatically wh= en Daniel> variables got added? Then those should be fixed as well. The emacs help system applies heuristics which are not always accurate, and don=CA=BCt always return an answer, hence the version tags. Daniel> (defcustom browse-url-new-window-flag nil Daniel> "Non-nil means always open a new browser window with appropriat= e browsers. Daniel> Passing an interactive argument to \\[browse-url], or specific = browser Daniel> @@ -1294,6 +1308,60 @@ browse-url-epiphany-sentinel Daniel> browse-url-epiphany-program Daniel> (append browse-url-epiphany-startup-arguments (list url)))))) >>=20 Daniel> +(defun browse-url-qutebrowser-send (cmd) Daniel> + "Send CMD to Qutebrowser via IPC." Daniel> + (let* ((dir (getenv "XDG_RUNTIME_DIR")) >>=20 >> We have `xdg-runtime-dir' in xdg.el Daniel> The goal was to avoid loading `xdg.el' unnecessarily for this t= rivial Daniel> function, which is just a wrapper around `getenv'. Do you sugge= st to use Daniel> `declare-function' and require xdg inside `browse-url-qutebrows= er-send'? That would work. >> Perhaps I=CA=BCm being paranoid, but maybe you should check the stat= us of >> `proc' before sending it a string. Daniel> `process-send-string' throwns an error if opening the file fail= ed, so a Daniel> status check won't be beneficial. Also note that `make-network-= process' Daniel> fails if opening the socket file fails. Thanks again. OK, so I was too paranoid =F0=9F=98=80 Robert --=20 From unknown Sat Aug 09 13:21:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#74781: [PATCH] Add `browse-url-qutebrowser' Resent-From: Daniel Mendler Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 11 Dec 2024 10:46:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 74781 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Robert Pluim Cc: 74781@debbugs.gnu.org Received: via spool by 74781-submit@debbugs.gnu.org id=B74781.173391395121715 (code B ref 74781); Wed, 11 Dec 2024 10:46:01 +0000 Received: (at 74781) by debbugs.gnu.org; 11 Dec 2024 10:45:51 +0000 Received: from localhost ([127.0.0.1]:33150 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tLKE2-0005e9-Po for submit@debbugs.gnu.org; Wed, 11 Dec 2024 05:45:51 -0500 Received: from server.qxqx.de ([49.12.34.165]:52495 helo=mail.qxqx.de) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tLKE0-0005di-5v for 74781@debbugs.gnu.org; Wed, 11 Dec 2024 05:45:49 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=daniel-mendler.de; s=key; h=Content-Type:MIME-Version:Message-ID:Date: References:In-Reply-To:Subject:Cc:To:From:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=F6uUVN32dh+JryrRW0nVS13/UcrclONUqI8eSXnBwNM=; b=tYsP+qBAmtEIk2CJY0mNpWZZGf hIJzmG8U4NrGJxH7k5yjt6E+eZYa/mh/gRdnpH60YKACpWzAYPFUpKhVw48S5EvosP/JxPG5xinwF 055iq4UbbmD0cnhnd4D+1xdqRzCVze2g/0heYxQaAw5iv/dYAMr3RNLdFYm/r3mkDMzI=; From: Daniel Mendler In-Reply-To: <87a5d28rsp.fsf@gmail.com> (Robert Pluim's message of "Wed, 11 Dec 2024 10:58:30 +0100") References: <87msh21z0i.fsf@daniel-mendler.de> <87ed2e8vzv.fsf@gmail.com> <87jzc61tc3.fsf@daniel-mendler.de> <87a5d28rsp.fsf@gmail.com> Date: Wed, 11 Dec 2024 11:45:38 +0100 Message-ID: <87a5d2wl9p.fsf@daniel-mendler.de> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Robert Pluim writes: >>>>>> On Wed, 11 Dec 2024 10:07:08 +0100, Daniel Mendler said: > The emacs help system applies heuristics which are not always > accurate, and don=CA=BCt always return an answer, hence the version tags. Thanks, I added the version tags. See the updated patch. > >> We have `xdg-runtime-dir' in xdg.el > > Daniel> The goal was to avoid loading `xdg.el' unnecessarily for this= trivial > Daniel> function, which is just a wrapper around `getenv'. Do you sug= gest to use > Daniel> `declare-function' and require xdg inside `browse-url-qutebro= wser-send'? > > That would work. I would be pragmatic and keep the (getenv "XDG_RUNTIME_DIR"), instead of replacing it by this: (declare-function xdg-runtime-dir "xdg") (require 'xdg) (xdg-runtime-dir) Daniel --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0001-Add-browse-url-qutebrowser.patch >From 753ee0b033a34a556cdef8c7d2009b423e115fb0 Mon Sep 17 00:00:00 2001 From: Daniel Mendler Date: Wed, 11 Dec 2024 07:36:16 +0100 Subject: [PATCH] Add `browse-url-qutebrowser' The browser launcher supports the NEW-WINDOW argument and `browse-url-qutebrowser-new-window-is-tab' to open tabs. Furthermore opening new URLs is speed up via Unix socket IPC if available. * lisp/net/browse-url.el (browse-url-qutebrowser-send): Function to send command to Qutebrowser via IPC. (browse-url-qutebrowser): New browser launcher. Use `browse-url-qutebrowser-send'. (browse-url-qutebrowser-program, browse-url-qutebrowser-arguments, browse-url-qutebrowser-new-window-is-tab): New customizables. --- lisp/net/browse-url.el | 71 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/lisp/net/browse-url.el b/lisp/net/browse-url.el index 8ec025d017b..0533810dae2 100644 --- a/lisp/net/browse-url.el +++ b/lisp/net/browse-url.el @@ -342,6 +342,16 @@ browse-url-epiphany-startup-arguments `browse-url' is loaded." :type '(repeat (string :tag "Argument"))) +(defcustom browse-url-qutebrowser-program "qutebrowser" + "The name by which to invoke Qutebrowser." + :type 'string + :version "31.1") + +(defcustom browse-url-qutebrowser-arguments nil + "A list of strings to pass to Qutebrowser when it starts up." + :type '(repeat (string :tag "Argument")) + :version "31.1") + (defcustom browse-url-webpositive-program "WebPositive" "The name by which to invoke WebPositive." :type 'string @@ -387,6 +397,13 @@ browse-url-epiphany-new-window-is-tab `browse-url-epiphany' is asked to open it in a new window." :type 'boolean) +(defcustom browse-url-qutebrowser-new-window-is-tab nil + "Whether to open up new windows in a tab or a new window. +If non-nil, then open the URL in a new tab rather than a new window if +`browse-url-qutebrowser' is asked to open it in a new window." + :type 'boolean + :version "31.1") + (defcustom browse-url-new-window-flag nil "Non-nil means always open a new browser window with appropriate browsers. Passing an interactive argument to \\[browse-url], or specific browser @@ -1294,6 +1311,60 @@ browse-url-epiphany-sentinel browse-url-epiphany-program (append browse-url-epiphany-startup-arguments (list url)))))) +(defun browse-url-qutebrowser-send (cmd) + "Send CMD to Qutebrowser via IPC." + (let* ((dir (getenv "XDG_RUNTIME_DIR")) + (sock (and dir (expand-file-name + (format "qutebrowser/ipc-%s" (md5 (user-login-name))) + dir)))) + (unless (file-exists-p sock) + (error "No Qutebrowser IPC socket found")) + (let ((proc + (make-network-process + :name "qutebrowser" + :family 'local + :service sock + :coding 'utf-8))) + (unwind-protect + (process-send-string + proc + (concat + (json-serialize `( :args [,cmd] + :target_arg :null + :protocol_version 1)) + "\n")) + (delete-process proc))))) + +(defun browse-url-qutebrowser (url &optional new-window) + "Ask the Qutebrowser WWW browser to load URL. +Default to the URL around or before point. + +When called interactively, if variable `browse-url-new-window-flag' is +non-nil, load the document in a new Qutebrowser window, otherwise use a +random existing one. A non-nil interactive prefix argument reverses +the effect of `browse-url-new-window-flag'. + +If `browse-url-qutebrowser-new-window-is-tab' is non-nil, then whenever a +document would otherwise be loaded in a new window, it is loaded in a +new tab in an existing window instead. + +When called non-interactively, optional second argument NEW-WINDOW is +used instead of `browse-url-new-window-flag'." + (interactive (browse-url-interactive-arg "URL: ")) + (let ((cmd (concat ":open " + (and (browse-url-maybe-new-window new-window) + (if browse-url-qutebrowser-new-window-is-tab + "-t " "-w ")) + (browse-url-encode-url url)))) + (condition-case nil + (browse-url-qutebrowser-send cmd) + (error + (apply #'start-process (concat "qutebrowser " url) nil + browse-url-qutebrowser-program + (append browse-url-qutebrowser-arguments (list cmd))))))) + +(function-put 'browse-url-qutebrowser 'browse-url-browser-kind 'external) + (defvar url-handler-regexp) ;;;###autoload -- 2.45.2 --=-=-=-- From unknown Sat Aug 09 13:21:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#74781: [PATCH] Add `browse-url-qutebrowser' Resent-From: =?UTF-8?Q?Bj=C3=B6rn?= Bidar Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 11 Dec 2024 14:15:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 74781 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: 74781@debbugs.gnu.org Cc: mail@daniel-mendler.de, rpluim@gmail.com X-Debbugs-Original-To: Daniel Mendler via "Bug reports for GNU Emacs, the Swiss army knife of text editors" X-Debbugs-Original-Cc: Daniel Mendler , Robert Pluim , 74781@debbugs.gnu.org Received: via spool by submit@debbugs.gnu.org id=B.17339264758392 (code B ref -1); Wed, 11 Dec 2024 14:15:01 +0000 Received: (at submit) by debbugs.gnu.org; 11 Dec 2024 14:14:35 +0000 Received: from localhost ([127.0.0.1]:33634 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tLNU2-0002BH-OM for submit@debbugs.gnu.org; Wed, 11 Dec 2024 09:14:35 -0500 Received: from lists.gnu.org ([209.51.188.17]:60226) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tLNTy-0002At-4g for submit@debbugs.gnu.org; Wed, 11 Dec 2024 09:14:31 -0500 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 1tLNTx-00086p-Ug for bug-gnu-emacs@gnu.org; Wed, 11 Dec 2024 09:14:29 -0500 Received: from thaodan.de ([185.216.177.71]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tLNTv-0006wN-Og for bug-gnu-emacs@gnu.org; Wed, 11 Dec 2024 09:14:29 -0500 Received: from NordStern (unknown [185.252.118.71]) by thaodan.de (Postfix) with ESMTPSA id 562DBD00055; Wed, 11 Dec 2024 16:14:25 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=thaodan.de; s=mail; t=1733926465; bh=vuf/i3zAyw4nh1Kq5VploU6a51AhBQWAWVTsYB4m9W0=; h=From:To:Cc:Subject:In-Reply-To:References:Date; b=AYeBAjJFHl+o8vFPJWBTbPGJFmHdsWYxuWf6q1WUmrEsNfGkw6CV7UqiTnq4KHRHk Hvehh9FFs8ReBR3vERPLVA66Yi1K5NchWOFWhyGkgu8yOPqZxggl854ocu746sftz+ Dh9gI+45/SXAKt/o0f9JEhK3xPExGFOtfii22SmHmM7xhKl5WXhZ+SW/ajlpWqRTfc veV3LugdE79C5EOtp1yLMc9Aur6yvumhEnWYh90YKRo0sAitf9tIpbNyx/DTSh/anb BMvV06fTg3dPIuH6IU7zeJKe8YHJrzZ0UDhdClyp1PhT6Mm5qQKO0fwj/EWNyb5hi/ FDn9hVRBo/+25WDjqYA7zXrtHLvHvwhaeQHIUQdELaZJiBWBWgR3ytU2FtozUU18V8 LBtMqgx04+B3CCYIyIzKX4Xtx0xmlW60fRMZxRcYt/VulOPwmr3X5s24Ow9WDgPnYA 67EBqz5c4Y2us2iQdijmgi17E8bvZNh48ldrWNojTzkfZo3C+mDlBQQu7nyIJrcSt+ Y2KvZvw9OJQ18tAJV4H9VbG6keoWv6eT5KD9L5CME9xi4UCNnU26HlRdqTytFyXqC0 Jwek5CHSyqrrtS2DoksnsVKgfhAHS7AinZ+D3V3JWplLUOtCNqoJi4n+p56RNEIfHR o2pybPhy142PFsWtIcCh4rpU= From: =?UTF-8?Q?Bj=C3=B6rn?= Bidar In-Reply-To: <87a5d2wl9p.fsf@daniel-mendler.de> (Daniel Mendler via's message of "Wed, 11 Dec 2024 11:45:38 +0100") References: <87msh21z0i.fsf@daniel-mendler.de> <87ed2e8vzv.fsf@gmail.com> <87jzc61tc3.fsf@daniel-mendler.de> <87a5d28rsp.fsf@gmail.com> <87a5d2wl9p.fsf@daniel-mendler.de> Autocrypt: addr=bjorn.bidar@thaodan.de; prefer-encrypt=nopreference; keydata= mDMEZNfpPhYJKwYBBAHaRw8BAQdACBEmr+0xwIIHZfIDlZmm7sa+lHHSb0g9FZrN6qE6ru60JUJq w7ZybiBCaWRhciA8Ympvcm4uYmlkYXJAdGhhb2Rhbi5kZT6IlgQTFgoAPgIbAwULCQgHAgIiAgYV CgkICwIEFgIDAQIeBwIXgBYhBFHxdut1RzAepymoq1wbdKFlHF9oBQJk1/YmAhkBAAoJEFwbdKFl HF9oB9cBAJoIIGQKXm4cpap+Flxc/EGnYl0123lcEyzuduqvlDT0AQC3OlFKm/OiqJ8IMTrzJRZ8 phFssTkSrrFXnM2jm5PYDoiTBBMWCgA7FiEEUfF263VHMB6nKairXBt0oWUcX2gFAmTX6T4CGwMF CwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQXBt0oWUcX2hbCQEAtru7kvM8hi8zo6z9ux2h K+B5xViKuo7Z8K3IXuK5ugwA+wUfKzomzdBPhfxDsqLcEziGRxoyx0Q3ld9aermBUccHtBxCasO2 cm4gQmlkYXIgPG1lQHRoYW9kYW4uZGU+iJMEExYKADsCGwMFCwkIBwICIgIGFQoJCAsCBBYCAwEC HgcCF4AWIQRR8XbrdUcwHqcpqKtcG3ShZRxfaAUCZNf2FQAKCRBcG3ShZRxfaCzSAP4hZ7cSp0YN XYpcjHdsySh2MuBhhoPeLGXs+2kSiqBiOwD/TP8AgPEg/R+SI9GI9on7fBJJ0mp2IT8kZ2rhDOjg gA6IkwQTFgoAOxYhBFHxdut1RzAepymoq1wbdKFlHF9oBQJk1+ntAhsDBQsJCAcCAiICBhUKCQgL AgQWAgMBAh4HAheAAAoJEFwbdKFlHF9oBgwA/iQHwe0VL4Df4GGTYlNjMSHFlIkBmN4UfYGLYj3E TrOUAQC51M+M3cjsL8WHdpBz6VAo6df9d+rVwhQ9vQuFHqevArg4BGTX6T4SCisGAQQBl1UBBQEB B0Cbohc3JEfn005/cm0AOGjSsW1ZxAkgaoVNjbpqk4MgNAMBCAeIeAQYFgoAIBYhBFHxdut1RzAe pymoq1wbdKFlHF9oBQJk1+k+AhsMAAoJEFwbdKFlHF9ooHABAKGmrGBic/Vys3BBrOQiRB3Z7izO HwhqTRpAqFZtXS2nAQDZhp/5aYw1TZjTzkm1KVt9QiYnjd/MvxRE9iaY6x4mDbgzBGTX6T4WCSsG AQQB2kcPAQEHQAgRJq/tMcCCB2XyA5WZpu7GvpRx0m9IPRWazeqhOq7uiO8EGBYKACAWIQRR8Xbr dUcwHqcpqKtcG3ShZRxfaAUCZNf71AIbIgCBCRBcG3ShZRxfaHYgBBkWCgAdFiEEUfF263VHMB6n KairXBt0oWUcX2gFAmTX+9QACgkQXBt0oWUcX2jeSwD6AtWn0cuo8IF35YRo4o3cDRJnUfJnbvJy GxyCDThR+zYBAKG6/jdwmZkBQZKslnDAbMMd2WfiZZT5JW3IWC4EaKMO7HkBAKYPGZ3UbfkRvfFK S+pQ9CgtNfkSJQBtT1Ob7Y6nsacgAQCpyXN7yppmhW/oBgivITPy9Lkg+V4NK9WZYZCU9Q7LBA== Date: Wed, 11 Dec 2024 16:14:24 +0200 Message-ID: <87r06etigv.fsf@thaodan.de> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Received-SPF: pass client-ip=185.216.177.71; envelope-from=bjorn.bidar@thaodan.de; helo=thaodan.de X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.3 (-) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) Daniel Mendler via "Bug reports for GNU Emacs, the Swiss army knife of text editors" writes: > Robert Pluim writes: > >>>>>>> On Wed, 11 Dec 2024 10:07:08 +0100, Daniel Mendler said: >> The emacs help system applies heuristics which are not always >> accurate, and don=CA=BCt always return an answer, hence the version tags. > > Thanks, I added the version tags. See the updated patch. > >> >> We have `xdg-runtime-dir' in xdg.el >> >> Daniel> The goal was to avoid loading `xdg.el' unnecessarily for thi= s trivial >> Daniel> function, which is just a wrapper around `getenv'. Do you su= ggest to use >> Daniel> `declare-function' and require xdg inside `browse-url-qutebr= owser-send'? >> >> That would work. > > I would be pragmatic and keep the (getenv "XDG_RUNTIME_DIR"), instead > of replacing it by this: > > (declare-function xdg-runtime-dir "xdg") > (require 'xdg) These are only required because you load a new dependency. Further these functions can take care of later eventualities if needed, e.g. such as handling when a xdg variable isn't set. Also using these functions makes the code easier to read as you can follow the code down further to the documentation. > (xdg-runtime-dir) > > Daniel > > From 753ee0b033a34a556cdef8c7d2009b423e115fb0 Mon Sep 17 00:00:00 2001 > From: Daniel Mendler > Date: Wed, 11 Dec 2024 07:36:16 +0100 > Subject: [PATCH] Add `browse-url-qutebrowser' > > The browser launcher supports the NEW-WINDOW argument and > `browse-url-qutebrowser-new-window-is-tab' to open tabs. > Furthermore opening new URLs is speed up via Unix socket IPC if > available. > > * lisp/net/browse-url.el (browse-url-qutebrowser-send): Function > to send command to Qutebrowser via IPC. > (browse-url-qutebrowser): New browser launcher. Use > `browse-url-qutebrowser-send'. > (browse-url-qutebrowser-program, browse-url-qutebrowser-arguments, > browse-url-qutebrowser-new-window-is-tab): New customizables. > --- > lisp/net/browse-url.el | 71 ++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 71 insertions(+) > > diff --git a/lisp/net/browse-url.el b/lisp/net/browse-url.el > index 8ec025d017b..0533810dae2 100644 > --- a/lisp/net/browse-url.el > +++ b/lisp/net/browse-url.el > @@ -342,6 +342,16 @@ browse-url-epiphany-startup-arguments > `browse-url' is loaded." > :type '(repeat (string :tag "Argument"))) >=20=20 > +(defcustom browse-url-qutebrowser-program "qutebrowser" > + "The name by which to invoke Qutebrowser." > + :type 'string > + :version "31.1") > + > +(defcustom browse-url-qutebrowser-arguments nil > + "A list of strings to pass to Qutebrowser when it starts up." > + :type '(repeat (string :tag "Argument")) > + :version "31.1") > + > (defcustom browse-url-webpositive-program "WebPositive" > "The name by which to invoke WebPositive." > :type 'string > @@ -387,6 +397,13 @@ browse-url-epiphany-new-window-is-tab > `browse-url-epiphany' is asked to open it in a new window." > :type 'boolean) >=20=20 > +(defcustom browse-url-qutebrowser-new-window-is-tab nil > + "Whether to open up new windows in a tab or a new window. > +If non-nil, then open the URL in a new tab rather than a new window if > +`browse-url-qutebrowser' is asked to open it in a new window." > + :type 'boolean > + :version "31.1") > + > (defcustom browse-url-new-window-flag nil > "Non-nil means always open a new browser window with appropriate brows= ers. > Passing an interactive argument to \\[browse-url], or specific browser > @@ -1294,6 +1311,60 @@ browse-url-epiphany-sentinel > browse-url-epiphany-program > (append browse-url-epiphany-startup-arguments (list url)))))) >=20=20 > +(defun browse-url-qutebrowser-send (cmd) > + "Send CMD to Qutebrowser via IPC." > + (let* ((dir (getenv "XDG_RUNTIME_DIR")) > + (sock (and dir (expand-file-name > + (format "qutebrowser/ipc-%s" (md5 (user-login-n= ame))) > + dir)))) > + (unless (file-exists-p sock) > + (error "No Qutebrowser IPC socket found")) > + (let ((proc > + (make-network-process > + :name "qutebrowser" > + :family 'local > + :service sock > + :coding 'utf-8))) > + (unwind-protect > + (process-send-string > + proc > + (concat > + (json-serialize `( :args [,cmd] > + :target_arg :null > + :protocol_version 1)) > + "\n")) > + (delete-process proc))))) > + > +(defun browse-url-qutebrowser (url &optional new-window) > + "Ask the Qutebrowser WWW browser to load URL. > +Default to the URL around or before point. > + > +When called interactively, if variable `browse-url-new-window-flag' is > +non-nil, load the document in a new Qutebrowser window, otherwise use a > +random existing one. A non-nil interactive prefix argument reverses > +the effect of `browse-url-new-window-flag'. > + > +If `browse-url-qutebrowser-new-window-is-tab' is non-nil, then whenever a > +document would otherwise be loaded in a new window, it is loaded in a > +new tab in an existing window instead. > + > +When called non-interactively, optional second argument NEW-WINDOW is > +used instead of `browse-url-new-window-flag'." > + (interactive (browse-url-interactive-arg "URL: ")) > + (let ((cmd (concat ":open " > + (and (browse-url-maybe-new-window new-window) > + (if browse-url-qutebrowser-new-window-is-tab > + "-t " "-w ")) > + (browse-url-encode-url url)))) > + (condition-case nil > + (browse-url-qutebrowser-send cmd) > + (error > + (apply #'start-process (concat "qutebrowser " url) nil > + browse-url-qutebrowser-program > + (append browse-url-qutebrowser-arguments (list cmd))))))) > + > +(function-put 'browse-url-qutebrowser 'browse-url-browser-kind 'external) > + > (defvar url-handler-regexp) >=20=20 > ;;;###autoload From unknown Sat Aug 09 13:21:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#74781: [PATCH] Add `browse-url-qutebrowser' Resent-From: Daniel Mendler Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 11 Dec 2024 14:39:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 74781 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: =?UTF-8?Q?Bj=C3=B6rn?= Bidar Cc: 74781@debbugs.gnu.org, rpluim@gmail.com X-Debbugs-Original-Cc: 74781@debbugs.gnu.org, "Daniel Mendler via Bug reports for GNU Emacs, the Swiss army knife of text editors" , Robert Pluim Received: via spool by submit@debbugs.gnu.org id=B.173392791313868 (code B ref -1); Wed, 11 Dec 2024 14:39:01 +0000 Received: (at submit) by debbugs.gnu.org; 11 Dec 2024 14:38:33 +0000 Received: from localhost ([127.0.0.1]:33692 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tLNrF-0003bb-4t for submit@debbugs.gnu.org; Wed, 11 Dec 2024 09:38:33 -0500 Received: from lists.gnu.org ([209.51.188.17]:55638) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tLNrD-0003bT-VH for submit@debbugs.gnu.org; Wed, 11 Dec 2024 09:38:32 -0500 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 1tLNr6-0004hx-Un for bug-gnu-emacs@gnu.org; Wed, 11 Dec 2024 09:38:25 -0500 Received: from server.qxqx.de ([2a01:4f8:c012:9177::1] helo=mail.qxqx.de) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tLNr5-0002qo-0V for bug-gnu-emacs@gnu.org; Wed, 11 Dec 2024 09:38:24 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=daniel-mendler.de; s=key; h=Content-Transfer-Encoding:Content-Type: MIME-Version:Message-ID:Date:References:In-Reply-To:Subject:Cc:To:From:Sender :Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=biZQNHwqZnsMdzzsHq3nWrOI2sZ2Eue76vpOjqmSsu0=; b=jwuee+plN2dwzPaAJylH9KVBYu 1L7Fbuj+avU2kH+35TxcOXURVgGX2CorONkxFbbCfPIk8qZm+VyGbeCFYknqczRePHEW5IVXXdygl NU1bRoNOSWPYwx7vwd6Yy9RAfHqlKOK1kHQsddFq5LDTNIGCNcZDTGs1arHVc3jhQ1rM=; From: Daniel Mendler In-Reply-To: <87r06etigv.fsf@thaodan.de> ("=?UTF-8?Q?Bj=C3=B6rn?= Bidar"'s message of "Wed, 11 Dec 2024 16:14:24 +0200") References: <87msh21z0i.fsf@daniel-mendler.de> <87ed2e8vzv.fsf@gmail.com> <87jzc61tc3.fsf@daniel-mendler.de> <87a5d28rsp.fsf@gmail.com> <87a5d2wl9p.fsf@daniel-mendler.de> <87r06etigv.fsf@thaodan.de> Date: Wed, 11 Dec 2024 15:38:13 +0100 Message-ID: <877c86wai2.fsf@daniel-mendler.de> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Received-SPF: pass client-ip=2a01:4f8:c012:9177::1; envelope-from=mail@daniel-mendler.de; helo=mail.qxqx.de X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.4 (-) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.4 (--) Bj=C3=B6rn Bidar writes: > Daniel Mendler via "Bug reports for GNU Emacs, the Swiss army knife of > text editors" writes: > >> Robert Pluim writes: >> >>>>>>>> On Wed, 11 Dec 2024 10:07:08 +0100, Daniel Mendler said: >>> The emacs help system applies heuristics which are not always >>> accurate, and don=CA=BCt always return an answer, hence the version tag= s. >> >> Thanks, I added the version tags. See the updated patch. >> >>> >> We have `xdg-runtime-dir' in xdg.el >>> >>> Daniel> The goal was to avoid loading `xdg.el' unnecessarily for th= is trivial >>> Daniel> function, which is just a wrapper around `getenv'. Do you s= uggest to use >>> Daniel> `declare-function' and require xdg inside `browse-url-quteb= rowser-send'? >>> >>> That would work. >> >> I would be pragmatic and keep the (getenv "XDG_RUNTIME_DIR"), instead >> of replacing it by this: >> >> (declare-function xdg-runtime-dir "xdg") >> (require 'xdg) > > These are only required because you load a new dependency. > Further these functions can take care of later eventualities if needed, > e.g. such as handling when a xdg variable isn't set. > Also using these functions makes the code easier to read as you can > follow the code down further to the documentation. The entire function looks like this: (defun xdg-runtime-dir () (getenv "XDG_RUNTIME_DIR")) No eventualities are handled there right now, so it does not seem justified to load xdg.el only for this small wrapper. Note that `browse-url' contains other platform-specific code, including xdg-related code, without loading xdg.el - all the code around `browse-url-xdg-open'. See also the files files.el, server.el, startup.el and mpc.el, which all access XDG_* environment variables via `getenv' without requiring xdg.el. The `getenv' function calls are certainly not less readable than `xdg-runtime-dir'. That being said, I would not mind if there was a (require 'xdg) at the top of the browse-url.el file, if that's considered acceptable, even on systems which do not conform to xdg. For example xdg.el is also required unconditionally by eww.el and xdg is a fairly small library. Then using `xdg-runtime-dir' would be the better solution of course. Daniel From unknown Sat Aug 09 13:21:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#74781: [PATCH] Add `browse-url-qutebrowser' Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 11 Dec 2024 14:41:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 74781 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Daniel Mendler Cc: 74781@debbugs.gnu.org Received: via spool by 74781-submit@debbugs.gnu.org id=B74781.173392803114575 (code B ref 74781); Wed, 11 Dec 2024 14:41:02 +0000 Received: (at 74781) by debbugs.gnu.org; 11 Dec 2024 14:40:31 +0000 Received: from localhost ([127.0.0.1]:33709 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tLNt8-0003n0-UQ for submit@debbugs.gnu.org; Wed, 11 Dec 2024 09:40:31 -0500 Received: from eggs.gnu.org ([209.51.188.92]:42498) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tLNt6-0003mn-D8 for 74781@debbugs.gnu.org; Wed, 11 Dec 2024 09:40:29 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tLNt0-0003SK-Iz; Wed, 11 Dec 2024 09:40:23 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=mhEeoU1I01X4bv0faImrG6U5Uox1sf9/r3S3Qtuu5Pw=; b=schBr2dmqg+W iTkUWuu72Ri8MYefZJMokjKf1zoSU4hWdskM0sb5cK1B3H+BkARAjPzYxIVdEF6QpsRhQDEUndUhM MhHQljFCW15zsYfyqJ5yiT4PRc1BsOXmGPFV0S81EYlhSg1Un6mEllffWD8cixE1IMzrwAaUlaZXq PPd1d1UY0BVnNNUjWg0It8WkSFuQXBYkzkF8+gqbdbmIapWCkGO5lHKTVF/noKsqF852U0IU1r8OB 30fMNiY7U9jnGsYQHcuUzzbmpOVICBhGGeG0fmN4q5zX6q0Y4RizRzvbm+8KuURQamQDPB7Kuu/cg 4CHIN69cYf7L+fTjbInwxQ==; Date: Wed, 11 Dec 2024 16:40:07 +0200 Message-Id: <865xnq4720.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87msh21z0i.fsf@daniel-mendler.de> (bug-gnu-emacs@gnu.org) References: <87msh21z0i.fsf@daniel-mendler.de> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Wed, 11 Dec 2024 08:04:29 +0100 > From: Daniel Mendler via "Bug reports for GNU Emacs, > the Swiss army knife of text editors" > > The browser launcher supports the NEW-WINDOW argument and > `browse-url-qutebrowser-new-window-is-tab' to open tabs. Furthermore > opening new URLs is speed up via Unix socket IPC if available. Thanks. > Furthermore opening new URLs is speed up via Unix socket IPC if > available. ^^^^^^^^ Typo: "sped up" > (browse-url-qutebrowser-program, browse-url-qutebrowser-arguments, > browse-url-qutebrowser-new-window-is-tab): New customizables. Our conventions are to format these kinds of identifier lists differently: (browse-url-qutebrowser-program, browse-url-qutebrowser-arguments) (browse-url-qutebrowser-new-window-is-tab): New customizables. IOW, the list should be closed at EOL, and then reopened on the next line. This makes searching for changes of a function/variable easier. > +(defcustom browse-url-qutebrowser-program "qutebrowser" > + "The name by which to invoke Qutebrowser." > + :type 'string) Please add a :version tag. > +(defcustom browse-url-qutebrowser-arguments nil > + "A list of strings to pass to Qutebrowser when it starts up." > + :type '(repeat (string :tag "Argument"))) Same here. > +(defcustom browse-url-qutebrowser-new-window-is-tab nil > + "Whether to open up new windows in a tab or a new window. The first line of this doc string should mention Qutebrowser, so that the various apropos commands could find this variable when the user wants to look up something Qutebrowser-related. > +If non-nil, then open the URL in a new tab rather than a new window if > +`browse-url-qutebrowser' is asked to open it in a new window." The "is asked to open it in a new window" part confused me: asked by whom? Is this something that Emacs does, or something else? > + :type 'boolean) The :version tag is missing. > +(defun browse-url-qutebrowser-send (cmd) > + "Send CMD to Qutebrowser via IPC." > + (let* ((dir (getenv "XDG_RUNTIME_DIR")) ^^^^^^^^^^^^^^^^^^^^^^^^^^ Why not use xdg-runtime-dir instead? > + (sock (and dir (expand-file-name > + (format "qutebrowser/ipc-%s" (md5 (user-login-name))) > + dir)))) I think Qutebrowser is available on Windows, where we don't (yet) support local sockets. So I think there should be some kind of test for running on Windows, and falling back to alternatives. Last, but not least: I think the fact that Emacs will now support Qutebrowser warrants a NEWS entry. From unknown Sat Aug 09 13:21:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#74781: [PATCH] Add `browse-url-qutebrowser' Resent-From: Daniel Mendler Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 11 Dec 2024 15:15:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 74781 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Eli Zaretskii Cc: 74781@debbugs.gnu.org Received: via spool by 74781-submit@debbugs.gnu.org id=B74781.173393008524238 (code B ref 74781); Wed, 11 Dec 2024 15:15:02 +0000 Received: (at 74781) by debbugs.gnu.org; 11 Dec 2024 15:14:45 +0000 Received: from localhost ([127.0.0.1]:35694 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tLOQG-0006Ir-Ig for submit@debbugs.gnu.org; Wed, 11 Dec 2024 10:14:45 -0500 Received: from server.qxqx.de ([49.12.34.165]:50615 helo=mail.qxqx.de) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tLOQD-0006IW-Rd for 74781@debbugs.gnu.org; Wed, 11 Dec 2024 10:14:43 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=daniel-mendler.de; s=key; h=Content-Type:MIME-Version:Message-ID:Date: References:In-Reply-To:Subject:Cc:To:From:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=Rm7bLEX081TD9JNoEibke5Bz/i90ZIjbSQxbgMc+W4U=; b=q7wySJrlDF8o6XGgM7UuW+zYmD +hv80UBh4TIqyPtdRkm7dlKHgdTVBNuW1XHIyhFcnCNEgovZcdkEQsnVEKOnbXFgh4WzVoLIa4Os+ lDtXwygFS276+iLLrZat0mTC+C+i61JnRQw5oI08WkOt3ttsf5s9/b7P4FGpNoiVrZBc=; From: Daniel Mendler In-Reply-To: <865xnq4720.fsf@gnu.org> (Eli Zaretskii's message of "Wed, 11 Dec 2024 16:40:07 +0200") References: <87msh21z0i.fsf@daniel-mendler.de> <865xnq4720.fsf@gnu.org> Date: Wed, 11 Dec 2024 16:12:23 +0100 Message-ID: <87pllyuuco.fsf@daniel-mendler.de> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) --=-=-= Content-Type: text/plain Hello Eli, thanks. I added the version tags, the NEWS entry, improved the docstrings and use `xdg-runtime-dir' now. See the updated patch attached to this mail. >> + (sock (and dir (expand-file-name >> + (format "qutebrowser/ipc-%s" (md5 (user-login-name))) >> + dir)))) > > I think Qutebrowser is available on Windows, where we don't (yet) > support local sockets. So I think there should be some kind of test > for running on Windows, and falling back to alternatives. On Windows, the socket won't be there, and the new Qutebrowser window will be opened by the newly executed Qutebrowser process via `call-process'. This will work but is unfortunately slower. Daniel --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0001-Add-browse-url-qutebrowser.patch >From c5286d132bb1afa6078b45e0f7df9ecdecf104ce Mon Sep 17 00:00:00 2001 From: Daniel Mendler Date: Wed, 11 Dec 2024 07:36:16 +0100 Subject: [PATCH] Add `browse-url-qutebrowser' The browser launcher supports the NEW-WINDOW argument and `browse-url-qutebrowser-new-window-is-tab' to open tabs. Furthermore opening new URLs is sped up via Unix socket IPC if available. * lisp/net/browse-url.el (browse-url-qutebrowser-send): Function to send command to Qutebrowser via IPC. (browse-url-qutebrowser): New browser launcher. Use `browse-url-qutebrowser-send'. (browse-url-qutebrowser-program, browse-url-qutebrowser-arguments) (browse-url-qutebrowser-new-window-is-tab): New customizables. (browse-url-mozilla-new-window-is-tab) (browse-url-firefox-new-window-is-tab) (browse-url-epiphany-new-window-is-tab): Improve docstrings. * etc/NEWS: Announce the change. --- etc/NEWS | 6 +++ lisp/net/browse-url.el | 93 ++++++++++++++++++++++++++++++++++++++---- 2 files changed, 91 insertions(+), 8 deletions(-) diff --git a/etc/NEWS b/etc/NEWS index 043e55edf3e..add18c68d4e 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -296,6 +296,12 @@ modal editing packages. * Changes in Specialized Modes and Packages in Emacs 31.1 +** Browse URL + +*** New function 'browse-url-qutebrowser' for the Qutebrowser. +For better integration with the Qutebrowser, set +'browse-url(-secondary)-browser-function' to 'browse-url-qutebrowser'. + ** CL-Lib +++ *** 'cl-labels' now also accepts (FUNC EXP) bindings, like 'cl-flet'. diff --git a/lisp/net/browse-url.el b/lisp/net/browse-url.el index 8ec025d017b..e96a24d3ff1 100644 --- a/lisp/net/browse-url.el +++ b/lisp/net/browse-url.el @@ -140,6 +140,7 @@ ;;; Code: (require 'url) +(require 'xdg) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Variables @@ -342,6 +343,16 @@ browse-url-epiphany-startup-arguments `browse-url' is loaded." :type '(repeat (string :tag "Argument"))) +(defcustom browse-url-qutebrowser-program "qutebrowser" + "The name by which to invoke Qutebrowser." + :type 'string + :version "31.1") + +(defcustom browse-url-qutebrowser-arguments nil + "A list of strings to pass to Qutebrowser when it starts up." + :type '(repeat (string :tag "Argument")) + :version "31.1") + (defcustom browse-url-webpositive-program "WebPositive" "The name by which to invoke WebPositive." :type 'string @@ -360,33 +371,45 @@ browse-url-gnome-moz-arguments (make-obsolete-variable 'browse-url-gnome-moz-arguments nil "25.1") (defcustom browse-url-mozilla-new-window-is-tab nil - "Whether to open up new windows in a tab or a new window. + "Whether to open up new Mozilla windows in a tab or a new window. If non-nil, then open the URL in a new tab rather than a new window if -`browse-url-mozilla' is asked to open it in a new window." +`browse-url-mozilla' is asked to open it in a new window via the +NEW-WINDOW argument." :type 'boolean) (make-obsolete-variable 'browse-url-mozilla-new-window-is-tab nil "29.1") (defcustom browse-url-firefox-new-window-is-tab nil - "Whether to open up new windows in a tab or a new window. + "Whether to open up new Firefox windows in a tab or a new window. If non-nil, then open the URL in a new tab rather than a new window if -`browse-url-firefox' is asked to open it in a new window." +`browse-url-firefox' is asked to open it in a new window via the +NEW-WINDOW argument." :type 'boolean) (defcustom browse-url-conkeror-new-window-is-buffer nil - "Whether to open up new windows in a buffer or a new window. + "Whether to open up new Conkeror windows in a buffer or a new window. If non-nil, then open the URL in a new buffer rather than a new window if -`browse-url-conkeror' is asked to open it in a new window." +`browse-url-conkeror' is asked to open it in a new window via the +NEW-WINDOW argument." :version "25.1" :type 'boolean) (make-obsolete-variable 'browse-url-conkeror-new-window-is-buffer nil "28.1") (defcustom browse-url-epiphany-new-window-is-tab nil - "Whether to open up new windows in a tab or a new window. + "Whether to open up new Epiphany windows in a tab or a new window. If non-nil, then open the URL in a new tab rather than a new window if -`browse-url-epiphany' is asked to open it in a new window." +`browse-url-epiphany' is asked to open it in a new window via the +NEW-WINDOW argument." :type 'boolean) +(defcustom browse-url-qutebrowser-new-window-is-tab nil + "Whether to open up new Qutebrowser windows in a tab or a new window. +If non-nil, then open the URL in a new tab rather than a new window if +`browse-url-qutebrowser' is asked to open it in a new window via the +NEW-WINDOW argument." + :type 'boolean + :version "31.1") + (defcustom browse-url-new-window-flag nil "Non-nil means always open a new browser window with appropriate browsers. Passing an interactive argument to \\[browse-url], or specific browser @@ -1294,6 +1317,60 @@ browse-url-epiphany-sentinel browse-url-epiphany-program (append browse-url-epiphany-startup-arguments (list url)))))) +(defun browse-url-qutebrowser-send (cmd) + "Send CMD to Qutebrowser via IPC." + (let* ((dir (xdg-runtime-dir)) + (sock (and dir (expand-file-name + (format "qutebrowser/ipc-%s" (md5 (user-login-name))) + dir)))) + (unless (file-exists-p sock) + (error "No Qutebrowser IPC socket found")) + (let ((proc + (make-network-process + :name "qutebrowser" + :family 'local + :service sock + :coding 'utf-8))) + (unwind-protect + (process-send-string + proc + (concat + (json-serialize `( :args [,cmd] + :target_arg :null + :protocol_version 1)) + "\n")) + (delete-process proc))))) + +(defun browse-url-qutebrowser (url &optional new-window) + "Ask the Qutebrowser WWW browser to load URL. +Default to the URL around or before point. + +When called interactively, if variable `browse-url-new-window-flag' is +non-nil, load the document in a new Qutebrowser window, otherwise use a +random existing one. A non-nil interactive prefix argument reverses +the effect of `browse-url-new-window-flag'. + +If `browse-url-qutebrowser-new-window-is-tab' is non-nil, then whenever a +document would otherwise be loaded in a new window, it is loaded in a +new tab in an existing window instead. + +When called non-interactively, optional second argument NEW-WINDOW is +used instead of `browse-url-new-window-flag'." + (interactive (browse-url-interactive-arg "URL: ")) + (let ((cmd (concat ":open " + (and (browse-url-maybe-new-window new-window) + (if browse-url-qutebrowser-new-window-is-tab + "-t " "-w ")) + (browse-url-encode-url url)))) + (condition-case nil + (browse-url-qutebrowser-send cmd) + (error + (apply #'start-process (concat "qutebrowser " url) nil + browse-url-qutebrowser-program + (append browse-url-qutebrowser-arguments (list cmd))))))) + +(function-put 'browse-url-qutebrowser 'browse-url-browser-kind 'external) + (defvar url-handler-regexp) ;;;###autoload -- 2.45.2 --=-=-=-- From unknown Sat Aug 09 13:21:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#74781: [PATCH] Add `browse-url-qutebrowser' Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 11 Dec 2024 15:33:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 74781 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Daniel Mendler Cc: rpluim@gmail.com, 74781@debbugs.gnu.org Received: via spool by 74781-submit@debbugs.gnu.org id=B74781.173393115928939 (code B ref 74781); Wed, 11 Dec 2024 15:33:01 +0000 Received: (at 74781) by debbugs.gnu.org; 11 Dec 2024 15:32:39 +0000 Received: from localhost ([127.0.0.1]:35743 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tLOha-0007Wh-NC for submit@debbugs.gnu.org; Wed, 11 Dec 2024 10:32:39 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49924) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tLOhY-0007W4-0D for 74781@debbugs.gnu.org; Wed, 11 Dec 2024 10:32:37 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tLOhR-0000lR-Sy; Wed, 11 Dec 2024 10:32:29 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=MV0h2rhcebkuhAY8cL+nxfuAuSVN9sSBHbmjMcpr/SM=; b=aDkiD1wIAG/e XxKbQzphOAgmgRk2yB9TTx1G+OPdrQGwGaRaICqdQzASHaYa7PVIYZgCA2S92cuxEKO8/WfwcXtxa UKHfZwhC3kyIDJlvjTPx46sDhmkBXVGnvQGCxLCRWZFKXDQPPvnhNqY1vsNblOgAsfD7CcarOrqxA aLOQ5q85M4zplGmioGaJgbxCD9gCssGAqdXJSX4LPDZj21h9bA6TCbpg+56sBGUUtTkgK+VshLl6q cNwwNVSFKqsqwnIx8X7U6MLkzzdtvPehCyTaoiekWhY0apyHfxLIRT0G3yQOLWV1zQEnGLoUMlDRl rnL7sPbR2yI19sfoj6eRsA==; Date: Wed, 11 Dec 2024 17:32:24 +0200 Message-Id: <8634iu44mv.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87a5d2wl9p.fsf@daniel-mendler.de> (bug-gnu-emacs@gnu.org) References: <87msh21z0i.fsf@daniel-mendler.de> <87ed2e8vzv.fsf@gmail.com> <87jzc61tc3.fsf@daniel-mendler.de> <87a5d28rsp.fsf@gmail.com> <87a5d2wl9p.fsf@daniel-mendler.de> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Cc: 74781@debbugs.gnu.org > Date: Wed, 11 Dec 2024 11:45:38 +0100 > From: Daniel Mendler via "Bug reports for GNU Emacs, > the Swiss army knife of text editors" > > I would be pragmatic and keep the (getenv "XDG_RUNTIME_DIR"), instead of > replacing it by this: > > (declare-function xdg-runtime-dir "xdg") > (require 'xdg) > (xdg-runtime-dir) What if some day we decide that XDG_RUNTIME_DIR can fall back on, say, ~/.config/runtime/ ? xdg.el exists to let us avoid leaking abstractions, so I think we should use it even if the function is a trivial wrapper around getenv. From unknown Sat Aug 09 13:21:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#74781: [PATCH] Add `browse-url-qutebrowser' Resent-From: Daniel Mendler Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 11 Dec 2024 15:37:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 74781 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Eli Zaretskii Cc: rpluim@gmail.com, 74781@debbugs.gnu.org Received: via spool by 74781-submit@debbugs.gnu.org id=B74781.173393139429937 (code B ref 74781); Wed, 11 Dec 2024 15:37:01 +0000 Received: (at 74781) by debbugs.gnu.org; 11 Dec 2024 15:36:34 +0000 Received: from localhost ([127.0.0.1]:35750 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tLOlO-0007ml-D3 for submit@debbugs.gnu.org; Wed, 11 Dec 2024 10:36:34 -0500 Received: from server.qxqx.de ([49.12.34.165]:55039 helo=mail.qxqx.de) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tLOlK-0007mN-Rp for 74781@debbugs.gnu.org; Wed, 11 Dec 2024 10:36:32 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=daniel-mendler.de; s=key; h=Content-Type:MIME-Version:Message-ID:Date: References:In-Reply-To:Subject:Cc:To:From:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=N7n+aP3/mgyrnJ0WdEyDbTYhdUH4RX+e+tMM/4NxgQY=; b=QMbdmVbJV748xkme/KDrgME+FV CGECB3lK0KQGmvyAhpU69iZin17S8cAdxOMHMR9oq0eRitEUhTJaSrlGPkIWjIz/shMnBF2FtQUQ6 VhkDEclMONz4RHKmwFCPW09c7b7ZhysfCFPgP//aP1RYVDbls3B1tN5asD7f/BdIkgSA=; From: Daniel Mendler In-Reply-To: <8634iu44mv.fsf@gnu.org> (Eli Zaretskii's message of "Wed, 11 Dec 2024 17:32:24 +0200") References: <87msh21z0i.fsf@daniel-mendler.de> <87ed2e8vzv.fsf@gmail.com> <87jzc61tc3.fsf@daniel-mendler.de> <87a5d28rsp.fsf@gmail.com> <87a5d2wl9p.fsf@daniel-mendler.de> <8634iu44mv.fsf@gnu.org> Date: Wed, 11 Dec 2024 16:36:23 +0100 Message-ID: <87zfl2b5ag.fsf@daniel-mendler.de> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) Eli Zaretskii writes: >> Cc: 74781@debbugs.gnu.org >> Date: Wed, 11 Dec 2024 11:45:38 +0100 >> From: Daniel Mendler via "Bug reports for GNU Emacs, >> the Swiss army knife of text editors" >> >> I would be pragmatic and keep the (getenv "XDG_RUNTIME_DIR"), instead of >> replacing it by this: >> >> (declare-function xdg-runtime-dir "xdg") >> (require 'xdg) >> (xdg-runtime-dir) > > What if some day we decide that XDG_RUNTIME_DIR can fall back on, say, > ~/.config/runtime/ ? > > xdg.el exists to let us avoid leaking abstractions, so I think we > should use it even if the function is a trivial wrapper around getenv. Sure, this could happen in the future. I've changed this in the latest patch which I've sent. Daniel From unknown Sat Aug 09 13:21:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#74781: [PATCH] Add `browse-url-qutebrowser' Resent-From: Robert Pluim Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 11 Dec 2024 15:46:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 74781 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Daniel Mendler Cc: Eli Zaretskii , 74781@debbugs.gnu.org Received: via spool by 74781-submit@debbugs.gnu.org id=B74781.173393193231882 (code B ref 74781); Wed, 11 Dec 2024 15:46:02 +0000 Received: (at 74781) by debbugs.gnu.org; 11 Dec 2024 15:45:32 +0000 Received: from localhost ([127.0.0.1]:35787 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tLOu4-0008I8-4C for submit@debbugs.gnu.org; Wed, 11 Dec 2024 10:45:32 -0500 Received: from mail-wm1-f45.google.com ([209.85.128.45]:49638) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tLOu1-0008Ht-NZ for 74781@debbugs.gnu.org; Wed, 11 Dec 2024 10:45:30 -0500 Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-4361e89b6daso5250215e9.3 for <74781@debbugs.gnu.org>; Wed, 11 Dec 2024 07:45:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1733931869; x=1734536669; darn=debbugs.gnu.org; h=mime-version:message-id:date:references:in-reply-to:subject:cc:to :from:from:to:cc:subject:date:message-id:reply-to; bh=XTzoGMPnHqdonrWEfsrxqPzA6H6hHKsU3p2Bm9N8unA=; b=CG8lXJi/lMdnJ5eTUSMwFax1MxX4szciNLrT5TBMqL1AnygCenlkFg0nob6Xq1x3dz 4j4HNRN5+irRtJElgRn8dKlGRhg4hAGoiWnSNHZBl3uiRHZm4EhiWNLsnQR+Tx1aJe53 pd0P57DZAeFGfSwKnZVSPkg2RUFmvghNH8cvXFLX8HseaxNZr5maMz+oqurY9gWUdWnS DIkz2qj4X2BLfHz9R1YKuoa8RSSMeLt+b9lh00PIMn8sZUDoD5OdlbanCifiV8TOPlVJ H8sCH6WdlAHhefvTzgm+Or7B533ZU52UI9bWdLXhrklG1XRgzzK/SPIFH9uiUD9N3q+x kC2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733931869; x=1734536669; h=mime-version:message-id:date:references:in-reply-to:subject:cc:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=XTzoGMPnHqdonrWEfsrxqPzA6H6hHKsU3p2Bm9N8unA=; b=XyiKoG+S4W/8okb+ngiNJxMMa0Q9/JjJWJ9igw17HnNqjbpFVUgc7+a8anPnCBbxX+ 1MTzOwRbvxRB6G5RKQPJFPTFx5h5hoZtXJn1z5duQTt6xrc6zxV2jI2XoWMXPMMq0SG0 WF2T3WVpkiVz0w+812yGireew+cf3jQwIoD5B2faKvOhewXA9JVetnu+pP00/V6E+IYm jLLV04YhOdEFzUuQf7lDAagDrpOYfDT102YJ+QvAfOXTHbRDrEoR/egmvNLKcX0uFAmn c5pizQHs0LvZ0ASNlZ20emGchNZ5belvFUren4LP+qwOSwZk5jN7I7n30Iz3c8W+kOUo qN0g== X-Forwarded-Encrypted: i=1; AJvYcCXep3wW6i7WlT68x3pueJ/HAv9y82H0/1qcIwbdNFzWPyMjgdszpMf3RG9qa+IHWmxmyrgyVw==@debbugs.gnu.org X-Gm-Message-State: AOJu0YxutMpLYc+GOcrrLpeO6xxCSY+L8X/PBiL+MRXUs/P4OQizRRFp 6FLj+xHC0JKuWdWRbYx07RjFcCRKZ0QmhvuWq4oMUUbL3cPIzEjAfcRE7g== X-Gm-Gg: ASbGncsLCFi/iAicDw+HimqtnKSa2cTFgIA+mr0ng0fpfOiJXZFHcu2Gf7bwuQx52kc 0sPPUMZcscbYOTE1dcjQqjmFw6PeR+isVnUEJ3OzWrhaoWtIDGQOcCay05HaSevmt1xKSTE2uPE ScSRZFWHvLwC8lR42mLh4IMycZuuNu9caMceq2oXrUJhkbn2VG/R+BwcCBPH+wr4GYyhF4o6TYX r1e93Fyhj5cfH5PtzXawSeR0Pe+xwfxygtL+KlMnQ== X-Google-Smtp-Source: AGHT+IFDDZGhozjdWvliV9iFIWJfKfT8q7EQbYimHNhGdwRqXtyU6t47EhT9EBDCsrtst84bq7h5Ww== X-Received: by 2002:a05:600c:468a:b0:434:f0df:a14 with SMTP id 5b1f17b1804b1-4361c34623dmr28251025e9.2.1733931868433; Wed, 11 Dec 2024 07:44:28 -0800 (PST) Received: from rltb ([2a01:e0a:3f3:fb51:c52c:e130:63af:d25d]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-436229d1824sm467125e9.18.2024.12.11.07.44.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Dec 2024 07:44:27 -0800 (PST) From: Robert Pluim In-Reply-To: <87pllyuuco.fsf@daniel-mendler.de> (Daniel Mendler via's message of "Wed, 11 Dec 2024 16:12:23 +0100") References: <87msh21z0i.fsf@daniel-mendler.de> <865xnq4720.fsf@gnu.org> <87pllyuuco.fsf@daniel-mendler.de> Date: Wed, 11 Dec 2024 16:44:27 +0100 Message-ID: <871pye5in8.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) >>>>> On Wed, 11 Dec 2024 16:12:23 +0100, Daniel Mendler via "Bug reports for GNU Emacs, the Swiss army knife of text editors" said: Daniel> Hello Eli, Daniel> thanks. I added the version tags, the NEWS entry, improved the Daniel> docstrings and use `xdg-runtime-dir' now. See the updated patch Daniel> attached to this mail. >>> + (sock (and dir (expand-file-name >>> + (format "qutebrowser/ipc-%s" (md5 (user-login-name))) >>> + dir)))) >> >> I think Qutebrowser is available on Windows, where we don't (yet) >> support local sockets. So I think there should be some kind of test >> for running on Windows, and falling back to alternatives. Daniel> On Windows, the socket won't be there, and the new Qutebrowser window Daniel> will be opened by the newly executed Qutebrowser process via Daniel> `call-process'. This will work but is unfortunately slower. And it will check for the socket for every URL. Could you perhaps test whether to use the socket or not just once, and then use the appropriate call? Robert -- From unknown Sat Aug 09 13:21:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#74781: [PATCH] Add `browse-url-qutebrowser' Resent-From: Daniel Mendler Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 11 Dec 2024 15:55:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 74781 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Robert Pluim Cc: Eli Zaretskii , 74781@debbugs.gnu.org Received: via spool by 74781-submit@debbugs.gnu.org id=B74781.17339324971252 (code B ref 74781); Wed, 11 Dec 2024 15:55:01 +0000 Received: (at 74781) by debbugs.gnu.org; 11 Dec 2024 15:54:57 +0000 Received: from localhost ([127.0.0.1]:35808 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tLP3B-0000K8-Ck for submit@debbugs.gnu.org; Wed, 11 Dec 2024 10:54:57 -0500 Received: from server.qxqx.de ([49.12.34.165]:37907 helo=mail.qxqx.de) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tLP39-0000Jk-CU for 74781@debbugs.gnu.org; Wed, 11 Dec 2024 10:54:56 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=daniel-mendler.de; s=key; h=Content-Type:MIME-Version:Message-ID:Date: References:In-Reply-To:Subject:Cc:To:From:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=gUHz6fPGIkBICZ+NFsdVHlHwKfo9X7oNpOhcAr1SKDk=; b=x9enQQhnofQJAnsRM5bkpowziR A3QwwE66S80SZW5u6KuAeL7g3bWpdlv4P+rLth44zbvx9ZyLCCyDjig9F8jKY91ylQ7EzXXf1+/7P 4btbxAX8WhWL2Qu7SpNC1Tr7noCoK3aLE2+2FkUrcndZYcwB8ruPePsjHwg9BUWItKWQ=; From: Daniel Mendler In-Reply-To: <871pye5in8.fsf@gmail.com> (Robert Pluim's message of "Wed, 11 Dec 2024 16:44:27 +0100") References: <87msh21z0i.fsf@daniel-mendler.de> <865xnq4720.fsf@gnu.org> <87pllyuuco.fsf@daniel-mendler.de> <871pye5in8.fsf@gmail.com> Date: Wed, 11 Dec 2024 16:54:48 +0100 Message-ID: <87zfl29pvb.fsf@daniel-mendler.de> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) Robert Pluim writes: >>>>>> On Wed, 11 Dec 2024 16:12:23 +0100, Daniel Mendler via "Bug reports for GNU Emacs, the Swiss army knife of text editors" said: > > Daniel> Hello Eli, > Daniel> thanks. I added the version tags, the NEWS entry, improved the > Daniel> docstrings and use `xdg-runtime-dir' now. See the updated patch > Daniel> attached to this mail. > > >>> + (sock (and dir (expand-file-name > >>> + (format "qutebrowser/ipc-%s" (md5 (user-login-name))) > >>> + dir)))) > >> > >> I think Qutebrowser is available on Windows, where we don't (yet) > >> support local sockets. So I think there should be some kind of test > >> for running on Windows, and falling back to alternatives. > > Daniel> On Windows, the socket won't be there, and the new Qutebrowser window > Daniel> will be opened by the newly executed Qutebrowser process via > Daniel> `call-process'. This will work but is unfortunately slower. > > And it will check for the socket for every URL. Could you perhaps test > whether to use the socket or not just once, and then use the > appropriate call? There is only the cheap `file-exists-p' check. It should be fast, in comparison to what comes after that - the socket creation or the process creation. Daniel From unknown Sat Aug 09 13:21:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#74781: [PATCH] Add `browse-url-qutebrowser' Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 11 Dec 2024 16:18:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 74781 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Daniel Mendler Cc: bjorn.bidar@thaodan.de, 74781@debbugs.gnu.org, rpluim@gmail.com Received: via spool by 74781-submit@debbugs.gnu.org id=B74781.17339338248883 (code B ref 74781); Wed, 11 Dec 2024 16:18:02 +0000 Received: (at 74781) by debbugs.gnu.org; 11 Dec 2024 16:17:04 +0000 Received: from localhost ([127.0.0.1]:35860 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tLPOa-0002JA-FB for submit@debbugs.gnu.org; Wed, 11 Dec 2024 11:17:04 -0500 Received: from eggs.gnu.org ([209.51.188.92]:42064) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tLPOZ-0002IY-5C for 74781@debbugs.gnu.org; Wed, 11 Dec 2024 11:17:03 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tLPOS-00072K-Q2; Wed, 11 Dec 2024 11:16:57 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=WO0OjpTVIzL6bnjstE7xf+iGEp2lxql8xneNkZ/Olt4=; b=Jzt6FmRCRCYU fT9RD8/r0BJ65pnyipl5J/0pmXT++Y5dEv8faN1qiXjvdHkIfWQ0zCKUBlIWXo4c8kifVjKTkrrBh cx4myoWsRWNpWHzs16FB8SVqGAScQ69GfoffNX23iL/F5UvbDifFnC+mdZw/5Hku1eHNMjBQeNQFB Oy0FJJ1Kjhbn+2atx/UuS9/a4huzDQkmIQ4x/jINp3HVWuB5KEk8gmIzxkHD5aXaSQGhH8bcxz0o/ zNN3/TYKEF7VqQBOlf6B5oLp9QLBBSuibSYt6Pu6R60F7dC6YI633qs+9kivXIeQKxY1bq1nlbpBj lYWvK7/j1fILyoFMB1dncA==; Date: Wed, 11 Dec 2024 18:16:53 +0200 Message-Id: <86sequ2o0a.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <877c86wai2.fsf@daniel-mendler.de> (bug-gnu-emacs@gnu.org) References: <87msh21z0i.fsf@daniel-mendler.de> <87ed2e8vzv.fsf@gmail.com> <87jzc61tc3.fsf@daniel-mendler.de> <87a5d28rsp.fsf@gmail.com> <87a5d2wl9p.fsf@daniel-mendler.de> <87r06etigv.fsf@thaodan.de> <877c86wai2.fsf@daniel-mendler.de> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Cc: 74781@debbugs.gnu.org, rpluim@gmail.com > Date: Wed, 11 Dec 2024 15:38:13 +0100 > From: Daniel Mendler via "Bug reports for GNU Emacs, > the Swiss army knife of text editors" > > See also the files files.el, server.el, startup.el and mpc.el, which all > access XDG_* environment variables via `getenv' without requiring > xdg.el. The `getenv' function calls are certainly not less readable than > `xdg-runtime-dir'. We avoid xdg.el in preloaded files, but not elsewhere. From unknown Sat Aug 09 13:21:41 2025 X-Loop: help-debbugs@gnu.org Subject: bug#74781: [PATCH] Add `browse-url-qutebrowser' Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 11 Dec 2024 16:55:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 74781 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Daniel Mendler Cc: 74781@debbugs.gnu.org Received: via spool by 74781-submit@debbugs.gnu.org id=B74781.173393608818831 (code B ref 74781); Wed, 11 Dec 2024 16:55:01 +0000 Received: (at 74781) by debbugs.gnu.org; 11 Dec 2024 16:54:48 +0000 Received: from localhost ([127.0.0.1]:36059 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tLPz6-0004tf-44 for submit@debbugs.gnu.org; Wed, 11 Dec 2024 11:54:48 -0500 Received: from eggs.gnu.org ([209.51.188.92]:57746) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tLPz3-0004sz-8i for 74781@debbugs.gnu.org; Wed, 11 Dec 2024 11:54:46 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tLPyx-0005eg-C7; Wed, 11 Dec 2024 11:54:39 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=zUaKWbP9pxqsVmOhr367WyEx76JZLfZ0ZxO0O7yiXAg=; b=ZL15ur4N2mdC 34QVv0tcAge++9GSDumqqzAl/lRL4VHkp+RW1yD4tliK9BsNSHTsvV41JlEsJ5hPlMINSmoV4D7/C eIJXkWLgCmiPJ5/bBfPjyM1HhS3Bwa+TvUp8SVtkXZiuMeCEmNTNenp92i+DzS2ptVvC7zFqG1L0j eDmxeeJaFTXJoHdtXAbekNdwt6Ri+fsI6KD4b3hxQCKo33bhi344M+v8fhrARnXqqvxLOMK2va3/l m3I6PSno/g5vdjps5FmQZZhyFEaHnVoA+FwAnZSNuTA5/qC+o9Czy9G07zaDMDbQhcATXf/AQVJBA 3PgbaB8AhYCe+4ISKxzxpg==; Date: Wed, 11 Dec 2024 18:54:35 +0200 Message-Id: <86r06e2m9g.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: <87pllyuuco.fsf@daniel-mendler.de> (message from Daniel Mendler on Wed, 11 Dec 2024 16:12:23 +0100) References: <87msh21z0i.fsf@daniel-mendler.de> <865xnq4720.fsf@gnu.org> <87pllyuuco.fsf@daniel-mendler.de> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Daniel Mendler > Cc: 74781@debbugs.gnu.org > Date: Wed, 11 Dec 2024 16:12:23 +0100 > > thanks. I added the version tags, the NEWS entry, improved the > docstrings and use `xdg-runtime-dir' now. See the updated patch > attached to this mail. Thanks, this LGTM. Let's wait for a couple of days to let others chime in if they want. From unknown Sat Aug 09 13:21:41 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Daniel Mendler Subject: bug#74781: closed (Re: Status: [PATCH] Add `browse-url-qutebrowser') Message-ID: References: <87ttb6ig3r.fsf@daniel-mendler.de> <87msh21z0i.fsf@daniel-mendler.de> X-Gnu-PR-Message: they-closed 74781 X-Gnu-PR-Package: emacs X-Gnu-PR-Keywords: patch Reply-To: 74781@debbugs.gnu.org Date: Sat, 14 Dec 2024 12:51:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1734180662-29893-1" This is a multi-part message in MIME format... ------------=_1734180662-29893-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #74781: [PATCH] Add `browse-url-qutebrowser' which was filed against the emacs package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 74781@debbugs.gnu.org. --=20 74781: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D74781 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1734180662-29893-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 74781-done) by debbugs.gnu.org; 14 Dec 2024 12:50:14 +0000 Received: from localhost ([127.0.0.1]:45844 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tMRb3-0007ew-9T for submit@debbugs.gnu.org; Sat, 14 Dec 2024 07:50:13 -0500 Received: from server.qxqx.de ([49.12.34.165]:52885 helo=mail.qxqx.de) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tMRax-0007d2-1W for 74781-done@debbugs.gnu.org; Sat, 14 Dec 2024 07:50:11 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=daniel-mendler.de; s=key; h=Content-Type:MIME-Version:Message-ID:Date: In-Reply-To:Subject:To:From:Sender:Reply-To:Cc:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:References:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=LGPpo0YkT6GE0DV0ANUlx5gYBwvLSChNCUglrMPwW3s=; b=sHOQB5XLmIdhuZblu4lxGuWCCa i1MTaqeQvnVMyDCitGwf91+EV2Whsk5rhxefeAUa17g6E4F73qkmbK0ygrxe4Xg+yX4GtI4PAUWM1 A9eWAv3RFXG6G+RP16PqT/PL1wu0tyHt8iuCC5E/961lILm/liJt52mKyJwLmxCRtzw4=; From: Daniel Mendler To: 74781-done@debbugs.gnu.org Subject: Re: Status: [PATCH] Add `browse-url-qutebrowser' In-Reply-To: bug's message of "Sat, 14 Dec 2024 12:49:15 +0000" Date: Sat, 14 Dec 2024 13:50:00 +0100 Message-ID: <87ttb6ig3r.fsf@daniel-mendler.de> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 74781-done X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) The patch has been installed on master. ------------=_1734180662-29893-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 11 Dec 2024 07:04:49 +0000 Received: from localhost ([127.0.0.1]:60913 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tLGm6-0000aF-5i for submit@debbugs.gnu.org; Wed, 11 Dec 2024 02:04:49 -0500 Received: from lists.gnu.org ([209.51.188.17]:58386) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tLGm3-0000a4-2U for submit@debbugs.gnu.org; Wed, 11 Dec 2024 02:04:44 -0500 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 1tLGm0-00020G-NY for bug-gnu-emacs@gnu.org; Wed, 11 Dec 2024 02:04:41 -0500 Received: from server.qxqx.de ([2a01:4f8:c012:9177::1] helo=mail.qxqx.de) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tLGlv-00048o-TY for bug-gnu-emacs@gnu.org; Wed, 11 Dec 2024 02:04:37 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=daniel-mendler.de; s=key; h=Content-Type:MIME-Version:Message-ID:Date: Subject:To:From:Sender:Reply-To:Cc:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=b1jV1Ge5YnZQDx5vTZR98aLn2ryZHXev5HSWMHLVlYk=; b=tE3YVdpcXG5eN5wc+XlM/J20UT XkqyjXQhn4pLVV4az7giKtReCRSwjhVVBK190a8SeXyj1lWhJjbJ44R3tizD/dP71mid2nPc26ki+ 3yvdg4P4dUHOKc4blDogMxp+COlwrBD9rJJv07xL3o1zq82GhrxO0XuPkONtEyMIt2H4=; From: Daniel Mendler To: bug-gnu-emacs@gnu.org Subject: [PATCH] Add `browse-url-qutebrowser' Date: Wed, 11 Dec 2024 08:04:29 +0100 Message-ID: <87msh21z0i.fsf@daniel-mendler.de> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Received-SPF: pass client-ip=2a01:4f8:c012:9177::1; envelope-from=mail@daniel-mendler.de; helo=mail.qxqx.de X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.4 (-) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) --=-=-= Content-Type: text/plain Tags: patch The browser launcher supports the NEW-WINDOW argument and `browse-url-qutebrowser-new-window-is-tab' to open tabs. Furthermore opening new URLs is speed up via Unix socket IPC if available. --=-=-= Content-Type: text/patch Content-Disposition: attachment; filename=0001-Add-browse-url-qutebrowser.patch >From ea24ef81a4a8551a8212582a65dd4aa685c9c648 Mon Sep 17 00:00:00 2001 From: Daniel Mendler Date: Wed, 11 Dec 2024 07:36:16 +0100 Subject: [PATCH] Add `browse-url-qutebrowser' The browser launcher supports the NEW-WINDOW argument and `browse-url-qutebrowser-new-window-is-tab' to open tabs. Furthermore opening new URLs is speed up via Unix socket IPC if available. * lisp/net/browse-url.el (browse-url-qutebrowser-send): Function to send command to Qutebrowser via IPC. (browse-url-qutebrowser): New browser launcher. Use `browse-url-qutebrowser-send'. (browse-url-qutebrowser-program, browse-url-qutebrowser-arguments, browse-url-qutebrowser-new-window-is-tab): New customizables. --- lisp/net/browse-url.el | 68 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/lisp/net/browse-url.el b/lisp/net/browse-url.el index 8ec025d017b..3b6833715f4 100644 --- a/lisp/net/browse-url.el +++ b/lisp/net/browse-url.el @@ -342,6 +342,14 @@ browse-url-epiphany-startup-arguments `browse-url' is loaded." :type '(repeat (string :tag "Argument"))) +(defcustom browse-url-qutebrowser-program "qutebrowser" + "The name by which to invoke Qutebrowser." + :type 'string) + +(defcustom browse-url-qutebrowser-arguments nil + "A list of strings to pass to Qutebrowser when it starts up." + :type '(repeat (string :tag "Argument"))) + (defcustom browse-url-webpositive-program "WebPositive" "The name by which to invoke WebPositive." :type 'string @@ -387,6 +395,12 @@ browse-url-epiphany-new-window-is-tab `browse-url-epiphany' is asked to open it in a new window." :type 'boolean) +(defcustom browse-url-qutebrowser-new-window-is-tab nil + "Whether to open up new windows in a tab or a new window. +If non-nil, then open the URL in a new tab rather than a new window if +`browse-url-qutebrowser' is asked to open it in a new window." + :type 'boolean) + (defcustom browse-url-new-window-flag nil "Non-nil means always open a new browser window with appropriate browsers. Passing an interactive argument to \\[browse-url], or specific browser @@ -1294,6 +1308,60 @@ browse-url-epiphany-sentinel browse-url-epiphany-program (append browse-url-epiphany-startup-arguments (list url)))))) +(defun browse-url-qutebrowser-send (cmd) + "Send CMD to Qutebrowser via IPC." + (let* ((dir (getenv "XDG_RUNTIME_DIR")) + (sock (and dir (expand-file-name + (format "qutebrowser/ipc-%s" (md5 (user-login-name))) + dir)))) + (unless (file-exists-p sock) + (error "No Qutebrowser IPC socket found")) + (let ((proc + (make-network-process + :name "qutebrowser" + :family 'local + :service sock + :coding 'utf-8))) + (unwind-protect + (process-send-string + proc + (concat + (json-serialize `( :args [,cmd] + :target_arg :null + :protocol_version 1)) + "\n")) + (delete-process proc))))) + +(defun browse-url-qutebrowser (url &optional new-window) + "Ask the Qutebrowser WWW browser to load URL. +Default to the URL around or before point. + +When called interactively, if variable `browse-url-new-window-flag' is +non-nil, load the document in a new Qutebrowser window, otherwise use a +random existing one. A non-nil interactive prefix argument reverses +the effect of `browse-url-new-window-flag'. + +If `browse-url-qutebrowser-new-window-is-tab' is non-nil, then whenever a +document would otherwise be loaded in a new window, it is loaded in a +new tab in an existing window instead. + +When called non-interactively, optional second argument NEW-WINDOW is +used instead of `browse-url-new-window-flag'." + (interactive (browse-url-interactive-arg "URL: ")) + (let ((cmd (concat ":open " + (and (browse-url-maybe-new-window new-window) + (if browse-url-qutebrowser-new-window-is-tab + "-t " "-w ")) + (browse-url-encode-url url)))) + (condition-case nil + (browse-url-qutebrowser-send cmd) + (error + (apply #'start-process (concat "qutebrowser " url) nil + browse-url-qutebrowser-program + (append browse-url-qutebrowser-arguments (list cmd))))))) + +(function-put 'browse-url-qutebrowser 'browse-url-browser-kind 'external) + (defvar url-handler-regexp) ;;;###autoload -- 2.45.2 --=-=-=-- ------------=_1734180662-29893-1--