Como defino uma nova configuração do xdg-open?

24

Eu quero usar xdg-open para abrir irc:// links, como posso criar o parâmetro necessário?

    
por Oxwivi 22.09.2011 / 20:49

2 respostas

16

O xdg-open basicamente apenas procura saber qual ambiente de desktop você possui e então roda o gnome-open, gvfs-open, xfce-open, etc. Veja abaixo instruções específicas do ambiente de desktop ...

Gnome

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 o irc: // blah abre o xchat porque o xchat inclui um patch de configuração gconf para adicionar um manipulador irc: //.

Isso mostra como o gnome faz isso, com as configurações do gconf em /desktop/gnome/url-handlers/ . Veja xchat-2.8.8/src/common/dbus/apps_xchat_url_handler.schemas como um exemplo.

KDE

Para o KDE, você deve olhar os arquivos .protocol em / usr / share / kde4 / services /, criar um novo para 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 de qual versão do KDE você tem.

XFCE

O XFCE usa um programa chamado exo-open, este programa não tem como configurá-lo ou adicionar manipuladores uri. Olhando através do código-fonte mostra que é usado 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 customizado. Em alguns você tem que 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 .

    
por Martin Owens -doctormo- 22.09.2011 / 21:34
10

Descreverei isso com magnet: tipo de URI e Transmissão (ou seja, 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 o Ubuntu máquina, mas acredito que deve funcionar da mesma forma (pelo menos para xdg-open , observe que os gerenciadores de arquivos podem optar por usar lógica diferente).

  1. Descubra a string do tipo MIME. Para tipos MIME de arquivos, você pode  descubra com o comando arquivo :

    $ file -i Broken_Blossoms.webm 
    Broken_Blossoms.webm: video/webm; charset=binary
    $
    

    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 "ímã". A seguir, exemplos de tipos MIME válidos:

    x-scheme-handler/http
    x-scheme-handler/irc
    x-scheme-handler/magnet
    x-scheme-handler/mailto
    
  2. Descubra o nome do arquivo .desktop do aplicativo.

    Geralmente não é o mesmo que o nome "oficial", mas em letras minúsculas versão do mesmo, ou um nome completamente diferente. Instalado .desktop arquivos vivem sob / usr / share / applications. Desde que eles são texto normal arquivos e conter o nome "oficial", o seguinte comando pode ajudá-lo:

    $ grep "Transmission" -l -r /usr/share/applications
    /usr/share/applications/transmission-gtk.desktop
    $
    

    O comando efetivamente significa "lista de arquivos sob este diretório que contêm a palavra "Transmissão" ". Algumas aplicações podem ser instalado apenas para o usuário, nesse caso, o caminho seria ~/.local/share/applications .

    Caso você tenha um aplicativo "estranho" que talvez não tenha o arquivo você pode sempre criar um (e talvez enviá-lo para o aplicativo desenvolvedores). O caminho mais fácil seria copiar um existente, reescrever campos que você entende e remove os que não conhece. Consulte o especificação para detalhes.

  3. Faça a atribuição usando o comando xdg-mime :

    $ xdg-mime default transmission-gtk.desktop x-scheme-handler/magnet
    $
    

    Observe que não importa onde o arquivo seja realmente (/ 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ês deseja verificar o que você acabou de fazer ou ver o que está atribuído atualmente para qualquer tipo MIME sem abri-lo:

    $ xdg-mime query default x-scheme-handler/magnet
    transmission-gtk.desktop
    $
    

Nota 1: Se quiser verificar outros tipos MIME, pode procurar em /etc/mime.types. Não contém todos os tipos no mundo; para exemplo os manipuladores URI, mas poderia ser usado para a forma "agressiva" de lidar com as associações. Por exemplo:

grep ^video/ | cut -d\t -f1 | xargs xdg-mime default vlc.desktop

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 ser capazes de manipular usando o campo MimeType . xdg-mime página man diz que o arquivo .desktop deve reivindicar o tipo MIME antes o comando acima mencionado funcionará, mas para mim parece funcionar mesmo se o campo estiver faltando. (Quero dizer, a associação será aplicada e a aplicação será lançada - se realmente puder lidar com o tipo é uma questão diferente). Não tenho certeza do que é desvantagem (talvez no futuro o xdg-mime será mais restritivo).

    
por Alois Mahdal 30.11.2014 / 22:46

Tags