GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come associare tutti i tipi di file all'interno di Wine con la relativa applicazione nativa?

Questo è facile per un single tipo di file, come risposto in Come associare un tipo di file all'interno di Wine con un'applicazione nativa?, creando un .reg per il tipo di file desiderato. Ma questo è solo per AVI. Uso alcune app per il vino (uTorrent, Soulseek, Eudora, solo per citarne alcune) che possono avviare un'ampia gamma di file. Gli allegati e-mail, ad esempio, possono essere JPG, DOC, PDF, PPS... è impossibile (e non auspicabile) rintracciare tutti i possibili tipi di file che si possono ricevere in un'e-mail o scaricare in un torrent.

Quindi ho bisogno di una soluzione che sia più generica e ampia. Ho bisogno dell'associazione di file per onorare qualsiasi app nativa attualmente configurata. E voglio che questo sia fatto per tutti tipi di file configurati nel mio sistema.

Ho già capito come rendere generica la soluzione. Semplicemente sostituendo l'app avviata in .reg per winebrowser , in questo modo:

[HKEY_CLASSES_ROOT.pdf]
@="PDFfile"
"Content Type"="application/pdf"
[HKEY_CLASSES_ROOTPDFfileShellOpencommand]
@="C:\windows\system32\winebrowser.exe "%1""

Ho provato questo e funziona correttamente. Poiché winebrowser usa xdg-open come back-end e converte il mio percorso di Windows in uno Unix, viene avviata l'app (Linux) corretta.

Quindi ho bisogno di un programma di aggiornamento "batch" per il registro dei vini, una specie di wine-update-associations script che posso eseguire ogni volta che viene installata una nuova app. Forse uno strumento che può:

  • Elenca tutti i tipi di Mime nel mio sistema che hanno un valore predefinito, installato associata all'app
  • Estrai tutte le informazioni necessarie (glob, tipo mime, ecc.)
  • Genera il file .REG nel formato sopra

La parte difficile è:ho cercato MOLTO per trovare informazioni su come viene eseguita l'associazione in Ubuntu 10.10 in poi, e la documentazione è scarsa e confusa, per non dire altro. Freedesktop.org non ha specifiche complete e anche i documenti di Gnome sono obsoleti. Finora ne ho raccolti 4 file che contengono informazioni sull'associazione, ma non ho idea di quale (o perché) utilizzare o come utilizzarli per generare il .reg file:

~/.local/share/applications/mimeapps.list
~/.local/share/applications/miminfo.cache
/usr/share/applications/miminfo.cache
/etc/gnome/defaults.list

Qualsiasi aiuto, script o spiegazione sarebbe molto apprezzato!

Grazie!

Risposta accettata:

Anni dopo, ho creato una piccola utility che scansiona il database MIME (sia di sistema che di utente) e registra tutti tipi MIME nativi conosciuti nel registro di Windows.

Usa xdg-open per aprire un file se esiste un'applicazione predefinita (nativa) per quel
tipo mime, altrimenti usa packagekit per cercare un pacchetto in grado di gestire
quel file (proprio come fa Nautilus). Quindi il mio requisito iniziale di registrare solo le estensioni che hanno un'applicazione nativa installata non era più necessario. Tuttavia, una prima versione dello script filtrava solo questi tipi. Lo snippet che lo ha reso possibile è stato:

perl -e '
    use strict; use warnings;
    use File::MimeInfo::Magic; use File::MimeInfo::Applications;
    while (my $line = <STDIN>) {
      chomp($line);
      my ($ext, $mime) = (split/t/, $line);
      my ($def, @apps) = mime_applications_all($mime);
      print "$linen" if ($def || @apps)
    }'

Per impostazione predefinita, il mio script registra solo i tipi nativi che non hanno un gestore nel registro di Windows
, ma può anche sovrascrivere tali associazioni (quindi, ad esempio, i file jpeg
vengono aperti nel visualizzatore nativo invece del vino Gecko predefinito browser).
Può anche ignorare alcune estensioni anche se non hanno un gestore in Windows.

Correlati:il sistema è in grado di eseguire un sistema operativo a 64 bit?

Fa del suo meglio per essere favorevole a winemenubuilder, il che significa che tutte le associazioni che
crea non vengono pubblicate come associazioni native (o come x-wine-extension
mimetypes) da winemenubuilder, il che sarebbe brutto e potrebbe causare loop .
Questo è molto complicato e non ancora perfetto, specialmente con estensioni miste
(.C e .c per esempio)

Detto questo, spero che questo script sia utile per tutti:

https://github.com/MestreLion/wine-tools/blob/master/wine-import-extensions

Miglioramenti benvenuti!


Ubuntu
  1. Come installare il file deb in Ubuntu (con esempi)

  2. Come duplicare un file senza copiare i suoi dati con Btrfs?

  3. Come far funzionare AutoCAD con Wine?

  4. Come aprire il file .8 con Man?

  5. Come seleziono tutto il testo da un file con nano?

Come gestire i file con Scilab su Ubuntu 15.04

Come leggere un file con spazi in Linux

Come eseguire i comandi del file .sh tutto in una volta in Linux

Come configurare il networking con Netplan su Ubuntu

Come aggiungere collegamenti alle applicazioni su Ubuntu Desktop

Come ottenere il collegamento del file da scaricare con Wget?