Please note: This page is obsolete now that the Xrandr (X Rotate AND Resize) support is ported to the agenda Xserver. Take a look at this page: http://www.gnb10.uklinux.net/agenda/xrandr/.
If you are running an old rootdisk the information in this page may be of some utility.
Some patches are required to make things work, I wrote this patches for the X server based in Xfree 4.1.0 and also for the Xfree 4.2.0 based X server.
Starting the X server rotated is simple: just add the "-rotate cw" or "-rotate ccw". Unfortunately the X server is started from vrdm and the start command is hard-coded. Additionally, the line that starts vrdm is in the rootdisk, and so is vrdm itself. Conclusion: the agenda starts in portrait mode unless you change the rootdisk. (see below how to switch to landscape mode without flashing a new rootdisk).
Also, vrsm always "draw" the silkscreen buttons a couple of pixels down the "physical" screen (screen height + 2). And the Agenda X server is patched in order to be able to produce events beyond the physical screen, so the buttons can be pushed... if they are "below" the screen in the standard orientation.
I've patched and recompiled:
put in the new rootdisk the patched versions of these programs: /usr/X11R6/bin/Xfbdev, /usr/bin/vrdm, /usr/bin/vrsm. (If you want to use keymacs at full speed, you can also use this patched vrwm -> /usr/bin/vrwm, that fixes a bug related to the placement of the keymacs window.
Install also xvr3or-prd, either in /usr/bin/xvr3or or /usr/local/bin/xvr3or, making it suid root:
chmod +s xvr3or
Then you can make links in ~/.wmx as usual to make xvr3or appear in the VR menu, or use a file browser (such as fman) to execute it.
copy the patched versions to /usr/local/bin, copy /etc/X11/xdm/Xsession to /etc/X11/xdm/Xsession.local and change the line that starts vrsm from "exec vrsm" to "exec /usr/local/bin/vrsm".
Download xvr3or, install it in /usr/local/bin/xvr3or, and make it suid root:
su
...
cd /usr/local/bin
chmod +s xvr3or
Then you can make links in ~/.wmx as usual to make xvr3or appear in the VR menu, or use a file browser (such as fman) to execute it.
xvr3or works by killing and restarting the X server with the "rotate" option. Any X client running will die with the X server, and any unsaved changes will be lost. Also, if the patched executables doesn't have the right permissions (execute permission, suid bit on in xvr3or), the X system may be unable to re-start, leaving the agenda in an unusable state (you should be able to reboot and get the Agenda working again).
Download X410src-1.tgz from ftp.xfree86.org or one of its mirrors. Apply this patch and do a "make World" in the directory xc. The patch is based in this one, found in agendawiki, with this modifications:
Note: with the snow 1.2.x toolchain came the dynamic version of the compression library libz, which is not included in the latest rootdisks, you may have to link the X server with an static version of libz, such as this libz.a, compiled from this sources.
Get sources from the CVS, then apply this patch.
Get sources from the CVS, then apply this patch. The patch fixes a bug with the keyboard window, disables multiple desktops and decrease the EDGE_SNAP and SCREEN_SNAP thresholds.
Get sources from the CVS, then apply this patch. The patch adjust the position of the silkscreen buttons and the vr menu according to /etc/orientation. Also decreases the time of the message when an application is started.
This is xvr3or.fl, mi first FLUID application!. Use FLUID to make xvr3or.h and xvr3or.cxx, you will need also do_rotate.cxx. Compile it with:
mipsel-linux-g++ -B/opt/snow-gcc/lib/snow/ -o xvr3or \
xvr3or.cxx do_rotate.cxx -Os -s -lfltk -lX11
Add "-DPATCHED_ROOT_DISK" if you have a rootdisk with the patched versions of the X server, vrdm, vrwm and vrsm:
mipsel-linux-g++ -B/opt/snow-gcc/lib/snow/ -DPATCHED_ROOT_DISK -o xvr3or \
xvr3or.cxx do_rotate.cxx -Os -s -lfltk -lX11
In Xfree 4.2.0 there is better support for screen rotation than in V 4.1.0. There are less patches required, but on the other hand, the rotation option for the Xserver is different: "-screen <size_x>x<size_y>@<angle>", where <angle> is the rotation angle: 0, 90, 180 or 270.
Because of this change in the X server starting syntax, the needed patch to vrdm changes. I've also simplified a little the /etc/orientation format (now it stores the rotation angle), so that a change in vrsm is also needed.
So, this are the new binaries:
put in the new rootdisk the patched versions of these programs: /usr/X11R6/bin/X, /usr/bin/vrdm, /usr/bin/vrsm. (If you want to use keymacs at full speed, you can also use this patched vrwm -> /usr/bin/vrwm, that fixes a bug related to the placement of the keymacs window.
Install also xvr3or-prd, either in /usr/bin/xvr3or or /usr/local/bin/xvr3or, making it suid root:
chmod +s xvr3or
Then you can make links in ~/.wmx as usual to make xvr3or appear in the VR menu, or use a file browser (such as fman) to execute it.
copy the patched versions to /usr/local/bin, copy /etc/X11/xdm/Xsession to /etc/X11/xdm/Xsession.local and change the line that starts vrsm from "exec vrsm" to "exec /usr/local/bin/vrsm".
Download xvr3or, install it in /usr/local/bin/xvr3or, and make it suid root:
su
...
cd /usr/local/bin
chmod +s xvr3or
Then you can make links in ~/.wmx as usual to make xvr3or appear in the VR menu, or use a file browser (such as fman) to execute it.
xvr3or works by killing and restarting the X server with the proper options. Any X client running will die with the X server, and any unsaved changes will be lost. Also, if the patched executables doesn't have the right permissions (execute permission, suid bit on in xvr3or), the X system may be unable to re-start, leaving the agenda in an unusable state (you should be able to reboot and get the Agenda working again).
Download X420src-1.tgz from ftp.xfree86.org or one of its mirrors. Apply this patch and do a "make World" in the directory xc. The patch is based in this one, found in agendawiki, with this modifications:
Note: with the snow 1.2.x toolchain came the dynamic version of the compression library libz, which is not included in the latest rootdisks, you may have to link the X server with an static version of libz, such as this libz.a, compiled from this sources.
Get sources from the CVS, then apply this patch.
Get sources from the CVS, then apply this patch. The patch fixes a bug with the keyboard window, disables multiple desktops and decrease the EDGE_SNAP and SCREEN_SNAP thresholds.
Get sources from the CVS, then apply this patch. The patch adjust the position of the silkscreen buttons and the vr menu according to /etc/orientation. Also decreases the time of the message when an application is started.
This is xvr3or.fl, mi first FLUID application!. Use FLUID to make xvr3or.h and xvr3or.cxx, you will need also do_rotate.cxx. Compile it with:
mipsel-linux-g++ -B/opt/snow-gcc/lib/snow/ -o xvr3or \
xvr3or.cxx do_rotate.cxx -Os -s -lfltk -lX11
Add "-DPATCHED_ROOT_DISK" if you have a rootdisk with the patched versions of the X server, vrdm, vrwm and vrsm:
mipsel-linux-g++ -B/opt/snow-gcc/lib/snow/ -DPATCHED_ROOT_DISK -o xvr3or \
xvr3or.cxx do_rotate.cxx -Os -s -lfltk -lX11