Lança o comando no gnome-terminal, depois fecha o gnome-terminal sem terminar o comando executado?

2

Eu tenho uma coisa meio excêntrica com a qual estou mexendo. Estou procurando uma maneira de facilitar o lançamento do MPV (player de vídeo) nos links de vídeo. O comportamento padrão do MPV é iniciar mpv https://url.of.video no terminal ou arrastar / soltar o URL para a janela do MPV. Eu não acho essa kosher sendo uma pessoa centrada no teclado. Em vez disso, eu gostaria de iniciar uma caixa pop-up, colar o URL, apertar enter e fazer com que o MPV lance o vídeo para essa URL. Dessa forma eu poderia amarrar esse comando em um atalho de teclado, facilitando o processo completo. Eu tenho isso completo, mas com um pequeno papercut - a janela do terminal gnomo fica por perto. É um simples forro:

URL=$(yad --entry) && gnome-terminal -- bash -c "mpv $URL"

Se eu iniciar esse comando, recebo uma caixa pop-up graças ao YAD. Neste ponto, cole o URL, pressione enter e, em 1 a 2 segundos, uma janela do MPV é aberta para esse vídeo. Impressionante. Exatamente o que eu queria.

O corte de papel que mencionei é o fato de que o gnome-terminal permanece em funcionamento. Não é um problema enorme, mas eu gostaria de descobrir se há um caminho para este comando acima para iniciar o gnome-terminal, chamar o MPV, anexar a variável (URL) e então fechar o gnome-terminal sem terminar o vídeo stream.

Curioso se alguém tiver alguma ideia. Muito obrigado!

    
por JaSauders 05.11.2017 / 08:30

1 resposta

11

Solução para o seu problema

A solução certa aqui é omitir as chamadas gnome-terminal e bash e até definir uma variável desnecessária, tudo isso não é necessário no seu caso:

mpv -- "$(yad --entry)"

Eu adicionei citações para manipular o URL corretamente, isso garante que ele pode conter, por exemplo, espaços em branco e sinais de e comercial ( & ) e o comando ainda funciona. -- diz a mpv para parar de procurar por opções e trata o que você escolher como argumento. Imagem do caso comum onde você tem um arquivo chamado --version no diretório que você iniciar mpv e apenas digite este nome de arquivo, como mpv sabe se mostrar sua seqüência de versão ou abrir o arquivo?

Responda à sua pergunta

nohup ou disown pode ser usado para desanexar um processo do shell que o iniciou, veja Diferenças entre" < comando > & amp; disown "e" nohup < comando > & dis; ".

No seu caso, a solução correta seria:

gnome-terminal -e nohup mpv -- "$(yad --entry)"

No entanto, para uma solução muito melhor, veja acima.

    
por dessert 05.11.2017 / 09:01