Creating a Cleaner MacOS Workspace
Tags: productivity, tutorial
Published: 2020-12-23 23:13:31

The default macOS window management and desktop environment is great don't get me wrong. However, after using alternative window management solutions on Linux distros, I've craved a better solution. I've enjoyed ricing my Linux desktops for the past couple of years, and in doing so I've looked for similar tools I can use on macOS. 

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/fqr7iw1o79ig1v15wtl9.png)

In this article I'll be walking you through how to get a setup resembling the photo above. The tools in use you see are:

- yabai (Window Management)
- skhd (Hotkeys for yabai, running commands, etc)
- iTerm2 (Terminal Emulator)
- pywal (Colorscheme Generator)
- Übersicht (JSX Widgets on the desktop)
- ncmpcpp and mopidy (Spotify music player on the command line)
- dmenu-mac (Alternative Spotlight launcher)
- gotop (htop alternative)

## Getting Started

### yabai

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/pe6f82fjq7n3ulloa2wr.png)

Yabai is a window manager that came from the creators older WM known as chunkwm. If you've ever used i3 or i3-gaps, it's extremely similar. Yabai works as a tiling window manager. There are a ton of customization options you can find on the GitHub Wiki.

To install [follow the instructions found here.](https://github.com/koekeishiya/yabai/wiki/Installing-yabai-(latest-release)) Make sure to disable SIP on your Mac!

If you'd like a similar setup to what I have, you can use the `.yabairc` file found [here](https://github.com/M4cs/yabai-skhd-configs)

### skhd

skhd (simple hotkey daemon) is a hotkey manager for macOS. It was created by the same person as yabai and works hand in hand with it. Using skhd you can create keybinds to edit your workspace, launch applications, change system values, and more.

To install [follow the instructions found here.](https://github.com/koekeishiya/skhd#install) If you'd like a config that already includes some yabai bindings, you can use the `.skhdrc` file found [here](https://github.com/M4cs/yabai-skhd-configs)

### iTerm2

iTerm2 is a great macOS terminal emulator. It offers a massive amount of customization for your setup and even works with pywal. Pywal is a tool that will generate colorschemes from images and set your wallpaper w/ said image.

To install iTerm2, grab it [here](). 

If you'd like to use my profile, simply open Profiles > Default > Colors: Under colorscheme select import > import [this file](https://gist.github.com/M4cs/8333cba215acf7fffd04f1c3aa7900c1) and select it as your colorscheme.

To install pywal, run `pip3 install pywal haishoku`. I find that the haishoku backend generates the most favorable colorschemes. 

### ncmpcpp/mopidy

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/03kjzsud983wv6czjxeg.png)

ncmpcpp is a command line based music player. You can see it in use in the two terminals on the top of the image. It has the ability to control mpd which I use mopidy to host. Mopidy is an mpd alternative that offers an MPD-like protocol and plugins. I use mopidy because it allows me to add Spotify to my mpd server! This means I get all spotify functionality through mpd.

First install mopidy, mopidy-mpd, and mopidy-spotify. To do so you can follow the steps [here](https://docs.mopidy.com/en/latest/installation/). Next follow the steps [here to install ncmpcpp. Ignore the steps for installing mpd](https://computingforgeeks.com/install-configure-mpd-ncmpcpp-macos/)

I haven't changed much to those configs from the default so feel free to experiment on your own!


### gotop

Gotop is an awesome go based process manager. It shows you a lot of information about your system and what processes are using what. You can install it by first installing Go and then running `go get -u github.com/cjbassi/gotop`

### Other Customizations

You can also use custom CSS for Firefox and theme that. [I made a tool to make the process easier. Read more about Foxify-CLI here](https://github.com/M4cs/foxify-cli).