To lze snadno provést pro single typ souboru, jak je uvedeno v části Jak spojit typ souboru ve Wine s nativní aplikací?, vytvořením .reg
pro požadovaný typ souboru. Ale to je pouze pro AVI. Používám některé aplikace pro víno (uTorrent, Soulseek, Eudora, abychom jmenovali alespoň některé), které mohou spouštět širokou škálu souborů. E-mailové přílohy mohou být například JPG, DOC, PDF, PPS… není možné (a není žádoucí) sledovat všechny možné typy souborů, které lze obdržet v e-mailu nebo stáhnout z torrentu.
Potřebuji tedy řešení, které bude obecnější a širší. Potřebuji, aby přidružení souboru respektovalo jakoukoli nativní aplikaci, která je aktuálně nakonfigurována. A chci, aby to bylo provedeno pro všechny typy souborů nakonfigurované v mém systému.
Už jsem přišel na to, jak udělat řešení generické. Jednoduše nahradíte spuštěnou aplikaci v .reg
pro winebrowser
, takto:
[HKEY_CLASSES_ROOT.pdf]
@="PDFfile"
"Content Type"="application/pdf"
[HKEY_CLASSES_ROOTPDFfileShellOpencommand]
@="C:\windows\system32\winebrowser.exe "%1""
Testoval jsem to a funguje to správně. Protože winebrowser používá xdg-open
jako backend a převede cestu k mému systému Windows na unixovou, spustí se správná (Linuxová) aplikace.
Potřebuji tedy „dávkový“ aktualizátor registru vína, něco jako wine-update-associations
skript, který mohu spustit při každé instalaci nové aplikace. Možná nástroj, který může:
- Vypsat všechny typy Mime v mém systému, které mají výchozí nainstalované přidružená aplikace
- Extrahujte všechny potřebné informace (globus, typ MIME atd.)
- Vygenerujte soubor .REG ve výše uvedeném formátu
Záludná část je:HODNĚ jsem hledal informace o tom, jak se provádí přidružení v Ubuntu 10.10 a novějších, a dokumentace je vzácná a přinejmenším matoucí. Freedesktop.org nemá úplnou specifikaci a dokonce i dokumenty Gnome jsou zastaralé. Zatím jsem nashromáždil 4 soubory, které obsahují informace o přidružení, ale nevím, které (nebo proč) použít nebo jak je použít ke generování .reg
soubor:
~/.local/share/applications/mimeapps.list
~/.local/share/applications/miminfo.cache
/usr/share/applications/miminfo.cache
/etc/gnome/defaults.list
Jakoukoli pomoc, skript nebo vysvětlení bychom velmi ocenili!
Díky!
Přijatá odpověď:
O několik let později jsem vytvořil malý nástroj, který skenuje MIME databázi (systémovou i uživatelskou) a registruje vše známé nativní typy MIME v registru Windows.
Používá xdg-open
k otevření souboru, pokud existuje výchozí (nativní) aplikace pro tento
typ mime, jinak používá packagekit
hledat balíček, který dokáže zpracovat
tento soubor (stejně jako to, co dělá Nautilus). Takže můj původní požadavek na registraci pouze rozšíření, která mají nainstalovanou nativní aplikaci, již nebyl potřeba. Raná verze skriptu však filtrovala pouze takové typy. Úryvek, který to umožnil, byl:
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)
}'
Ve výchozím nastavení můj skript registruje pouze nativní typy, které nemají žádný handler v registru Windows
, ale může také přepsat takové asociace (takže například soubory jpeg
se otevírají v nativním prohlížeči namísto výchozího vína Gecko browser).
Může také ignorovat některá rozšíření, i když nemají v oknech žádný handler.
Snaží se, aby byl winemenubuilder přátelský, což znamená, že všechny asociace, které
vytvoří, nejsou publikovány jako nativní asociace (nebo jako x-wine-extension
mimetypes) nástrojem winemenubuilder, což by bylo ošklivé a potenciálně způsobovalo smyčky. .
To je velmi ošidné a ještě ne dokonalé, zvláště s příponami se smíšenou velikostí písmen
(například .C a .c)
To znamená, že doufám, že tento skript bude užitečný pro každého:
https://github.com/MestreLion/wine-tools/blob/master/wine-import-extensions
Vylepšení vítána!