asociace souboru v kdePři vývoji jednoho školního projektu jsem narazil na problém jak zjistit, které programy jsou asociované na daný typ souboru. Situace bohužel tak jednoduchá jak by se mohlo na první pohled zdát.

Problém je v tom, že používám toolkity, které prostě v sobě nemají černou skříňku, která by to řešila nezávisle na operačním systému. Popravdě řečeno neznám toolkit, který by tohle nějakým způsobem řešil.

Takže jsem začal zjišťovat jak tohoto v linuxu dosáhnout a zjistil jsem, že současný stav je naprosto katastrofální. Každý program bohužel tento program řeší po svém.

– v mém oblíbeném midnight commanderu je extension file (/.mc/bindings)
– v KDE jsou asociace řešené nějak v konqueroru, ale nepodařilo se mi vygooglovat jak to použít.
– v jádře je modul binfmt_misc, který se něco takového snaží řešit, ale z nějakého důvodu se to nepoužívá (aspoň ne v kubuntu)
– dalším řešením by mohli být nějaké univerzální skripty, jako je ‘sensible-editor’ (sensible-*) v debianu.

Jak to resi gnome? Nevim.

Každopádně si myslím, že by si tohle téma zasloužilo nějaké robustní řešení, které by se používálo nezávisle na použítém okením manažeru.

Představoval bych si něco postavené na DBUSu s těmito vlastnostmi:
– možnost získat seznam alternativních asociovaných programů
– možnost vytáhnout si k tomu i ikonku (v několika rozlišeních)
– možnost uživatelského nastavení (- ja používam firefox, spolubydla operu)
– aby se to dalo snadno zaintegrovat v kde, gnome jiných okeních manažerech
– aby tam možnost zjištění dalších parametrů

Možná jsem špatně hledal a některé z výsě zmíněných řešení jsou použitelné. V tom případě uvítam každy relevantní link na danou tématiku.

[poll=6]

Loading

By Jozef Mlích

Software Developer at GreyCortex, NemoMobile contributor, Micro light aircraft pilot, OpenAlt Conference organizer

8 thoughts on “Programy asociované k typu souborů”
  1. O něco podobného se snaží freedesktop.org. Více informací je na http://www.freedesktop.org/wiki/Standards_2fmime_2dactions_2dspec .

    Nicméně současná situace je opravdu otřesná. Doufám, že se to časem zlepší. U jednoho projektu jsme to řešili tak, že jsme vždy otevírali browser a ten nabídl otevření ve správném programu. To bylo jediné přenositelné (Linux a Windows).


    Pozn.: binfmt se používá pro pouštění souborů. Tj. takto lze např. zařídit, aby šli pouštět soubory s příponou .jar v Javě nebo .exe ve Wine.

  2. V Qt 4.2 je trieda QDesktopServices s metodami openUrl, setUrlHandler a unsetUrlHandler. Nie je to ktovie co, ale funguje to multiplatformovo a vie si to zistit asociacie.

  3. Toto resi mailcap. Pouzivaji to snad vsechny programy: browsery, KDE, gnome, midnight commander, browsery, etc.

    Docela nechapu jak je mozne pri "zjistovani" mailcap zcela vynechat.

  4. KDE, GNOME a většina dalších prostředí používá Shared MIME Info společně s desktop soubory.

    Je to zcela transparentní. jen to není asociace, jak jí znáte z Windows. Správce souborů si musí vybrat z možností, které se mu nabízejí.

    Starší aplikace používají /etc/mailcap + /etc/mime.types, který není tak pružný, protože vyžaduje editaci konfiguračních souborů pro každou novou aplikaci nebo typ souboru.

    Programátor má ve většině distribucí k dispozici jednoduché spouštěče podle těchto databází (gnome-open, browser-launch,…)

    To, že si to spousta aplikací řeší po svém (třeba mc), je jiná věc.

  5. Ale co vim, tak mailcap jen poskytuje pristup do databaze MIME typu a k nim asociovanych aplikaci. Ale jakym zpusobem se da zjistit MIME type souboru?

Comments are closed.