Best Linux Desktop Environment
GNOME is a GTK-based desktop environment which provides a very unique desktop experience with GNOME Shell, which features an Activities view and a greater emphasis on the use of virtual desktops. Even if you don't use pure GNOME, there are several desktop environments which use parts of GNOME in their setup, while others are based on GNOME code but decided to go their own way. This desktop environment is usually seen as moderate user of system resources, although compared to Windows or Mac OS X it is still rather lightweight.
Unity is the child of Canonical, the company behind Ubuntu. It was developed by Canonical when GNOME announced their plans for GNOME Shell, and Canonical did not want Ubuntu to go in that direction. While a lot of Linux users have complained about the Unity desktop environment, it’s still pretty easy to use, customizable, and most importantly familiar. People run Ubuntu more than any other Linux distribution, so Unity is arguably the most familiar desktop environment of them all.
KDE is a Qt-based desktop environment which aims to provide as many features as possible. It’s often seen by the Linux community as the flashiest desktop environment, but also the one which is the heaviest user of system resources. Currently, we’re in a phase where KDE 4 is slowly being replaced with KDE 5, which is more of a rewrite of KDE rather than a major redesign. You’ll be able to find KDE 5 in some distros within the next 6 months to one year.
Xfce is another GTK-based desktop environment, but it has always been its own desktop environment rather than having ties with GNOME (besides using GTK). It is considered to be a smaller user of system resources, which is great for systems that have lower specs and would otherwise struggle with “bigger” desktop environments.
LXDE is definitely considered to be the most lightweight traditional desktop environment currently available, before you starting diving into tiling window managers as desktop environments. LXDE uses a surprisingly small amount of RAM, so this would be the desktop environment of choice for underpowered devices or for those who just prefer to save every ounce of power for whatever applications they’re running rather than the desktop environment that melts into the background anyways. Personally, I don’t think it’s the prettiest desktop environment (although tweaking it can make it look decent), but it achieves many technical goals.
Cinnamon is Linux Mint’s replacement for GNOME Shell. While it uses some GNOME apps (and forks others, i.e. Nautilus becoming Nemo), the user experience is quite different. While maintaining up-to-date technologies and frameworks, it tries to reserve the more traditional way desktops have worked rather than adopting GNOME Shell’s unique way of handling windows. As development of Cinnamon is somewhat biased towards Linux Mint, it’s not as easy to get Cinnamon on other distributions — although this has been improving.
MATE is another project of Linux Mint which aims to replicate the old GNOME 2 desktop and support it, unlike GNOME which dropped support for GNOME 2 in favor of GNOME 3. In fact, MATE’s code originally came from GNOME 2 after support for it ended, and has since been maintained by Linux Mint developers. Like I mentioned, they aim to keep the same desktop experience going, but plans have surfaced that they do want to port the desktop environment to the GTK3 framework in order to keep up with the latest tech.
References & Resources
- Dependency injection
- Directives and Pipes
- Data binding
- HTTP Get vs. Post
- Node.js is everywhere
- MongoDB root user
- Prefer Async Script Loading
- Components, Bootstrap and DOM
- What is HEAD in git?
- Show the changes in Git.
- What is AngularJS 2?
- Confidence Interval for a Population Mean
- Accuracy vs. Precision
- Sampling Distribution
- Working with the Normal Distribution
- Standardized score - Z score
- Evaluating the Normal Distribution
- What is Nodejs? Advantages and disadvantage?
- How do I debug Nodejs applications?
- Sync directory search using fs.readdirSync