/my-mac-setup

List of applications and tools that optimize my macOS experience. Inspired by https://github.com/nikitavoloboev/my-mac-os

My macOS setup

List of applications and tools that make my macOS experience better.

Development

Alacritty - GPU-accelerated Terminal Emulator

Before Alacritty, I've been using iTerm2 for a long time. And while it was a really great, mature project, I began to have some issues with it, like colors not displaying correctly with my NeoVim configuration. Then I found Alacritty through Fatih Arslan's blog post and it was amazing:

  • No more problem with colors
  • Fast...like really fast
  • Really easy shortcut keys rebinding

There are some problems that I still have with it or things I hope get implemented though:

  • Ligature support
  • Resizing windows is still really rough and really slow

My setup:

Alacritty terminal appearance

Neovim - 'Modern' Vim fork of choice

  • Amazing text-editing experience. Took a while for me to get somewhat comfortable with it but it will absolutely change the way you think about text editing. Because of this,
  • I have started to find ways to use Vim key-bindings in as many apps as possible. If there's some sort of extension or plugin to allow me to do that, I'll use it.
  • My configuration can be found here. As with any other app that I can customize, I use the Nord theme along with various plugins.

Here's how it looks with some Go code:

NeoVim setup

Tmux - Terminal multiplexer

After moving to Alacritty, I've begun using tmux to handle making multiple terminal panes/windows. It has also allowed me to run some web server that I frequently use in the background (my Hugo website server, for example) without having to restart it everytime I open the terminal. Still need to do a lot more exploring of what it can do though.

See here for my tmux configuration.

Visual Studio Code - Text Editor

To be honest I mostly use it nowadays to look through the structure of projects that I'm unfamiliar with, or if I don't have the time to properly setup my neovim for a new language.

Git Tower - Git client

There in case of really large, multi-contributor projects I might be involved in the future. Right now a combination of git, gh, and hub is enough for me.

I do occasionally use it to search through commits, check out branches with ease and searching through all the Git repositories I have on my mac though.

Paw - REST API Client

Out of the three clients I've tried (Postman, Insomnia, and Paw), Paw feels the most 'right' to me. Postman is someone beyond what I need right now, and Insomnia I just can't bring myself to use it for some reason. Plus Paw has the awesome feature of generating code from the specified API call, which is really neat.

TablePlus - Modern GUI for databases

A really nice-looking and modern GUI for databases that supports quite a lot of databases, both SQL and NoSQL. Bonus points for having native apps for Mac and Windows. A really refreshing change coming from Sequel Pro.

Some features are still incomplete/buggy though like the import functions seem to fail in some cases that Sequel Pro can handle. Plus I hope the app is a little less expensive, but then again I'm using it through my SetApp subscription. Ultimately, I still think it's completely worth it for anyone who works a lot with databases.

Dash - Documentation Browser

Allows you to download any docset that you might want to use, search for any method, class or anything that you need very quickly, comes with the amazing Alfred workflow to simplify the process of searching for the right things.

After combining it with Alfred, the Dash Alfred workflow and Karabiner, it has become indispensable for me when looking up language libraries/functions and other things.

Dash example

Design

Sketch - Design Tool

What I use whenever I have to design an app, site, or any other thing.

Sketch UI

Flinto - Product Prototyping

While it can definitely be a design tool all on its own, I usually use it in conjunction with Sketch. After I have a design completed in Sketch, I then import it into Flinto to implement the transitions and interactions, essentially turning the design into an interactive and testable prototype.

Flinto UI

Utilities

1Password - Password Manager

  • Generate all of my passwords with it and keep everything in a secured and encrypted vault kept secure by my one master password.
  • I no longer need to remember passwords and I now have a unique password for every website that I am signed up
  • Really convenient 2FA integration. It copies the code to your clipboard instead of you having to look it up on an app/on your phone etc.

Alfred

One of the reasons I initially fell in love with macOS was its amazing search using Spotlight. Then I found Alfred and was even more impressed by it. Apart from its built-in features, its Workflows features allow for incredible extensibility. Some of these that I use most often are:

  • alfred-github-jump: Quickly search and open your repositories or those you starred in your default browser.
  • dash-alfred-workflow: Search and open Dash documentation sets through GitHub. (More on this below)
  • ask-create-share: Quickly create web submissions (GitHub repos/gist, Stack Exchange, Google Doc files, etc.)
  • alfred-localhost: Open localhost with the input port in a new tab in the default browser

Lightshot - Screenshot Tool

An app that enables copying of screenshots directly to the clipboard, without having to save it to disk first. Really useful for quickly sending bits of info and references through others.

AppCleaner - App Uninstaller

Really simple tool to completely uninstall apps from my computer, including files that might have been stored in various other directories aside from the Applications folder.

Contexts - Windows Switcher

Fuzzy search through all the currently active windows that I have.

Contexts example

KeyboardCleanTool

A tool to temporarily disable the keyboard for cleaning/fixing etc.

Bartender - Menubar organization

Allows you to customize and hide the contents of your menu bar for a cleaner look.

Typinator - Text Expansion

Karabiner - Keyboard Remapping

This tool completely changed the way I interact with my computer, and I personally feel a lot more productive with it. Beyond describing it as somewhat similar to Windows' AutoHotKey, being a kernel extension that gives you a virtual keyboard you can heavily customize, I don't exactly know how to describe it, so instead, I'll outline some of the keys and key combinations I've configured with it:

Note: x-y means press key y while holding down x

  • Caps Lock now acts as my esc key. This greatly helps when I'm using (neo)vim (my main text/code editor) as I don't need to stretch as far or to try to find the virtual key on my MacBook's touchbar.
  • right command brings up Alfred, instead of having to press the usual command-space
  • left command quickly brings up the previous application, replacing the traditional command-tab

When combined with Alfred workflows or Keyboard Maestro, it becomes even more powerful:

  • n-f brings up alfred-github-jump
  • n-a brings up ask-create-share
  • l-c brings up alfred-localhost

And so on. While it might seem like these improvements are minor, I assure you the time and effort saved is definitely noticeable over time.

To that extent, I'm also only just getting started with exploring what it can do so for more information on Karabiner and combining it with other tools, I urge you to check out Nikita Voloboev's post on the topic. He's how I got started on all of this whole customization and optimization thing as well.

Keyboard Maestro - Automation Tool

Keyboard Maestro is essentially an IDE for automation. You create macros of actions that you can then easily call from Karabiner.

Magnet - Windows manager

Vimac

After falling down the Vim rabbit-hole, I've been trying to find ways to use Vim-based/keyboard-only navigations in as many contexts as possible. And other than my terminal, the two contexts that I normally use my mouse are in my browser (Chrome) and general app/program navigation. Having found Surfingkeys for Chrome, I tried to find a similar solution for general application and interface navigation. Thus, enters Vimac.

The app allows you to assign a hotkey which, once pressed, will show a layer of shortcut keys over any recognized clickable elements on the screen (example below). After pressing the desired key combination, the app will simulate a mouse click on that element. Even though the app seems to work pretty well most of the time, its beta status definitely shows. Sometimes the assigned keyboard shortcut does not register, and some places that are buttons/navigation are not recognized. But overall I'm definitely happy with it.

Vimac Example

SetApp

SetApp - Collection of Mac Apps

How I get a lot of my apps.

Paste - Clipboard Manager

Sip - Color Picker and Palette Manager

Whenever I needed to get the color value of some digital assets before, I've always used macOS's built-in Digital Color Meter. But I always ran into the issue of having no integrated way to store the retrieved colors, let alone multiple color sets or palettes. Sip solves these issues with its color palette manager, a more fully-fledged and easy to use the color picker, and cloud sync.

Sip Color Palette Manager

Expressions - Regular Expression Sandbox

A really easy way to test and play with Regular Expressions (regex) without having to think about specific language library libraries/functions/syntax. Simply enter the expressions and the test string(s). Plus I love the minimalistic and clean UI.

Expressions RegEx