Debian
Wenn man dazu tendiert sich ungern zu beschränken und im Zweifelsfall lieber alles möchte, sollte man wohl nicht mit einem FS mit weniger als 1GB anfangen. Ob eine benutzbare Installation mit 250MB (also im NAND-Flash) möglich ist ist ungetestet. Wahrscheinlich kann man aber mit gutem Gewissen auf jeden Fall eine Installation auf eine möglichst grosse microSD empfehlen. Die SD-Card am Desktop oder Notebook zu partitionieren, formatieren, und per install.sh Debian darauf zu installieren dürfte auch bequemer sein…
Das install.sh des DebianOnFreeRunner Projekts unterstützt leider keine Installation mit dem Kernel im Rootfs. Mit diesem mutierten install.sh funktioniert das.
ext2load (um den Kernel aus einem ext2-FS zu lesen) wird erst von halbwegs neuen UBoot-Versionen (so etwa ab August 2008) supportet.
Ein entsprechender UBoot-Env Eintrag (Kernel im ext2-Rootfs = 1. Partition auf SD-Card) würde in etwa so aussehen:
setenv menu_1 Boot from microSD partition 1 (ext2): setenv bootargs \${bootargs_base} rootfstype=ext2 root=/dev/mmcblk0p1 rootdelay=5 \${mtdparts} ro\; mmcinit\; ext2load mmc 1:1 0x32000000 /boot/uImage\; bootm 0x32000000
Das ganze ist ein Mix aus unstable und experimental tree. Kann also durchaus passieren dass zeitweise die Installation z.B. wegen Dependency-Problemen fehlschlägt. Einfach später nochmal probieren.
Kernel
Am einfachsten klaut man sich wohl den aktuellen Openmoko-Kernel.
Location im UBoot-Env Booteintrag eintragen nicht vergessen (oder besser um den Default zu benutzen einfach /boot/uImage zum Kernel Symlinken)
Issues
usbcore, usbnet, cdc_ether
- usb0 ist immer UP. Ohne Link sollte das Interface aber DOWN gehen. Konsequenz ist dass bei fehlendem Link das Interface nicht dekonfiguriert wird, und bei neuem Link nicht neu konfiguriert wird - muss man manuell mit ifdown usb0 und ifup usb0 machen. Nervt.
- Die cpufreq modules scheinen zu fehlen? Eigentlich kaum zu glauben, bei 'nem Akkusensiblen Embedded-System!?
ALSA WM8753 Module
- Ob der WM8753 Mixing in Hardware supportet ist unklar. Das ALSA-Module dafür jedenfalls offenbar (noch) nicht? Wäre allerdings ein nicht ganz uninteressanter Punkt, da ALSA dmix (Software Mixing) nicht so performt dass das auf dem Neo wirklich brauchbar wäre…
Timezone
Timezone ist per default UTC.
Ändern mit: dpkg-reconfigure tzdata
USB Networking
Generell ist wohl eine dhcp Konfiguration von usb0 eine gute Idee.
/etc/network/interfaces
auto usb0 iface usb0 inet dhcp
GSM-Terminal
Um den Aufruf eines GSM-Terminals (möglicherweise via Mux) zu vereinfachen:
gsmterminal.sh
#!/bin/sh # # gsmterminal.sh This shell script starts a gsm terminal PATH=/bin:/usr/bin:/sbin:/usr/sbin GSM_DEV="/dev/ttySAC0" [ -f /etc/default/rcS ] && . /etc/default/rcS [ -f /etc/default/gsmd ] && . /etc/default/gsmd pid="`fuser "$GSM_DEV"`" if [ -n "$pid" ] && [ "`ps -o comm --no-heading -p $pid`" == "gsm0710muxd" ]; then tty="`dbus-send --system --print-reply --type=method_call --dest=org.pyneo.muxer /org/pyneo/Muxer org.freesmartphone.GSM.MUX.AllocChannel string:terminal | grep '^[ ]*string' | sed 's/^[ ]*string "\(.*\)"$/\1/'`" else [ -n "$GSM_POW" ] && ( echo "0" >"$GSM_POW"; sleep 1 ) [ -n "$GSM_POW" ] && ( echo "1" >"$GSM_POW"; sleep 1 ) [ -n "$GSM_RES" ] && ( echo "1" >"$GSM_RES"; sleep 1 ) [ -n "$GSM_RES" ] && ( echo "0" >"$GSM_RES"; sleep 2 ) tty="$GSM_DEV" fi screen "$tty" pid="`fuser "$GSM_DEV"`" if [ -z "$pid" ] || [ "`ps -o comm --no-heading -p $pid`" != "gsm0710muxd" ]; then [ -n "$GSM_POW" ] && echo "0" >"$GSM_POW" fi
PPP
Eine Art pppd-wrapper-daemon der dafür sorgt dem pppd immer ein tty zur Verfügung zu stellen.
/etc/ppp/gsmpppd.sh
#!/bin/sh # # gsmpppd.sh This shell script starts a gsm pppd PATH=/bin:/usr/bin:/sbin:/usr/sbin GSM_DEV="/dev/ttySAC0" [ -f /etc/default/rcS ] && . /etc/default/rcS [ -f /etc/default/gsmd ] && . /etc/default/gsmd [ -f /etc/default/pppd ] && . /etc/default/pppd if [ "$gsmpppd_phase" != "2" ]; then gsmpppd_phase="2" export gsmpppd_phase $0 & exit 0 fi; # making the shell send signals it receives to its children, too, would be # great... we could forget about signal handlers, would not have to care about # children pids, and would not have to detach pppd and then wait for it... sig_handler() { trap "" $1 # i don't know why, but at least TERM is signalled twice? logger gsmpppd.sh: signal $1 received #for i in `jobs -p`; do # does not work with ash - would work with bash for i in $gsmpppd_children; do logger gsmpppd.sh: sending child process $i signal $1 kill -$1 $i done exit 0 } trap "sig_handler HUP" SIGHUP trap "sig_handler INT" SIGINT trap "sig_handler QUIT" SIGQUIT trap "sig_handler KILL" SIGKILL trap "sig_handler TERM" SIGTERM while true; do pid="`fuser "$GSM_DEV"`" if [ -n "$pid" ] && [ "`ps -o comm --no-heading -p $pid`" == "gsm0710muxd" ]; then tty="`dbus-send --system --print-reply --type=method_call --dest=org.pyneo.muxer /org/pyneo/Muxer org.freesmartphone.GSM.MUX.AllocChannel string:pppd | grep '^[ ]*string' | sed 's/^[ ]*string "\(.*\)"$/\1/'`" else [ -n "$GSM_POW" ] && ( echo "0" >"$GSM_POW"; sleep 1 ) [ -n "$GSM_POW" ] && ( echo "1" >"$GSM_POW"; sleep 1 ) [ -n "$GSM_RES" ] && ( echo "1" >"$GSM_RES"; sleep 1 ) [ -n "$GSM_RES" ] && ( echo "0" >"$GSM_RES"; sleep 2 ) tty="$GSM_DEV" fi # as the following two lines are non-atomic, this qualifies as 'ugly' /usr/sbin/pppd file "/etc/ppp/$PPP_FILE.options" connect "chat -v -f /etc/ppp/default.chat -T '$PPP_PHONE' -U '$PPP_APN'" <"$tty" 1>&0 & gsmpppd_children="$gsmpppd_children $!" wait done
/etc/init.d/pppd
#!/bin/sh # # pppd This shell script starts and stops pppd. # # chkconfig: 345 90 40 # description: Pppd manages an ip link via a serial device, in this case a gsm data connection # processname: pppd PATH=/bin:/usr/bin:/sbin:/usr/sbin GSM_DEV="/dev/ttySAC0" [ -f /etc/default/rcS ] && . /etc/default/rcS [ -f /etc/default/gsmd ] && . /etc/default/gsmd case "$1" in start) echo -n "Starting PPP daemon: " start-stop-daemon -S -x /etc/ppp/gsmpppd.sh if [ "$?" == "0" ]; then echo "pppd." else echo "(failed.)" fi ;; stop) echo -n "Stopping PPP daemon: " #start-stop-daemon -K -x /etc/ppp/gsmpppd.sh # start-stop-daemon won't find it because it's just an argument to its interpreter pkill gsmpppd.sh pid="`fuser "$GSM_DEV"`" if [ -z "$pid" ] || [ "`ps -o comm --no-heading -p $pid`" != "gsm0710muxd" ]; then [ -n "$GSM_POW" ] && echo "0" >"$GSM_POW" fi echo "pppd." ;; restart|force-reload) $0 stop $0 start ;; *) echo "Usage: /etc/init.d/pppd {start|stop|restart|force-reload}" exit 1 ;; esac exit 0
/etc/ppp/flat.options
lock noauth crtscts lcp-echo-failure 3 lcp-echo-interval 20 noipdefault usepeerdns defaultroute replacedefaultroute
/etc/ppp/demand.options
(ungetestet, insbes. der active-filter dürfte wohl unter 'symbolische notation' fallen…)
lock noauth demand idle 20 active-filter ( outbound dst port 53 ) or ( outbound tcp dst ( port 443 or port 80 or port 25 or port 22 ) or ( inbound tcp src ( port 443 or port 80 or port 25 or port 22 ) ) crtscts lcp-echo-failure 3 lcp-echo-interval 20 noipdefault usepeerdns defaultroute replacedefaultroute
/etc/ppp/default.chat
TIMEOUT 15 "" "\K\K\K\d+++ATH" OK-AT-OK ATZ OK ATE1 OK AT+CFUN? +CFUN:\s1-AT+CFUN=1-OK AT+COPS? +COPS:\s0-AT+COPS=0-OK AT+CGDCONT=1,\"IP\",\"\U\" OK ATD\T ABORT BUSY ABORT DELAYED ABORT "NO CARRIER" ABORT "NO ANSWER" ABORT "NO DIALTONE" ABORT VOICE ABORT ERROR ABORT RINGING TIMEOUT 60 CONNECT ""
/etc/default/pppd
(Die jeweiligen Werte durch die für den jeweiligen GSM Provider passenden Werte ersetzen - dieses Beispiel ist für EPlus und -Reseller)
PPP_PHONE="*99#" PPP_APN="internet.eplus.de" PPP_FILE="flat"
Falls für den GPRS-Zugang PAP oder CHAP Authentifizierung notwendig ist, noch die jeweiligen Daten in /etc/ppp/pap-secrets oder /etc/ppp/chap-secrets eintragen. Z.B. so (wieder EPlus und -Reseller, in dem Fall chap-secrets):
* "eplus" "gprs" *
Die PPP-Connection kann dann also mit /etc/init.d/pppd gestartet und gestoppt werden. PPP_FILE=“flat” ist gedacht als 'always on' Variante. Ohne Daten-Flatrate sicher nicht zu empfehlen. PPP_FILE=“demand” ist gedacht als 'on demand' Variante - ist aber ungetestet und funktioniert mit an Sicherheit grenzender Wahrscheinlichkeit nicht oder nicht so wie man das will, d.h. man kann davon ausgehen dass bei Benutzung die Welt untergeht.
Automatisches Starten via Init ist allerdings wohl eine schlechte Idee. Der pppd wird die GSM-Serielle benutzen, da der gsm0710muxd erst später gestartet wird - bzw. würde, da das tty belegt ist wird das nicht funktionieren. D.h. will man den pppd automatisch starten, sollte man das tun nachdem der gsm0710muxd gestartet wird (der wird das irgendwie über . Ohne Flatrate will man das alles aber vielleicht sowieso lieber manuell machen…
NTP
apt-get install ntp
Damit wird mit einer Handvoll default Timeserver gesynced.
Issues
- Falls dhcp einen timeserver liefert, sollte der per ntpdc addpeer oder addserver hinzugefügt (und ggf. wieder entfernt) werden. Hinweise wie das ohne keyid geht sehr willkommen.
FSO/Zhone
Um mit FSO/Zhone zu beginnen, sollte man folgende Pakete installieren:
apt-get install dbus-x11 fso-config-gta02 fso-sounds-none fso-sounds-openmoko-nonfree hicolor-icon-theme libgtk2.0-bin
Issues
- PIN-Dialog lässt sich wieder nicht direkt aufrufen. Wenn Zhone als (Autostart) Applikation gestartet wird passt das wohl (ggf. Zhone beenden, neustarten → PIN-Dialog).
- Kalender funktioniert irgendwie nie. Macht nix, gehört IMHO nicht wirklich in 'ne GSM-Applikation.
Matchbox
Um das Matchbox-Panel (wie bei den Openmoko-Distributionen) und die -Tastatur (wie bei Openmoko2007), zusätzlich noch einen Application-Launcher zu benutzen, folgende Pakete installieren:
apt-get install matchbox matchbox-panel matchbox-panel-manager matchbox-keyboard matchbox-desktop
/etc/X11/Xresources/matchbox
matchbox.theme: x matchbox.titlebar: no matchbox.cursor: no
Das eigene Theme (hier: x) gehört nach:
/usr/share/themes/x
und die zugehörigen Icons nach:
/usr/share/icons/x
(⇒ jeweils default nach x kopieren und je nach Geschmack anpassen)
Ein deutsches Keyboard-Layout:
/usr/share/matchbox-keyboard/keyboard.xml
<?xml version="1.0" encoding="UTF-8"?> <keyboard> <!-- DE keyboard layout by x <x@muc.ccc.de> --> <options> <!-- not yet implemented --> </options> <layout id="de keyboard"> <!-- <row> <key> <default display="ヂ" /> </key> <key> <default display="Ӫ" /> </key> <space width="1500" /> <key fill="true"> <default display="⠿" /> </key> </row> --> <row> <space width="500" extended="true"/> <key fill="true"> <default display="Esc" action="escape" /> </key> <key> <default display="^" /> <shifted display="°" /> </key> <key> <default display="1" /> <shifted display="!" /> </key> <key> <default display="2" /> <shifted display='"' /> <mod1 display="²" /> </key> <key> <default display="3" /> <shifted display="§" /> <mod1 display="³" /> </key> <key> <default display="4" /> <shifted display="$" /> </key> <key> <default display="5" /> <shifted display="%" /> </key> <key> <default display="6" /> <shifted display="&" /> </key> <key> <default display="7" /> <shifted display="/" /> <mod1 display="{" /> </key> <key> <default display="8" /> <shifted display="(" /> <mod1 display="[" /> </key> <key> <default display="9" /> <shifted display=")" /> <mod1 display="]" /> </key> <key> <default display="0" /> <shifted display="=" /> <mod1 display="}" /> </key> <key> <default display="ß" /> <shifted display="?" /> <mod1 display="\" /> </key> <key> <default display="´" /> <shifted display="`" /> </key> <key fill="true"> <default display="⟵" action="backspace"/> <mod1 display="Del" action="delete"/> </key> <space width="500" extended="true"/> <key width="4000" extended="true"> <default display="Home" action="home"/> </key> <key width="4000" extended="true"> <default display="PgUp" action="pageup"/> </key> <space width="500" extended="true"/> </row> <row> <space width="500" extended="true"/> <key width="2500"> <default display="⇥" action="tab"/> <shifted display="⇤" action="tab"/> </key> <key obey-caps='true'> <default display="q" /> <shifted display="Q" /> <mod1 display="@" /> </key> <key obey-caps='true'> <default display="w" /> <shifted display="W" /> <mod1 display="ε" /> </key> <key obey-caps='true'> <default display="e" /> <shifted display="E" /> <mod1 display="€" /> </key> <key obey-caps='true'> <default display="r" /> <shifted display="R" /> <mod1 display="ρ" /> </key> <key obey-caps='true'> <default display="t" /> <shifted display="T" /> <mod1 display="τ" /> </key> <key obey-caps='true'> <default display="z" /> <shifted display="Z" /> <mod1 display="ζ" /> </key> <key obey-caps='true'> <default display="u" /> <shifted display="U" /> </key> <key obey-caps='true'> <default display="i" /> <shifted display="I" /> <mod1 display="ι" /> </key> <key obey-caps='true'> <default display="o" /> <shifted display="O" /> <mod1 display="ω" /> </key> <key obey-caps='true'> <default display="p" /> <shifted display="P" /> <mod1 display="π" /> </key> <key obey-caps='true'> <default display="ü" /> <shifted display="Ü" /> <mod1 display="ψ" /> </key> <key> <default display="+" /> <shifted display="*" /> <mod1 display="~" /> </key> <!-- key fill="true"> <default display="#" /> <shifted display="'" /> </key --> <key fill="true"> <default display="⏎" action="return" /> </key> <space width="500" extended="true"/> <key width="4000" extended="true"> <default display="End" action="end"/> </key> <key width="4000" extended="true"> <default display="PgDn" action="pagedown"/> </key> <space width="500" extended="true"/> </row> <row> <space width="500" extended="true"/> <key width="3500"> <default display="⇩" action="modifier:caps"/> </key> <key obey-caps='true'> <default display="a" /> <shifted display="A" /> <mod1 display="α" /> </key> <key obey-caps='true'> <default display="s" /> <shifted display="S" /> <mod1 display="σ" /> </key> <key obey-caps='true'> <default display="d" /> <shifted display="D" /> <mod1 display="δ" /> </key> <key obey-caps='true'> <default display="f" /> <shifted display="F" /> <mod1 display="φ" /> </key> <key obey-caps='true'> <default display="g" /> <shifted display="G" /> <mod1 display="γ" /> </key> <key obey-caps='true'> <default display="h" /> <shifted display="H" /> <mod1 display="η" /> </key> <key obey-caps='true'> <default display="j" /> <shifted display="J" /> </key> <key obey-caps='true'> <default display="k" /> <shifted display="K" /> <mod1 display="κ" /> </key> <key obey-caps='true'> <default display="l" /> <shifted display="L" /> <mod1 display="λ" /> </key> <key obey-caps='true'> <default display="ö" /> <shifted display="Ö" /> <mod1 display="Ω" /> </key> <key obey-caps='true'> <default display="ä" /> <shifted display="Ä" /> <mod1 display="θ" /> </key> <key> <default display="#" /> <shifted display="'" /> </key> <key fill="true"> <default display="⏎" action="return" /> </key> <space width="500" extended="true"/> <space width="4000" extended="true" /> <space width="4000" extended="true" /> <space width="500" extended="true"/> </row> <row> <space width="500" extended="true"/> <key width="2000"> <default display="⇧" action="modifier:shift"/> </key> <key> <default display="<" /> <shifted display=">" /> <mod1 display="|" /> </key> <key obey-caps='true'> <default display="y" /> <shifted display="Y" /> <mod1 display="υ" /> </key> <key obey-caps='true'> <default display="x" /> <shifted display="X" /> <mod1 display="ξ" /> </key> <key obey-caps='true'> <default display="c" /> <shifted display="C" /> <mod1 display="χ" /> </key> <key obey-caps='true'> <default display="v" /> <shifted display="V" /> </key> <key obey-caps='true'> <default display="b" /> <shifted display="B" /> <mod1 display="β" /> </key> <key obey-caps='true'> <default display="n" /> <shifted display="N" /> <mod1 display="ν" /> </key> <key obey-caps='true'> <default display="m" /> <shifted display="M" /> <mod1 display="µ" /> </key> <key> <default display="," /> <shifted display=";" /> </key> <key> <default display="." /> <shifted display=":" /> </key> <key> <default display="-" /> <shifted display="_" /> </key> <key fill="true"> <default display="⇧" action="modifier:shift"/> </key> <space width="500" extended="true"/> <space width="4000" extended="true" /> <space width="4000" extended="true" /> <space width="500" extended="true"/> </row> <row> <space width="500" extended="true"/> <key> <!-- default display="[->]" action="modifier:layout"/ --> <default display="Pse" action="pause"/> <shifted display="Scr" action="scrolllock"/> <mod1 display="SRq" action="sysreq"/> </key> <key fill="true"> <default display="Ctrl" action="modifier:ctrl"/> </key> <key> <default display="☮" action="modifier:mod2"/> </key> <key> <default display="Alt" action="modifier:alt"/> </key> <key width="12000"> <default display=" " action="space" /> </key> <key> <default display="AGr" action="modifier:mod1"/> </key> <key> <default display="↑" action="up" /> <mod1 display="Pg↑" action="pageup" /> </key> <key> <default display="↓" action="down" /> <mod1 display="Pg↓" action="pagedown" /> </key> <key> <default display="←" action="left" /> <mod1 display="Hom" action="home"/> </key> <key> <default display="→" action="right" /> <mod1 display="End" action="end"/> </key> <space width="500" extended="true"/> <space width="4000" extended="true" /> <space width="4000" extended="true" /> <space width="500" extended="true"/> </row> </layout> </keyboard>
Hinweise wie man die Enter-Tasten über die zwei Rows hinweg zu einer machen kann wären sehr erwünscht
Keybindings lassen sich in /etc/matchbox/kbdconfig konfigurieren.
Per Installation wird X mit Zhone (/usr/bin/zhone-session) via /etc/init.d/zhone-session gestartet. Um X mit Matchbox zu starten sollte man die S*zhone-session und K*zhone-session Links aus den /etc/rc*.d entfernen,
for i in 0 1 6; do mv /etc/rc$i.d/K20zhone-session /etc/rc$i.d/xK20zhone-session; done for i in 2 3 4 5; do mv /etc/rc$i.d/S20zhone-session /etc/rc$i.d/xS20zhone-session; done
und X mit /usr/bin/matchbox-session starten. Am einfachsten wohl /etc/init.d/zhone-session nach /etc/init.d/matchbox-session kopieren, PROG_FSO auf /usr/bin/matchbox-session setzen, und S*matchbox-session/ / (rcs 2, 3, 4, 5) und / /K*matchbox-session (rcs 0, 1, 6) Links in den jeweiligen /etc/rc*.d setzen.
for i in 0 1 6; do ln -s ../init.d/matchbox-session /etc/rc$i.d/K20matchbox-session; done for i in 2 3 4 5; do ln -s ../init.d/matchbox-session /etc/rc$i.d/S20matchbox-session; done
Die default-Session ist etwas spärlich, dem sollte folgendes abhelfen:
/etc/matchbox/session
#!/bin/sh gnome-screensaver & gnome-power-manager & zhone & matchbox-desktop & matchbox-panel --orientation north & matchbox-keyboard-toggle & exec matchbox-window-manager $@
Issues
- Die Panel Orientation sollte ebenfalls per Xresources konfigurierbar sein.
- Es liegt wohl nahe das Panel für die X-Session zu benutzen. Dann möchte man für div. Services (z.B. matchbox-keyboard-toggle, gnome-screensaver, gnome-power-manager, gnome-volume-manager, zhone, …) geeigneterweise ein Autostart vom Panel beutzen. Dazu würde sich ~/.matchbox/mbdock.session anbieten (btw auch für die Panel-Icon-Positionierungs-Sache) - leider funktioniert das nicht, alles ausser den mb-applet-* Apps wird darüber nicht gestartet…
- Das Clock-Applet benutzt als Font-Farbe offenbar fix #000000. Sollte aber PanelFgColor aus dem Theme nehmen… Datumsformat (Datum/Zeit, 24h, Sekunden) sollte konfigurierbar sein.
- Das matchbox-keyboard-toggle Applet (python, btw) dockt nicht ins Panel.
- matchbox-keyboard liefert für ein Shift-Tab (Left-Tab) offenbar nur Tab.
- Folgende Applets fehlen: Tasklist (Title Anzeige der aktuellen Applikation im Panel, Menü mit Liste aller laufenden X-Applikationen und Desktop/Root, möglichst (optional) fingerfreundlich fullscreen), GSM, BT, USB, 'Sanduhr-Ersatz'
- mb-applet-battery funktioniert nicht (aber man will eigentlich eh lieber gnome-power-manager).
- matchbox-desktop widersetzt sich allen Konfigurationsversuchen. Es verwendet fix das Raleigh Theme, hört nicht auf matchbox-remote, und auch –bg setzen per Commandline funktioniert nicht.
- matchbox-desktop benutzt wohl das Root-Window. Und das auf der gesamten Screengrösse - was schlecht ist, da Panel und ggf. Keyboard damit einen Teil verdecken. Falls das Beschränken auf den Teil zwischen Panel und Keyboard mit dem Root-Window nicht machbar ist, wäre ein normales Fenster - fullscreen - genauso gut.
Screensaver, Powermanager
Die Screensaver-/Locking-/Powermanagementfunktionalität des FSO-Frameworkd stört eigentlich sobald man nicht ausschliesslich Zhone, sondern verschiedene X Applikationen benutzen möchte.
In dem Fall möchte man ebendiese Aufgaben von einer X Lösung erledigt bekommen, z.B. dem gnome-screensaver und dem gnome-power-manager, letzterer dockt sich auch ans Panel.
Dazu folgende Pakete installieren:
apt-get install gnome-screensaver gnome-power-manager
Um die besagte Funktionalität beim Frameworkd auszuschalten, folgende Parameter in der angegebenen Sektion hinzufügen:
/etc/frameworkd.conf
[odeviced.idlenotifier] # configure timeouts (in seconds) here. A value of 0 # means 'never fall into this state' (except programatically) idle = 0 idle_dim = 0 idle_prelock = 0 lock = 0 suspend = 0
Issues
- Das Panel-Icon lässt sich zwar mittels matchbox-panel-manager positionieren, bei einem Neustart wird's aber wieder an der default-Position platziert.
- gnome-screensaver lässt bei uid 0 kein Locking zu. In einem singleuser-Fall wie auf dem Neo ist das eher kontraproduktiv.
- Die Zeiten sollten sowohl im gnome-screensaver als auch im gnome-power-manager in Sekundengranularität konfigurierbar sein. Schieberegler sind eh doofer als Felder in denen man das Intervall eingeben kann.
- Der Countdown der 'Discharging' Notification des gnome-power-manager zählt nicht runter.
- Als Unlockingmechanismus wünscht man sich eigentlich auch so Dinge wie die 1-2-3-4 Buttons, den Moko-Ball, andere Gestures, etc… z.Zt. supportet gnome-screensaver aber wohl nur die standard Passwort-Abfrage.
- Die Dim-Geschwindigkeit sowie die einzelnen Helligkeitslevel (die reduce backlight when on battery option funktioniert btw nicht) sollten konfigurierbar sein.
- Das Panel-Icon-Menü sollte einen Eintrag haben um eine (konfigurierbare) Konfigurationsapplikation zu starten.
- Eigentlich sollten gnome-screensaver und gnome-power-management eins sein, funktionsmässig gehören die zam, und die Trennung führt nur zu komischen Dingen wie Blanking das sowohl im Screensaver als auch im Powermanagement (unterschiedlich) konfiguriert werden kann/muss…
Terminal
Mind. zwecks Themeing empfiehlt sich auch hier gnome-terminal. Das ist dann hübsch und gut benutzbar - hat aber im Vergleich zu xterm oder rxvt o.ä. einen relativ riesigen (wenn auch wohl grade noch erträglichen) Memory-Footprint…
Volumecontrol
Als Volume-Control Panel-Applikation empfiehlt sich gnome-volume-manager. Leider dockt der nicht ans Panel, womit er derzeit nicht brauchbar ist (macht de facto einfach garnichts).
X
X regelt.
Issues
- xrandr Rotation funktioniert nicht. Da fehlt irgendwie im X Server wahrscheinlich noch Landscape-Support? Bei Openmoko2007 gab's Landscape-Support, das war aber auch ein fbdev X? Hints welcome.
- eine Gesten-Input-Applikation! Primär erstmal zum Scrollen wäre schonmal ein Riesenfortschritt.