SettingsGUI

Das Programm SettingsGUI dient dazu Einstellen auf dem Neo vorzunehmen und zwar über eine grafische Oberfläche. Leider läuft das Programm nicht ohne weiteres auf einem Neo Freerunner (GTA02). Um SettingsGUI zu installieren und zum laufen zu bekommen müssen folgende Schritte unternommen werden:

Im ersten Schritt muss SettingsGUI installiert werden. Dies geschieht durch folgenden Befehl im Terminal:

opkg install settingsgui

Nachdem man SettingsGUI installiert hat muss man in der Datei /usr/lib/python2.5/site-packages/settingsgui/AudioPanel.py die Zeilen 98 und 99 auskommentieren und das ganze speichern. Nun kann man die Anwendung schon über das Terminal starten indem man settings eingibt. Möchte man noch einen Eintrag im Menü so muss man die Datei settingsgui.desktop im Verzeichnis /usr/share/applications erstellen. In dieser Datei sollte folgendes drinstehen:

[Desktop Entry]
Version=0.8
Type=Application
Name=SettingsGUI
Comment=Settings Utility
Categories=Utility
Exec=settings
Icon=SettingsGUI-48.png
Terminal=false
SingleInstance=true

Um den ganzen noch ein Icon zu verpassen brauchen wir das passende Bild im Ordner /usr/share/pixmaps. Dazu geben wir folgenden Befehl im Terminal ein (nachdem wir in das Verzeichnis gewechselt sind):

wget http://www.mput.de/~kristian/.openmoko/SettingsGUI-48.png

Und schon ist das ganze auch im Menü vertreten :)

Weitere Informationen gibt es unter http://wiki.openmoko.org/wiki/SettingsGUI.

Dinge über Linux die ich immer wieder vergesse…

Es gibt so ein paar Dinge und Befehle die ich immer wieder vergesse und dann erstmal wieder minutenlang danach im Internet suche. Aus diesem Grund schreibe ich sie hier mal auf :)

Kernelversion ermitteln
Die Kernelversion ermittelt man, indem man einfach uname -a in die Konsole eingibt.

Rekursiv den Besitzer von Dateien ändern
Möchte man alle Dateien eines Ordners einem anderen Besitzer zu ordnen so benutzt man hierfür den Befehl chown. Um jetzt z.B. alle Dateien welche im Ordner /home/seeseekey/ liegen dem Besitzer robert, der Gruppe users zuzuweisen muss man folgendes eingeben: chown -R -c robert:users /home/seeseekey/.

Mit apt-cache ein Paket suchen
Wenn man mal wieder ein Paket sucht aber nicht genau weiß wie es heißt so hilft apt-cache search Suchbegriff. Das ganze könnte dann z.B. so aussehen: apt-cache search python und schon bekommt man alle Pakete in denen der Name python vorkommt.

E, EFL, Evas und Edje

Zur Zeit belese ich mich gerade über EVAS und Edje welche Teile der Enlightenment Foundation Libraries (EFL) sind. Das ganze dient dazu, mich in die Lage zu versetzen meine erste graphische Anwendung für das Neo zu schreiben. Doch erst einmal hübsch der Reihe nach. Wovon wird hier überhaupt geredet?

Am besten ist es mit Enlightenment zu beginnen. Bei Enlightenment (meist einfach nur E genannt) handelt es sich um einen Fenstermanager für unixoide Systeme. So ein Fenstermanager macht im Grunde nichts anderes Fenster zu verwalten, was ja irgendwie logisch ist. Konkret bedeutet das, dass der Manager Funktionen wie das Minimieren, Vergrößern, Verschieben und Schließen des Fensters bereitstellt. Dies tut der Manager natürlich nicht nur für ein Fenster sondern für alle Fenster.

Enlightenment wurde 1997 ins Leben gerufen und schlief dann irgendwann mit der Version 0.16 ein. Aber dank Open Source wurde Enlightment aus seinem Dornröschenschlaf geweckt. Die neue Version von Englightment hört auf den Namen E17 und befindet sich zur Zeit in der Entwicklung. Für diese Version wurden auch die Enlightenment Foundation Libraries (EFL) geschrieben. Das Schöne an den Enlightenment Foundation Libraries ist das sie ohne Probleme auf Embedded Geräten wie z.B. PDAs und Smartphones benutzt werden können. Unter anderem auf dem Neo Freerunner :)

Damit man einen Überblick über die Enlightenment Foundation Libraries bekommt sollen hier einige der wichtigsten Teile dieser Bibliotheken vorgestellt werden:

Evas
Bei Evas handelt es sich um eine hardwarebeschleunigte Canvas API, welche sich um die graphische Low Level Arbeit kümmert. Evas definiert dabei eine Gruppe von Evas_Objects wie z.B. Rechtecke, Kreise, Bilder und Gradienten. Für diese Objekte können dann Dinge wie die Farbe, der Transperenzgrad etc. zugewiesen werden. Evas das ganze dann in die Primitive um und zeichnet das ganze. Allerdings habe ich zwei Quellen gefunden die jeweils das gegensätzliche behaupten. Die Enlightment Wiki behauptet das Evas das ganze in X11 Primitive zerlegt und zeichnet während die andere Quelle besagt das Evas diese Objekte in ein Bild zeichnet und dieses Bild letztendlich anzeigt.

Ecore
Bei Ecore handelt es sich wie der Name bereits erraten läßt um die Kernbibliotheken der Enlightenment Foundation Libraries. Diese Bibliotheken enthalten Dinge wie Events, Timer, IPC und Ecore_Evas welches die Erzeugung eines Evas Canvas wrappt und das ganze unter einer einfachen API bereitstellt.

EET
Bei EET handelt es sich um eine Bibliothek zum Speichern von beliebigen Datenchunks in einer Datei. Optional können diese Chunks auch automatisch komprimiert werden. Diese EET Dateien eignen sich am besten für Daten welche oft gelesen aber relativ selten geschrieben werden müssen.

Edje
Edje ist die grafische Design und Layoutbibliothek man könnte das ganze auch Theming Engine nennen, ganz einfach aus dem Grund, das jede Anwendung welche Edje benutzt automatisch für Skins vorbereitet ist. Technisch gesehen liefert Edje (welche auf dem Evas Canvas aufbaut) eine Abstraktionsebene zwischen dem Interface und dem Code, sprich Code und Interface sind sauber voneinander getrennt. Dies erlaubt sehr flexible Layouts und Animationen. Edje kombiniert dabei komplexe Evas Objekte in ein einzelnes Objekt. Dieses Edje_Object kann dabei genauso behandelt werden wie die Evas Primitive.

Ich denke diese vier Bibliotheken sind für den Anfang das wichtigste. Wer mehr Informationen dazu sucht, findet diese unter http://wiki.enlightenment.org/. Vielleicht schreibe ich demnächst mal einen Artikel wie man das ganze in Verbindung mit Python benutzt (sobald ich herausbekommen habe wie es funktioniert).

Monty wie funktioniert das?

Das ich grade dabei bin mir Python anzueignen damit ich ein paar Anwendungen für mein Freerunner schreiben kann, habe ich mir dazu ein wenig Dokumentation besorgt. Die möchte ich natürlich niemandem vorenthalten :)

http://wiki.python.de/ – Eine deutsche Python Wiki
http://www.python-forum.de/ – Ein Python Forum
http://abop-german.berlios.de/ – A Byte of Python
http://ada.rg16.asn-wien.ac.at/~python/how2think/ – Wie ein Informatiker denken lernen mit Python
http://starship.python.net/crew/gherman/publications/tut-de/tut-de-21.pdf – Deutsches Tutorial
http://www.galileocomputing.de/openbook/python/ – Galileo Openbook

Und hier noch ein Link von josch: http://xkcd.com/353/ :)

Viel Spaß damit :)

Der Openmoko Paketmanager Opkg

Der Openmoko Paketmanager Opkg basiert auf dem Paketmanager Ipkg und ist ein Fork desselben. Mit dem Paketmanager ist es möglich Pakete auf dem System zu installieren. Damit das funktioniert sollte das Gerät einen Netzzugang haben. Ob dieser Netzzugang über GPRS, WLAN oder über USB erfolgt ist dabei nebensächlich.

Zuerst einmal sollte man opkg update ausführen. Damit holt sich der Paketmanager eine neue Liste der Pakete sowie derer Abhängigkeiten.

Um mit dem Paketmanager eine Anwendung zu installieren gibt man folgendes ein:

opkg install (Paketname)
z.B. opkg install python

Möchte man ein Paket installieren welches man heruntergeladen hat so muss man folgendes eingeben:

opkg python.ipk

Um ein Paket zu entfernent ersetzt man das install durch ein remove. Ist man auf der Suche nach einem bestimmten Paket z.B. einem Paket in welchem der Name ecore auftaucht so muss man folgendes eingeben:

opkg list | grep ecore

Der Befehl opkg list listet das ganze auf und mittels grep wird dann jeder Eintrag herausgefiltert in welchem die Zeichenkette ecore vorkommt.

Möchte man einfach Schrittweise eine Liste der Pakete angezeigt bekommen so hilft folgendes:

opkg list | less

Weitere Informationen gibt es unter:
http://wiki.openmoko.org/wiki/Opkg
http://wiki.openmoko.org/wiki/Package_management