Use xdg-open para abrir uma URL com um novo processo

Use xdg-open para abrir uma URL com um novo processo

Estou começando a experimentarCrunchbang(que é baseado no Debian e usaExterminador do Futuro) como um ambiente de desenvolvimento web, e uma das coisas com as quais estou lutando é o comportamento do xdg-open. Eu venho de uma experiência em OSX, então me perdoe se esta pergunta parecer tão densa.

Gostaria de poder abrir um URL xdg-open http://www.google.come continuar usando a mesma janela do terminal para funcionar (é como openfunciona no OSX). No momento, using xdg-openocupa a guia/sessão atual até eu fechar a janela do navegador ou encerrar manualmente as coisas com ctrl + c. Prefiro que inicie um novo processo, assim posso abrir uma URL, consultar os dados da página e utilizá-la na mesma aba/janela sem precisar abrir outra.

Responder1

Estranho, funciona assim imediatamente no meu Debian. Tente executá-lo em segundo plano:

xdg-open http://www.google.com &

Você pode transformar isso em uma função adicionando estas linhas ao seu ~/.bashrcarquivo:

function open () {
    xdg-open "$*" &
}

Você pode simplesmente executá-lo open http://www.google.come ele será executado em segundo plano.

Responder2

Se você deseja separar o processo do shell atual em vez de iniciá-lo como um trabalho em segundo plano xdg-open http://www.google.com &, gosto dodetachUtilitário:

detach xdg-open http://www.google.com

Poderíamos criar um alias para isso. Eu gosto detachde nohupfechar stdin stdout e stderr por padrão para que sua invocação seja mais limpa.

Responder3

xdg-openespera o programa terminar. Isso ocorre intencionalmente. Se o programa for um programa em modo texto, ele deverá permanecer em primeiro plano no terminal. Mesmo que o programa seja GUI, esse comportamento é útil caso xdg-openseja usado a partir de um script e o script queira executar algo após o arquivo ter sido editado (por exemplo, enviar a nova versão para algum lugar ou fazer algo com a nova versão).

Se você não quiser esperar, execute xdg-openem segundo plano. Você pode executar qualquer comando shell em segundo plano, colocando um "e" comercial no final.

xdg-open http://www.google.com &

Com alguns programas, xdg-openretorna imediatamente. O que acontece na verdade é que o programa que xdg-openinvoca retorna imediatamente. Isso normalmente acontece com programas GUI que abrem todos os arquivos em uma única instância: quando você os inicia pela segunda vez, eles enviam uma mensagem à instância em execução para solicitar que ela abra o arquivo e saia imediatamente.

Responder4

Experimente isto:

DISPLAY=:0.0; xdg-open '<url>'

Eu uso essa técnica para enfileirar URLs magnet:// em meu cliente Bit Torrent Vuze.

ssh someserver "DISPLAY=:0.0; xdg-open 'http://www.google.com/'"

As aspas simples ajudam a proteger o conteúdo dos URLs para que o shell não tente interpretá-los.

informação relacionada