Come posso impostare una nuova impostazione di xdg-open?


Risposte:


17

xdg-open fondamentalmente cerca solo di vedere quale ambiente desktop hai e quindi esegue gnome-open, gvfs-open, xfce-open, ecc. Vedi sotto per le istruzioni specifiche dell'ambiente desktop ...

gnomo

Gnome usa il programma gnome-open che usa gconf per memorizzare tutto. Ad esempio sulla mia macchina con Ubuntu 10.10 con gnome-open irc: // blah apre xchat perché xchat include una patch di impostazione gconf per aggiungere un gestore irc: //.

gconf-editor che mostra irc con la configurazione di xchat

Questo mostra come gnome lo fa, con le impostazioni di gconf in /desktop/gnome/url-handlers/. Vedi xchat-2.8.8/src/common/dbus/apps_xchat_url_handler.schemascome esempio.

KDE

Per KDE dovresti guardare i file .protocol in / usr / share / kde4 / services /, crearne uno nuovo per il tuo nuovo protocollo e metterlo in ~ / .kde / share / kde4 / services /, se è super utile allora considerare di aggiungerlo al pacchetto come soluzione per altri utenti.

KDE sta usando kde-open o kfmclient a seconda di ciò che è disponibile e di quale versione di KDE hai.

XFCE

XFCE utilizza un programma chiamato exo-open, questo programma non ha alcun modo di configurarlo o aggiungere gestori uri. Guardando attraverso il codice sorgente si mostra che utilizza i file desktop per specificare solo tre tipi di programmi. TerminalEmulator, WebBrowser e EmailClient.

Con XFCE4 (e probabilmente anche altri) è possibile configurare xdg-open per definire un gestore di protocollo personalizzato. In alcuni devi creare / modificare i seguenti file:

~ / .local / share / applicazioni / protocolhandler.desktop ~ / .local / share / applicazioni / mimeapps.list

Un esempio di aggiunta di un gestore per il protocollo ed2k è fornito su stackexchange.com 2 .


Puoi menzionare come farlo per tutti i DE ufficiali?
Oxwivi,

Non esattamente correlato alla domanda, ma puoi citare per intero la directory nella parte inferiore della schermata? Grazie.
Oxwivi,

4
xdg-open fondamentalmente cerca solo di vedere quale ambiente desktop hai e quindi esegue gnome-open, gvfs-open, xfce-open, ecc. --- Non credo. Innanzitutto, la manpage non dice che, e in secondo luogo, xdg-open funziona perfettamente senza ambiente desktop. Ad esempio lo uso con i3 Window Manager.
Alois Mahdal,

Esiste un modo generico per creare una nuova associazione url / app durante l'installazione dell'app?
jayarjo,

14

Descriverò questo con il magnet:tipo di URI e la trasmissione (ovvero il caso di bittorent), ma lo stesso metodo può essere applicato a qualsiasi schema o tipo di file.

Inoltre ho verificato questo con Debian Jessie, e in realtà non ho una macchina Ubuntu, ma credo che dovrebbe funzionare allo stesso modo (almeno per xdg-open , nota che i file manager possono scegliere di usare una logica diversa).

  1. Scopri la stringa di tipo MIME. Per i tipi di file MIME, puoi scoprirlo con il comando file :

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

    Per il file sopra, il tipo MIME è video/webm.

    Per i gestori URI, il tipo è x-scheme-handler/<scheme>, dove si <scheme>trova la parte dell'URI prima dei due punti, ad esempio "http", "mailto" "irc" o "magnete". Di seguito sono riportati esempi di tipi MIME validi:

    x-scheme-handler/http
    x-scheme-handler/irc
    x-scheme-handler/magnet
    x-scheme-handler/mailto
    
  2. Scopri il nome del file .desktop dell'applicazione.

    Spesso non è lo stesso del nome "ufficiale", ma piuttosto una versione minuscola di esso, o un nome completamente diverso. I file .desktop installati vivono sotto / usr / share / applicazioni. Poiché sono normali file di testo e contengono il nome "ufficiale", il seguente comando può aiutarti:

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

    Il comando significa effettivamente "elenca i file in questa directory che contengono la parola 'Trasmissione'". Alcune applicazioni potrebbero essere installate solo per l'utente, in tal caso il percorso sarebbe ~/.local/share/applications.

    Nel caso in cui tu abbia un'applicazione "strana" che potrebbe non avere affatto il file, puoi sempre crearne uno (e forse inviarlo agli sviluppatori di app). Un modo semplice sarebbe quello di copiarne uno esistente, riscrivere i campi che capisci e rimuovere quelli che non conosci. Fare riferimento alla specifica per i dettagli.

  3. Effettua l'assegnazione usando il comando xdg-mime :

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

    Nota che non importa dove si trova effettivamente il file (/ usr / share / applicazioni, ~ / .local / share / applicazioni ...), usi sempre solo il nome , non il percorso completo.

    Normalmente il comando non produrrà nulla - va bene. Se vuoi verificare cosa hai appena fatto o vedere cosa è attualmente assegnato a qualsiasi tipo MIME senza aprirlo:

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

Nota 1: se si desidera controllare altri tipi MIME, è possibile consultare /etc/mime.types. Non contiene tutti i tipi nel mondo; ad esempio i gestori URI, ma potrebbe essere utilizzato per la forma "aggressiva" di gestione delle associazioni. Per esempio:

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

associerebbe tutti i formati video noti a VLC.

Nota 2: I file .desktop contengono spesso un elenco di tipi MIME che dichiarano essere in grado di gestire utilizzando il MimeTypecampo. La pagina man xdg-mime dice che il file .desktop deve rivendicare il tipo MIME prima che il comando sopra menzionato funzioni, ma per me sembra funzionare anche se manca il campo. (Voglio dire, l'associazione verrà applicata e l'applicazione verrà avviata - se è davvero in grado di gestire il tipo è una domanda diversa). Non sono sicuro di cosa sia lo svantaggio (forse in futuro xdg-mime sarà più restrittivo).


wiki.archlinux.org/index.php/xdg-open dà più o meno lo stesso. ancora buono lì.
shirish

Questa risposta è il modo migliore. Suggerimento: 1) xdg-mime query filetype FILEè il modo XDG per trovare i tipi MIME. 2) Puoi anche modificare tu stesso le impostazioni predefinite per mantenere le cose più organizzate ed eseguirne il backup in un secondo momento: .config/mimeapps.listè il file.
Ciro Santilli 20 改造 中心 法轮功 六四 事件

ripristinato 2 modifiche: @frank, ti ​​interessa spiegare come xdg-mime "funziona meglio"? Il file IMO è lo strumento autoritativo per i tipi MIME, xdg-mime query filetype xyz.wbemOTOH fornisce meno informazioni ed è molto più da digitare.
Alois Mahdal,

1
Ottima spiegazione e il suggerimento per usare l'unico nome del file desktop è stata la soluzione che stavo cercando grazie!
Andrea Richiardi,

1
questo consiglio alla fine mi ha aiutato a risolvere il fatto di non essere in grado di accedere utilizzando l'app desktop slack su Linux. slack reindirizza a un browser, ma il browser utilizza uno schema URI per reindirizzare nuovamente a slack. i tuoi consigli mi hanno aiutato a capire che la debole mappatura URI xdg-mime era sparita. così felice di averlo trovato dopo un'ora di ricerche! grazie!
pestofago il

2

Volevo associare i postmancollegamenti alla mia app Postman installata manualmente (non l'estensione di Chrome) in modo da poter aprire i documenti postino dal browser in questo modo:

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

Il link che volevo associare è simile al seguente:

postman://app/collections/import/39995-2b0394ab-b007-488d-9a0a...

Per fare l'associazione ho fatto i seguenti passi:

  1. Installa l'app manualmente (scarica e decomprime un tar.gz) in /home/andrzej.rehmann/software/postman/
  2. Crea un file desktop in /usr/share/applications/Postman.desktop
[Desktop Entry]
Version=1.0
Type=Application
Name=Postman
Icon=/home/andrzej.rehmann/software/postman/app/resources/app/assets/icon.png
Exec="/home/andrzej.rehmann/software/postman/Postman" %u
Comment=Develop with pleasure!
Categories=Development;
Terminal=false
StartupWMClass=Postman
  1. Associare il postmancollegamento xdg all'applicazione eseguendo:

xdg-mime default Postman.desktop x-scheme-handler/postman


Ho risposto a questa configurazione se qualcuno è interessato: https://github.com/hoto/ansible-home-fedora/blob/fedora/roles/postman/tasks/postman_installer.yml

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.