ATUALIZAR
Isenção de responsabilidade: Postagem cruzada no SUL (que eu sei que geralmente é desencorajado) Como definir um script de shell como associação de arquivo do KDE . Como com apenas 14 visualizações e nenhuma resposta em 3 dias, não tenho muita esperança aqui.
Estou me conectando a um Win10 com um *.rdp
arquivo fornecido pelo Citrix Netscaler Gateway via download no meu FF.
Eu escrevi um script de shell que pega o *.rdp
arquivo como $1
e funciona no Bash :
...
set -x
xfreerdp "$1" /monitors:0,2 /floatbar:sticky:off,default:hidden,show:always /u:<me> /p:<...>
...
Para poder executar este script a partir de aplicativos GUI, criei uma nova associação de arquivo com tipo conhecido : application/rdp*.RDP
, pois *.rdp
foi atribuído a Remmina antes (e removi esses dois de lá):
Há um ~/.local/share/applications/Bash-RDP.desktop
.
No FF eu configurei:
Mas isso não funciona ao abrir o download *.rdp
no menu suspenso de downloads do FF ou na Biblioteca de Downloads , nem na minha pasta Downloads no Dolphin . Se eu fizer isso, o xfreerdp aparecerá na barra de tarefas com um círculo de progresso apenas por alguns segundos e sem qualquer representação visual adicional. E uma tarefa xfreerdp permanece a cada tentativa que tenho que matar depois.
ATUALIZAR
Isto é estranho. Meu antigo tipo conhecido (em funcionamento) x-remmina
agora tem os padrões de nome de arquivo *.rdpx
, *.remmina
. (Mencionei acima que mudei *.RDP
de *.rdp
lá para o meu novo.):
Há xfreerdp
o primeiro na ordem de preferência do aplicativo e exatamente isso é obtido ao selecionar um *.rdp
arquivo, ignorando meu novo tipo conhecido, meus padrões de nome de arquivo associados, minha preferência de aplicativo e, finalmente, meu script. Como eu sei? Alterei o pedido para:
e o *.rdp
arquivo foi aberto no Kate .
Isso vale um relatório de bug?
ATUALIZAÇÃO 2
Foi, para mim: Novo tipo conhecido personalizado em associações de arquivos é ignorado .
Não use a
-c
opção. O parâmetro para essa opção não é um arquivo de script – o parâmetro em si é o script que receberá o restante como $1, $2, etc. Então o que você tem agora é um script (sem nome) chamando outro script (rdp.sh), nesse caso, os argumentos posicionais nunca são "transmitidos" implicitamente - isso só aconteceria se$1
fossem$@
usados explicitamente, por exemplo:(Você precisa especificar um argumento fictício, como
--
aqui, porque o primeiro argumento a seguir será armazenado no especial $0, não em $1.)Normalmente, porém, você pode omitir toda a
-c
opção e fazer com que o Bash execute diretamente um arquivo de script , pois a intenção original provavelmente era:(É também por isso que o primeiro argumento a seguir é armazenado no $0 especial em vez de se tornar $1.)
Isso perde a capacidade de usar
~/
-expansion em argumentos, mas isso raramente é um problema (se o arquivo .desktop fosse compartilhado entre vários usuários no mesmo sistema, o script estaria em /usr/bin de qualquer maneira).Para simplificar ainda mais
chmod +x
o seu script (e certifique-se de que ele tenha o#!
cabeçalho usual), você poderá fazer:Neste caso,
Program: rdp.sh
seria suficiente se o seu $PATH estivesse correto.Finalmente consegui o que quero:
rdp
⮕- Removex-remmina
⮕ Padrões de nome de arquivo ⮕ + Add:*.rdp
&*.RDP
/bin/bash
/home/<user>/bin/rdp.sh %U
ATUALIZAR
Se descobrir que isto tem uma desvantagem: Ao selecionar Konsole no menu do sistema ou no painel inferior, ele aparece no painel inferior por menos de um segundo e desaparece. Se eu clicar com o botão direito em seu ícone e selecionar Abrir uma nova janela ou ... guia, ele abre normalmente.