Melle Asked: 2018-12-11 12:28:52 +0800 CST2018-12-11 12:28:52 +0800 CST 2018-12-11 12:28:52 +0800 CST 选择在哪个浏览器中打开链接 772 我在多个窗口(配置文件)中同时使用 Firefox 和 Google Chrome。 在例如终端或其他 GUI 应用程序中单击链接时,我想选择在哪个浏览器/窗口中加载 URL,而不是运行默认浏览器(例如 Firefox)。有谁知道这样的程序是否存在? 根据我的(有限)理解,我认为它应该替换默认浏览器并显示一个带有已知浏览器和/或链接应该委托给的活动窗口的弹出窗口。 如果找到这个答案,但它只是在寻找现有的进程,如果没有找到则启动一个默认的进程。 gui browser 4 个回答 Voted Michael Prokopec 2018-12-11T12:46:41+08:002018-12-11T12:46:41+08:00 您可以使用浏览器环境变量: export BROWSER=firefox or export BROWSER=/path/to/browser 这样做会更改在用户会话中使用的默认浏览器。 您可以编写一个脚本,询问您要打开哪个浏览器,然后将其设置为您的默认浏览器。然后,只要您单击链接,它就会询问您。 只需设置 $1 参数,以便将其发送到您选择的浏览器,然后打开该链接。 可能看起来像: #!/bin/bash website=$1 echo "What browser do you want to use? chrome firefox " read browsera $browsera $website 你可以随心所欲地制作它。让它捕捉无效的论点和各种各样的东西。您甚至可以让它解析输入,并根据打开的站点打开预定的浏览器。 anthony.perron 2020-04-20T04:50:44+08:002020-04-20T04:50:44+08:00 一个简单的解决方案zenity 创建/usr/bin/select-browser #!/bin/sh BROWSER=$(zenity --list --radiolist --text '' --column='check' --column=browser --title='select your browser' TRUE "chromium" FALSE "firefox" FALSE "google-chrome-stable") $BROWSER $* & 配置操作系统(对我来说是 Manjaro): 创建.local/share/applications/select-browser.desktop [Desktop Entry] Version=1.1 Type=Application Name=Select browser GenericName=Navigateur Web Comment=Accéder à Internet Icon=google-chrome Exec=/usr/bin/select-browser %U Actions=new-window;new-private-window;NewShortcut;NewShortcut1; MimeType=text/html;text/xml;application/xhtml_xml;image/webp;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp; Categories=Network;WebBrowser; StartupNotify=true StartupWMClass=select-browser 修改.local/share/applications/defaults.list 跑xdg-settings set default-web-browser select-browser.desktop GAD3R 2018-12-11T13:50:35+08:002018-12-11T13:50:35+08:00 您可以使用xdg-mime设置默认应用程序打开 URL,而无需更改默认浏览器(xdg-settings用于设置默认浏览器): 获取默认应用程序(在您的情况下为 firefox): xdg-mime query default x-scheme-handler/http xdg-mime query default x-scheme-handler/https 要将 google-chrome 设置为默认应用程序,请使用以下命令: xdg-mime default google-chrome.desktop x-scheme-handler/http xdg-mime default google-chrome.desktop x-scheme-handler/https Best Answer Melle 2019-04-27T02:17:57+08:002019-04-27T02:17:57+08:00 为了满足我自己的需要,我一起破解了以下脚本。它用于xdotool获取正在运行的浏览器列表(目前已修复为 Firefox + Chrome)。它将结果显示在列表中,并允许您选择相应的浏览器。它切换到桌面(我使用的是 i3wm),激活浏览器窗口并输入 URL。这绝对不是最漂亮的代码......但它有效:) #!/usr/bin/env python3 import sys import tkinter import subprocess URL = sys.argv[1] if len(sys.argv) > 1 else None SEARCH_STRING = 'Mozilla Firefox|Google Chrome' def get_options(): cmd = ['xdotool','search','--name',SEARCH_STRING] result = subprocess.run(cmd, stdout=subprocess.PIPE) window_ids = result.stdout.decode('utf-8').rstrip().split("\n") options = [] for id in window_ids: cmd = ['xdotool','getwindowname', id] result = subprocess.run(cmd, stdout=subprocess.PIPE) title = result.stdout.decode('utf-8').rstrip() options.append((title, id)) return options def kill_window(event = None): root.destroy() def select_prev_option(event): val = curr_var.get() idx = [i for i, option in enumerate(OPTIONS) if option[1] == val][0] if idx > 0: curr_var.set(OPTIONS[idx-1][1]) def select_next_option(event): val = curr_var.get() idx = [i for i, option in enumerate(OPTIONS) if option[1] == val][0] if idx < len(OPTIONS)-1: curr_var.set(OPTIONS[idx+1][1]) def execute_option(e = None): window_id = curr_var.get() cmd = ['xdotool', 'get_desktop'] result = subprocess.run(cmd, stdout=subprocess.PIPE) current_desktop = int(result.stdout.decode('utf-8').rstrip()) cmd = ['xdotool', 'get_desktop_for_window', window_id] result = subprocess.run(cmd, stdout=subprocess.PIPE) window_desktop = int(result.stdout.decode('utf-8').rstrip()) if current_desktop != window_desktop: cmd = ['xdotool', 'set_desktop', str(window_desktop)] result = subprocess.run(cmd, stdout=subprocess.PIPE) cmd = [ 'xdotool', 'windowactivate', '--sync', window_id ] result = subprocess.run(cmd, stdout=subprocess.PIPE) if URL: cmd = [ 'xdotool', 'key','--clearmodifiers','--window', window_id, 'ctrl+t', 'sleep', '.1', 'type', '--clearmodifiers', URL ] result = subprocess.run(cmd, stdout=subprocess.PIPE) cmd = ['xdotool','key','--clearmodifiers','--window', window_id, 'Return'] result = subprocess.run(cmd, stdout=subprocess.PIPE) kill_window() root = tkinter.Tk() root.tk.call('tk', 'scaling', 4.0) root.attributes('-type', 'dialog') OPTIONS = get_options() curr_var = tkinter.StringVar() curr_var.set(OPTIONS[0][1]) max_len = max([len(t) for t, i in OPTIONS]) for text, mode in OPTIONS: b = tkinter.Radiobutton( root, text=text, variable=curr_var, value=mode, indicatoron=0, font=("Arial", 12), width=max_len, anchor=tkinter.W, command=execute_option ) b.pack(anchor=tkinter.W) root.bind("<j>", select_next_option) root.bind("<Down>", select_next_option) root.bind("<k>", select_prev_option) root.bind("<Up>", select_prev_option) root.bind("<Return>", execute_option) root.bind("<Control-q>", kill_window) root.bind("<Control-w>", kill_window) root.protocol("WM_DELETE_WINDOW", kill_window) root.mainloop() 我创建了一个指向此脚本的桌面文件并使用以下命令设置默认浏览器: xdg-settings set default-web-browser browserpicker.desktop xdg-mime default browserpicker.desktop x-scheme-handler/https xdg-mime default browser.desktop x-scheme-handler/http
您可以使用浏览器环境变量:
这样做会更改在用户会话中使用的默认浏览器。
您可以编写一个脚本,询问您要打开哪个浏览器,然后将其设置为您的默认浏览器。然后,只要您单击链接,它就会询问您。
只需设置 $1 参数,以便将其发送到您选择的浏览器,然后打开该链接。
可能看起来像:
你可以随心所欲地制作它。让它捕捉无效的论点和各种各样的东西。您甚至可以让它解析输入,并根据打开的站点打开预定的浏览器。
一个简单的解决方案
zenity
配置操作系统(对我来说是 Manjaro):
xdg-settings set default-web-browser select-browser.desktop
您可以使用
xdg-mime
设置默认应用程序打开 URL,而无需更改默认浏览器(xdg-settings
用于设置默认浏览器):获取默认应用程序(在您的情况下为 firefox):
要将 google-chrome 设置为默认应用程序,请使用以下命令:
为了满足我自己的需要,我一起破解了以下脚本。它用于
xdotool
获取正在运行的浏览器列表(目前已修复为 Firefox + Chrome)。它将结果显示在列表中,并允许您选择相应的浏览器。它切换到桌面(我使用的是 i3wm),激活浏览器窗口并输入 URL。这绝对不是最漂亮的代码......但它有效:)我创建了一个指向此脚本的桌面文件并使用以下命令设置默认浏览器: