From Mac to Linux - the setup I ' ve grown to love 😍

These days it seems like almost every second person wants to run their own startup and it ' s no different for Shooting Unicorns. We ' re developers with a job during the day and hustle on our own products during the night. Every single hour is pretty much spent at our battle stations, making it really important to have an optimised workspace for maximum productivity.

For those who are looking for a change in scenery or checking out what ' s around, I ' ll be sharing my tools and all the files associated with it.

From Mac to Linux

I was a full time Mac user for over 4 years and I must say that the experience is a very positive one. Not only is it aesthetically pleasing, but they also have superior user interactions which feels both intuitive and natural. However the lack of customisations available (changing the overall look and feel, remapping my keys, how I would like to mold my setup/workflow) and degrading performance over time prompted me to switch. It was a choice I never regretted.

Having heard good things about Linux and being a long time lurker of Reddit ' s r/unixporn, it didn ' t take much convincing for me to make the switch. I must admit I had a hard time finding the right distro because there are so many options out there. In the end, I decided I would give Manjaro a shot with three different desktop managers - Cinnamon, KDE and i3.

Cinnamon was easy to set up and use, but lacked the level of customisation I wanted. KDE Plasma was absolutely beautiful with tonnes of customisations available, but it still lacked something. My workspaces would get chaotic and windows would be everywhere. After having tried i3, I knew I had found the one. The shortcuts was superb and it didn ' t take long to get used to the keyboard focused windows manager. The next thing was manually setting up the UI, the custom keyboard shortcuts, workflow and other nitty gritty things.

Look and Feel

Get the look Ant-Dracula-Blue

Having never tried or seen a tiling window manager in action before, I was mind blown by how something so simple could affect the way I work. i3 provides a choice to not tile and just flow all windows, but that defeats the purpose of a tiling manager. From the image above, all the windows are automatically tiled to a corner/side of a screen (depending if it was set to horizontal or vertical tiling).

Get the theme Firefox Sweet

A year ago due to performance issues with Chrome, I switched over to Firefox. Firefox also has this very handy tool where you can screenshot just your web browser content in the dev tools. The extensions I really recommend getting are Vimium-FF, for vim keybindings in your browser (never leave your keyboard again!) and Tabagotchi, where your browser pet will die when there are too many tabs opened.

Get the look Spicetify

Development Workflow

Get the look dotfiles

Terminal Application

I spend almost 80% of the time in my terminal when coding (and the rest on StackOverflow 😅). The terminal application I highly recommend is Kitty, it is blazing fast and easy to set up. I have tried several other different terminals such as Alacritty and iTerm2 on the Macbook, but the performance does not compare to Kitty.

Together with Kitty Terminal, I use Oh My Zsh and Tmux. Tmux is essentially a terminal multiplexer allowing you to attach and detach sessions to run in the background. I personally use it as a terminal windows manager to easily navigate between different repositories and different panes with keyboard shortcuts.

At the start of the day, boot up my laptop and create Tmux sessions for the different repositories that I would be working on. For example, I will have a session for the backend and one session for the front-end. Switching between the different code bases is as simple as using the keyboard shortcut

ctrl + a + s .

Code Editors

Neovim is my editor of choice unless I am doing React development to which I would then use Visual Studio code. Neovim is pretty bare from a fresh install and does require some plugins for daily use.

My go to plugins include:

vim-plug: plugin manager

syntastic: syntax highlighter

fzf: fuzzy file finder

nerdtree: file browser in vim

vim-surround: easily surround your code with brackets, quotations etc

ale: an asynchronous syntax checker

prettier: code formatter

And here is my Visual Studio Code

Get the look Material Theme

I tend not to use VSCode as much (I spend the majoriy of the time in backend development and Vim is perfect for that), but I would use it when I have some front end work to do.

Here are the plugins I use to make my life in front end easier:

ESLint: Live linting and autofix errors

Vim: Vim key bindings in VSCode

Prettier: Code formatter

TLDR; Check out my dotfiles here.

[Update]: Clarified that I spend 80% of my time in the terminal. I do agree that is personal preference.