After my switch from iOS to Android, I switched now from OS X to Linux. I wrote already about my reasons for switching. I switched in 2004 from Linux to OS X because my laptop got stolen and I needed a new one. My requirements were a unix-style operating system where I have nothing to do to make it work and a small laptop with great battery runtime. The iBook 4G 12″ was the best in that regard back then. Last year I tried my luck with running Linux for 30 days and talked about it in some podcast-episodes of mine. The short version: running Linux from a USB-stick on a MacBook Air is not a very bright idea to get to know if Linux is any good. It works somehow, but not well.
But in the last couple of months or maybe it is a process which went already for a year or longer, I moved more and more of my workflow to open source-tools that are also available on Linux. The last things that were a problem were my iPhone, OmniFocus and 1Password. Since I switched now to Android, the iPhone is no problem anymore. Because the OmniFocus-client I tried on Android wasn’t good enough, but the todotxt-client (Cloudless) was really good, I switched my todo-workflow over to todo.txt. So the next hurdle was gone. And then I found out that you can run 1Password 4 in wine with working browser-extensions. So somehow the most important parts should work. I thought several times about switching to Linux but thought that I actually like my MacBook Air and have no real issues with OS X, so there is no good enough reason for it. But then one of the laptops in our household is on the verge of dying and a new Apple-computer is just too expensive right now. So I decided to go for a used Thinkpad X201. I added a 250GB SSD, got me a docking station and will get a 9-cell-battery in the near future. That is still cheaper than a used MacBook Air and far cheaper than a new laptop.
This blog post is about my experiences with getting the laptop up and running to a state that I want to and can work with. You will find some advice, links and nice software I found.
Installing Linux and first software
I started out with installing Mint 17. Why Mint? Well it is partly the fault of @tante. I asked him what I sould use: Ubuntu, Mint, Arch or Gentoo and his anser was Mint. Arch and Gentoo are closer to the bleeding edge and need more maintenance and Ubuntu is often a bad fork according to him. And what I read in the past it seems that Ubuntu goes more and more its own ways and therefore might get shunned from the community. The latter one is just my own concern. Installing Mint on the X201 was a breeze. It installed and every piece of hardware in the laptop worked out of the box. When I put the laptop into the docking station, everything continued to work and even using a secondary display over the display port worked. My secondary display is an old TFT-TV which I got only correctly to work with OS X with the help of SwitchResX and fiddling around. With Mint, it worked out of the box. So far so good.
Installing software was mainly no problem. Steam was installed fast and it didn’t need long until I could play my first games of VVVVVV, Super Hexagon, Super Meat Boy and Shadowrun Returns on my Linux-machine. In comparison to the past, I could suddenly play the games I want to play problem free on Linux. What a blast.
The version of vim is something like 300 patches behind in the repositories of Mint, so I had to compile it by myself. That was rather easy by following a guide called Building Vim from Source.
Let the fun begin
And then I started with the not so easy stuff. I wanted carddav-sync for syncing my contacts between my phone, my laptop and owncloud. I needed caldav-sync with calendars from iCloud, I wanted emulation of retro-console- and arcade games, I need Japanese input, I want to use mutt instead of a GUI-mail client, I need 1Password etc.
Syncing Carddav with owncloud
There are two ways I got cardday-syncing to work. But first you need the correct URL from Owncloud. I got the working one from logging into my owncloud, going to contacts and then push in the lower left corner the button for the Carddav-Link (a small globe). Mine looks like:
And after getting that, which was actually the hard part because I couldn’t find it and googled which led to lots of wrong results, it was easy to get it working.
Number one is Evolution. There you can add a new addressbook with your credentials and the link and then it just worked for me.
Number two is pycarddav. That worked as well, but I have no idea yet, how to get stuff into it. But at least I can pull my addressbook. I have a cronjob that runs it every 10 minutes. And with pycarddav I have an easy way to get completions for addresses in mutt.
I cannot recommend Thunderbird for syncing with carddav because Thunderbirds sync can only pull one e-mail-address from a carddav-addressbook per user. And if there are multiple addresses, it will choose one randomly.
Syncing calendars from iCloud
My wife is still all Apple and we need shared calendars, so I haven’t have a look yet how owncloud works with multiple users, calendar sharing and I remember only that it wasn’t that easy to get it to sync with OS X and iOS. So we still use iCloud for our calendars. The problematic part was again finding out the right URLs. I used a software from http://icloud.niftyside.com/ which I installed on my Uberspace. It was just unpacking it into a directory of the webserver and visiting the site. Then entering my credentials and I got all the URLs. There is even a URL for carddav, so you might even be able to sync your contacts with iCloud.
I am using again Evolution to sync my calendars. It works fine.
mutt and offlineimap
I had already settings which worked quite well but needed a bit of fixing up. I followed mainly The Ultimate Guide to Mutt to get everything to work. The only real problem I had in the end was getting offlineimap working as a cronjob. I ended up putting my passwords into the .offlineimaprc because I just couldn’t get Gnome Keyring to work with a cronjob and only the pure offlineimap-command worked in a cronjob. When I used for example “offlineimap -q -f INBOX -u quiet”, it didn’t work. Only “offlineimap -u quiet” (or whatever interface you want) works for whatever reason. I added hooks for Mairix in offlineimap and added a keybinding in mutt for doing a fast-sync of the inboxes, when I see on my phone that mail arrived and I am too curious.
In the beginning it looked a bit desperate in terms of emulation. I only found command line emulators and had problems getting everything to work. But then I found solutions.
a) Nintendo-consoles (NES, SNES, GBC, GBA): Higan which is in the repos of Mint 17.
b) Sega-consoles (Master System, Game Gear, Mega Drive/Genesis + CD + 32X): Kega Fusion which I needed to install from the site
For arcade games you can search for MAME and for the rest you might have to use a command line-client.
If you use an XBox360-pad there is a better driver than the built-in one which is called xboxdrv. If you need to map your joypad to keyboard-buttons there is the tool QJoyPad which does it. It is a bit weird to use, but it works.
For syncing I am using Bittorrent-Sync which has nowadays a nice GUI-tool in Linux as well: Linux Desktop Gui Unofficial Packages For Bittorrent Sync.
I am accustomed to have escape and control on my caps-lock-key. Control for key-combinations, escape when I just press it. This is great when you use vim a lot. For getting this mapping to work, I use xcape. This works only in X, but on my private laptoop I am most of the time in the GUI anyways.
For getting 1Password to work, I have a blog-post for you. If you are a YNAB-user, it works fine in Linux with wine as well.
For music I am using Google Music All-Access in combination with the Nuvola Player. With that player I get native integration into the desktop with Google Music, at least as native as it gets with Flash in the app. I get notifications for song changes and can use the media keys of my keyboard.
My GUI-client for todo.txt is DayTasks which is better than the other clients I tested. It is quite nice, when I do not want to use the command line interface of todo.txt.
The only thing which I did not figured out yet is a workflow for creating screencasts for Let’s Plays. There is ScreenStudio but this didn’t really work in an initial test. And from time to time Cinnamon just freezes – everything freezes except the cursor. Restarting X helps but this is not really satisfying. I did not yet find out what the reason might be.
So far I am positively surprised. The hardware worked out of the box and the laptop is really neat. If I wouldn’t have certain demands, I could have started to work directly after the installation of the system. The system is really fast, the fans are not too loud, when I am running tons of stuff, it seems to have lower RAM-needs than OS X and all in all it works and is pleasant to use. I enjoy having the docking station which makes live easier since I do not have to unplug my external HDDs and controllers when I take my laptop with me, but just remove the laptop from the docking station. I wonder if I stay as satisfied with this system, as I do with my Android-phone right now. Would you have told me a couple of months ago that I go from all OS X and iOS to Linux and Android, I would have laughed. But right now, everything works and is fun to use. I wonder what I will think in a couple of months once the novelty has worn off.