GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak spojit všechny typy souborů v rámci vína s jeho odpovídající nativní aplikací?

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.

Související:Je systém schopen spustit 64bitový OS?

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!


Ubuntu
  1. Jak napsat cestu ke složce s mezerou v jejím názvu?

  2. Jak zajistit, aby Autocad pracoval s vínem?

  3. Globálně přiřadit typ souboru k určité aplikaci?

  1. Jak nainstalovat soubor deb v Ubuntu (s příklady)

  2. Jak duplikovat soubor bez kopírování jeho dat pomocí Btrfs?

  3. Jak vyberu veškerý text ze souboru s nano?

  1. Jak otevřít soubor .8 pomocí aplikace Man?

  2. Jak skrýt soubory s konkrétní příponou?

  3. Jak nahradit všechny řetězce v souboru, který začíná nějakou předponou?