Ramón Calvo's picture
Ramón Calvo
Robotics Engineer

What I use

I am usually very interested in other people’s setups, especially when they have a highly personalized environments that make them be highly efficient while working. Because of this, I believe my workflow could be of interest to someone.

Software

In case you want to have a look at my dotfiles, you can find them here.

Tmux

When I started entering the suckless rabbit hole, I used to use a WM (Window Manager) where I opened as many terminals as I needed. The rest of the applications I ran in full-screen most of the times.

Here is where tmux (terminal multiplexer) comes in. Think of it as a WM for terminals. There are many guides out there so I won’t go into detail. But the main idea is that you have the tmux server, that takes care of handling your sessions. Each session can have multiple panes (think browser tab), and each pane can have multiple window splits.

The tmux server is running as long as there is any session running. You can detach and attach to an existing tmux server. For example, I can have my tmux server running on my desktop, then leave the house and connect to it via SSH. I only have to type tmux attach to access my tmux server and continue working. Moreover, with the tmux-resurrect you can make your tmux sessions persistent to reboots.

Tmux also has commands for managing your layout, and you can configure every keybind. So it is basically a WM in your terminal. I like to have a main session where I do whatever I need with the terminal, and then one session for every project or lecture I’m taking.

Newer versions of tmux incorporate support for popup windows. I use them to spawn fuzzy finders to my tmux sessions, among other things. You can have your own scripts executed on this pop-up windows, or new panes, sessions or splits. The possibilities are endless.

For example, I usually store my projects in the same folder. I have a script that finds all the directories with a git repository in that folder and feed them to a fuzzy finder. If that project is not open, a new session will be created for it. If it exists, tmux will simply open that session without changing anything.

I also do something similar with my password manager, creating and viewing queries to cht.sh, or opening Lazygit.

Neovim

Lazygit

Lazygit is a TUI for git.

ZSh

I like working inside the terminal. I got into using command lines and TUIs (text-based user interfaces) because once I overcame the steep learning curve, I enjoyed working with incredibly responsive programs, that have the same look and feel no matter on what hardware and OS I am running.

My shell of preference is zsh. It is easily installable in any Linux distro and it comes as the default shell for MacOS. I copied the .zshrc that was used in the Arch Linux installation media, since it came with autocompletion and other nice things by default. On top of that, I am using the Z plugin. This plugin allows me to type:

z my_folder

And zsh will take me to the most recent folder I have visited with a similar name. I used to use terminal based file managers like Ranger or lf, but with this plugin I stopped using them. It is that convenient.

Pass

The UNIX Password Manager is basically a shell script that will take care of generating, encrypting with your GnuPG id, and running a git repository of your passwords. Since each component is so simple, it is compatible with every OS, even mobile. I use it daily on Linux, MacOS, Android and iOS and I have never had a problem.

Stow

Services (WIP)

Contabo

Contabo is a company based in Germany that offers very competitive pricing for their VPSs. For those who don’t know, a VPS (virtual private server) is a cloud computer that you can rent. For a bit more than 6 euros per month, I get 200Gb of SSD storage, 8Gb of RAM and 4 CPU cores. Once you self-host multiple services from your VPS, it quickly becomes way more cost effective than subscribing to independent services. But you ‘pay’ with your time by having to set up and maintain everything. Although to be honest today it is very easy to just go the Docker way, if you don’t have much time on your hands.

This are some of the services that I self-host:

Migadu

A no-bullshit e-mail provider. For not even 2 euros per month, you can have virtually unlimited addresses on your custom domain. Moreover, you can easily log in with any e-mail client app through IMAP/SMTP.