Ask HN: Switching from OS X to Linux

98 points by 0942v8653 ↗ HN
I'm switching from OS X to Linux because I'm tired of having to have a kernel extension to remap keys and a stupid "window manager" just so I can hit Caps Lock+Up to make a window fill the screen. But more importantly, I'm tired of every feature and option being taken away from me. OS X is just going downhill, so it's probably a good idea to switch as soon as possible.

There are a few things that I'd want in my new Linux distro:

- I'd really love to keep my OS X-style keybindings. It's really frustrating for me to be on Windows and try to paste the system clipboard into a command line. What is it again? Shift-Insert or Control-Insert? And how do I open a new terminal window? Alt-F2?

- The above also goes for Emacs text editing bindings (OS X comes with C-p, C-n, C-k, C-o, C-v, etc.). I want them around too.

So being able to rebind keys is really important to me.

I'm also looking to replace a couple apps:

- iTerm2. I was sure this wouldn't be a problem, but after looking more into it, apparently ... it is. I've heard that some emulators can't even wrap text properly. I'd also like if it could support profile switching via escape code and other nice things like that.

- Alfred. Not so much for searching for applications, more for having a mini-"command line" that I can use from anywhere.

Another thing is compatibility. Of course if that was my highest priority, I'd go with Ubuntu and Unity. It seems like more and more things are starting to say "Linux" when they mean "stock Ubuntu". I cannot stand Unity, so I'm thinking Linux Mint. I'm also giving Elementary OS a try in a VM right now, so we'll see how that goes.

168 comments

[ 0.21 ms ] story [ 240 ms ] thread
Try one of the ubuntu flavours. http://www.ubuntu.com/about/about-ubuntu/flavours I'm currently working with Xubuntu. I have no idea about replacements for your applications.
I notice Bodhi Linux have recently released 3.0, I'd been using an older release. I'm a sysadmin command-line person, I like bash and a good terminal. Bodhi had visually appealing features, separating them from the Windows95 feel most other desktop Linux has. I switched to XUbuntu recently as while Bodhi and Enlightenment and Terminology are slick, they were missing critical features like copy/paste between applications and some functions needed a mouse. For their challenging the dull GUI status quo, i applaud them. I have recently been satisfied, like you, with Xubuntu and I am not using any jazzy or alternative terminal emulator.
Try Elementary OS, its based off ubuntu and is almost a dead ringer for OSX. It has the window management you are looking for as well as a couple of apps. Try Synapse as a replacement for Alfred.
Indeed, Elementary OS is very handy for anyone coming from OSX.
But note that it is still in its infancy. I use 0.3 beta as a daily driver on my personal laptop, but only because all my work gets saved to git repositories or dropbox folders. If it craps out (hey, it /is/ beta after all!), I switch to an Ubuntu Live USB to work.

That being said, the more people on Elementary the better! I've grown to like Vala, and encourage devs to help contribute.

elementary os is quite stable. the only problem i have w/ it is the dev team promoting yet another lang to code apps. why not rust/nim/go?
Vala predates all these, and it's been a de facto GNOME standard for a while now.
The last time I heard from GNOME was about javascript binding. I think the choosing of programming language in this age is more to do with marketing. Piggyback is the right way.
The recent kerfluffle in which the ElementaryOS team changed their download page to try to hide the "free" option and said "We want users to understand that they're pretty much cheating the system when they choose not to pay for software" makes me super hesitant to even try it. I'm not sure I want to be using a Linux distro produced by people who think that free-as-in-beer is a bug.
To be honest, I don't see that as too much of a problem; Ardour, for example, is free-as-in-speech and technically free-as-in-beer (since you don't have to buy Ardour to get the source code and compile it yourself, and it is indeed available as a package for most distros), but still only provides binary downloads via the website to users who pay for them. There are also plenty of distros - like RHEL and SUSE - that are only officially available in their paid-for versions (though both of those have corresponding free-as-in-beer development/testing versions - Fedora and openSUSE, respectively - and CentOS also exists as a theoretically-drop-in RHEL replacement).

Software has to be monetized somehow. SUSE and RHEL and Oracle Linux are monetized by subscriptions to support contracts. Slackware is monetized by sales of double-sided DVDs. Ubuntu is monetized by a mix of support contracts and begging for donations on the download page. OpenBSD is monetized by a a mix of donations and merchandise sales (including install CD packs and t-shirts and such). I'm not one to believe that ElementaryOS is any more or less sinful than any of those examples.

I don't have any problem with monetizing FOSS - I think it's awesome, in fact. I have a ton of respect for RedHat and their business model. Ardour's model is great, too - the product is free, but we'll sell you convenience. It's entirely possible to have a saleable product coexist with a FOSS license.

My issue with the eOS team wasn't that they said "we want to make money for this", but that they accused their users of being cheats for not paying them for the software, the vast majority of which they didn't write or maintain. I want OSS devs making money. Heck, I want the eOS guys making money, if they're making a product that people like and want to see continued. But their tack was pretty amazingly hypocritical.

Be careful when updating packages. As an OS X user used to blithely updating anything and everything because it always "just works," I've gotten into shocking situations where I've actually bricked my Elementary install simply by doing an update. When I approached Linux users about this, their response was something along the lines of "Yeah... don't do that." (Seriously?)

As a result I've had to run Elementary in a VM with snapshotting, and I roll back the snapshot if an update hoses the install. Kinda shitty, if you ask me.

It depends on the distro. Some distros can and will mangle themselves if you blindly upgrade everything without doing at least some research beforehand (Ubuntu and Arch are notorious for this; Arch because it's bleeding-edge and has absolutely zero consideration for compatibility between packages, and Ubuntu because... well... who the hell knows). Others do a much better job of making sure all packages are well-tested both in isolation and in integration before making them available as upgrades; Debian Stable, Slackware, and openSUSE are good examples of systems where you can usually do a blind upgrade of everything without problems.

And then you have NixOS, which - while not really mainstream yet - is probably a good indicator of the future of configuration and package management, and - I think - will someday be the gold standard here. Upgrade fucked up your system? No problem; just select your last-known-good configuration at boot, then try again (or don't try again, if that's your prerogative).

> No problem; just select your last-known-good configuration at boot, then try again

This sounds like a configuration that could potentially be applied to other Linux OS'es, no?

In theory, yes.

In practice, this tends to be a difficult problem to solve because most Linux environments are managed imperatively/procedurally rather than declaratively, meaning that in order to revert to a previous state, you have to be able to run the exact commands required to do so. The traditional answer is to manage such a system with Puppet or Chef - thus allowing an administrator to tell the system what it should look like rather than how it should go about it - but that's generally yet another layer of logical overhead to be considered.

NixOS - in theory, at least - addresses this more fully by integrating declarative configuration rather pervasively throughout the operating system itself, rather than trying to just add a layer on top of the operating system in order to manage it. It relies heavily on the Nix package manager - instead of installing a program directly to the filesystem hierarchy, it installs it to an isolated folder named with a theoretically-unique hash, allowing multiple versions of the same program to coexist without conflicting (and allowing users to pick which version they want), making it painless to roll back software upgrades (just go back to a different selection of which package folders should be linked to, rather than having to manually remove and revert each package), etc.; NixOS leverages this package management system for everything, rather than just the software installed, and will create GRUB entries whenever you commit your configuration changes (by running `nixos-rebuild switch` or `nixos-rebuild boot`, causing an instant configuration switch or a configuration switch on next boot, respectively).

Other operating systems can hypothetically do this, too, and they'd end up looking similar to NixOS in terms of how things are organized and configured. As I said, I think that's probably the direction where most operating systems will eventually go.

So all the actual filesystem entries are basically soft or hardlinks to the most recently selected version?

Time Machine on OS X works that way (as do a few other incremental backup solutions, I believe). Notably in Time Machine's case, it hacks a way to hardlink to entire directories which haven't changed, which is normally not possible. (There's a parallel here with how immutable data structures are managed.)

Unity isn't the only Dekstop in Ubuntu you have most if not all known WM & Desktop available. KDE is the prefered Desktop for its polish and lot settings, but never used it myself. I use GNOME3, it works. It has extensions written in JS and a two "Alfred" like GUI CLI (one with search and another without).

emacs: you can probably import OS X version settings.

iTerm2: I don't have that problem in gnome's terminal that said it's kind of limited, screen & tmux are much more powerful.

with "emacs" OP refers to an OSX feature where every text field / input box in every app / dialog of the system supports the basic emacs bindings. So whether you're in Safari, Chrome, Numbers, Office, TextEdit, Photodesk, or any other app, the basic emacs movements commands always work (apparently the original NeXT hackers were big emacs fans).

I'm running various Linux distributions in a VM from time to time, and this is something I really miss. I'm not sure if Elementary OS maybe has this though, never tested it.

gsettings set org.gnome.desktop.interface gtk-key-theme "Emacs"

Yeah, the fact that there isn't UI for this basic pref says a lot about the relationship between desktop environments and "power users"...

(source: http://askubuntu.com/questions/181532/emacs-keybindings-in-u...)

I just tried that in Elementary and it doesn't work :(

I'm sure I'll find a way, but I'm starting to realize that the Cocoa Text System is pretty great compared to what other OSes have.

What didn't work about it? I have this in my .gtkrc-2.0:

    gtk-key-theme-name="Emacs"
And this in ~/.config/gtk-3.0/settings.ini:

    [Settings]
    gtk-key-theme-name = Emacs
If those settings appear in both places, after restarting a GTK+ application the bindings should just work. They actually work better than in OS X because you're free to use the Alt/Meta shortcuts to skip words without reaching for the cursor keys.

There are a couple of GTK+ applications that annoyingly override the shortcuts, like Pidgin for example (which binds C-w to "close window").

As an Alfred replacement check out Kupfer[1], it's got a number of plugins to interact with different applications I use. It's actually the reason I went searching for and found Alfred to replace the functionality on my Mac.

I haven't used iTerm on OS X, but Terminator[2] might be worth checking out as a Linux replacement.

1. http://engla.github.io/kupfer/

2. http://gnometerminator.blogspot.com/

Here here! I recently did this - well, I moved to a linux VM. Somewhat.

First, I did not move everything; I only moved my dev enviroment. I have things bound to OS X and I can't say goodbye just yet entirely. But with everything in a VM I have a nice walled garden that i know will work, and I can update OSX with less hesitation as most of my time is spent in the safe world of the VM.

It also makes it easy for me to copy it over to my laptop (I'm on an iMac) and continue what I was working on from there; or to just reboot into windows and play some PC games. And being able to do branching at a machine level can come in handy too.

Anyway. To answer your questions about distros. I started with centos but it does not appear to be a great desktop OS, and chrome doesn't even support it. But I also noticed the font renderings in the browser were notably crappier, and ubuntu has a package to make that not suck so much.

So, I went with linux mint. I do NOT like the fact that the firefox it comes with prevents you from using google as your search engine (at all) because mint wants a cut of google's profits; so you simply can't use it. That still gets under my skin. But you can download Firefox directly and get around that, which is what I did.

But basically, anything ubuntu based. as much as I otherwise dislike ubuntu, it'll equate to the least tinkering required.

Otherwise my apps haven't really changed - everything I used regularly in OSX is in linux.

Some of the copy/paste behavior is nutty, but I haven't looked into tuning that yet to be honest.

But otherwise, I'm pretty happy with the move and the solution. If OSX gets worse I can move more into the VM.

Regarding the font rendering on CentOS, at least on recent versions of Fedora, I have been able to just run fedy and let it do its magic. The result is very nice and this was an area that bothered me a lot. So I would give Fedora 21 Workstation a try (with aim to keep in RH ecosystem, if you've got CentOS on the servers). This comment is completely biased, be warned.
I use Linux Mint dual-boot and recently started using it as a dev environment in a VM- albeit with Windows. Good distro.

On the Linux Mint site there is a workaround for using Google for search. It involves adding it to your choices, then selecting it.

Go here, and don't give up reading it too soon:

http://www.linuxmint.com/searchengines.php

Are you using a remote VM or are you running it local? I'm using a decent MacBook Pro (2014) with 8GB of RAM, but running an Ubuntu with VirtualBox is performant enough to work in it. Or are you just ssh'ing into your VM ?
Running it in a local virtualbox VM. I have a 4-core imac with 16 GB of ram and throw all 4 cores at it and a good portion of the RAM. Going with a fixed disk size instead of dynamic gave a notable performance increase, too.
I have not had luck finding an equal to iTerm2 on Linux. While there are many to choose from, few combine all the features (color support, themes, layouts, configurable hot-keys for navigating panes, etc.) in one package.

The one thing I miss the most is having nearly border-less panes for differing font sizes. To my knowledge, that can't be done on tmux or screen.

I'd welcome any suggestion of a terminal with the features of iTerm2.

Or give a tiling window manager [0] a try. My favorite is i3 [1].

[0] https://en.wikipedia.org/wiki/Tiling_window_manager

[1] http://i3wm.org/

+1 i3 is pretty darn good. Would be great if it was a little more user friendly though :-)
I'm just curious what parts you find not quite user friendly enough?
Oh it would be nice to have reminders for keyboard shortcuts, in status bar when you press the meta key etc. Since you're relying on a lot of memorising - that would be a huge asset.
I second this recommendation, though I personally prefer XMonad or bspwm for my own tiling WM needs.
Mint has been my choice. I'm not 100% happy with it, but its the best I've found so far for a desktop experience.
Edit: Even had a few Steam games transfer over, which was cool. I've had some issues with Java support, but most people wouldn't care about that, and fairly random, as in the Toolbar support. I don't particularly trust who owns the distro, and if someone pointed me at a better one, that is wholly open source, would change in a flash, but I've liked it so far.
Ubuntu lost me with me the abortive Unity interface, and sending my queries back to base.
Gnome3 is also nice http://i.imgur.com/8ZxohmT.png :)

[x] - I yet to have see terminal emulator shipped with ubuntu that doesn't wrap text

[x] - Gnome 3 has Alfred like search over files, apps, windows... also mutate (https://github.com/qdore/Mutate)

As a side note, I could never bring myself to like Ubuntu's default font. To my eyes it always looked nothing short of hideous, I wonder if I'm the only one.
I'm not sure how well it compares to iTerm2, but check out terminator.
My personal favourite terminal on Linux is yakuake (global hotkey for bringing the window to the foreground is really useful).
On the same line you have Tilda https://github.com/lanoxx/tilda

I used the three of them and always ended using Tilda. Be sure to install 1.2.2 (from the gh repo) so you can even use Solarized colors (the one on the ubuntu was 1.2.1 last time I checked).

Xfce's default terminal emulator also has this hotkey feature now.

Yeah, Terminator seems to be the most feature-implemented GUI terminal so far.
> I'm tired of having to have a kernel extension to remap keys and a stupid "window manager" just so I can hit Caps Lock+Up to make a window fill the screen.

I'm using Karabiner + Seil for this. I suppose Seil is the kernel extension you mention? Is Karabiner technically a "window manager" or did you have another app in mind?

If this is the only source of your complaints, honestly, I believe you'll have a lot more to complain about Linux.

I understand your frustration at Apple's walled garden, though. It is...dis-empowering.

there's also ControllerMate which certainly has a kernel extension.
I used to use ControllerMate, but it just wasn't as good. Now I use Karabiner, but doesn't anyone else think it's a bit absurd to have to get a kernel extension just to remap keys?
Software comes in many shapes and forms. That it has to be a kernel extension in this instance seems a bit of an odd thing to complain about.

I'd be much more concerned if Karabiner couldn't exist in a future OS X. That you can have it, use it and have it work well is more important than the mechanics of how it works underneath.

(comment deleted)
Based on your complaints, it sounds to me like OSX would be perfect for you.
Ubuntu 14.04 Trusty Tahr is where you want to be. It Just Works, plus there's a huge and awesome community to help out if you have questions. I haven't tried the derivatives, like Mint or Elementary, but I've heard good things. Note that even though Ubuntu is based on Debian, you do not want Debian... It's release cycle is a lot slower, the UI is much less polished, and you'll be stuck with versions of software that are really really out of date.

A note on the name and version - 14.04 means released in April 2014, and the names go up alphabetically per release (T U V etc).

> awesome community

I think a lot of us have had mixed experiences. I've had some that were awesome, but some that made #python look like a hippie drum circle.

(Of course, sometimes #python is a hippie drum circle, but that's another conversation.)

I agree. The problem is Ubuntu is too popular, so you get many "mainstream" users responding with really nasty hacks to make things work rather than fixing things properly.

Arch linux (actually I use a spin off called Manjaro) seems to be a lot better in that regard.

There's also a lot of impatience, intolerance, and infighting.

I've always liked Arch. I'll give Manjaro a look at some point.

Agreed. Too often it's the blind leading the blind.

"Oh download this script, and run it as root", or "Edit this file and paste the following". With no real understanding or awareness.

Arch is starting to suffer from similar problems, though, from what I can see; a large number of Ubuntu users are graduating to it and its relatives.

That said, as a Slackware user, I'll admit to the Arch wiki being one of my go-to stops for reading up on how to tweak some program or other; Arch's wiki and the Slackbook are both on pretty equal footing for the closest things the GNU/Linux world has to OpenBSD's manpages in terms of complete and comprehensive documentation on ever last facet of the underlying system.

Arch does seem to have a higher bar of entry, i.e. its a bit complicated to install. Ubuntu always seemed to aim itself at the inexperienced Linux user. I still have it on one of my machines as its the easiest way to get around secure boot.
(comment deleted)
Fedora's another solid option; it's much more bleeding edge than the Ubuntu LTS releases, but it upgrades cleanly and tends to be very developer-friendly.
Fedora is a great platform if you like to be living in the future, where what Fedora does today is what other distributions will reluctantly pick up on in a few years.

Fedora was one of the first to move to chkconfig-style scripts, and it was one of the first to systemd. It sort of forces you to learn new things, even if you don't want to.

The big downside is the updates taper off really quickly, so unless you keep rolling forward, you'll soon end up with an orphan distribution. Fedora is the philosophical opposite of the Ubuntu LTS releases.

Fedora's also a buggy mess at least 99% of the time. It's not something I would readily recommend to even an experienced user, let alone one new to GNU/Linux, unless they're prepared to use an operating system which is in no way meant to be stable.
This is true if you're running pre-releases, but what kinds of issues have you had elsewhere?

I've been running Fedora for over a decade, and while it suffers from being bleeding edge sometimes, I don't think I've ever had stability issues or things I'd describe as a buggy mess.

I've only used "stable" Fedora releases (i.e. the ones officially released, named funny names, etc.). I think the most recent I used was whatever one came right before Spherical Cow (or maybe Beefy Miracle; my mind has done a good job of suppressing Fedora from my memory, which I'm thankful for, lest I be diagnosed with PTSD); whatever it was right when Fedora had switched over to systemd.

Fedora would throw kernel panics on seemingly-minor things. Things like starting Xfce instead of GNOME3, for example. Things like running for more than 15 minutes. Silly cases. The hardware was not the problem; it handled Slackware (a non-systemd distro) and openSUSE (a systemd distro) quite alright. Because it handled openSUSE alright, I knew it wasn't systemd itself either (though that certainly didn't help).

Fast forward a year or so, and I'm investigating using Fedora in order to leverage FreeIPA to authenticate against an Active Directory environment. Fine and dandy for all of three days, after which Fedora magically forgot all my network settings without any explicable rhyme or reason. Switched back over to openSUSE (which also has AD integration features - and much more polished ones, so I found), and everything worked fine for several months (after which I ended up finding a better job anyway).

To put this in perspective, I've found everything from Debian Sid to Arch to Slackware-current to openSUSE Factory significantly more stable than Fedora. I've also found RHEL and CentOS to be significantly more stable than Fedora. By some god-forsaken Beefy Antimiracle, Fedora somehow manages to fail even harder than Softlanding Linux System (which - if you know your distro history - was so awful as to cause Pat Volkerding and Ian Murdock to create Slackware and Debian (respectively) in a desperate bid to give people good reason to not use Softlanding Linux System). That's absolutely depressing that an ancient and horribly-designed distro from 1993 running on my ancient Compaq Presario 1210 runs better than a supposedly-modern distro like Fedora.

> you'll be stuck with versions of software that are really really out of date

I've had way more trouble with out of date packages on Ubuntu than Debian (Sid).

> I've had way more trouble with out of date packages on Ubuntu than Debian (Sid).

Just my two cents, but I've had way more trouble with missing packages. It's a pity, but Ubuntu repositories are growing at a much faster pace.

If I want the latest and greatest I can always compile from source...

Just to add to your comment. I've had almost zero issues with Sid, and the issues I've had I've avoided by using apt-listbugs anyways. I can't say that when I tired Ubuntu and Mint. Mint actually botched my install on an update, took me 3 hours to undo the mess and I promptly backed up and installed Debian on that machine. YMMV
I'm a big fan of XFCE for your DE/WM. It allows you to set loads of keyboard shortcuts for various WM activities like launching programs, switching workspaces, moving/resizing windows. As far as non-WM activities, look elsewhere in this thread for program recommendations.

The only Linux distro I can stand is Arch Linux. It will require you to become a sysadmin (comfortable with a shell, editing a few config files here and there, and following instructions from the wiki), but you sound comfortable with that. Arch will never break beyond recovery for you. It's a very simple distro that doesn't try to "do everything" on your behalf. Other distros like Ubuntu, Mint, and Fedora all seem to have a significant chance of self-destructing when I update them. Arch just keeps working. I've been using it exclusively for over 7 years.

My experience with Arch and updates is exactly opposite. Specifically, if I boot up a computer with Arch on it that has been sitting in a corner for a month or so, updating is almost guaranteed to break everything. I think this is just because of frequency of Arch updates. If you update every day, then it's probably no big deal. But then I find the same is true for other distros (go too long without updating software, updates break things). Personally I use Debian more than anything else, and that's mostly because I'm most comfortable and familiar with it.

Personally I use OSX (still Mavericks, for now) for development, but almost all of the code that I write gets executed in Linux VMs (often through Vagrant). For me, this eliminates most of the headaches that come from developing using open source technologies in a non-free environment. I'm sure it creates some headaches of its own, but I find it works well for me.

Arch is arguably worse than most about this, because their rolling repositories dump versions after a couple of updates are available. So if you wait too long to update, it can't even figure out how to get started, because it no longer has the slightest idea what the packages you have installed even mean.

Don't get me wrong, I like Arch a lot, and I've been using it as my main Linux distribution for the past five years at least. But if don't do a full "pacman -Su" at least once a week, it's absolutely going to shit the bed at some point.

I guess I'm kind of surprised that people are OK with updating infrequently. Don't your distros distribute security updates? How long do you wait before applying them?
I just want to use my computer. I don't want to just constantly administer it instead.

I usually don't want new features. I'd often rather have what's already there fully working. The lack of finished software available (e.g. TeX) is astounding.

In my case I might have had arch on a machine that just sat in a corner for a month. Boot it up -> update -> brick.
(comment deleted)
I usually do updates about once a week. If I need to install a new package, I'll usually refresh everything then as well. But occasionally it's longer than that. I just forget for a week or so, go on holiday, etc.

Most of the time, I come back, do an "Syu", and it's fine. Occasionally though, things go pear-shaped. Once or twice I've needed to manually fetch packages from one of the archive sites and manually copy it into pacman's cache directory to get things up and going again.

Manjaro is a nice spin off of Arch - with a graphical installer and package manager. I reckon probably have the skills to install Arch these days, but not the time or inclination to wade through pages of documentation.
You can even change the unconfigurable lxterminal from lubuntu to use OS X keybindings. Run apt-get source lxterminal. Then change the bindings in src/lxterminal.h (change <CTRL><SHIFT>C to <ALT>C and the same change for V, for paste). Then run apt-source --commit to commit your change locally and finally dpkg-buildpackage -us -uc to build your modified lxterminal.

Edit. And change other keybindings in .config/openbox/lubuntu-rc.xml. For instance change keybind key="C-Left" for GoToDesktop left to get the same binding as in OS X.

Currently dual booting Ubuntu and Windows at home to get my feet wet with Linux. At work I use a Mac and the closest thing I've found to Quicksilver or Alfred is Mutate.

https://github.com/qdore/Mutate

For a terminal, you can give terminology a try: https://www.enlightenment.org/p.php?p=about/terminology
Wow, I had never heard of this but it's really cool. It comes with a couple of commands that are really impressive.

tycat can put an image inline in your terminal. tyls gives you an inline folder view with thumbnails that you can click and preview.

Feels like a thoroughly modern terminal emulator.

About iTerm, I have found this one: http://finalterm.org I have never tried it but it seems great.
It's pretty buggy and slow (for me at least). There's a 50ms delay after a keystroke. Kind of frustrating.
"Final Term is in heavy development and neither stable nor feature complete!"
I know. I shared at least to keep an eye on the project.
Good! I switched to Debian Linux on my Retina MBP about 4 months ago fulltime and after a few weeks of twiddling and fiddling it's super fun, fast and nice. I'm really enjoying it.

I normalized all the keyboard shortcuts using several methods, the most important one is to switch Cmd and Ctrl keys. I documented that here: http://mntmn.com/Hipster%20Linux#keyboard-cmd-ctrl-copypaste...

I use Terminator for Terminal and set up Ctrl-C und Ctrl-V for copy and paste shortcuts. Terminator will smartly handle Ctrl-C as a signal when there is no selection.

I use XFCE with a custom HiDPI theme and app switcher works with Cmd-Tab. I bound Cmd-Space to Application Finder which gives me a Spotlight-like launching experience. For fulltext search I can recommend recoll.

I use Ergoemacs which gives me CUA-like shortcuts in Emacs, too.

Feel free to drop me an email (lukas at mnt dot mn) if you need more tips. Almost everything can be made to work.

Also, a list of superb tools:

- Inkscape instead of Illustrator - GIMP instead of Photoshop (just install Photoshop keyboard shortcuts and use single window mode and it's much less "alien") - Iceweasel/Firefox instead of Chrome (super fast, works well with HiDPI and the dev tools are really on par now) - Steam (obvious) - pavucontrol as audio mixer - ncdu to track down disk space usage - sxiv to view images - zathura to view PDFs

In general I do a lot more stuff via the commandline now than before and a selection of custom scripts in ~/bin is growing. For example I have a script "serve" that will copy a file via scp to my webserver and return the URL that I can then share, and I have cronjobs that fetch my bank account balances and synchronize my mail via offlineimap etc.

And the thing I like most is that I know exactly what the running processes/services are doing; there are no adware/crapware/updaters; memory usage is minimal (about ~150 MB for a clean desktop); the system never swaps (8GB RAM).

Opera's whole UI is hidpi enabled, unlike with FF and Chrome. You might want to give it a try.
That's a great suggestion.

I've been through everything trying to get a decent HiDPI experience, I'm running Opera beta and it all just works perfectly.

I'm running Debian Testing/Jessie and I've found that the Cinnamon Desktop Environment is the best for me, I've tried them all (trying to get the best results for HiDPI) and it is the one I'm most happy with.

Did you do anything for trackpad gestures? My last attempt using Linux on a MBP (~3 years ago) was abandoned because I couldn't get over not being able to do three-finger swipes, etc.
No, I'm not a big fan of gestures, for me keyboard control is more important. Smooth 2-finger scrolling works, though.
I bought an MBP just to run Linux on it a few years back. The WiFi wouldn't work and the gesture support sucked. I love Linux SO much more than OSX or Win so it was a huge disappointment. The WiFi issues have been solved, but the gesture support on OSX is still amazingly superior.
I'm running Linux Mint 17 XFCE with newer kernel and can confirm that everything works well. Switching to a >3.16.x kernel provides the Thunderbolt support I needed for my Cinema display ... everything else just works[1].

[1] With usual caveat that pulseaudio is horrible. With wired headphones it only crashes about once a week ... with bluetooth headphones it's at least once a day. It doesn't appear to like the device "coming and going".

> I use XFCE with a custom HiDPI theme

Your documentation is great, thank you, I'm trying your XFCE4 theme right now (I've been using Cinnamon until now).

Could you possibly clarify these steps as written on your website for me?

[1] Activate in xfce4-settings-manager > Appearance > mntmn

[2] Activate in xfce4-settings-manager > Style > mntmn

I've launched xfce4-settings-manager and can set the "Appearance" in [1] to be mntmn but can't find where to set [2] (sorry xfce4 noob).

Do you use an external monitor with your MBP? If so, how well does it work?

Also your docs don't mention how much battery life you get ;)

I use open box and I have

custom key bindings. Anything that I want.

About alfred: I have this script from crunchbang that uses dmenu and then displays and allows you to search for a binary to run. Also just alt+f3 in most DEs will open a dialog that you can run binaries/scripts in your path with.

If what you want is something more along the lines of a terminal where you can see the output, there's extensions for most DEs where a terminal will be opened on certain key combination and place it somewhere and hide it immediately when you're done with it.

After a MacBook air crash, I ended up on Debian/XFCE. This was more out of necessity than choice, as I could only afford a laptop with very limited resources.

I would recommend Fedora (what I'm using at work), if you like stable/reliable packages (Debian also wins here), especially if you're not requiring the latest and greatest everything.

In terms of UI, I really like what Elementary OS did, but they don't update their packages with any frequency (the current release is over a year old.) XFCE gives the customisability / get-out-of-my-way feeling that I sometimes want on OS X, but be warned that no Linux UI can match apple hardware and software for gestures.

In all, it's a minefield. Format a separate /home, and be ready to jump distros a few times to start with.

Try Manjaro. It's my favorite distro and has amazing driver compatibility out of the box. It's also based on Arch Linux so there are rolling updates and no need to worry about release cycles breaking your machine. It's essentially the "Ubuntu" of Arch Linux
Being an OS X user myself I would lie if I said the thought hadn't hit me to switch to another Unix or Unix-like OS. Most notable candidates for me were:

Elementary OS Looks great and Ubuntu based so there's a thriving community around it. Sort of.

Crunchbang Linux Looks interesting. Didn't look into it much more than just click around on their website.

FreeBSD My weapon of choice for servers. I bed it'd make a mean desktop but there'd surely be a lot of work to set things up.

When I'm on Linux desktops the things I miss the most are Safari, Xcode, Alfred and Adobe Photoshop. Not to mention the polish. The things I miss in OS X are a proper volume manager (like the one in Windows where you can control the volume of individual applications or mute them), case sensitive file system (I know you can set this but I don't because of legacy script compatability) and an out of the box package manager/port tree. Yeah I use brew but the volume thing is driving me nuts having gone from Windows.