View source for Window Manager Startup
From Openmoko
You do not have permission to edit this page, for the following reasons:
You can view and copy the source of this page:
Return to Window Manager Startup.
You do not have permission to edit this page, for the following reasons:
You can view and copy the source of this page:
Return to Window Manager Startup.
Describes the scripts and programs used to bring up the Window Manager. The series of events that occur when the window manager starts follows the order of the table of contents.
A standard init script:
/etc/init.d/xserver-nodm
To start the X Server:
/etc/init.d/xserver-nodm start
To stop the X Server
/etc/init.d/xserver-nodm stop
Using the stop parameter currently causes an error. ps is being called with an invalid parameter. (Bug #605)
When using the start parameter, it eventually calls Xserver.
A script at:
/etc/X11/Xserver
Called as:
/etc/X11/Xserver &
Configures system and sets up environment variables. Especially important are the environment variables XSERVER, DISPLAY, and ARGS. It finished by calling and transferring control to xinit.
A script at:
/usr/bin/xinit
Called as:
xinit /etc/X11/Xsession -- /usr/bin/Xfbdev :0 -br -pn -fp \ built-ins,/usr/share/fonts/ttf,/usr/share/fonts/truetype \ -screen 480x640x16
Executes Linux framebuffer generic X server (Xfbdev) and the scripts in /etc/X11/Xsession.d. The scripts are described in the next section of subtopics.
A script at:
/etc/X11/Xsession.d/30xTs_Calibrate
Checks to see if the pointer is calibrated (existence of /etc/pointercal). If not, then executes xtscal to calibrate it:
/usr/bin/xtscal
What program(s) eventually open and use the data in /etc/pointercal?
A script at:
/etc/X11/Xsession.d/45gtkstylus
This script sets the GTK_MODULES environment variable to point to a libgtksylus.so shared object with:
GTK_MODULES=libgtkstylus.so
It makes no attempt to append this shared object to the end of an already existing GTK_MODULES environment variable. Is this correct?
(Please elaborate about the purpose of this shared object)
A script at:
/etc/X11/Xsession.d/46gtkinput
This script appends a libgtkinput.so shared object to the end of the GTK_MODULES environment variable. This seems to be more correct that the above (and indeed, if this was not appended, you would lose the previous value).
It accomplishes this task with:
GTK_MODULES=${GTK_MODULES}:libgtkinput.so
(Please elaborate about the purpose of this shared object)
A script at:
/etc/X11/Xsession.d/60xXDefaults
A script at:
/etc/X11/Xsession.d/69gconfd-dbus
This script executes:
/usr/libexec/gconfd-2 &
More information about gconfd can be found in the GConf Implementation Overview.
A script at:
/etc/X11/Xsession.d/70settings-daemon
This script executes:
/usr/bin/settings-daemon &
What is this? It seems to be some sort of daemon that is used to access GConf. Is this really gnome-settings-daemon?
A script at:
/etc/X11/Xsession.d/90xXWindowManager
Calls the window manager with:
exec /usr/bin/x-window-manager
A soft link at:
/usr/bin/x-window-manager
This soft link points to:
/usr/bin/matchbox-session
This script simply adds a level indirection so one can easily change the window manager being used.
A script at:
/usr/bin/matchbox-session
Test for the existence of:
/etc/matchbox/session
In the case of OpenMoko, this test is positive and session is exec'ed.
Taking a quick look at the script shows that one can override the use of /etc/matchbox/session with their own $HOME/.matchbox/session if they wish to experiment without touching the rest of the system.
A script at:
/etc/matchbox/session
This is where the key ingredients of the Matchbox Window Manager are mixed together and executed. Because these elements are key to the user interface, this script is described in detail here.
It is interesting that after the setting of GTK_MODULES in the X Window System Initializer phase (scripts in /etc/X11/Xsession.d) that it is all overwritten by a single statement here:
export GTK_MODULES=libgtkstylus.so
This loses an old value for GTK_MODULES that also contained libgtkinput.so. Perhaps this was something that was overlooked?
A binary at:
/usr/bin/matchbox-panel-2
Called as:
matchbox-panel-2 --start-applets=openmoko-panel-mainmenu,systray,startup \ --end-applets=openmoko-panel-battery,openmoko-panel-gsm,\ openmoko-panel-gps,openmoko-panel-usb,openmoko-panel-bt,\ openmoko-panel-clock &
The Matchbox Top Panel dynamically links in a series of shared objects that are called applets. If any of these shared objects has a problem that causes abnormal termination, the whole Matchbox Panel goes down. Many users have already observed this when using the openmoko-panel-gsm applet. Turning it off and on repeatedly will eventually cause the code in the shared object to crash, bringing down the whole Matchbox Panel.
The best methods for bring the Matchbox Panel back up (besides rebooting) are to run the Matchbox Panel from the command line, as above) or to restart the X Server:
/etc/init.d/xserver-nodm restart
Note that with the above, the X Server will fail to stop because of the bug described with the script above.
Because the Matchbox Panel seems to be essential to normal operation of the phone, execution of the panel should be wrapped in a loop to restart it in the event of a failure. Take into account this program runs in the background and it may not be wise to keep restarting it in tight loop, using up CPU, etc.
A binary at:
/usr/bin/mbinputmgr
Called as:
mbinputmgr &
This program is described as "A tray application for managing software input methods". It seems to be the white Matchbox Panel applet that brings up the software keyboard. This needs to be verified.
A binary at:
/usr/sbin/alsactl
Called as:
alsactl restore 0 -f /etc/alsa/stereoout.state
Initializes the audio system state. More information for ALSA can be found on the ALSA Project home page.
A binary at:
/usr/bin/openmoko-footer
Called as:
openmoko-footer &
More about Footer.
A binary at:
/usr/bin/openmoko-today
Called as:
openmoko-today --desktop &
More about Today.
A binary at:
/usr/bin/openmoko-dialer
Called as:
openmoko-dialer &
More about Dialer.
An binary at:
/usr/bin/matchbox-window-manager
Called as:
matchbox-window-manager -use_titlebar no -use_cursor no
The Matchbox Window Manager home page.
At this point, the user interface is up and ready for service.