Risposte:
Il file manager (Nautilus, per impostazione predefinita) utilizza il tipo MIME di un file per determinare con quale programma aprirlo. Quando viene installata un'applicazione, può specificare quali tipi MIME può aprire e il comando da utilizzare per aprire i file nel file .desktop in cui è inserito /usr/share/applications
. Questo è il file utilizzato per menu, collegamenti sul desktop, ecc.
Ad esempio, GIMP ha il seguente file .desktop:
[Desktop Entry]
Version=1.0
Type=Application
Name=GNU Image Manipulation Program
GenericName=Image Editor
Comment=Create images and edit photographs
Exec=gimp-2.7 %U
TryExec=gimp-2.7
Icon=gimp
Terminal=false
Categories=Graphics;2DGraphics;RasterGraphics;GTK;
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=GIMP
X-GNOME-Bugzilla-Component=General
X-GNOME-Bugzilla-Version=2.7.2
X-GNOME-Bugzilla-OtherBinaries=gimp-2.7
StartupNotify=true
MimeType=application/postscript;application/pdf;image/bmp;image/g3fax;image/gif;image/x-fits;image/pcx;image/x-portable-anymap;image/x-portable-bitmap;image/x-portable-graymap;image/x-portable-pixmap;image/x-psd;image/x-sgi;image/x-tga;image/x-xbitmap;image/x-xwindowdump;image/x-xcf;image/x-compressed-xcf;image/tiff;image/jpeg;image/x-psp;image/png;image/x-icon;image/x-xpixmap;image/svg+xml;application/pdf;image/x-wmf;image/jp2;image/jpeg2000;image/jpx;image/x-xcursor;
Vedi il MimeType
campo - questo elenca i tipi MIME supportati. Il Exec
campo dice al sistema di usare il comando gimp-2.7 %U
, sostituendo '% U' con i file da aprire. (Nota GIMP 2.7 è una versione che ho installato da un PPA, quindi è superiore alla versione corrente nei repository Ubuntu).
Quando viene installato il pacchetto dell'applicazione, il sistema estrae questi dati di tipo MIME in un database più facilmente accessibile perché la ricerca in ciascun file .desktop richiederebbe troppo tempo se fosse eseguita ogni volta che veniva aperto un file.
Ciò indica al sistema quali applicazioni possono essere utilizzate per quel tipo MIME e fornisce le applicazioni nell'elenco "Apri con". L'impostazione predefinita è definita altrove. Il file /usr/share/applications/defaults.list
fornisce le informazioni per i valori predefiniti del sistema. Salvo diversa scelta, queste sono le applicazioni utilizzate quando si "Apri" un file.
sudo update-desktop-database
Vedi jarrpa.net/2011/10/28/…
/usr/local/share/applications
. Penso che anche gtk ci guardi, di default. Lo fa sul mio sistema, ma è stato aggiornato (non reinstallato) da Ubuntu 7.04 o giù di lì.
Per integrare l'eccellente risposta di dv3500ea, vorrei aggiungere alcune informazioni su cosa succede quando cambi le tue associazioni.
Mentre defaults.list (che puoi trovare digitando 'local defaults.list') fornisce l'elenco delle applicazioni associate a ciascun tipo MIME, tutte le personalizzazioni che fai sono memorizzate nella tua home directory, in ~ / .local / share / applications / mimeapps.list. Pertanto, se aggiungi o rimuovi associazioni o modifichi l'associazione predefinita, questo file viene aggiornato.
La Guida all'amministrazione del sistema desktop GNOME su http://library.gnome.org/admin/system-admin-guide/stable/ non sembra discutere di mimeapps.list, ma ho trovato la seguente descrizione su http: //live.gnome .org / SysAdminGuideUpdate :
mimeapps.list si trova in $ XDG_DATA_DIRS / applicazioni. Il suo scopo è aggiungere o rimuovere le associazioni mime dalle applicazioni. nautilus scrive ~ / .local / share / applicazioni / mimeapps.list quando l'utente apporta modifiche nella finestra di dialogo "Apri con".
mimeapps.list
viene sovrascritto dalle voci nel file defaults.list
.
~/.local/share/applications/mimeapps.list
, e i processi in esecuzione come pcmanfm hanno rilevato le modifiche senza riavviare. (mplayer.desktop è solo un mplayer. Ne avevo uno in giro da una vecchia installazione di mplayer in / usr / local, immagino. IDK se ne avessi avuto MimeType=list;
bisogno o meno.
mimeapps.list
può trovarsi ovunque nel seguente percorso di ricerca: specific.freedesktop.org/mime-apps-spec/…
Ho scoperto che sul mio sistema (Debian Jessie) esiste anche un'associazione ~/.config/mimeapps.list
che ho creato accidentalmente per aprire un tipo di file specifico con gedit. Nessuno dei modi standard per correggerlo (impostazioni dell'applicazione predefinite, Thunar è aperto con proprietà) rifletteva ciò, ma gedit era l'applicazione predefinita.
Sono stato in grado di rimuovere la linea da ~/.config/mimeapps.list
e ora l'applicazione corretta apre il file.
~/.config/mimeapps.list
.
mimeapps.list
può trovarsi ovunque nel seguente percorso di ricerca: Specifiche.freedesktop.org/mime-apps-spec/…
Ho trovato questo link relativo all'associazione predefinita, potrebbe essere utile.
https://wiki.archlinux.org/index.php/Default_Applications
per associazione globale:
/usr/share/applications/mimeapps.list
per associazione utente:
~/.local/share/applications/mimeapps.list
la sintassi è la seguente:
[Added Associations]
mimetype=desktopfile1;desktopfile2;...;desktopfileN
...
[Removed Associations]
mimetype=desktopfile1;desktopfile2;...;desktopfileN
La sezione [Associazioni aggiunte] viene utilizzata per specificare le applicazioni preferite (predefinite) in preferenza decrescente. ciò significa che desktopfile1 è il più preferito e desktopfileN è il meno preferito.
La sezione [Associazioni rimosse] viene utilizzata per rimuovere esplicitamente qualsiasi associazione precedentemente ereditata.
/usr/share/applications/mimeapps.list
non esiste.
mimeapps.desktop
condefaults.desktop
Creare un file truecrypt.desktop
in ~/.local/share/applications
con le seguenti righe:
[Desktop Entry]
Encoding=UTF-8
Type=Application
Icon=
Exec=/usr/bin/truecrypt %U
Name=truecrypt
Comment=manage truecrypt volumes
quindi modifica il file ~/.local/share/applications/mimeapps.list
e aggiungi la seguente riga:
application/octet-stream=truecrypt.desktop
Ho scoperto il tipo mime di Truecrypt seguendo questo comando:
file --mime-type -b <any truecrypt filename>
mimeapps.list
percorso di ricerca
Altri hanno menzionato questo file, ma nessuno ha spiegato la sua posizione con precisione.
Lo standard freedesktop.org dice a https://specifications.freedesktop.org/mime-apps-spec/mime-apps-spec-1.0.html :
L'ordine di ricerca per questo file è il seguente:
$XDG_CONFIG_HOME/$desktop-mimeapps.list user overrides, desktop-specific (for advanced users)
$XDG_CONFIG_HOME/mimeapps.list user overrides (recommended location for user configuration GUIs)
$XDG_CONFIG_DIRS/$desktop-mimeapps.list sysadmin and ISV overrides, desktop-specific
$XDG_CONFIG_DIRS/mimeapps.list sysadmin and ISV overrides
$XDG_DATA_HOME/applications/$desktop-mimeapps.list for completeness, deprecated, desktop-specific
$XDG_DATA_HOME/applications/mimeapps.list for compatibility, deprecated
$XDG_DATA_DIRS/applications/$desktop-mimeapps.list distribution-provided defaults, desktop-specific
$XDG_DATA_DIRS/applications/mimeapps.list distribution-provided defaults
e quindi i valori predefiniti per quelle variabili d'ambiente sono indicati su https://specifications.freedesktop.org/basedir-spec/basedir-spec-0.6.html :
$XDG_DATA_HOME
: $HOME/.local/share
$XDG_CONFIG_HOME
: $HOME/.config
$XDG_DATA_DIRS
: nessuna, aggiunta a XDG_DATA_HOME
$XDG_CONFIG_DIRS
: nessuna, aggiunta a XDG_CONFIG_HOME
Le versioni precedenti di Ubuntu potrebbero non verificare ~/.config
, quindi assicurati di provare anche tu ~/.local/share
.
Comandi come:
xdg-settings set default-web-browser chromium-browser.desktop
xdg-settings get default-web-browser
modificherà automaticamente quei file.
Per tutti gli utenti:
/usr/share/applications/defaults.list
Ogni utente ha un file di configurazione per sovrascrivere questi valori predefiniti:
~ / .Config / mimeapps.list
vedi anche https://specifications.freedesktop.org/mime-apps-spec/mime-apps-spec-1.0.1.html per i luoghi che potrebbero essere utilizzati per ignorare i defaut.
È necessario conoscere il tipo mime del file che si desidera modificare la sua associazione.
Inoltre, tutte le associazioni possono essere gestite e modificate nella riga di comando usando:
xdg-mime
Freedesktop.org (precedentemente chiamato X Desktop Group, quindi l'abbreviazione "XDG") è il gruppo che attualmente guida gli standard X in questo modo ( ulteriori informazioni su Wikipedia ).
La risposta di warvariuc menziona già l' uso di xdg-mime come:
xdg-mime default xnview.desktop image/jpeg
Dopo aver giocato un sacco con editor di immagini e visualizzatori, sono finito con diversi visualizzatori per diversi tipi di immagine con quasi nessuna coerenza, specialmente tra i tipi di immagini più rari.
Ho preso il comando sopra e l'ho assegnato a ciascuno dei tipi MIME controllati dai visualizzatori di immagini e poi ne ho creato uno nuovo image-viewer.desktop
clonandone uno (questo è facoltativo, puoi semplicemente riutilizzare il tuo preferito). Successivamente, ho verificato manualmente che nessuno dei tipi MIME sarebbe incompatibile con la mia nuova applicazione preferita. Infine, ho impostato l'applicazione come predefinita per tutti i tipi MIME di altre applicazioni:
sed '/^MimeType=/!d; s///; s/;/\n/g' \
/usr/share/applications/{ristretto,geeqie,gthumb}.desktop |sort -u \
|xargs xdg-mime default image-viewer.desktop
Questo esamina i .desktop
file per ciascuno degli spettatori ( Ristretto , Geeqie e GThumb nel mio caso), estrae la definizione MIME (che è preceduta da MimeType=
e quindi contiene un elenco delimitato da punti e virgola), rimuove l'etichetta della prefazione (precedentemente abbinata) e divide l'elenco in una voce per riga. sort -u
quindi rimuove le linee ridondanti, quindi vengono consegnate xdg-mime
per impostare le nuove impostazioni predefinite.
(Se si desidera testarlo prima di eseguirlo dal vivo, passare xargs
a xargs echo
e stamperà il comando risultante invece di eseguirlo.)
Questa tecnica dovrebbe funzionare per tutto ciò che desideri richiedere per un'app di destinazione. Non è nemmeno necessario crearne uno nuovo.desktop
file (puoi usarne uno esistente). Ho fatto quel passo in più in modo che quando inevitabilmente cambio la mia fedeltà tra i programmi di anteprima delle immagini, devo semplicemente cambiare quel file.
Su Ubuntu 18.04, ho trovato l'ordine di precedenza come segue, dal più forte al più debole:
~/.local/share/applications/defaults.list
/usr/share/applications/defaults.list
~/.config/mimeapps.list
("Apri con un'altra applicazione" aggiornerà questo)~/.local/share/applications/mimeapps.list
mimeinfo.cache
registro delle applicazioni compatibili, che sono generate dai .desktop
file presenti in /usr/share/applications
e/usr/local/share/applications
e possono essere rigenerate utilizzando update-desktop-database
./etc/gnome/defaults.list
/usr/share/applications
.desktop
file, esiste un comando per ricreare quel database MIME per vedere le nuove associazioni in azione?