Skip to main content

The Great PTS CLI Throwdown

·1628 words·8 mins·
cli dotfiles
Table of Contents
❀️ It's great to see you here! I'm currently available on evenings and weekends for consulting and freelance work. Let's chat about how I can help you achieve your goals.

I have this kind of annual tradition at the Perl Toolchain Summit where, at some point in the weekend, I look over Paul Johnson’s shoulder and admire his terminal setup. He knows his way around tmux, neovim and lots of other tools. I make it a point to check in with him again before the weekend is over so that I can steal everything. By the time the weekend is over we are both gone and I haven’t had a chance to poach his setup. At some point afterwards I’ll share some tool in the Fediverse that I think is cool and Paul will inevitably point me at something newer, shinier and cooler.

This year the tables were turned and Paul came to me on the first day of PTS to chat CLI. We decided that we’d get a few of us together on the following morning and we’d trade secrets. What follows is the notes that I took.

Full disclosure: I don’t use AI to write the content of my blog posts, but in this case I did run my notes through claude.ai to add some summaries and links. Claude didn’t get everything, but it was very helpful and it sped things along. Since this is meant to be a cheat sheet rather than a piece of creative writing, I’m ok with using AI as a tool to help get the job done.

This year’s participants in our first (annual?) CLI throwdown were, in order of appearance:

featured

Paul’s Picks
#

WezTerm
#

A GPU-accelerated cross-platform terminal emulator and multiplexer implemented in Rust. Features include native mouse support, scrollback, ligatures, and color emoji.

yazi
#

A blazingly fast terminal file manager written in Rust, based on asynchronous I/O. Features include full asynchronous support, built-in image viewing capabilities, code highlighting, and git integration.

tmux powerline
#

A tmux plugin giving you a hackable status bar with beautiful powerline segments. Implemented in bash, it provides customizable segments for displaying information like session details, music player status, battery, and more.

Tailscale
#

A zero-configuration VPN built on WireGuard protocol that creates a secure network between your devices. It simplifies secure connections by handling NAT traversal and provides easy access control.

Neovim plugins
#

git-signs
#

A Neovim plugin that shows Git changes directly in the buffer signcolumn. Features include per-line git blame, stage/unstage changes, and navigation between hunks of modifications.

SmoothCursor
#

A Neovim plugin that adds a sub-cursor to show scroll direction, making it easier to track cursor position when using commands like % or <c-f> and <c-b>.

which-key
#

A Neovim plugin that displays a popup showing keybindings as you type, helping users remember complex key combinations and commands. Works across various modes, including normal, insert, and visual.

nvim-cmp
#

A completion plugin for Neovim written in Lua. It provides a powerful and extensible completion experience with support for LSP, snippets, and custom sources.

magazine.nvim
#

An nvim-cmp beta fork.

PerlNavigator
#

A language server for Perl, providing features like code navigation, completion, and diagnostics.

treesitter
#

A Neovim plugin providing an interface for Tree-sitter, a parser generator tool that provides incremental parsing capabilities, enabling better syntax highlighting and text-objects.

avante
#

A Neovim plugin designed to emulate the behaviour of the Cursor AI IDE.

mcp hub
#

A Neovim plugin that integrates MCP (Model Context Protocol) servers into your workflow.

markview
#

A Neovim plugin for viewing and editing markdown files.

nvim-scrollbar
#

A customizable scrollbar for Neovim that can be integrated with other plugins to display git changes or diagnostics in the scrollbar.

zsh
#

An extended shell with improved completion, scripting capabilities, and plugins. It’s highly customizable and offers numerous features beyond the standard bash.

eza
#

A modern replacement for the ls command with more colorful and human-friendly output, including git integration for directories.

Raycast
#

A productivity tool for macOS that provides a quick launcher, extensible commands, and scriptable automation capabilities.

stats
#

A macOS system monitor in your menu bar that shows detailed system statistics like CPU usage, memory, network, and more.

Shawn’s Picks
#

aerospace
#

A tiled window manager for macOS that arranges windows automatically and provides keyboard shortcuts for window management.

git restore
#

A Git command to restore working tree files, allowing you to discard changes or restore files from a specific commit.

lazyvim
#

A Neovim configuration framework that provides a pre-configured and opinionated setup with various plugins and sensible defaults.

ctrl-a
#

A Vim/Neovim feature that allows auto-incrementing numbers in text.

tmux keybindings in WezTerm
#

Using tmux-like key mappings within the WezTerm terminal emulator for consistent workflow.

caps-lock ctrl + escape
#

A keyboard remapping that makes Caps Lock act as Control when held and Escape when tapped.

karabiner
#

A powerful keyboard customizer for macOS that allows complex remappings and custom modifications.

bat
#

A cat clone with syntax highlighting, git integration, and line numbers, making it easier to view file contents.

fish
#

A user-friendly command line shell with syntax highlighting, autosuggestions, and smart tab completions.

delta
#

A syntax-highlighting pager for git, diff, and grep output that improves readability of diffs.

spacer
#

A utility for adding visual separation or spacing in user interfaces.

atuin
#

A tool that provides a searchable history with context for your shell, syncing across multiple machines.

devbox
#

A command-line tool for creating isolated, reproducible development environments.

direnv
#

An environment switcher that automatically loads and unloads environment variables depending on the current directory.

WezTerm quick select
#

A feature in WezTerm that allows quick selection and copying of text patterns like URLs, paths, or IPs.

chezmoi
#

A dotfile manager that helps keep track and synchronize your dotfiles across multiple machines.

asciinema
#

A tool for recording and sharing terminal sessions with playback capabilities.

Mickey’s Picks
#

terminator
#

A terminal emulator that allows you to arrange multiple terminals in a grid-like structure, each with configurable options.

ctrl-s stop streaming output
#

A terminal shortcut that freezes the terminal output, which can be resumed with ctrl-q (software flow control). This feature can be disabled in the shell using stty -ixon

tmux-resurrect
#

A tmux plugin that allows saving and restoring tmux sessions across system restarts.

cd is an alias to pushd
#

A shell configuration where the cd command is aliased to pushd, maintaining a directory stack for easy navigation. Complemented with cd- aliased to popd.

zmv for mass renaming via regex
#

A (zsh) tool for batch renaming files using regular expressions.

pdftk
#

A command-line tool for manipulating PDF documents, including merging, splitting, and form filling.

fpp
#

Facebook Path Picker, a tool that helps you select files from command output for further operations.

highlight
#

A simple tool that adds colors to matched text input.

Some favorite git commands
#

git checkout -p
#

A Git command that allows interactive selection of hunks to check out, similar to git add -p but for discarding changes.

git rebase -i
#

Interactively manipulate (reword comments, reorder or squash) commits (that are ahead of upstream).

git grep -W
#

Match showing the function context (e.g. Perl sub).

git push origin HEAD
#

Push current local branch to remote.

git branch –merged | grep -v master | xargs –no-run-if-empty git branch -d
#

Remove merged branches from local directory (use an alias).

git clean -dfx
#

Clean working tree from all untracked files (I have it aliased to distclean in .gitconfig).

Julien’s Picks
#

tig
#

A text-mode interface for git that provides a visual interface for navigating commits, diffs, and branches.

Editor’s note: I have previously written about tig.

shutter
#

A feature-rich screenshot tool with editing capabilities, annotations, and various capture modes.

peek
#

Olaf’s Picks
#

Sketchybar
#

A highly customizable macOS status bar replacement that can display system information, application status, and custom scripts. I recently wrote about SketchyBar.

Hammerspoon
#

A tool for powerful automation of macOS, allowing you to write Lua scripts that hook into system events and perform complex tasks.

oh-my-posh
#

A prompt theme engine for any shell that provides a customizable and beautiful prompt with git status, execution time, and more.

Alfred
#

A productivity application for macOS that offers features like hotkeys, keywords, text expansion, and clipboard history.

clipboard
#

Alfred’s clipboard history feature that stores text, images, and files, making them accessible via keyboard shortcut.

alfred-metacpan
#

An Alfred workflow for searching the Comprehensive Perl Archive Network (CPAN).

Cloudflare tunnels
#

A service that creates secure connections between your local resources and the Cloudflare network, without exposing public IPs.

typos
#

A source code spell checker that helps catch typos in your code, comments, and documentation.

is
#

An inspector for your environment. I have written too much about is already.

debounce
#

Limit the rate at which a command can fire. I have written about debounce.

gh
#

GitHub’s official command line tool for interacting with GitHub repositories, issues, and pull requests directly from the terminal.

ot
#

A command line utility tool with specialized functionality. I have written an intro to Open::This and a vim integration guild. I should write up my neovim integration sometime.

ubi
#

A command line tool for installing universal binaries across different platforms.

precious
#

A linter and formatter harness.

git-absorb
#

A git command that automatically identifies and squashes fixup commits into their relevant commits.

gum
#

A tool for glamorous shell scripts, helping create interactive CLI components like inputs, prompts, and spinners.

tailspin
#

A log file highlighter that improves readability of log files in the terminal with color coding and formatting.

"File:Roppongi 3K 3K (Professional wrestling moves).jpg" by ゾーヒョー is licensed under CC BY-SA 4.0 .


Related

Battery Power-Ups: Enhancing SketchyBar with "is"
·1042 words·5 mins
is battery bash dotfiles cli Go macos sketchybar
Debounce All of the Things
·2073 words·10 mins
Go bash dotfiles
is: an inspector for your environment
·1273 words·6 mins
Go bash dotfiles is