Hello Everyone,
as you can see on my screenshot, i am using an intel based mac for years now, which i customized to my needs. However i have reached the limits of this machine in terms of customization options and would like to move to linux to test it out as a daily driver. I’m actually quite happy with mac from the pov that everything just works, however there are certain things that annoy me, but apple does not allow me to change them.
As a newbie in terms of desktop linux (i’ve used ubuntu roughly 12 years ago as a daily driver and am familar with headless linux), i’d like your advice.
Specifically I am looking for:
- a minimal, fast system
- keyboard / shortcut based - all interactions can be done from keyboard (within common sense limits)
- all keys can be custom mapped (i have muscle memory of my custom keys for certain actions, so i’d like to keep them)
- all can be configured from dotfiles (worse case shell scripts and ansible)
- very low ressource consumption, snappy system with no delays.
I’d like to try NixOs due to it’s unique configuration ability, however on a headless server it was a buggy pain just weeks ago (for example user passwords just vanished/changed without any external influence, not allowing access anymore), so i’m open to alternatives.
What i am looking for in advice is:
- a minimal, configurable (file based for git) tiling window manager
- a top status bar like you see in the screenshot that i can freely configure
- as much terminal emulator based as possible (i honestly mostly only need a browser and the terminal, most other apps have a TUI that i can use with the keyboard, see the above requirement)
- terminal based package management as easy as brew (maybe Nix?)
- custom keyboard layout (I am not a native english speaker, so i mapped all non-english characters to my option keys with the english layout as the base)
- Option to use 2 keyboards at once (come by default when using Karabiner Elements) as i combined 2 small keyboards to one to a fake split keyboard ;)
My current stack on macos is Hammerspoon for heavy customization, Karabiner Elements, yabai, kitty (and alacritty, for ssh, as kitty is bad with ssh in my personal experience), sketchybar. firefox (customized for privacy)
Any good recommendations or dotfiles? Anything i should look out for as a MacOs User?
Thanks in advance!
You may find yourself interested in suckless software, take a look here.
Its all written and configured with C, so it should be pretty fast. And there’s dwm, their dynamic tiling window manager.
I guess the distro/package manager would be whatever you want, as suckless software encourages that you build from source and maintain your version of the software.
Don’t have a solution for everything but did want to mention that brew is as viable for Linux as it is for MacOS, except for casks. I tend to use an Ubuntu or Debian base layer and then use brew to pull in all the packages that I know I will always want later and more diverse options than what’s available in the distro, e.g. ffmpeg, Python.
I like NixOS and haven’t had any struggles with it. For my tiling I use Hyprland, as it’s Wayland and looks very nice. For a bar with amazing configuration I can recommend either https://github.com/elkowar/eww or https://github.com/aylur/ags - in the first one you configure it in a lisp-like language, the second one is configured in JS. They both allow you to pretty much write any GTK widgets for your bar, and are really powerful, but ags is newer and allows for more advanced functionality.
My favorite terminal emulator is foot - it’s simple and quick.
I wouldn’t say Nix is easy at the beginning as you have to learn a language to use it properly, but it’s definitely worth it long-term.
There shouldn’t be any issues with 2 keyboards and custom layouts on Linux. If anything you could use something like hawck to rebind the keys (system-wide) to something else.
I run NixOS on my macbook with the stack above. If you want to you could check out my NixOS config, but I’m using a configuration framework so it’s a bit complicated. https://github.com/n3oney/nixus
See configs/vic and hosts/vic for macbook-specific configs, everything else in my NixOS config is shared between machines and I opt into it per-machine in configs/
Also not sure what you mean by your configuration struggles. Never had that happen. Also worth mentioning, my macbook runs Full Disk Encryption which needs my Yubikey to unlock, and I also have impermanence - everything (outside of a few specified directories like ~/Downloads) gets wiped on a reboot, so that my configuration is as reproducible as it can be. I could pretty much reinstall the system and have everything be 100% the same.
Well, i can’t really recommend a specific combination, but I can give you options so you can comprehend more about by researching. All the distros I will list here have dedicated editions, or ways to install different desktop environments. As of judging by your screenshot, it seems like you’re somewhat of a technical user so these recommendations were made by keeping this in mind, these are not the greatest options if you want something for a newbie non-tech savy Linux user.
-
Fedora - exceptionally stable and quite fast distribution, altrought not the fastest, great software availability, if you don’t find your software, or the version shipped by fedora on the repos isnt working for you, consider install it using containers, like flatpak, or distrobox.
-
Arch Linux - very tecnicial distribution, on my experience not really stable and not very usable on the longterm, but works well for a Great amount of people, it’s main features are it’s customizability, being able to craft your own system by deciding precisely what will compose it, and the aur(arch user repository), in it, you will find user made scripts to install all kinds software, even pathed ones.
-
EndeavourOS - Arch’s youngest daughter, arch but a bit more polished, and user friendly, with it you get all the features of arch Linux, with better setuo, and more ease of install your desktop environment / window manager, at the expense of worsened customization.
-
Opensuse - not very popular, but by far the fastest distro on the list, its main edition is based on the plasma desktop environment, you may run into some issues, but if you know your way around things, you will surely get the most out of this system, just like fedora, if you don’t find, or the software on the repositories isn’t working for you, you can always use containers.
Desktop environments / window managers - if you don’t know what these are, I recommend you do a more indeph research about them, but in resume, both are the user interfaces which run on top of your system, the difference is that desktop environments tend to be more user friendly and “complete” than window managers, while window managers tend to be more lightweight, simpler, and customizable.
-
KDE plasma environment - excellent and fast desktop environment, has a great implementation of the keyboard shortcuts, you can make anything do anything just by changing them on the settings app, the glimpse of desktop customization on Linux, it has a lot of themes available and a built in theme “store” integrated right into the desktop. Recommended if you want a great balance between customizability and convenience.
-
Sway - sway is a window manager for Linux based on the Wayland protocol, being the first of it’s kind, can be heavily customized using it’s configuration files, in which have a simple and comprehensive syntax, just like any other window manager, it can be configured to do pretty much anything.
-
Hyprland - I would sway hyprland is a successor to sway, it’s more polished than sway with more features, has beautiful and fluid animations, I have never used hyperland myself, but for what I have seen, it’s the best window manager out there.
Hello,
I advise you to select a WM based on Wayland because it now reached a sufficient maturity and Xorg can safely be remembered as historical. I personally use sway which is an implementation of i3wm for wayland. You will have an experience similar to what appears in your screenshot.
There are a lot of status bars for sway. I am using swaybar with i3status for the status_command. Don’t hesitate to check the alternatives, they are amazing.
All the configuration of sway happens in a config file and you can setup your keyboard preference inside. You can setup multiple layouts at the same time and specify which key binding to switch between them.
If you decide to give NixOS another try (which it deserves), the nixos config already has options to enable sway.
For the package manager, either stick with the one integrated in the distribution you choose (apt, pacman, dnf, …) or indeed use nix on top if you like the experience and its benefits.
And as a general advise, don’t hesitate to first try your choices in a VM installation, and take your time to check if it really suits your need.
Have fun