I have been a happy linux user for many years, and as most experienced users know, it is almost imposible to have a linux box without having to write some scripts from time to time. To me, it was quite natural to start coding in a day to day basis. My first programs were really basic. Mostly bash scripts, and tons of python code. But, as my programming skills were growing up, I started learning to build compiled programs: C, C++, Java, Vala… you name it, and it’s very probable that I have tried it.
Going back a few weeks or so, I recovered my old first laptop, acer aspire 1660. And being now an experienced linux user, running on arch linux, I could not resist to attempt install only the most basic desktop environment which I could.
Installing arch was sweet, my boxed had two partitions, the first with and old Ubuntu lts, from which I ran the arch build scripts. In a half hour, I got a working arch linux on the other partition. Being a geeky programmer, I decided that I don’t really need to have installed a lot of useless software if I can avoid it, which means I just wanted a window manager with nice candy like gnome-shell or kde, but without all the bloat that those heavy weight desktop environment use to have (the one size fits all philosophy, as I call it). In chronological order, this is what I have found, and what has kept me from sleeping at night.
I knew I wanted candy, and by my previous experience, I knew that gnome-shell wasn’t what I was looking for, as I’m not very fond of the way gnome-shell manages the x-clients (windows), I scouted which other DE (Desktop Environment) would be more appropiated. I decided to fork cinnamon because its user interface follows the old desktop paradigm. Once forked, it was relatively easy to strip all the packages that I decided were useless for me. But being an arch linux guy, my last system update advanced gtk to gtk3.8, which were bad news, as I did not know that the gnome developers decided to change libdbus to GDBus, without worrying much of the people using their code (for instance the linuxmint project, authors of cinnamon!), and that immediately broke my DE!. After some research, I found how to solve the issue, but I am very unsatisfied with my solution, because I had to patch a previous version of cinnamon, not the bleeding edge last version!, and I wonder what could happen next time Gnome staff decided to change things on their project without worrying much about the others, and without a backwards compatible solution (because, admittedly, it would have costed nothing to keep libdbus along GDBus for a while, as cinnamon or any other project solve its compatibility issues). Therefore, in this post I dare to compare Cinnamon with the bad, but not because I think of it as a bad project, in fact, I like cinnamon, but because I think that being dependent on gnome-shell’s base is a bad decision (just my opinion as a user skilled in programming).
- Bamf: This is a small library which maps applications running to its correspondent desktop files.
- Indicators: These are the small icons which appear on the top bar of ubuntu’s unity. Developers say that indicators exist because the system tray specification is messy. I’m not expert in this area, so I just trusted what they say and compiled/installed this to get my desktop environment working 😉
- Contractor is a library easing interprocess operation and the modular design of pantheon.
- Plank is the project’s dock. As I understand, this is a fork of docky, and only have the most basic functionality of the later.
- pantheon-wallpaper: Its only job is to paint the wallpaper.
- Gala: This is pantheon’s window manager, derived from mutter. It works smooth and gives nice eye candy without compromising windows resources.
And that’s it, besides the basic libraries, everything is optional in pantheon, so I have other applications from the project, but they are not needed to have a basic environment:
- Slingshot: This is an application launcher, no more, no less.
- Switchboard: This is the equivalent to Ubuntu’s topbar, but I could not get the indicators that should go in the bar working, so I don’t really use it.
- Cerbere: Small application whose only job is restart the main components (window manager, dock, launcher, etc) each time they died. I installed this reasoning that pantheon is beta and designed from Ubuntu, so, being an arch guy, it could happen that its components crashed a lot. However, that did not happen, and I could prescind from it without any fuss.
- Scratch is a text editor with good support for vala.
- Noise is a media player. I used it for two days, but lost interest on it, solely because I listen to music from youtube most of the time.
- pantheon-files is a file manager, which reminds me dolphin in KDE (in fact, in some older blogs, I have found that people refers to it as marlin, so, this is another fishy file manager). It’s simple and just works, without many dependencies, so I use it in a regular basis.
- pantheon-terminal: This one is my de facto terminal emulator. It’s interface is simple. Supports some candy (transparent background), and, as the other components, just works! =)
On the developer side, I find pantheon’s code clean and easy to understand. These guys decided to use cmake as building tool, and I really like it. My previous experience with gnome-shell and cinnamon (both use autotools for the task) showed me the relevance of separating the source code from the building process, and cmake allowed to resolve the few dependencies that had to strip fairly easy.
In conclusion, my favorite desktop environment to this day is pantheon. It offers a good mix of eyecandy, performance and simplicity, and as a developer, its clean, modular code, makes it easy to hack and port to other distributions from its original Ubuntu. Certainly, it’s still beta, and there are other most heavily tested desktop environment, but I think this one is worth to try, and if you are a developer who is interested in tuning its DE, this is an easy one to hack.