Varfar's Clarity Desktop

Contents

  1. What is it?
  2. Feature status
  3. Feature: Rollup
  4. How it is implemented
  5. Changes to the kernel
  6. Installation Instructions

<to Varfar's homepage


What is it?

This is what it will do- early betas' will try to get this vision working

Clarity Desktop is a full desktop replacement suite for AtheOS. It provides a nice launchbar that lets you easily select open windows, start new windows and change desktops. It lets you configure the icons on the desktop and what they do.

It isn't reinventing other bits of code. It is intended to use the Launcher menubar and the Landscape desktop, in coordination with new window list and desktop switcher plug-ins for Launcher and a new central Clarity theme (using ATheme to apply) and a custom Window Decorator. In essence, what Clarity is is Varfar's look and feel for AtheOS

Initial coding effort has targetted the window manager and desktop switcher (they are integrated, really), and the rest of this page just looks at it from their perspective. In the longer term Clarity will mean a whole lot more when these other excellent AtheOS applications are integrated

^top


Feature status

In rough order they will be tackled
- Rolling up the launchbar
- Listing windows on desktop
- Activating windows from launchbar
- Desktop switcher
- Desktop naming
- Desktop icons
- Minimize and Maximize

^top


Feature: Rollup

The launchbar can take up quite a bit of screen space. When you want it out of the way, you can roll it up to hide it. Of course, it is just a click away! Click on the arrow button in the top-left corner of the screen to unroll it.
^top


How it is implemented

There are two parts- the appserver (the AtheOS window manager) now notifies registered window manager instances when windows are added, changed or removed. This is done by message passing, as is the neat AtheOS way.

The client part is the Clarity window manager (which I call cwm). This is just a normal AtheOS application, except that at startup it sends a registration message to the appserver telling the appserver to send these window info notifications to it. (To simplify implementation the appserver only allows one window manager to register at the current time. There is also no granularity of messaging available- it is all or nothing.)

Applications and Windows are given unique IDs in the appserver, as pointers etc would not cross application boundaries very well

The window manager can command the appserver to change desktops and activate applications by sending messages

^top


Changes to the kernel

Ok, maybe not kernel, but at least changes to the AtheOS source!

To build Clarity from source, you have to modify a few things! Here is what I changed in the source:

  1. appserver:
    1. desktop.cpp Calls clarity methods when a window is added, removed or focused
    2. swindow.cpp Each server window has a unique ID called WID(), and each window calls clarity methods to notify when a window is changed
    3. server.cpp Each application has a unique ID called AID()
    4. clarity.h and clarity.cpp have been added. This keeps track of one window manager, and directs messages to it
  2. /ainc/gui/:
    1. guidefines.h Has a W_WND_MGR_MSG message code to identify messages sent from the window manager to appserver
    2. window.h Has a M_WND_MGR_MSG message code to identify messages sent from the appserver to the window manager

^top


Installation Instructions

At the moment there is no binary distribution available. The code isn't tried enough, isn't bugfree, and and it would probably consume my Geocities bandwidth too fast! If you want to use Clarity, you are going to have to get your hands dirty :-)

DISCLAIMER! This software is not a robust solution, but rather a play to see how a desktop manager might work. This version probably doesn't work. It hasn't nuked my machine yet, but your milage might vary. USE IT AT YOUR OWN RISK. Always store backups of any data you might want to survive a rebuild on separate media, e.g. a floppy disk

First, ensure you have the appserver source. You can get this from the <a href="http://www.atheos.cx/download/list.php3?current+src" target="atheos">atheos.cx download source</a> page. I advise you untar these into the /atheos/src/ directory. Make sure your ATHEOS_SRC environment variable is set correctly. To do a base compile you will also have to download the gcc compiler for Atheos (from <a href="http://www.atheos.cx/download/list.php3?current+pack" target="atheos">atheos.cx download packages</a> page)

But if you are reading this, then gcc and tar and make are not scary for you, so I don't need to explain them in detail! (They still scare me though!)

Second, get the clarity source from here. Place the expanded files into a temporary directory somewhere.

Create a directory /Applications/Clarity/WindowManager and place the code from the source archive's WindowManager/ directory into it.

Copy the files in the source archive's appserver/ directory to the /atheos/src/system/appserver/server/ directory, overwriting where necessary.

Copy the files in the source archive's ainc/ directory to the /ainc/gui/directory, overwriting where necessary.

Third, edit the Makefile for the appserver to include clarity.o

Forth, make the appserver and the Desktop Manager

Fifth, copy the new appserver binary (/atheos/src/system/appserver/server/objs/appserver) to /system/appserver, overwriting the old appserver.

Sixth, reboot the system with ctrl-alt-delete

Seventh, if it reboots ok that is a good sign. Now open a terminal and go to the /Applications/Clarity/WindowManager/ directory (which you just made) and run cvm. Lots of debug info should scroll in the terminal, and a window should appear etc and you are now up and running!

Finally, you want to have it auto-start with AtheOS? Not recommended practice, but you could add the command /Appserver/Clarity/WindowManager/cwm & to the end of your /system/user_init.sh file..?

^top