I've had a long standing interest in developing an OS UI tailored to my needs and interests. When I was younger, I went crazy playing with the Stardock skinning tools for Windows. I loved developing my own window styles and layout ideas. Since then I've had an unscratchable itch.
What I'm looking for:
I'm interested in what Linux/OS flavors might make sense, what tools / frameworks would be useful for accomplishing the task ( Qt seems to be a popular suggestion here ), and basic info on how / where one might start developing / testing such a UI. I'd also be interested reading about any "personal" UI's that people may have developed.
This is an interest far outside my normal development work, so as a disclaimer, forgive my naivete if I appear to be confused. Corrective insight welcomed.
I realize this is a big question, so thanks to those for taking the time to make suggestions.
You want to build your own DE (desktop environment). Common examples are GNOME and KDE, although more of them were popular. It actually used to be very popular to build your own DE, and dedicated scripting tools were often created.
You will usually need to combine multiple tools: a window manager, a toolbar program, a desktop manager (icons), session manager, possibly more. Out of that only a window manager is a required part (it usually doesn't make any sense not to run any WM inside X server), and others are optional. You will usually not write these tools from scratch (it is a lot of work), but use already available components.
Note that both GNOME and KDE actually consists of these elements (well integrated). For example GNOME consists of a window manager (metacity
), toolbars (gnome-panel
), desktop manager (nautilus
) and so on. You can change one element into another if you want: it used to be popular to use sawfish
as a window manager instead of metacity
, keeping all the other elements intact. Now it is popular to use compiz
instead of metacity
.
I used to use FVWM, which is a window manager with an additional (quite good) scripting capabilities that could be used to create toolbars, menus and other things. One of nice examples is FVWM-Crystal, which is a complete DE built on FVWM and few other tools, written in a mix of FVWM scripting and Python. You could actually change any kind of behaviour at runtime by just opening FVWM's scripting console and typing commands. FVWM-Crystal can be a good starting point if you want to start from something already usable; bare FVWM is good if you want to build your DE from scratch.
[UPDATE: it seems that gnome-shell is very similar in this regard to FVWM
. Most of its behavior is scripted using JavaScript (instead of a custom language in FVWM), and is very easy to change. It is also very actively developed, as it is an important part of GNOME3, with very good support for composition. It's a hacker's heaven ;-)]
[UPDATE2: so it seems I was right on gnome-shell. There's a Cinnamon, which uses the same framework (mutter
window manager) as gnome-shell
, yet builds a desktop which works in a different way than gnome-shell
.]
There was a website that was a good source of ideas to implement: lynucs.org. It is down for two years now, but it got archived.
Warning: lots of these components are not maintained any more, especially since GNOME/KDE started to become actually usable. Development in this area is usually driven more by specific requirements of embedded devices: phones or netbooks.
Now, to answer your actual questions:
compiz
.If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With