Ask HN: Switching from OS X to Linux
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 ] threadThat being said, the more people on Elementary the better! I've grown to like Vala, and encourage devs to help contribute.
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.
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.
https://github.com/ManuelSchneid3r/albert
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.
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).
This sounds like a configuration that could potentially be applied to other Linux OS'es, no?
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.
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.)
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.
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.
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'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.
There are a couple of GTK+ applications that annoyingly override the shortcuts, like Pidgin for example (which binds C-w to "close window").
https://github.com/emgram769/lighthouse is like alfred
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/
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.
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
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.
[0] http://gnometerminator.blogspot.de/p/introduction.html
[0] https://en.wikipedia.org/wiki/Tiling_window_manager
[1] http://i3wm.org/
[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)
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.
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.
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.
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).
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.)
Arch linux (actually I use a spin off called Manjaro) seems to be a lot better in that regard.
I've always liked Arch. I'll give Manjaro a look at some point.
"Oh download this script, and run it as root", or "Edit this file and paste the following". With no real understanding or awareness.
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.
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.
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.
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.
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...
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.
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.
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 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.
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.
Now I'm curious, so I guess I'm trying it for a month [1].
[0] https://arguggi.co.uk/blog/list.html [1] https://arguggi.co.uk/blog/Not-Updating/
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.
https://github.com/qdore/Mutate
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.
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.
- 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).
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.
Both of these work fine in hidpi, see: https://wiki.archlinux.org/index.php/HiDPI
[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".
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).
Also your docs don't mention how much battery life you get ;)
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.
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.
[0] https://davedavenport.github.io/rofi/
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.
I thought I should point out the core developer of Crunchbang linux has ceased development[0].
0) http://crunchbang.org/forums/viewtopic.php?pid=416493#p41649...
https://crunchbangplusplus.org
Hopefully the OS is more stable than it's development.