AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 487203
Accepted
Melle
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

Escolha em qual navegador abrir o link

  • 772

Estou usando o Firefox e o Google Chrome com várias janelas (perfis).

Ao clicar em um link em, por exemplo, um terminal ou outro aplicativo GUI, gostaria de escolher em qual navegador/janela carregar a URL em vez de executar o navegador padrão (por exemplo, Firefox). Alguém sabe se existe esse programa?

Do meu entendimento (limitado), acho que deve substituir o navegador padrão e mostrar um pop-up com navegadores conhecidos e/ou janelas ativas onde o link deve ser delegado.

Se encontrou esta resposta , mas está apenas procurando por processos existentes e inicia um padrão se nenhum for encontrado.

gui browser
  • 4 4 respostas
  • 4375 Views

4 respostas

  • Voted
  1. Michael Prokopec
    2018-12-11T12:46:41+08:002018-12-11T12:46:41+08:00

    Você pode usar a variável de ambiente do navegador:

    export BROWSER=firefox
    or
    export BROWSER=/path/to/browser
    

    Isso altera o navegador padrão a ser usado na sua sessão de usuário.

    Você pode escrever um script que pergunte qual navegador abrir e, em seguida, defina-o como seu navegador padrão. Então, sempre que você clicar em um link, ele perguntará.

    Basta definir o argumento $1 para que ele seja enviado para o navegador que você escolheu, para que ele abra esse link.

    Poderia parecer algo como:

    #!/bin/bash
    website=$1
    echo "What browser do you want to use?  chrome firefox "
    read browsera
    $browsera $website
    

    Você pode torná-lo tão chique quanto quiser. Faça com que capture argumentos inválidos e todo tipo de coisa. Você pode até fazê-lo analisar a entrada e, dependendo do site, abrir um navegador predeterminado.

    • 7
  2. anthony.perron
    2020-04-20T04:50:44+08:002020-04-20T04:50:44+08:00

    Uma solução simples comzenity

    insira a descrição da imagem aqui

    • criar /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 $* &
    

    Para configurar o SO (Manjaro para mim):

    • crie .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
    
    • modifique .local/share/applications/defaults.list
    • correxdg-settings set default-web-browser select-browser.desktop
    • 7
  3. GAD3R
    2018-12-11T13:50:35+08:002018-12-11T13:50:35+08:00

    Você pode usar xdg-mimepara definir o aplicativo padrão para abrir URLs, sem alterar o navegador padrão ( xdg-settingsé usado para definir o navegador padrão):

    Obtenha o aplicativo padrão (no seu caso, o firefox):

    xdg-mime query default x-scheme-handler/http
    xdg-mime query default x-scheme-handler/https
    

    Para definir o google-chrome como um aplicativo padrão, use o seguinte comando:

    xdg-mime default google-chrome.desktop x-scheme-handler/http
    xdg-mime default google-chrome.desktop x-scheme-handler/https
    
    • 1
  4. Best Answer
    Melle
    2019-04-27T02:17:57+08:002019-04-27T02:17:57+08:00

    Atendendo à minha própria necessidade, hackeei o seguinte script juntos. Ele usa xdotoolpara obter uma lista de navegadores em execução (fixados no Firefox + Chrome agora). Ele exibe os resultados em uma lista e permite que você escolha o navegador correspondente. Ele muda para a área de trabalho (estou usando o i3wm), ativa a janela do navegador e digita a URL. Este definitivamente não é o código mais bonito... Mas funciona :)

    #!/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()
    

    Criei um arquivo da área de trabalho apontando para este script e configurei o navegador padrão usando:

    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
    
    • 0

relate perguntas

  • A caixa de diálogo Nome da pasta GTK3 é branca em branco

  • i3 - um punhado odioso de tamanhos de fonte para minha área de trabalho

  • O CentOS 7 recém-instalado inicializa na linha de comando e não consegue entrar na GUI

  • Arquivos Flash (.swf) não são mais reproduzidos pelos navegadores

  • Debian 9 LXQt: Pacotes necessários para instalação mínima possível na área de trabalho?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    ssh Não é possível negociar: "nenhuma cifra correspondente encontrada", está rejeitando o cbc

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    Como descarregar o módulo do kernel 'nvidia-drm'?

    • 13 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add retorna com: "Erro ao conectar ao agente: nenhum arquivo ou diretório" 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve