-
Notifications
You must be signed in to change notification settings - Fork 2
Application Directory
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 -horTOOL_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.
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
.bz2files -
cpio - compress and decompress
.cpiofiles - 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
.gzfiles -
lzip - compress and decompress
.lzfiles -
lzop - compress and decompress
.lzofiles - ouch - "universal" tool for working with archives - uses its own builtin implementations
-
p7zip - compress and decompress
.7zfiles 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
.tarfiles - unar - "universal" tool for extracting with archives - uses its own builtin implementations
-
unzip - decompress
.ziparchives -
xz - compress and decompress
.xzarchives -
zip - compress
.ziparchives -
zstd - compress and decompress
.zstdarchives
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
Tools to help build software packages
- alex - Parser written in and used by Haskell
- ant - Java build tool
-
autoconf - generate
configurescript fromconfigure.ac- part of autotools - autogen - template processor
-
automake - generate
Makefile.intemplate fromMakefile.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
Tools for numerical calculations on the command line
- bc - classic CLI calculator
-
eva - alternative to
bc -
fend - alternative to
bc - kalker - sophisticated calculator
Tools to automatically format code following specific language standards
- autopep8 - automatically format Python code to follow PEP 8 style guide
- beautysh - Bash script beautifier
- black - strict code formatter for Python
- cabal-fmt - format .cabal files
- cbfmt - format codeblocks in Markdown
- cljstyle - Clojure formatter
- comby - code refactoring tool
- dfmt - format D
- docformatter - format Python docstrings
- dotnet-format - format .NET languages
- dprint - multi-language formatter
- eradicate - remove commented out code from Python
- fantomas - format F# code
- fastmod - large scale code refactoring
- fixjson - JSON fixer and formatter
- fprettify - Fortran prettifier
- gersemi - Cmake formatter
- godoctor - Go refactoring tool
- goimports-reviser - Go imports sorter
- gomodifytags - modify Go struct tags
- go-shfmt - Shell script formatter
- gofumpt - Go formatter
- golines - Go formatter to fix long lines
- google-java-format - Java formatter
- goosebib - BibTeX formatter
- impl - generate stubs for Go interface
- isort - Sort Python imports
- luaformatter - Lua formatter
- markdown-toc - generate table of contents for Markdown
- mdformat - Markdown formatter
- ocdc - changelog formatter
- perl-app-perlimports - Clean up Perl imports
- perl-tidy - Perl formatter
- prettierd - Multi-language prettier
- pyink - Python formatter
- remark-cli - Markdown formatter
- rubyfmt - Ruby formatter
- rufo - Ruby formatter
- scalafmt - Scala formatter
- scalariform - Scala formatter
- shellharden
- stylish-haskell - Haskell formatter
- stylua - Lua formatter
- tidy-html5 - HTML formatter
- uncrusfity - Beautify C++ code
- usort - Python import sorter
- xmlformatter - XML formatter
- yamlfix - YAML formatter
- yamlfmt - YAML formatter
- yapf - Yet another python formatter
- zprint - Clojure formatter
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
Miscellaneous tools for working with compilers
- clang-tools - Tools for Clang
- dtools - Tools for D compilers
- llvm-tools - Tools for LLVM
Tools for working with configuration files
Tools for debugging and profiling code, some of which are support the Debug Adapter Protocol
- delve - Go debugger
- dotnet-diagnostics - Diagnostic and debugging tools for .NET
- gdb - GNU Debugger (Intel only)
- gccdiag - Diagnostic flags for GCC
- ilspy - .NET disassembler
- lldb - LLVM debugger
- netcoredbg - .NET debugger
- py-spy - Python profiler
- rbspy - Ruby profiler
- valgrind - Memory management and debugging tool (Linux-only)
Tools for comparing text files
- diff-so-fancy - fancy diffs
- diffr - word by word diffs
- difftastic - structural diff tool that understands syntax
-
diffutils - classic
diffcommand - git-delta - syntax highlight diff
- jd - JSON diff and patch
- zet - set operations between files
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
Tools for managing configuration files
- chezmoi - Dotfile manager used to set up this configuration
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
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
treecommand - tree - classic command to view file tree
- xplr - hackable, minimal, fast TUI file explorer
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
Tools to search for files
-
findutils - classic
findcommand - fd-find - simple, fast and user-friendly alternative to 'find'
- fselect - find files with SQL-like queries
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 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
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)
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
Tools to manage shell history
- atuin - sync history across multiple machines
- hstr - history suggestion box
- mcfly - shell history search
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 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.
- autotools-language-server - Language server for autotools files (configure.ac, Makefile.am etc.)
- awk-language-server - Awk language server
- azure-pipelines-language-server - Language server for Azure pipelines YAML files
- bash-language-server - Bash language server
- clojure-lsp - Clojure language server
- cmake-language-server - Cmake language server
- compose-language-service - Language server for Docker Compose documents
- dcd - D completion daemon
- diagnostic-languageserver - genetic language server for diagnostic warnings
- digestif - Language server for TeX languages
- dockerfile-language-server-nodejs - Language server for Dockerfiles
- dot-language-server - DOT/Graphviz language server
- efm-langserver - General purpose language server
- fortls - Fortran language server
- fortran-language-server - Fortran language server
- fsautocomplete - F# language server
- golangci-liht-langserver - Golangci-lint language server
- gopls - Go language server
- groovy-language-server - Groovy language server
- haskell-language-server - Haskell language server
- jdtls - Java language server
- jedi-language-server - Python Jedi language server
- jq-lsp - jq language server
- lemminx - XML language server
- ltex-ls - LaTeX language server
- lua-language-server - Lua language server
- luau-lsp - Luau language server
- marksman - Markdown language server
- neocmakelsp - Cmake language server
- omnisharp-roslyn - C# language server
- perl-navigator - Perl language server
- perl-pls - Perl language server
- prosemd-lsp - Markdown prose language server
- pylyzer - Python language server
- python-lsp-server-base - Python language server
- remark-language-server - remark-cli language server
- ruby-lsp - Ruby language server
- ruff-lsp - Ruff language server
- serve-d - D language server
- sql-language-server - SQL language server
- solargraph - Ruby language server
- taplo - Language server and formatter for TOML
- terraform-ls - Terraform language server
- texlab - LaTeX language server
- vim-language-server - VimScript language server
- vscode-json-languageservice - JSON language server
- yaml-language-server - YAML language server
Linters make suggested changes to code based on style and best practices guidelines
- actionlint - static checker for GitHub Actions
- bandit - identifies common security issues in Python code
- bibclean - syntax checking and pretty printing of BibTeX citation files
- checkmake - Makefile linter
- checkstyle - Java style checker
- codespell - find spelling errors in code
- commitlint - syntax checking for git commits
- cppcheck - static analysis tool for C++
- cpplint - static code checker for C++
- flake8 - Python style linter
- gitlint-core - linter for git commit messages
- golangci-lint - Go linter
- hadolint - Dockerfile linter
- hlint - Haskell linter
- jsonlint - JSON linter
- markdownlint-cli2 - Markdown linter
- mypy - static type checker for Python
- npm-groovy-lint - Groovy linter
- pmd - multilanguage static code analyzer
- proselint - linter for prose
- pycodestyle - Python style checker
- pydocstyle - static analysis tool for Python docstrings
- pyright - static type checker for Python
- revive - Go linter
- rubocop - Ruby static code analyzer and formatter
- ruff - Python linter and formatter
- selene - Lua linter
- semgrep - static code analysis tool for multiple languages
- shellcheck - Static analysis tool for shell scripts
- spectral-cli - JSON and YAML linter
- standardrb - Ruby linter
- staticcheck - Go linter
- steep - Ruby type checker
- textidote - Prose style checking in LaTeX
- textlint - Linter for prose
- typos-cli - Linter for prose typos
- vale - Linter for prose
- vim-vint - Vimscript linter
- vulture - Identify dead code in Python
- yamllint - YAML linter
Tools for generate and manipulating logs
- angle-grinder - manipulate log files
- bartib - log run time of commands
- hyperfine - get run time of commands
- radon - code metrics for Python
- time - get run time of commands
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
Miscellaneous tools for specific languages
- licensor - Haskell license helper
- pyflyby - Python development tools
- syntrax_tree - interact with Ruby syntax tree
- scala-cli - general purpose CLI for Scala
- 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
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
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
- 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 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 expressions are a powerful method to modify and filter text
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
Tools that provide a read-eval-print-loop to interactive evaluate code
- ammonite - Scala REPL
- dotnet-repl - REPL for .NET languages
- ipython - Python REPL
- ptpython - Python REPL
- pry - Ruby REPL that is an alternative to IRB
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 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
Tools to display information about OS and hardware
- macchina - system information tool focused on performance
- neofetch - command line system information tool written in bash
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 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 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 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
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
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
Tools to interactively select line from text input
- fzf - fuzzy finder
- fzy - fuzzy finder
- heatseeker - fuzzy finder
- pick - ncurses-based selection list
- skim
Trashing files is a safer, reverseible way to delete files than rm
- rm-imporved - safe alternative to rm
- safe-rm - safety tool to prevent accidental deletion of files
- send2trash - send files to trash
- trash-cli - interface to freedesktop.org trash
Version control systems are used to manage changes to codebases
-
breezy - Python 3 rewrite of the now unmaintained
bzrclient for Bazaar VCS - cvs - classic version control system
- jj - git-compatible VCS
- mercurial - classic version control system
- subversion - classic version control system
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