Dove sono archiviate le associazioni di file?

56

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

C'è qualche file /etc/asscociations o qualcosa del genere?

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

    
posta Stann 07.12.2010 - 21:29

9 risposte

57

Il file manager (Nautilus, per impostazione predefinita) utilizza il tipo MIME di un file per determinare quale programma aprilo con. Quando un'applicazione è installata, può specificare quali tipi MIME può aprire e il comando da utilizzare per aprire i file nel file .desktop che è collocato in /usr/share/applications . Questo è il file utilizzato per i menu, i collegamenti del 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 campo MimeType - questo elenca i tipi MIME supportati. Il campo Exec 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 di Ubuntu).

Quando il pacchetto dell'applicazione è installato, il sistema estrae i dati di questo tipo MIME in un database più facilmente accessibile perché l'analisi di ciascun file .desktop richiederebbe troppo tempo se fosse eseguita ogni volta che un file è stato aperto.

Questo dice al sistema quali applicazioni possono essere usate per quel tipo MIME e fornisce le applicazioni nella lista 'Apri con'. Il valore predefinito è definito altrove. Il file /usr/share/applications/defaults.list fornisce le informazioni per i valori di default del sistema. A meno che tu non scelga diversamente, queste sono le applicazioni utilizzate quando apri un file.

    
risposta data dv3500ea 07.12.2010 - 21:51
21

Per completare l'eccellente risposta di dv3500ea, vorrei aggiungere alcune informazioni su cosa succede quando cambi le tue associazioni.

Mentre il file default.list (che puoi trovare digitando 'locate defaults.list') fornisce l'elenco delle applicazioni associate a ciascun tipo MIME, qualsiasi personalizzazione che fai viene memorizzata 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 GNSS Desktop Administration Guide al link non sembra discutere di mimeapps.list , ma ho trovato la seguente descrizione sul link :

  

mimeapps.list si trova in   $ XDG_DATA_DIRS / applicazioni. Suo   lo scopo è aggiungere o rimuovere mime   associazioni da applicazioni.   scrive il nautilus   ~ / .local / share / applications / mimeapps.list   quando l'utente apporta modifiche nel file   Finestra di dialogo "Apri con".

    
risposta data user8979 29.01.2011 - 12:42
12

Ho trovato che sul mio sistema (Debian Jessie) c'è anche un ~/.config/mimeapps.list che aveva un'associazione che ho creato per sbaglio per aprire un tipo di file specifico con gedit. Nessuno dei modi standard per correggere questo problema (le impostazioni dell'applicazione predefinite, la proprietà aperta con di Thunar) lo ha riflesso, ma gedit era l'applicazione predefinita.

Sono stato in grado di rimuovere la riga da ~/.config/mimeapps.list e ora l'applicazione corretta apre il file.

    
risposta data Bryan Leaman 10.01.2015 - 19:24
6

Crea 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>
    
risposta data Blindfreddy 13.03.2012 - 17:32
6

Sono riuscito a impostare un'associazione come questa:

xdg-mime default xnview.desktop image/jpeg

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

Non ho bisogno di eseguire sudo update-desktop-database .

    
risposta data warvariuc 21.06.2015 - 12:00
5

Ho trovato questo collegamento riguardo all'associazione predefinita, potrebbe essere utile. link
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 ordine decrescente. il che significa che desktopfile1 è il più preferito e desktopfileN è il meno preferito.
[Rimosse le associazioni] è usato per rimuovere esplicitamente qualsiasi ereditato in precedenza associazioni.

    
risposta data MusuNaji 23.08.2013 - 10:16
2

mimeapps.list percorso di ricerca

Altri hanno menzionato questo file, ma nessuno ha spiegato con precisione la posizione.

Lo standard freedesktop.org dice in link :

  

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 tali variabili d'ambiente sono forniti al link :

  • $XDG_DATA_HOME : $HOME/.local/share
  • $XDG_CONFIG_HOME : $HOME/.config
  • $XDG_DATA_DIRS : nessuno, aggiunto a XDG_DATA_HOME
  • $XDG_CONFIG_DIRS : nessuno, aggiunto a XDG_CONFIG_HOME

Le versioni precedenti di Ubuntu potrebbero non controllare ~/.config , quindi assicurati di provare anche ~/.local/share .

Comandi come:

 xdg-settings set default-web-browser chromium-browser.desktop
 xdg-settings get default-web-browser

modificherà automaticamente quei file.

    
1

Per tutti gli utenti:

  

/usr/share/applications/defaults.list

Ogni utente ha un file di configurazione per ignorare questi valori predefiniti:

  

~ / .config / mimeapps.list

vedi anche link per i luoghi che potrebbero essere utilizzati per ignorare i defauts.

Devi conoscere il tipo mime del file che vuoi modificare è l'associazione.

Anche tutte le associazioni possono essere gestite - cambiate in riga di comando usando:

  

xdg-mime

    
risposta data Xoristzatziki 02.08.2017 - 09:19
0

Freedesktop.org (precedentemente chiamato X Desktop Group, quindi l'abbreviazione "XDG") è il gruppo che al momento guida gli standard X come questo ( ulteriori informazioni su Wikipedia ).

La risposta di warvariuc menziona già xdg-mime utilizzo come:

xdg-mime default xnview.desktop image/jpeg

Dopo aver giocato molto con editor di immagini e spettatori, ho finito con diversi visualizzatori per diversi tipi di immagini con quasi nessuna coerenza, specialmente tra i tipi di immagini più rari.

Ho preso il comando precedente e l'ho assegnato a ciascuno dei tipi MIME controllati dai visualizzatori di immagini e poi ho creato un nuovo image-viewer.desktop clonandone uno (è 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 quell'applicazione come predefinita per tutti i tipi MIME delle 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

Esamina i file .desktop per ciascuno dei visualizzatori ( Ristretto , Geeqie e GThumb nel mio caso), estrae la definizione MIME (che è preceduta da MimeType= e quindi contiene un elenco delimitato da punto e virgola), rimuove l'etichetta di prefazione (precedentemente abbinata) e divide l'elenco in uno ingresso per linea. sort -u quindi rimuove le linee ridondanti, quindi vengono consegnate a xdg-mime per impostare i nuovi valori predefiniti.

(Se vuoi testarlo prima di eseguirlo dal vivo, modifica xargs in xargs echo e stamperà il comando risultante invece di eseguirlo.)

Questa tecnica dovrebbe funzionare per tutto ciò che desideri recuperare per un'app di destinazione. Non è nemmeno necessario creare un nuovo file .desktop (è possibile utilizzare uno esistente). Ho fatto quel passo in più in modo tale che, quando inevitabilmente cambio la mia fedeltà tra i visualizzatori di immagini, ho semplicemente bisogno di cambiare quel file.

    
risposta data Adam Katz 08.09.2016 - 03:36

Leggi altre domande sui tag