Estou lutando esta manhã tentando associar um aplicativo a um protocolo personalizado, a saber, emacsclient e org-protocol .
Estou chamando esse protocolo de um bookmarklet de navegador da web e recebo o seguinte comportamento:
No chromium,
a caixa de diálogo "Launch Application" é exibida e chama o xdg-open org-protocol: // ... que acaba disparando um novo quadro de cromo.
No firefox,
tentei configurar o protocolo network.protocol-handler.app.org-protocol como uma string vazia ou no meu caminho emacsclient, de qualquer forma, recebo a seguinte mensagem de erro:
"O Firefox não sabe como abrir esse endereço, porque o protocol (org-protocol) não está associado a nenhum programa "sem exibir nenhuma caixa de diálogo de seleção de aplicativo externa.
Não estou usando nenhum ambiente de área de trabalho, portanto, preciso fazer isso funcionar estritamente com o xdg; no entanto, apesar de ler as especificações de informações de mime compartilhadas etc., ainda não consigo entender uma configuração de trabalho.
fonte
Respostas:
O método XDG: Crie um
emacsclient.desktop
arquivo que lida com ox-scheme-handler/org-protocol
tipo MIME:(Observe a
MimeType=
linha acima, que é paraorg-protocol:
URIs.)Coloque o arquivo em
~/.local/share/applications
ou/usr/local/share/applications
.Pode ser necessário abrir o arquivo
~/.local/share/applications/mimeapps.list
e adicionar uma linha como esta:Adicione isso na
[Default Applications]
seção.fonte
xdg-mime default emacsclient.desktop x-scheme-handler/org-protocol
, que provavelmente é a maneira mais oficial de fazê-lo.%u
? Por exemplo, uma variável que expressa apenas a parte do domínio ou caminho do URI?O @grawity está quase correto, mas ele ignorou dois detalhes:
Depois de instalar o
.desktop
arquivo, você pode precisar executar manualmentesudo update-desktop-database
. (Isso pode ser feito se você instalou o.desktop
arquivo usandoxdg-desktop-menu install emacsclient.desktop
)Era isso que era necessário para que meu Firefox exibisse o "O que deve lidar com este protocolo?" caixa de diálogo em vez de apenas exibir uma página de erro.
No momento em que essa pergunta foi feita, havia um bug no
xdg-open
qual fazia com que ela entregasse cegamente os URLs para as áreas$BROWSER
de trabalho "genéricas" (não-KDE, não-GNOME, não-Xfce etc.) e que produz exatamente o comportamento @ julien estava experimentando.Ele deve ser corrigido nas versões modernas do xdg-open, mas, se sua área de trabalho não estiver usando uma versão moderna por algum motivo, aqui está a versão do xdg-open em que eu solto
/usr/local/bin
para resolver o problema.fonte
Pelo menos no Fedora 13 e em várias distros baseadas no Debian, o xdg-open abre todas as URLs que não possuem um arquivo: // em um navegador se ele não for executado em um ambiente de desktop suportado. A maneira como ele tenta detectar qual navegador usar depende da distribuição.
Como o xdg-open é apenas um script de shell, você pode adaptá-lo facilmente às suas necessidades.
fonte