Como posso registrar um protocolo personalizado com o xdg?

20

Eu tenho lutado esta manhã tentando associar um aplicativo a um protocolo personalizado, ou seja, emacsclient and org -protocolo .

Estou chamando esse protocolo de um bookmarklet de navegador, e obtenho o seguinte comportamento:

Em cromo,
A caixa de diálogo "Launch Application" aparece e chama o xdg-open org-protocol: // ... que acaba disparando um novo frame do cromo.

no firefox,
Eu tentei definir protocolo network.protocol-handler.app.org para uma seqüência vazia ou meu caminho emacsclient, de qualquer maneira eu recebo a seguinte mensagem de erro:
"O Firefox não sabe como abrir este endereço, porque o protocolo (org-protocol) não está associado a nenhum programa", mesmo sem mostrar qualquer diálogo de seleção de aplicativos externos.

Eu não estou usando nenhum ambiente de desktop, então eu preciso fazer isso funcionar estritamente com o xdg, no entanto, apesar de ler a especificação mime etc, eu ainda não consigo entender uma configuração de trabalho.

    
por julien 10.07.2010 / 16:11

3 respostas

14

O método XDG: Crie um emacsclient.desktop arquivo que lida com o tipo x-scheme-handler/org-protocol MIME:

[Desktop Entry]
Name=Emacs Client
Exec=emacsclient %u
Icon=emacs-icon
Type=Application
Terminal=false
MimeType=x-scheme-handler/org-protocol;

(Observe a linha MimeType= acima, que é para org-protocol: URIs.)

Coloque o arquivo em ~/.local/share/applications ou /usr/local/share/applications .

Você pode ter que abrir o arquivo ~/.local/share/applications/mimeapps.list e adicionar uma linha como esta:

x-scheme-handler/org-protocol=emacsclient.desktop

Adicione isso na seção [Default Applications] .

    
por 11.07.2011 / 21:39
11

@grawity está quase correto, mas ele ignorou dois detalhes:

  1. Depois de instalar o arquivo .desktop , talvez seja necessário executar manualmente sudo update-desktop-database . (Isso pode ser feito se você instalou o arquivo .desktop usando xdg-desktop-menu install emacsclient.desktop )

    Isso era o que era necessário para que meu Firefox exibisse o "O que deveria lidar com esse protocolo?" diálogo em vez de apenas exibir uma página de erro.

  2. No momento em que esta pergunta foi feita, houve um erro em xdg-open que fez com que ela entregasse URLs cegamente para $BROWSER em "genéricos" (não-KDE, não-GNOME, não-Xfce, etc. ) desktops e que produz exatamente o comportamento que o @julien estava experimentando.

    Ele deve ser corrigido em versões modernas do xdg-open, mas, se a sua área de trabalho não estiver usando uma versão moderna por algum motivo, aqui está o versão do xdg-open Eu coloco em /usr/local/bin para resolver o problema.

por 21.04.2015 / 13:06
0

Pelo menos no Fedora 13 e em várias distros baseadas no Debian xdg-open abre todas as URLs que não têm um esquema file: // em um navegador se não é executado em um ambiente de área de trabalho suportado. A maneira como ele tenta detectar qual navegador usar depende da distribuição.

Como o xdg-open é apenas um shell script, você pode adaptá-lo facilmente às suas necessidades.

    
por 10.07.2010 / 21:46