Unity/Gnome/KDE/etc are mediocre, but they are adequate. I am typically using a shell window, a web browser, email client, TeXmaker, a few Swing apps (IntelliJ), IM client (Pidgin), maybe Skype, and a text editor (geany, gedit, or vim). The GUI isn’t a work of art or anything, but it is completely functional and adequate. What do you want from the GUI that is broken or missing?
As a long time Windows user, I recently switched to Linux (Ubuntu). Huge upgrade, for programming and math/science work:
The advantages of Linux over Windows:
- Command line. Linux shell is far nicer than Windows cmd.exe. Piping works better. All the command line tools work better and are fully designed to work with piping/chaining/scripting. Linux also has fancier shells like zsh, which I’m just now starting to learn and see benefits to (for example, the Git shell integration is awesome).
- Command line is often so much simpler than using GUI apps. For example, when I need to convert an image from one format to another (like PNG -> JPG), on Windows I used to use Paint.NET, on Linux it’s just a simpler command line. Way faster, way simpler, and easily batchable.
- Proper aliases. windows has shortcuts that don’t really work in the command line sense.
- Free software repo. Often rather than scouring the web for the right shareware, I can just use the Linux repo, which is basically guaranteed to be malware free and nagware free and uninstallable.
- Faster. Seriously, web browsing is faster, booting is faster, no virus checking which was necessary on Windows. Even though I scheduled it to run at 4AM, it would run at completely different times anyway, and stop me from cancelling it or using my computer when I needed to.
- Less crap ware. For example, on Windows when I installed a printer driver or scanner driver, I’d see HP/Canon junk in my Windows tray and every time I had to reboot. On Linux, using printer/scanners is fully plug/play and completely crap ware free.
- Works better with Python and Hadoop. These things can work on Windows, but they really work better with a *NIX system. Hadoop requires *NIX tools on Windows. Installing python and ipython and scipy on Linux is a breeze, where it’s a headache on Windows.
- I plan to upgrade from the Unity window manager to xmonad when I am ready. This looks like a major usability upgrade over the overlapping resizeable window paradigm on Win/Mac.
Downsides:
- Games. ~90% of PC games are Windows-only, and maybe ~9% are Windows/Mac. It is rare to have native Linux support.
- On drivers: overall, Linux is great and ompletely plug-and-play. I’ve hit one significant exception. When I dock/undock my laptop, I have to manually switch between my desktop monitor and laptop screen where Windows would do this automatically.