O xdg-open basicamente olha apenas para ver qual ambiente de desktop você possui e, em seguida, executa o gnome-open, o gvfs-open, o xfce-open, etc. Veja abaixo as instruções específicas do ambiente de desktop ...
Gnomo
O Gnome usa o programa gnome-open, que usa o gconf para armazenar tudo. Por exemplo, na minha máquina com o Ubuntu 10.10 executando o gnome-open irc: // blah abre o xchat porque o xchat inclui um patch de configuração do gconf para adicionar um manipulador irc: //.
Isso mostra como o gnome faz isso, com as configurações do gconf ativadas /desktop/gnome/url-handlers/. Veja xchat-2.8.8/src/common/dbus/apps_xchat_url_handler.schemascomo um exemplo.
KDE
Para o KDE, você deve olhar para os arquivos .protocol em / usr / share / kde4 / services /, criar um novo para o seu novo protocolo e colocá-lo em ~ / .kde / share / kde4 / services /, se for super útil, considere adicioná-lo ao pacote como uma correção para outros usuários.
O KDE está usando o kde-open ou o kfmclient, dependendo do que está disponível e da versão do KDE que você possui.
XFCE
O XFCE usa um programa chamado exo-open, este programa não tem como configurá-lo ou adicionar manipuladores de uri. Examinar o código-fonte mostra que ele usa arquivos da área de trabalho para especificar apenas três tipos de programas. TerminalEmulator, WebBrowser e EmailClient.
Com o XFCE4 (e provavelmente também outros), é possível configurar o xdg-open para definir um manipulador de protocolo personalizado. Em alguns, você precisa criar / editar os seguintes arquivos:
Você pode mencionar como fazer isso para todos os DEs oficiais?
Oxwivi 22/09/11
Não está exatamente relacionado à pergunta, mas você pode citar o diretório na parte inferior da captura de tela? Obrigado.
Oxwivi 23/09/11
4
O xdg-open basicamente olha apenas para ver qual ambiente de desktop você possui e depois executa o gnome-open, o gvfs-open, o xfce-open, etc. --- Acho que não. Primeiro, a página de manual não diz que, e segundo, o xdg-open funciona perfeitamente sem o ambiente da área de trabalho. Por exemplo, eu o uso com o gerenciador de janelas i3.
Alois Mahdal
Existe uma maneira genérica de criar uma nova associação de URL / aplicativo durante a instalação do aplicativo?
jayarjo 21/04
14
Descreverei isso com o magnet:tipo de URI e a transmissão (por exemplo, caso de bittorent), mas o mesmo método pode ser aplicado a qualquer esquema ou tipo de arquivo.
Também verifiquei isso com o Debian Jessie, e na verdade não tenho uma máquina Ubuntu, mas acredito que deve funcionar da mesma forma (pelo menos no xdg-open , observe que os gerenciadores de arquivos podem optar por usar uma lógica diferente).
Descubra a sequência do tipo MIME. Para tipos de arquivo MIME, você pode encontrá-lo com o comando file :
Para manipuladores de URI, o tipo é x-scheme-handler/<scheme>, onde
<scheme>é a parte do URI antes dos dois pontos, por exemplo, "http", "mailto" "irc" ou "magnet". A seguir, exemplos de tipos MIME válidos:
Descubra o nome do arquivo .desktop do aplicativo.
Frequentemente, não é o mesmo que o nome "oficial", mas sim uma versão em minúscula ou um nome completamente diferente. Os arquivos .desktop instalados estão em / usr / share / applications. Como são arquivos de texto normais e contêm o nome "oficial", o seguinte comando pode ajudá-lo:
O comando significa efetivamente "listar arquivos nesse diretório que contêm a palavra 'Transmissão'". Alguns aplicativos podem ser instalados apenas para o usuário; nesse caso, o caminho seria
~/.local/share/applications.
Caso você tenha um aplicativo "estranho" que pode não ter o arquivo, você sempre pode criar um (e talvez enviá-lo aos desenvolvedores do aplicativo). A maneira mais fácil seria copiar um existente, reescrever os campos que você entende e remover aqueles que não são. Consulte a
especificação para obter detalhes.
Observe que não importa onde o arquivo esteja (/ usr / share / applications, ~ / .local / share / applications ...), você sempre usa
apenas o nome , não o caminho completo.
Normalmente, o comando não produzirá nada - tudo bem. Se você deseja verificar o que acabou de fazer ou ver o que está atualmente atribuído a qualquer tipo MIME sem abri-lo:
Nota 1: Se você deseja verificar outros tipos MIME, consulte /etc/mime.types. Ele não contém todos os tipos no mundo; por exemplo, os manipuladores de URI, mas poderia ser usado para a forma "agressiva" de manipular as associações. Por exemplo:
associaria todos os formatos de vídeo conhecidos ao VLC.
Nota 2: Os arquivos .desktop geralmente contêm uma lista de tipos MIME que eles afirmam poder manipular usando o MimeTypecampo. A página de manual do xdg-mime
diz que o arquivo .desktop deve reivindicar o tipo MIME antes que o comando mencionado acima funcione, mas para mim parece funcionar mesmo se o campo estiver ausente. (Quero dizer, a associação será aplicada e o aplicativo será iniciado - se ele realmente puder lidar com o tipo é uma pergunta diferente). Não tenho certeza do que é desvantagem (talvez no futuro o xdg-mime seja mais restritivo).
Esta resposta é a melhor maneira. Dica: 1) xdg-mime query filetype FILEé a maneira XDG de encontrar tipos de mímica. 2) Você também pode editar os padrões para manter as coisas mais organizadas e fazer backup posteriormente: .config/mimeapps.listé o arquivo.
Ciro Santilli # 20/16
reverteu 2 edições: @frank, gostaria de explicar como o xdg-mime "funciona melhor"? O arquivo IMO é a ferramenta autoritativa para tipos MIME, o xdg-mime query filetype xyz.wbemOTOH fornece menos informações e é muito mais para digitar.
Alois Mahdal 15/05
1
Ótima explicação e a dica para usar o único nome do arquivo da área de trabalho foi a solução que eu estava procurando, obrigado!
Andrea Richiardi
1
esse conselho finalmente me ajudou a resolver não conseguir fazer login usando o aplicativo de desktop slack no linux. o slack redireciona para um navegador, mas o navegador usa um esquema de URI para redirecionar de volta para o slack. suas dicas me ajudaram a ver que o mapeamento folgado do URI xdg-mime havia desaparecido. tão feliz que eu encontrei isso depois de uma hora de pesquisa! obrigado!
pestófago
2
Eu queria associar postmanlinks ao meu aplicativo Postman instalado manualmente (não à extensão chrome) para poder abrir os documentos do carteiro no navegador da seguinte maneira:
Respostas:
O xdg-open basicamente olha apenas para ver qual ambiente de desktop você possui e, em seguida, executa o gnome-open, o gvfs-open, o xfce-open, etc. Veja abaixo as instruções específicas do ambiente de desktop ...
Gnomo
O Gnome usa o programa gnome-open, que usa o gconf para armazenar tudo. Por exemplo, na minha máquina com o Ubuntu 10.10 executando o gnome-open irc: // blah abre o xchat porque o xchat inclui um patch de configuração do gconf para adicionar um manipulador irc: //.
Isso mostra como o gnome faz isso, com as configurações do gconf ativadas
/desktop/gnome/url-handlers/
. Vejaxchat-2.8.8/src/common/dbus/apps_xchat_url_handler.schemas
como um exemplo.KDE
Para o KDE, você deve olhar para os arquivos .protocol em / usr / share / kde4 / services /, criar um novo para o seu novo protocolo e colocá-lo em ~ / .kde / share / kde4 / services /, se for super útil, considere adicioná-lo ao pacote como uma correção para outros usuários.
O KDE está usando o kde-open ou o kfmclient, dependendo do que está disponível e da versão do KDE que você possui.
XFCE
O XFCE usa um programa chamado exo-open, este programa não tem como configurá-lo ou adicionar manipuladores de uri. Examinar o código-fonte mostra que ele usa arquivos da área de trabalho para especificar apenas três tipos de programas. TerminalEmulator, WebBrowser e EmailClient.
Com o XFCE4 (e provavelmente também outros), é possível configurar o xdg-open para definir um manipulador de protocolo personalizado. Em alguns, você precisa criar / editar os seguintes arquivos:
~ / .local / share / applications / protocolhandler.desktop ~ / .local / share / applications / mimeapps.list
Um exemplo de adição de um manipulador para o protocolo ed2k é fornecido em stackexchange.com 2 .
fonte
Descreverei isso com o
magnet:
tipo de URI e a transmissão (por exemplo, caso de bittorent), mas o mesmo método pode ser aplicado a qualquer esquema ou tipo de arquivo.Também verifiquei isso com o Debian Jessie, e na verdade não tenho uma máquina Ubuntu, mas acredito que deve funcionar da mesma forma (pelo menos no xdg-open , observe que os gerenciadores de arquivos podem optar por usar uma lógica diferente).
Descubra a sequência do tipo MIME. Para tipos de arquivo MIME, você pode encontrá-lo com o comando file :
Para o arquivo acima, o tipo MIME é
video/webm
.Para manipuladores de URI, o tipo é
x-scheme-handler/<scheme>
, onde<scheme>
é a parte do URI antes dos dois pontos, por exemplo, "http", "mailto" "irc" ou "magnet". A seguir, exemplos de tipos MIME válidos:Descubra o nome do arquivo .desktop do aplicativo.
Frequentemente, não é o mesmo que o nome "oficial", mas sim uma versão em minúscula ou um nome completamente diferente. Os arquivos .desktop instalados estão em / usr / share / applications. Como são arquivos de texto normais e contêm o nome "oficial", o seguinte comando pode ajudá-lo:
O comando significa efetivamente "listar arquivos nesse diretório que contêm a palavra 'Transmissão'". Alguns aplicativos podem ser instalados apenas para o usuário; nesse caso, o caminho seria
~/.local/share/applications
.Caso você tenha um aplicativo "estranho" que pode não ter o arquivo, você sempre pode criar um (e talvez enviá-lo aos desenvolvedores do aplicativo). A maneira mais fácil seria copiar um existente, reescrever os campos que você entende e remover aqueles que não são. Consulte a especificação para obter detalhes.
Faça a atribuição usando o comando xdg-mime :
Observe que não importa onde o arquivo esteja (/ usr / share / applications, ~ / .local / share / applications ...), você sempre usa apenas o nome , não o caminho completo.
Normalmente, o comando não produzirá nada - tudo bem. Se você deseja verificar o que acabou de fazer ou ver o que está atualmente atribuído a qualquer tipo MIME sem abri-lo:
Nota 1: Se você deseja verificar outros tipos MIME, consulte /etc/mime.types. Ele não contém todos os tipos no mundo; por exemplo, os manipuladores de URI, mas poderia ser usado para a forma "agressiva" de manipular as associações. Por exemplo:
associaria todos os formatos de vídeo conhecidos ao VLC.
Nota 2: Os arquivos .desktop geralmente contêm uma lista de tipos MIME que eles afirmam poder manipular usando o
MimeType
campo. A página de manual do xdg-mime diz que o arquivo .desktop deve reivindicar o tipo MIME antes que o comando mencionado acima funcione, mas para mim parece funcionar mesmo se o campo estiver ausente. (Quero dizer, a associação será aplicada e o aplicativo será iniciado - se ele realmente puder lidar com o tipo é uma pergunta diferente). Não tenho certeza do que é desvantagem (talvez no futuro o xdg-mime seja mais restritivo).fonte
xdg-mime query filetype FILE
é a maneira XDG de encontrar tipos de mímica. 2) Você também pode editar os padrões para manter as coisas mais organizadas e fazer backup posteriormente:.config/mimeapps.list
é o arquivo.xdg-mime query filetype xyz.wbem
OTOH fornece menos informações e é muito mais para digitar.Eu queria associar
postman
links ao meu aplicativo Postman instalado manualmente (não à extensão chrome) para poder abrir os documentos do carteiro no navegador da seguinte maneira:O link que eu queria associar se parece com isso:
Para fazer a associação, executei as seguintes etapas:
/home/andrzej.rehmann/software/postman/
/usr/share/applications/Postman.desktop
postman
link xdg ao aplicativo executando:xdg-mime default Postman.desktop x-scheme-handler/postman
Anunciei essa configuração se alguém estiver interessado: https://github.com/hoto/ansible-home-fedora/blob/fedora/roles/postman/tasks/postman_installer.yml
fonte