OK, before I say anything else, let me just assure you Linux lovers that I am a fellow Linux/UNIX lover, but I’m not talking about the Linux kernel itself in this article, but instead, the distributions that ship with Linux.
Linux distributions are amazing considering they’re free (speaking in a general sense). But there are multiple problems I see regularly on nearly every Linux distribution.
One – the lack of attention to detail.
(i) The lack of attention to detail is apparent on most operating systems, there is only one operating system I’ve ever seen that really takes attention to detail to the top (I’ll get to that later).
Anti-aliased rounded corners – if you can’t anti-alias it, don’t round it, it just looks appalling. Here are some examples:
Ubuntu/Unity 13.10 Window (Top Right)
MATE 1.6 Window (Top Right)
Xfce 4.10 Window (Top Right)
It’s not just those desktops that do this, it’s LXDE, KDE (these are mitred at least, but still not anti-aliased), and more that I’ve probably never heard of.
BTW, it’s not JUST most Linux distributions that do this, it is also Windows 7:
(ii) borders that are lighter than one background that it borders but darker than the other, or only slightly darker than both backgrounds surrounding it. Here is an example:
From someone who develops and designs websites, that looks awful, it’s messy. It looks tacky or botched, even. The answer is not to make the border darker, because you’d need an absolute black border to make it fit in, and that would look worse. The answer is to make the border solid black, but give it some alpha, make it semi-transparent. This way it will blend correctly with any background colour perfectly (Look at OS X, they’ve done it since day one, they even had anti-aliased rounded corners in 2001, come on Linux! Catch up!).
(iii) A lot of the time, objects are tightly squashed together, it makes the system look crowded and cluttered. Here is an example:
As you can see, the green circular lizard button is pressed right against the edges, and directly next to it are icons and no clear boundary or spacing between them, when things are packed together too much, it can make things hard to spot quickly.
(iv) I often see aspects of systems messy and tacky. Take this next example:
The icons used in the toolbar are generic, they don’t look fitting with the background they’re on, if the icons were a dark grey with an inset shadow (like the icons inside the window action buttons), it would look really clean. The use of skeuomorphism doesn’t always look good. Also, in this example, there is no clear division between toolbar and the location bar (the bit where it says “> Home”), maybe put the location bar inside a light grey box with a darker grey bottom border inside the white files and folders area at the top.
A few more things to do with this example is the side bar and its contents. It’s the same colour as the background, but it has a border with a lighter highlight at the top to make it look somewhat outset. And then there is the contents inside it, instead of chopping off the end of green box around the name of the folder, don’t make the sidebar scrollable. Instead, just wrap the icon and the text with a box with a similar style to the one currently used, but instead of cutting the box off, cut the text off inside it with a “…” or just fade it out the closer it gets to the edge and then finally make it invisible. Then all it should require to reveal the full name is a hover over area and then a tooltip to pop up with the name inside it.
Then this next example (still part iv):
That search box has this light green inset glow, it doesn’t look fitting, it looks tacky. You can also see parts of the black background through the green glow, it’s quite messy when you look at all the details.
All of these details may seem trivial, but when you add them up, it’s clear that there is a serious problem throughout the different systems.
Two – the lack of standardisation.
I’ve seen this problem time and time again in the Linux community. There are new and upcoming display servers/compositors that are all trying to supersede X11, the main ones people are talking about are Wayland and Mir. There needs to be one central organisation that sets the standards and sets new goals and deadlines. The Linux developer community would communally work on these goals (I guarantee things would happen, quickly). This organisation could look at commonly requested features from the community and check if they are good ideas to implement. There could be polls if the organisation are unsure, then the public could vote for themselves.
There would be a base system with these features:
- The Linux kernel.
- A modern, standardised display server and compositor (something like Wayland/Weston).
- A modern, standard GUI toolkit that can be easily themed with CSS-style code by the user. Then the developer should be able to theme their application with CSS-style code or directly drawing to the widget’s graphics context (for animations and special effects). Make it as easy as possible, basically.
- A sound server.
- A networking server.
- Other important operating system elements.
There would be different versions with the same base system:
- The full version – this would come with all of the bells and whistles like cool animations, more anti-aliased elements and extremely polished themes.
- The light-weight version – this would be made for running older machines, wouldn’t be hard to maintain, just use the full version and remove the effects and animations and anti-aliasing.
- The server version – this would just be the command-line and would include lots of interpreters (PHP/Python/Perl/Ruby etc.) and server software (Apache/Nginx etc.).
With this model, I’m not suggesting we limit everyone to one look and desktop. 3rd party developers could develop new themes, these themes would use the same toolkit and desktop environment, but the themes could make vast changes to looks and layouts. So a theme layout could be XML-like. A theme-layout would have access to everything below:
- Open applications (windows, titles and active/inactive states).
- Application menu items (so the theme could do something like Ubuntu or go Windows style).
- Desktop items (icons, titles).
- Installed applications and categories.
- Current Time/Date.
- Battery level and time remaining.
- Volume level.
- Wifi connections.
- Quick launch shortcuts.
Themes could change where and how any of the above are shown and change the looks of each and every one.
Themes would be able to change everything below on any element:
- Shapes (with vectors or equivalent).
- Borders (size, type, colour, gradient, alpha, blur under).
- Shadows (size, radius, colour, gradient, alpha, position, blur-under, inset).
- Backgrounds (positions, colour, gradient, tiled/normal images, alpha, blur-under).
- Fonts (smoothing level, size, colour, gradient, shadow, bold, underlined, strike, italic, upper/lower/normal case, alignment).
- Rounded corners (anti-aliasing, radius, mitre on/off).
- Dragging/resizing regions.
- Overall Transparency.
- Animations (via a scripting language for complex animations such as apples genie effect).
Themes would be able to define taskbar areas and positions. The theme would be able to respond to events with some sort of scripting language. The theme would decide where and how notifications are shown. The theme would be able to play sounds to let the user know a notification has arrived. If a theme crashes, there would be backup theme (the default theme, in other words) you could activate with some sort of CTRL+ALT+DEL shortcut, and failing that, get to a tty.
Themes would be able to be as minimalistic or as full on as the theme creator wants, without having to change desktop environments and make sacrifices on features.
I believe a system such as this would do well. I would be designing themes straight away.
I’ve gone off on a bit of tangent here, but still, my point stands. This lack of standardisation between systems is what’s causing the problem of there being bad compatibility and lack of big companies porting their apps to Linux. If this whole organisation were to start off, I’d be happy to help out. Not with the coding aspect of it, I’m not knowledgeable enough with C or C++ to code operating systems, but I’d be a designer and I’d write apps in Python or something (maybe settings panels and stuff). I believe an operating system like this would do very well. I’d prefer it over Windows and OS X any day, purely because of the flexibility.
Thanks for reading, hope you enjoyed reading it as much as I enjoyed writing it!