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.com
e continuar usando a mesma janela do terminal para funcionar (é como open
funciona no OSX). No momento, using xdg-open
ocupa 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 ~/.bashrc
arquivo:
function open () {
xdg-open "$*" &
}
Você pode simplesmente executá-lo open http://www.google.com
e 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 dodetach
Utilitário:
detach xdg-open http://www.google.com
Poderíamos criar um alias para isso. Eu gosto detach
de nohup
fechar stdin stdout e stderr por padrão para que sua invocação seja mais limpa.
Responder3
xdg-open
espera 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-open
seja 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-open
em 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-open
retorna imediatamente. O que acontece na verdade é que o programa que xdg-open
invoca 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.