Skip to content

Application Directory

Daniel Nachun edited this page Jun 21, 2024 · 33 revisions

Overview

This configuration installs a large number of useful programs to provide a complete development environment with minimal effort. This page will provide an overview of the programs installed by default to make it easier to know what each program is for.

In addition the links to the homepage of each tool, there are several ways you can find help for how to use each tool:

  • Most tools have a built-in help that can be displayed by running their built-in help with TOOL_NAME -h or TOOL_NAME --help.
  • Some tools also have a man page that can be accessed using man TOOL_NAME.
  • Some tools also have simplified man pages provided by tldr.sh, which can be displayed using tldr TOOL_NAME.

Archive managers

Tools for compressing and decompressing files in various formats

  • atool - "universal" tool for working with archives in many formats - does not implement any compression routines itself, so underlying tools must be installed
  • bzip2 - compress and decompress .bz2 files
  • cpio - compress and decompress .cpio files
  • dtrx - "universal" tool for working with archives in many formats - does not implement any compression routines itself, so underlying tools must be installed
  • go-archiver - "universal" tool for working with archives - uses its own builtin implementations
  • gzip - compress and decompress .gz files
  • lzip - compress and decompress .lz files
  • lzop - compress and decompress .lzo files
  • ouch - "universal" tool for working with archives - uses its own builtin implementations
  • p7zip - compress and decompress .7z files and some other file types
  • pax - legacy alternative to GNU tar
  • pbzip2 - parallel bzip2
  • pigz - parallel gzip
  • pixz - parallel xz
  • plzip - parallel lzip
  • tar - classic archiver manager for .tar files
  • unar - "universal" tool for extracting with archives - uses its own builtin implementations
  • unzip - decompress .zip archives
  • xz - compress and decompress .xz archives
  • zip - compress .zip archives
  • zstd - compress and decompress .zstd archives

Batch renaming

Tools to rename large numbers of files programmatically

  • f2 - Batch renaming utility
  • massren - Rename files in your text editor
  • nomino - Batch renaming utility
  • pipe-rename - Rename files in your text editor
  • rename - Batch renaming utility
  • rnr - Batch renaming utility

Build tools

Tools to help build software packages

  • alex - Parser written in and used by Haskell
  • ant - Java build tool
  • autoconf - generate configure script from configure.ac - part of autotools
  • autogen - template processor
  • automake - generate Makefile.in template from Makefile.am - part of autotools
  • binutils - tools for building and modify binaries
  • bison - classic parser
  • cake - .NET build tool
  • cmake - modern C/C++ build tool
  • coursier - Scala dependency manager
  • dune - OCaml build tool
  • fake - F# build tool
  • flex - classic lexer
  • happy - Parser written in and used by Haskell
  • ivy - Java dependency manager
  • libtool - tool to build shared libraries - part of autotools
  • lld - LLVM linker
  • m4 - classic macro processor
  • maven - JDK build tool
  • meson - modern build system for many languages
  • mill - Scala build tool
  • mx - GraalVM build tool
  • ninja - modern alternative to make
  • nuke - .NET build tool
  • paket - .NET dependency manager
  • patch - patch changes to code
  • patchelf - patch RPATH and dynamic linker of ELF files
  • pkg-config - tool to find compiler flags
  • sbt - Scala build tool
  • shake - modern alternative to make for Haskell

Calculators

Tools for numerical calculations on the command line

  • bc - classic CLI calculator
  • eva - alternative to bc
  • fend - alternative to bc
  • kalker - sophisticated calculator

Code formatters

Tools to automatically format code following specific language standards

Compilers

Compilers translate systems programming languages to native machine code

  • clang - Clang C compiler (part of LLVM)
  • clangxx - Clang C++ compiler (part of LLVM)
  • crystal - Crystal compiler
  • dmd - Digital Mars D compiler (Intel-only)
  • gcc - GNU C compiler (part of GCC)
  • gfortran - GNU Fortran compiler (part of GCC)
  • ghc - Glasgow Haskell Compiler
  • gxx - GNU C++ compiler (part of GCC)
  • go - Go compiler
  • ldc - LLVM-based D compiler
  • ocaml - OCaml compiler
  • rust - Rust compiler
  • sbcl - Steel Bank Common List compiler
  • zig - Zig compiler

Compiler tools

Miscellaneous tools for working with compilers

Configuration files

Tools for working with configuration files

Debuggers and profilers

Tools for debugging and profiling code, some of which are support the Debug Adapter Protocol

Diff tools

Tools for comparing text files

Disk usage management

Tools to quantify disk usage

  • df - classic disk usage utility
  • diskonaut - Terminal disk space navigator
  • diskus - A minimal, fast alternative to 'du -sh'
  • du - classic disk usage utility
  • duc - a library and suite of tools for inspecting disk usage
  • duf - a better 'df' alternative
  • dust - A more intuitive version of du in rust
  • gdu - Fast disk usage analyzer with console interface written in Go
  • godu - Simple golang utility helping to discover large files/folders
  • ncdu - ncurses disk usage tool

Dotfile managers

Tools for managing configuration files

  • chezmoi - Dotfile manager used to set up this configuration

Duplicate file management and file cleanup

Tools for finding duplicate files

  • ddh - duplicate file finder
  • fclones - duplicate file finder
  • kondo - Cleans dependencies and build artifacts from your projects.
  • periscope - duplicate file finder

File browsers/managers

Tools to browser and manage files

  • as-tree - print list of paths as a tree
  • broot - alternative to tree
  • felix - TUI file manager
  • joshuto - ranger-like file manager
  • lf - ranger-like file manager
  • llama - simple file manager
  • nnn - unorthodox terminal file manager
  • ranger-fm - vim-inspired filemanager for the console
  • tere - Terminal file explorer
  • tre-command - improved tree command
  • tree - classic command to view file tree
  • xplr - hackable, minimal, fast TUI file explorer

File monitoring;

Tools that trigger actions when a file is modified

  • entr - Run arbitrary commands when files change
  • fswatch - cross-platform file change monitor with multiple backends
  • gaze - Executes commands when files change
  • hwatch - modern alternative to watch
  • watchexec - Executes commands in response to file modifications

File search

Tools to search for files

  • findutils - classic find command
  • fd-find - simple, fast and user-friendly alternative to 'find'
  • fselect - find files with SQL-like queries

File transfer and copying

Tools for copying and transferring files locally and remotely

  • aria2 - parallel download tool
  • curl - classic tool for downloading files
  • curlie - modern curl alternative
  • fcp - faster alternative to cp
  • gcsfuse - FUSE backend to Google Cloud storage (Linux-only)
  • gdown - Google Drive downloader
  • globus-cli - CLI interface to globus
  • gsutil - CLI interface to Google Cloud storage
  • lftp - FTP client
  • lychee - link checker
  • ncftp - ncurses FTP client
  • orgalorg - parallel SSH and file synchronization tool
  • pget - go rewrite of wget
  • pycp - cp with a progressbar
  • rclone - cloud storage sync tool
  • rsync - classic file sync tool
  • rusync - rsync rewrite in Rust
  • wget - simple download tool
  • xh - fast http request tool

Git tools

Git is a very population version control system with a large ecosystem of other tools

  • bit-git - modern git CLI
  • fetch - download files from GitHub repos
  • flint - check your project for common sources of contributor friction
  • fork-cleaner - clean up unused forks on your GitHub account
  • gh - GitHub CLI client
  • ghorg - clone all git repositories from an organization or user
  • git - original git client
  • git-absorb - automatic git commit --fixup
  • git-cliff - changelog generator
  • git-extras - miscellaneous git utilities
  • git-imerge - incremental merge for git
  • git-town - high level CLI for git
  • gitql - query git repos with SQL commands
  • gitui - terminal UI for git written in rust
  • go-ghq - clone Github repositories
  • kickstart - templates for starting git repository
  • lazygit - terminal UI for git
  • lefthook - git hooks manager
  • prr - code review for GitHub
  • reposurgeon - make complex changes to git repositories
  • spr - stacked pull requests for GitHub
  • stgit - manage git commits as stacks of patches
  • tig - ncurses interface for git

PGP

Tools to work with PGP, a data signature and encryption standard

  • gnupg - GNU PGP client
  • gpg-tui - GnuPG key manager
  • pinentry - password entry tool useful for PGP keys
  • pinentry-mac - password entry tool that uses the macOS keychain (macOS only)

Help files

Tools for displaying help files such as manual (man) pages

  • groff - typesetting system often used for man pages
  • man-db - database and viewer for man pages
  • navi - interactive cheatsheet tool
  • tealdeer - tldr client in rust
  • texinfo - documentation format
  • tldr - tldr client in C

History managers

Tools to manage shell history

  • atuin - sync history across multiple machines
  • hstr - history suggestion box
  • mcfly - shell history search

Language runtimes

Implementations of interpreted and byte compiled languages

  • clojure - Common Lisp derivative that runs on JVM
  • dotnet-script - Use C# as a scripting language
  • erg - Statically typed Python derivative
  • erubis - eRuby implementation
  • groovy - optionally typed dynamic language running on JVM
  • guile - GNU Scheme implementation
  • lua - high level language popular for embedded scripting
  • nodejs - cross-platform JavaScript runtime often used for standalone tools
  • perl - classic high scripting language
  • python - high level language popular for data science and general purpose programming
  • ruby - dynamic high level programming language
  • scala - strongly typed functional programming language that runs on the JVM

Language servers and completion engines

Language servers are a relatively new class of tools that implement the Language Server Protocol for providing completion and linting suggestions to text editors and IDEs. Users usually will not directly invoke a language server - instead it will be called by a text editor or IDE.

Linters

Linters make suggested changes to code based on style and best practices guidelines

Logging tools

Tools for generate and manipulating logs

Media tools

Tools to manipulate document, image, and video files

  • djvulibre - view and convert DjVu files
  • ghostscript - interpreter for PostScript and PDF files
  • imagemagick - software suite for editing and manipulating images
  • pdf2svg - convert PDF to SVG files
  • pdfcpu - PDF processor written in Go
  • qpdf - PDF transformation tool
  • svg2pdf - convert SVG to PDF
  • tectonic - LaTeX engine written in Rust
  • t-rec - terminal recorder

Language tools

Miscellaneous tools for specific languages

Miscellaneous

  • chars - tool to display information about Unicode characters
  • code-minimap - code minimap reader
  • coreutils - basic shell utilities
  • file - identify filetypes
  • gum - design interactive shell scripts
  • hello - test program that prints "Hello, world!"
  • inetutils - basic network utilities
  • members - see members of a group
  • moreutils - miscellaneous UNIX utilities
  • perl-app-cope - colorizer
  • restic - backup tool
  • skhd - hotkey daemon for macOS (macOS only)
  • terminal-notifier - send notifications from terminal on macOS (macOS only)
  • the-way - snippers manager for terminal
  • util-linux - random collection of Linux utilities (also works on macOS)
  • which - utility to find path of an executable
  • yabai - tiling window manager for macOS (macOS only)
  • zoxide - smarter cd command

Package managers

Tools for building and installing software packages. These are used to build some conda packages, and are also needed for developing packages from source.

  • cabal-install - Haskell package manager
  • conda-tree - show dependencies for conda package as a tree
  • dub - D package manager
  • mas - interface to macOS App Store (macOS only)
  • topgrade - upgrade multiple package managers

Pagers/viewers

View text files of various formats

  • bat - Rust rewrite of cat
  • cat (in coreutils) - dump files to screen
  • ccat - Go rewrite of cat with colors
  • colortail - tail with colors
  • csview - viewer for CSV and TSV files
  • csvprintf - viewer for CSV and TSV files
  • fblog - log viewer
  • fx - JSON viewer
  • glow-md - Markdown viewer
  • jsonpp - JSON viewer
  • jless - JSON viewer
  • less - classic pager
  • mdcat - Markdown viewer
  • moar - pager written in Go
  • page - use neovim as pager
  • pspg - pager for SQL and tabular data
  • tv - cross platform tabular data viewer
  • viu - terminal image viewer

Parallelization

  • mprocs - run multiple commands in parallel
  • parallel - classic tool for running commands in parallel
  • pueue - process a queue of shell commands
  • rargs - xargs + awk with pattern-matching support
  • rush - cross platform tool for executing plans in parallel
  • xargs (part of findutils) - run commands over a list, optionally in parallel

Process monitors

Process monitors help you to see what process are running and how many resources they are using

  • bottom - cross platform process monitor
  • btop - resource monitor
  • gotop - graphical activity monitor
  • htop - interactive process viewer
  • lsof - list open files
  • procps-ng - utilities to monitor and manage processes
  • procs - replacement for ps written in Rust
  • smem - memory usage reporting tool
  • sysstat - performance monitoring tools for Linux (Linux-only)
  • zenith - top/htop with charts

Regular expression

Regular expressions are a powerful method to modify and filter text

  • grex - tool to generate regular expressions
  • melody - language that compiles to regular expressions

Remote access

Tools to access remote servers

  • openssh - SSH client and server
  • rospo - persistent SSH tunnels
  • rsc-2fa - two-factor authentication on the command line
  • xauth - manage X server authorization
  • xclip - command line interface to X11 clipboard

REPL

Tools that provide a read-eval-print-loop to interactive evaluate code

Shells

A shell is an interactive environment in which the user can call other executables, in some cases piping together the output of one tool to the input of another, or saving the output to a file

  • bash - the default shell on many Linux distributions and formerly macOS
  • elvish - powerful scripting language and shell
  • fish - A "friendly interactive shell" with many nice features, not POSIX compatible
  • murex - intuitive, type shell
  • nsh - fish-like shell that is POSIX compatible
  • nushell - new type of shell inspired by powershell
  • oh-my-posh - customizable shell prompt
  • oil - new shell that retains bash compatibility
  • pwsh (Powershell) - The new shell for Windows (also supports Linux and macOS)
  • sheldon - shell plugin manager
  • shelltestrunner - testing tool for shell scripts
  • starship - customizable shell prompt
  • xonsh - Python-powered shell
  • zsh - The default shell for this configuration and the default on macOS

Stream editors

Stream editors allow you to modify text piped into them from standard input

  • sad - Go rewrite of sed
  • sd - Rust rewrite of sed
  • sed - classic string editor
  • ssed - sed with extra features
  • sttr - app to perform various operations on strings
  • teip - help sed edit files
  • up - preview changes made in pipes

System information

Tools to display information about OS and hardware

  • macchina - system information tool focused on performance
  • neofetch - command line system information tool written in bash

Tabular data

Tools for working with tabular data

  • choose-rust - fast alternative to cut and awk
  • datamash - perform numeric, textual and statistical operations on tabular data
  • gawk - classic scripting language for tabular data
  • goawk - Go rewrite of gawk
  • miller - manipulate tabular data
  • qsv - manipulate tabular data
  • tsv-utils - manipulate tabular data
  • tuc - select columns in tabular data

Tags

Tags are used to mark locations of importance in code (functions, class definitions, etc.)

  • global - code tagging system
  • tagref - code tagging system
  • ttags - generate ctags with Tree Sitter
  • universal-ctags - maintained implementation of ctags, a classic tagging tool

Terminal demultiplexer

Terminal demultiplexers allow you to split your terminal session into panes and windows and detach sessions.

  • tmux - highly configurable terminal demultiplexer
  • tmuxinator - manage complex tmux sessions easily
  • zellij - terminal demultiplexer with batteries included

Text editors

Text editors are used to edit text files such as source code and configuration files

  • amp - complete text editor for your terminal
  • emacs - highly customizable text editor
  • hexyl - hex editor for editing binary files
  • micro - modern, intuitive terminal-based text editor
  • neovim-remote - control nvim externally
  • nvim - ambitious fork of vim
  • vim - classic modal text editor

Text filtering

Tools to filter text files for strings or regular expressions

  • ack - code searching tool written Perl
  • bingrep - grep for binary files
  • cgrep - context-aware grep tool
  • grep - classic text filtering tool
  • gron - grep for JSON
  • peco - interactive filtering tool
  • percol - interactive filtering tool
  • ripgrep - fast Rust rewrite of grep
  • ripgrep-all - ripgrep with additional features
  • sift - fast alternative to grep
  • the_silver_searcher - faster alternative to ack

Text querying

Tools to extract data from text files of various formats

  • csvq - SQL-like queries for tabular data
  • dasel - extract data from JSON, TOML, YAML, XML, CSV
  • dsq - SQL-like queries for tabular data
  • duckdb - SQL-like queries for tabular data
  • fq - jq for binary files
  • go-yq - query YAML
  • gojq - go reimplementation of jq
  • htmlq - jq for HTML
  • ijq - interactive jq
  • jaq - Go reimplementation of jq
  • jid - JSON incremental digger
  • jq - classic tool for querying JSON
  • jql - JSON query
  • octosql - SQL-like queries for tabular data
  • prql-compiler - modern SQL replacement
  • pup - query HTML
  • xmlto - convert XML files to various formats
  • xq - XML and HTML querying and formatting
  • yj - convert between YAML, TOML, JSON and HCL

Text selectors

Tools to interactively select line from text input

Trash

Trashing files is a safer, reverseible way to delete files than rm

Version control systems (VCS)

Version control systems are used to manage changes to codebases

  • breezy - Python 3 rewrite of the now unmaintained bzr client for Bazaar VCS
  • cvs - classic version control system
  • jj - git-compatible VCS
  • mercurial - classic version control system
  • subversion - classic version control system

Virtualization

Virtual machines can be used to run other OSes inside a host machine, like Linux inside macOS and Windows.

  • act - Run GitHub Actions locally
  • colima - easy Docker container runtimes (runs on lima)
  • lima - Linux virtual machines for running containers
  • docker - Container runtime engine
  • docker-buildx - Docker CLI plugin for extended build capabilities
  • docker-credential-helper - helpers for setting up Docker credentials
  • podman-remote - macOS controller for podman container engine

Clone this wiki locally