---
title: Have you evaluated your toolchain recently?
teaser: 'Trying new tools can improve your workflow.

  '
tags: tools,linux
author: Jason Draper
published_on: 2018-06-19
---

Let's get this out first: I switched to Linux. Don't worry, this post is not
intended to convert you, it's just what drives the story. What this post is
really about is evaluating your toolchain constantly to make sure it's working
for you and not against you.

## The Problem

As developers, we use our computers for roughly 8 hours everyday. My goal in
working is to move the most information from my brain to the computer as quickly
and efficiently as possible. In doing that, I interact with a lot of tools such
as email, text editors and a multitude of web services. When I work, I like to
tile my windows. If I have a single app open, I want it to cover the entire
screen. If I have two apps open, I want them tiled, side by side. I don't want
to have to do this manually. I want my screen to be covered by applications all
the time. I don't have a need for my desktop.

To solve this problem, for a while I've been using tiling apps on Mac. At one
point I used [Moom], most recently I've been using [Slate]. This has served me
well enough but it also wasn't an ideal solution. Using something like Slate or
Moom is a bandaid. It doesn't really get to the heart of what I wanted.

![A screenshot of MacOS using a tiling layout](https://images.thoughtbot.com/blog-vellum-image-uploads/n58U8VFQ7ixvjDRfQBD3_mac_os_tiled.png)

[Moom]: https://manytricks.com/moom/
[Slate]: https://github.com/jigish/slate

## The New Implementation

I won't bother going into all the reasons that lead to my decision but suffice
to say, I fell out of love with MacOS. I decided to switch to a Linux distro
for my daily work. After some research and speaking with some amazing colleagues
at thoughtbot, I stumbled upon [i3].

[i3]: https://i3wm.org/

i3 is a tiling window manager. That means that by default, windows will open up
full screen. If you open a second window in the same desktop, it will open up
and split the screen. A third window will split the screen further and so on. By
making a change to using i3, the functionality that I had spent time building
into my workflow on MacOS was now a first-class citizen.

![A screenshot of a Linux desktop using i3 with three windows being tiled](https://images.thoughtbot.com/blog-vellum-image-uploads/LePGQo6TGyQrgkzcEMyc_linux-dual-tile.png)

## The Other Benefits

Sure, tiling is great and all but an entire OS change just for easier window
tiling? Not quite, i3 started to offer me even more options. On MacOS, I used
Alfred for opening applications. That was easily replaced by [dmenu]. Even
better though, I could now add my own global shortcuts to open applications. I
use Chrome as my primary browser so to open it from anywhere, I press Win+c.  To
open my terminal, I use Ctrl+space. Actions that previously took opening Alfred
and typing a few characters are now a hotkey away.

[dmenu]: https://tools.suckless.org/dmenu/

Here are a few more things that have also been made easier with my switch to i3:

* I now have a scratch pad terminal available from anywhere with a hotkey. This
  is really helpful for managing my dotfiles quickly
* My "desktops' are all organized by the type of apps I want on them. The apps I
  use automatically open and move to those workspaces as soon as I login. For
  example, when I first login, Spotify, Slack, my notes app and my todo list app
  are all opened and moved to their appropriate workspaces.
* Having organized workspaces means that I can quickly change contexts with a
  hotkey. I don't have to alt-tab through my windows hoping to find the correct
  window. I know that hitting Win+4 will take me to my chat or that Win+3 will
  take me to do my notes and todo list.
* I have what track is playing in Spotify, constantly showing in my menu bar.
  This was a simple shell script away. This isn't really related to development
  but I'm always listening to music and if I have to tab to check what song is
  playing, I'm losing time and likely I'm losing my current thought process.
* Anything I want to show in my menu bar is a shell script so I know that if
  there is some information I want to display, it's accessible.

## What About Tmux?

I still use and love [tmux]. This is about tiling windows. When I'm in a
terminal, I  use tmux for almost everything but what happens if I also need to
open a web browser and a pdf on the same screen as my terminal? Now I get
similar benefits that tmux provides for all my windows.

[tmux]: https://github.com/tmux/tmux

## What Are You Missing Out On?

I started off by saying this wasn't a conversion post and I really mean it. i3
and Linux isn't a move for everyone but you should consider the tools you're
using and if you can find a better one to do your job. Is your editor slowing
you down? Would moving to a terminal multiplexer like tmux improve your work
life? Should you be using a window manager like Slate on MacOS? Maybe you need
a shortcut manager like [apptivate]. Spend 15 minutes each week to check your
workflow for pain points, I bet there is something you can improve!

[apptivate]: http://www.apptivateapp.com/
