Dove sono archiviate le associazioni di file?


67

In che modo Ubuntu o altri sistemi Linux memorizzano le associazioni di file?

C'è qualche /etc/asscociationsfile o qualcosa del genere?

So che posso fare clic destro sul file e modificarlo tramite "Apri con", ma sono solo curioso di sapere come viene archiviato internamente.

Risposte:


67

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 MimeTypecampo - questo elenca i tipi MIME supportati. Il Execcampo 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.listfornisce le informazioni per i valori predefiniti del sistema. Salvo diversa scelta, queste sono le applicazioni utilizzate quando si "Apri" un file.


7
Dopo aver modificato i tipi MIME nei /usr/share/applications .desktopfile, esiste un comando per ricreare quel database MIME per vedere le nuove associazioni in azione?
Redsandro,

12
Sì. sudo update-desktop-databaseVedi jarrpa.net/2011/10/28/…
NoBugs il

Un posto più appropriato per i cambiamenti locali è /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ì.
Peter Cordes,

2
Ubuntu sembra seguire freedesktop.org: standards.freedesktop.org/mime-apps-spec/… , un progetto fantastico .
Ciro Santilli 30 改造 中心 法轮功 六四 事件

23

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".


1
Ma usando Ubuntu 12.04, mi rendo conto che mimeapps.listviene sovrascritto dalle voci nel file defaults.list.
feeela,

1
il 14.04, sono stato in grado di s / vlc / mplayer / nel mio ~/.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.
Peter Cordes,

Più precisamente, mimeapps.listpuò trovarsi ovunque nel seguente percorso di ricerca: specific.freedesktop.org/mime-apps-spec/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

18

Ho scoperto che sul mio sistema (Debian Jessie) esiste anche un'associazione ~/.config/mimeapps.listche 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.liste ora l'applicazione corretta apre il file.


2
Grazie, mi hai aiutato per errore a risolvere Firefox aprendo tutto in Gedit. Su openSUSE 13.2 ho rimosso la riga con "application / octet-stream = org.gnome.gedit.desktop;". :)
user31389

3
da ubuntu 15.04 sono anche memorizzate le modifiche specifiche dell'utente ~/.config/mimeapps.list.
DJCrashdummy,

2
Più precisamente, mimeapps.listpuò trovarsi ovunque nel seguente percorso di ricerca: Specifiche.freedesktop.org/mime-apps-spec/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

8

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.


1
Questo proviene da un sito archlinux , non si applica necessariamente su Ubuntu, /usr/share/applications/mimeapps.listnon esiste.
Guntbert,

Grazie per averlo sottolineato, tuttavia l'utente ha detto su Ubuntu o altri sistemi Linux, questo significa che anche questa è una risposta alla sua domanda: P.
IdontCareAboutReputationPoints

5
Questa risposta è perfettamente accettabile se si sostituisce mimeapps.desktopcondefaults.desktop
szx il

8

Sono stato in grado di impostare un'associazione come questa:

xdg-mime default xnview.desktop image/jpeg

Puoi anche rimuovere le associazioni e fare altre cose: man xdg-mime

Non avevo bisogno di correre sudo update-desktop-database.


7

Creare un file truecrypt.desktopin ~/.local/share/applicationscon 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.liste 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>

Bella risposta, perché funziona per quelli che usano kde, ma hanno un paio di programmi nativi di GTK, come Firefox.
naught101

5

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.


2

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


1

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.desktopclonandone 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 .desktopfile 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 -uquindi rimuove le linee ridondanti, quindi vengono consegnate xdg-mimeper impostare le nuove impostazioni predefinite.

(Se si desidera testarlo prima di eseguirlo dal vivo, passare xargsa xargs echoe 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.


1

Su Ubuntu 18.04, ho trovato l'ordine di precedenza come segue, dal più forte al più debole:

  1. ~/.local/share/applications/defaults.list
  2. /usr/share/applications/defaults.list
  3. ~/.config/mimeapps.list ("Apri con un'altra applicazione" aggiornerà questo)
  4. ~/.local/share/applications/mimeapps.list
  5. La prima corrispondenza rilevata nel mimeinfo.cacheregistro delle applicazioni compatibili, che sono generate dai .desktopfile presenti in /usr/share/applicationse/usr/local/share/applications e possono essere rigenerate utilizzando update-desktop-database.
  6. (Mai usato) /etc/gnome/defaults.list
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.