Okay, it's time for a rant. Today, I am going to uninstall Ubuntu.
Although I admit that I am typically a Windows user, I am by no means an evangelist of the platform. I'm not a Linux newbie either - I've been using RHEL for years and recently gave a talk on Bash productivity. About a week ago, I started doing some development in C, so I thought I'd avoid the setup hurdles and just dual boot Ubuntu on my own machine. Surely, I thought, the most popular desktop distribution out there would make this a painless experience. After spending days bashing my head against the desk solving seemingly trivial problems, I could not have been proven more wrong.
The installation process is many newbies' first foray into Linux land. It should be in the interest of any mature platform to make this experience as unintimidating as possible. Of course, right here is where I hit my first snag with Ubuntu.
My partition scheme is not particularly complicated. It's actually just a vanilla Windows 7 install, with its System Reserved partition, plus an 8GB hibernation partition. This is what it looks like:
To kick off the install, I shrunk my NTFS partition using Disk Management in Windows and left about 20GB of free space. I then used a 3rd party tool (cough) to copy the Ubuntu 14.04 ISO to a thumbdrive. After messing around with some BIOS options, I was finally greeted with the Ubuntu installer.
Naturally, it promptly told me I have no operating systems installed and helpfully offered the default option of erasing my entire hard drive. Uhh, what? Okay, I understand that OS detection can be difficult. But you know what Ubuntu's alternative is to erasing your entire hard drive? Making up your own partition scheme.
Yup, it essentially drops you into GParted lite and off you go. Am I totally off my rocker to think that this is insane? Where is the option to install into unallocated space? I now have to know not only what partition scheme this thing wants - primary vs. extended, /boot, /home, swap, etc - but what filesystem I should be using for each and the respective mount points. Am I living in an alternate universe where this is supposed to be within the realm of your average PC user?
Well, alright, nothing an hour of Googling won't solve. Of course, I could have just thrown something together, but I wanted to find out how Ubuntu would have formatted an entire blank hard drive and replicated that in the unallocated space on mine. I finally got it all set up, clicked install, and began my arduous Ubuntu journey.
Did I mention I have Windows 7? You may not have forgotten, but Ubuntu certainly did. After the installation process finished and my machine rebooted, I was unceremoniously dropped straight into Ubuntu. A few more reboots and creative button-holding have confirmed my initial fear - Grub was totally devoid of any Windows entries.
Now, fixing this was actually surprisingly easy. I just had to run
sudo update-grub2 and
os-prober did its thing and, voila, I had Windows. Of course, to arrive at this solution I had to wade through all sorts of tutorials on rolling your own grub.cfg, making a custom script in
/etc/grub.d, and other unholy incantations. I shudder to think of poor souls who have somehow made it this far and proceeded to butcher their boot config in an honest attempt to get back to the warm familiarity of a Windows desktop, all based on some guy's advice back from 2011.
I was going to stop there, but fuck it, let's see how this would have gone had I been slightly more naive. To the Googles!
Oh man, official documentation. This is going to be easier than I thought. Here are some helpful directions:
Why didn't I think of "installing it to that"? Let's see what the next two steps are.
Think I'll stay away from that one, maybe. Well, that didn't help. Good thing there are links to more information!
Concise and up-to-date? It's like Christmas! Except that link leads to an incomprehensible wall-o-text that largely boils down to "use the automated installer". But wait! I see something relevant to my problem:
Sweet, a GUI! This is going to be easy ...
Concise and up-to-date indeed.
To recap, I would have now spent hours on a documentation goose chase for something that a) is a single command and b) should have been done automatically in the first place.
Now that I was finally booting into Ubuntu by choice, I wanted to ... well, use it. You know what helps with that? A keyboard and trackpad, both of which are rather impossible to configure.
I have a Logitech K810 bluetooth keyboard. Here is me trying to connect it:
Spoiler: no amount of trying again would make this work. Instead, I had to perform basically the same process in the terminal. I am not sure how this differs from the GUI way, but, whatever, at least I can type now.
The trackpad was a different story. The one on my Samsung laptop is a clickpad, meaning it lacks actual hardware buttons and the whole thing clicks instead. As you would imagine, you can find yourself resting your thumb on the lower left corner (left click) and moving the pointer with your index finger. While this works perfectly well in Windows, any amount of contact between the thumb and the trackpad in Ubuntu immediately freezes the cursor and the thing assumes you are trying to two-finger scroll.
Thankfully, there are settings to configure! There are always settings. In this case, almost 70 of them:
Believe me when I say I tried a lot of combinations to try and make this problem go away. You haven't lived until you've edited raw integer values that define the size of your trackpad buttons, in command line. There is even a setting that defines a "button-only" area which disables pointer movement and only accepts click events. Perfect! Except, while you can't use the area to move the cursor, you can certainly use it to two-finger scroll, in some sort of lobster-claw formation presumably. In short, after spending hours on this, I just learned to live with not resting my thumb on the trackpad.
Gestures and shortcuts
Have you ever used a Macbook? One of the nice things about them is the multitouch trackpad which enables really intuitive and useful gestures, like three- and four-finger swipes. Well, I have a multitouch trackpad, an OS that is the definition of customizability, and a masochistic streak, so I set out to replicate these gestures.
To start this off, here is Ubuntu's idea of the everyday user's most frequently used actions:
Sweet! All I have to do to alt+tab is 3 finger tap, followed by 3 finger hold, followed by dragging those 3 fingers! Not to mention the staggering convenience of substituting a single button press (Launcher) or a click-and-drag (move window) with awkward multi-finger gestures.
I was going to write about my journey of finding out that redefining these is nearly impossible, but I think that would have been a blog post in its own right. Here's the takeaway: redefining these is nearly impossible. Everything that works on pre-14.04 versions is deprecated. I've tried unity-tweak-tool, dconf, compiz, touchegg, you name it. The most plausible suggestion I've seen was, wait for it, patching Unity source to remove gesture detection (by hand, of course), and building the forsaken thing yourself.
You probably don't believe me. You might even think I'm an idiot. To that, I propose a challenge. If you are the first to tell me a way that I can have three-finger swipe workspace switching on Ubuntu 14.04 by editing some configuration file or installing a tool, I will send you $25. The only caveat is you must not resort to
/rcX.d/ script hackery or other unspeakable bullshit. For an example of the latter, I saw a suggestion that merely takes an hour out of your battery life. Yes, seriously.
On a somewhat related note, Unity ships with a slew of useful keyboard shortcuts. Here are some of them:
You may have noticed that I've redefined some of these for sanity. I've left some fun defaults, like
Shift+Ctrl+Alt+Left+Arrow Keys for moving a window to another workspace. Handy! In the meantime, opening the Dash Music Lens, something I anticipate doing before the heat death of the universe, maybe, is
That's not even the insanity here, though. The insanity is that I spent hours searching for ways to redefine semi-maximize.
Not here either.
Not here either.
And, not here.
Aha! Except, this is lying about Maximize and Restore (those are just Super+Up and Super+Down for me).
Of course, for each screenshot I show you, there are 20 other half-baked and mostly-deprecated GUI tools that do not work.
rm -rf /*
I don't want to come off as lacking perspective. This is free software I'm whining about, and I immensely value the contributions of each of the developers who took their time to build it. That being said, this is 2015, where free != bad, and where the UX nightmares that have plagued Linux distributions a decade ago should have long been eradicated.
I don't know what kind of systematic breakdown it takes for a team of developers to decide that it's a good idea to have 10 different places where a user can define keyboard shortcuts. But maybe, instead of tacking on more features that will inevitably polarize your user base, someone should take a step back and consider the overall experience of running what's already built.
Have you seen the landing page of any recently founded startup? With the seemingly perpetual scrolling and the alternating backgrounds? Those exist because with each click that a user has to perform, something like 15% of them drop off. I wonder what the conversion rate is for designing your own partition scheme just to run a modern desktop OS.
Sent from my Fedora 21 desktop.