Úvodem
Jak jsem tu už několikrát zmínil, používám linuxový kapesní počítač Ben NanoNote a to jako deníček, úkolníček a kalendář, čtečku RSS, kapesní kalkulačku (i grafickou díky Gnuplotu a Octave) i jako hudební přehrávač a podobně.
Od kapesního počítače ovšem očekávám také běh některých mých vlastních programů, které využívám v práci (při přípravě výuky, písemek a tak), konkrétně program MicroDef, o kterém se píše níže. Ten je grafický a je napsán s využitím knihovny Gtk+. Pokud jsem jako telefon používal Neo Freerunner, tak jsem tento problém neřešil a používal MicroDef zkompilovaný pro FreeRunner. Potom, co jsem se rozhodl začít používat raději "hloupý" telefon (kvůli výdrži a rozměrům), a NanoNote se stal mým jediným kapesním počítačem, bylo nutné situaci nějak řešit.
Software na Ben NanoNote
Problém se má tak: protože Ben je opravdu maličký, má jednak na dnešní poměry relativně omezený hardware (zejména operační paměť o velikosti 32 MiB, procesor architektury MIPS o frekvenci přes 300 MHz bohatě stačí), ale také nemá žádné ukazovací zařízení (myš, trackball, touchpad nebo cokoli podobného) a ovládá se výhradně pomocí klávesnice. Také jeho obrazovka o velikosti 3" a rozlišení 320x240 bodů moc nepřeje náročným grafickým prostředím. Všechny tyto skutečnosti maj vliv na to, jaký software je pro přístroj k dispozici.
V zásadě existují dvě hlavní linuxové distribuce: oficiálně a nejaktivněji podporovaný port OpenWRT a na OpenEmbedded založená distribuce Jlime.
Každá má nějaké výhody a nevýhody. Jlime používá X Window System a správce aplikací Matchbox, což ji činí teoreticky kompatibilní s většinou obvyklého software z linuxových desktopů. Prakticky je problém v rychlosti a odezvě aplikací: větší programy se nevejdou do paměti a i pro běžný běh "lehčích" programů potřebujele swap na disk (zde na microSD kartu, což jistě nesvědší její životnosti). I při používání relativně nenáročných programů to ovšem není "komfortně" rychlé a trochu se to "zadrhává" (občas musíte počkat, než se objeví vložený text, některé písmenko se "ztratí" a jiné zopakuje mnohokrát a tak podobně).
Naopak v OpenWRT není X Windows System obsažen vůbec a všechny programy běží buď v textovém režimu nebo využívají přímo linuxový fremebuffer. Všechno je podstatně rychlejší a plynulé, nevýhodoud ovšem je problém s multitaskingem - textových konzolí je k dispozici dost (přepíná se pomocí alt+1 .. alt+5 nevo alt+šipky vlevo/vpravo), potíž bývá s více grafickými programy. Ale není problém mít spuštěný třeba prohlížeč PDF (nupdf) a několik programů v textovém režimu a tedy například číst si nějaký text a současně si z něj dělat výpisky nebo nahlížet do slovníku (sdcv). Největší výjimkou jsou programy napsané pomcí Qt, ze kterých se nikam přepnout nelze.
Gtk+ na Ben NanoNote
Čistě teoreticky by žádný problém s Gtk+ vzniknout neměl, protože knihovna může fungovat jak pod X Window Systemem, tak ve přímo na linuxovém framebufferu díky DirectFB. Ale jak uživatel linuxového desktopu asi tuší, nebude to tak jednoduché. Zjevný problém je relativní "roztahanost" ovládacích prvků a velikost standardních dialogů. O zbytku se zmíním dále. Jinak Gtk+ programy fungují docela dobře a pro NanoNote je jich k dispozici několik.
Problémem může být, že některé funkce nejsou dostupné z klávesnice (u mě to bylo například zadávání
grafických prvků klikáním na zobrazené body). Takové části programu je potřeba přepsat. A samozřejmě je nutné
mít tam nějakou vlastní klávesovou zkratku (nebo položku v nabídce) pro ukončení programu (žádné Alt+F4 tu nefunguje).
Portování na OpenWRT (Gtk+ na DirectFB)
Jak jsem již psal, Gtk+ zde využívá DirectFB. Funguje to, rychle a spolehlivě, ale mouch se najdou:
- Standardnní dialog pro výběr souboru se na obrazovku prostě nevejde. Používat se dá (reaguje, jak má), ale není vidět, co se děje. Je jedno, zda se použije "zastaralý" typ dialogu (ve Stylu Gtk+ řady 1.0) nebo nový typ, problém je u obou (starý dovedu používat lépe, ale to je asi věc zvyku). Tady je jediné řešení: nahradit vlastním.
- Při kreslení do GtkDrawingArea se mi nepodařilo dosáhnou různé tloušťky čar - všechny byly stejně tlusté. Pro mě je to málo vadící drobnost, ale v pořádku to úplně není.
-
Poslední problém nakonec: nefunguje vkládání čísel. To se na NanoNote zapisuje jako "fn" + písmeno (například |fn|+ "k" pro číslo "5") a to nefunguje (vloží se například to "k"). Přitom modifikátor "červená šipka" pro psaní speciálních znaků funguje normálně. Prozatím jsem to vyřešil tím, že v polích, kde se vkládají čísla, převádím po přečtení příslušná písmena na číslice (tedy třeba to "k" na "5").
Další věc, ze kterou jsem trochu válčil, bylo psaní textů na GtkDrawingArea. Ale to byla moje chyba - používal jsem zastaralé funkce, které jsem musel nahradit použitím knihovny Pango - šlo u úpravu o délce pár řádků.
Portování na Jlime
Tu vlastně není o čem psát - program upravený pro ovládání jen z klávesnice stačí přeložit a používat. I dialogy pro práci se soubory jsou zmenšené na velikost obrazovky a jsou v zásadě použitelné a plně funkční.
Jediný problém je rychlost a odezva celého prostředí.
Závěry
I Gtk+ aplikace de dají portovat, a úspěšně používat, na takové malé věci, jako je Ben NanoNote. Ale zejména v případě systému OpenWRT je nutné trochu víc práce. Každopádně bude nutné program upravit, aby se vešel na obrazovku a aby se dal (pohodlně!) ovládat pouze pomocí klávesnice.
Zde najdete
anglický originál článku.
[Tiskni] [Přidat komentář] [Skrýt komentáře][Tiskni] [Přidat komentář] [Skrýt komentáře]