The Missing Bit

Leaving macOS, part 4 = Landing Setup

This is the fourth and last part of my entry about leaving macOS.

So, I have been testing my current setup for long enough to share it.

TL;DR: Install Windows 10, cygwin X11, ssh to Linux and run Linux app through the X11 server.

Windows 10

A few years ago, I would never have considered Windows for anything. Between 2000 and 2009, I worked in IT a lot, I really hated Windows. When working with Windows, each passing second was a hundred knifes poking my eyes.

I guess things changes. I was already using Windows 10 for gaming on my hackintosh, in dual boot. And, it was working OK.

Switching to it was not something I was considering, until I read about WSL or Windows Subsystem for Linux. I was more interested by the direction Windows was taking than the actual technical capabilities of the WSL (which is similar to the FreeBSD Linux emulation if I understand it correctly). I mean, Apple is doing lots in the anti-developer direction but Windows is planning to support Linux? Woaw, that was something.

Windows WSL

I installed the linux thingy, and while it worked, it had really too many rough edges (no inotify support at the time…). Another issue was the terminal (the console emulator).

Linux Server

It became clear quickly that I had to have a Linux machine somewhere. I ended using a bhyve VM on my NAS, because my NAS is ridiculously oversized with 64GB ram and a 12 core CPU. You can use a Linux VM under Hyper-V, it’s built into Windows 10.

Now, having a Linux server is great and all, but I need a perfect integration in my workflow, I don’t want a 80x20 ASCII console from cmd.exe .

I tried all the native Windows terminal emulators (Console2, ConEmu, bash for windows, powershell…) but they all sucked.

I ended up having an idea, a simple one, to run an X11 server on Windows. So I installed cygwin and started X11, sshed to the linux, typed urxvt and “boom”, I had a great terminal with colors and shit.

The X11 thingy had the side effect of sharing the X11 clipboard, so yanking in vim would put the data into my Windows clipboard.

To edit all files that are not source code, I shared my home folder via CIFS to open SVG files with Illustrator.

So, to summarize:

  • urxvt exported with X11 for terminal, terminator could work too

  • CIFS access to the Linux home (samba server)

  • vim in my terminal as Editor

  • Android Studio running on my Linux server, interface works with X11

  • iOS simulator and Xcode via VirtualBox VM (only to maintain apps, I wouldn’t call it usable for full time dev)

I am surprised how good Windows has become. The window management is great for multi display, the UI is fast. CIFS support is vastly superior to macOS. Still, I configured my router’s firewall to block all Windows telemetry hosts, I also block Windows update servers, and unblock them when I check for update, otherwise Windows prompt me for update when they are available.

So, I use Windows as my work OS. This is really insane. But I guess things changes.