From Linux to OSX

From what I’ve noticed so far, it seems that almost every popular Linux DE is imitating OSX in some ways. For instance, Ubuntu’s move to unity borrows OSX’s one instance per app, which pained a lot of users because it will affect their workflow. Gnome 3 borrows the same model too. A lot of linux desktop users voiced out their complaints, and honestly, I share the same sentiment. Ubuntu’s classic Gnome 2 is the simplest, most user friendly, and beautiful DE I’ve used in Linux. I can even combine Gnome 2 and XMonad to get the best of both worlds. Here’s my rather dated XMonad config for those who are interested.


I’m a happy Linux user, but the major changes in the leading desktop environments made me curious about OSX. Aside from that, some of my coworkers and friends swear by it. Like Linux, OSX is a unix-like operating system, which means I can replicate my emacs and terminal workflows in an OSX environment. Other things I’m looking for, in no particular order, are:

  • Remappable keys. Either through a GUI or through an xmodmap-like config is fine.
  • An easy way to arrange and adjust windows, if not a tiling window manager.
  • A package manager.
  • A nice community.
  • Easy way to launch apps. Something like Kupfer

The Machine

I got myself a 2011 Macbook Air 13”. It’s awesome. Best piece of hardware I’ve owned so far. I’ll stop there before I’m accused of being an Apple fanboy :)

Configuration Über Alles

OSX just works, but I like to tinker. I’m willing and prefer to spend some of my time to adapt an environment to my style rather than me adapting to an environment. Thankfully, OSX is configurable enough even if it’s not an open source system. The first thing I did is to…

Swap Caps Lock and Control

Which is pretty much mandatory for emacs, or even vim users. And then I…

Swapped ⌘ and ⌥

Because I’m a Linux refugee and emacs user, I make heavy use of the Meta key. ⌥ is Meta in OSX and ⌘ is Super. In my case, it makes sense to swap these two. Besides, in Linux, I’m used to using the Super key for WM operations. OSX already has some emacs CTRL keybindings, but it doesn’t have the Meta keybindings by default. Swapping ⌘ and ⌥ allows me to define the Meta keybindings without rebinding a lot default ⌘ mappings. Now that I’ve adapted OSX to my muscle memory, it’s time to move on to…


The missing package manager for OSX indeed. With this, we can now get…


Via brew install emacs --cocoa. And then I want to launch it with…


Kupfer is actually based from Quicksilver. Most OSX users prefer Alfred nowadays, but I still prefer open source alternatives over paid software. Unlike the reports I’ve seen about Quicksilver, I actually find it fast and stable. Aside from using the catalog for launching apps, I have defined the following triggers for fast app switching:

  • ⌥ + SPACE to activate Quicksilver
  • ⌥ + E to launch Emacs
  • ⌥ + R to launch Chrome
  • ⌥ + T to launch Terminal

Each trigger's scope is limited only to Quicksilver.
Each trigger’s scope is limited only to Quicksilver, which means, I have to activate Quicksilver by pressing ⌥ + SPACE before I can launch emacs with ⌥ + E. I prefer the limited rather than the global scope because I can still use the trigger keybindings in other apps. Otherwise, pressing ⌥ + E while in emacs would bring emacs to the foreground instead of emacs executing forward-sentence.

And then that’s it

Configuring OSX to match the workflow I’m used to is ezmode compared to doing it in Linux. So far, the only thing that’s lacking from my previous setup is a way to tile windows. Unlike Linux, I can’t replace the OSX WM with a tiling one, but I guess there’s an app that can do the same. Right now though, I’m happy with Quicksilver triggers.

So far, these are the things I like about OSX:

  • It looks nice.
  • Ezmode compared to Linux.
  • *nix like.
  • Friendly user community.
  • I can port my old dotfiles easily because of point three.

Overall, the transition is a pretty easy one. Actually, I find it easier to switch from Linux to OSX than to switch from Slackware to Gentoo to Fedora to Ubuntu. But that’s probably because I’ve done enough playing around with various Linux distros to know my way around another *nix.


comments powered by Disqus