This repository contains my personal configuration files when I want to setup a Linux environment.
At a minimum, we need to manually install Task which will allow us to install the rest of the software stack.
You may have to install Rust and Go first.
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
{ mkdir -p ~/opt && cd ~/opt && wget 'https://go.dev/dl/go1.22.5.linux-amd64.tar.gz' -O - | tar zx && mv go go-1.22.5; }
Go Task - Documentation: Task is a task runner / build tool that aims to be simpler and easier to use than, for example, GNU Make. Go Task - GitHub: A task runner / simpler Make alternative written in Go.
env GOBIN=$HOME/.local/bin go install github.com/go-task/task/v3/cmd/task@latest
ChezMoi - Documentation ChezMoi - GitHub: Manage your dotfiles across multiple diverse machines, securely.
env GOBIN=$HOME/.local/bin go install github.com/twpayne/chezmoi@latest
or
task -t taskfiles/go_essentials.yml chezmoi
Clone and Apply Chezmoi
chezmoi init --apply github:SamuelLarkin/dotfiles.git
These are my most used CLIs.
- bat - GitHub: A cat(1) clone with syntax
- delta - GitHub: A syntax-highlighting pager for git, diff, and grep output
- fzf - GitHub: fzf is a general-purpose command-line fuzzy finder. Also available, a vim plugin for fzf.
- fzf-tmux - GitHub: Starts fzf in a tmux pane.
- gdu - go DiskUsage - GitHub: Pretty fast disk usage analyzer written in Go.
- Glow - GitHub: Render markdown on the CLI, with pizzazz!
- hexyl - GitHub: is a simple hex viewer for the terminal. It uses a colored output to distinguish different categories of bytes (NULL bytes, printable ASCII characters, ASCII whitespace characters, other ASCII characters and non-ASCII).
- histo - GitHub: Histograms with a configurable number of buckets, and a terminal-friendly Display.
- histogram.py - GitHub: Command line utilities for data analysis.
- htop - GitHub: is a cross-platform interactive process viewer
- hyperfine - GitHub: A command-line benchmarking tool
- jless - GitHub: jless is a command-line JSON viewer. Use it as a replacement for whatever combination of less, jq, cat and your editor you currently use for viewing JSON files. It is written in Rust and can be installed as a single standalone binary. jless — a command-line JSON viewer
- jq: jq is a lightweight and flexible command-line JSON processor
- lazygit - GitHub: A simple terminal UI for git commands, written in Go with the gocui library.
- lsd (LSDeluxe) - GitHub: This project is a rewrite of GNU ls with lot of added features like colors, icons, tree-view, more formatting options etc. The project is heavily inspired by the super colorls project.
- ncdu: NCurses Disk Usage
- parallel - GNU parallel: is a shell tool for executing jobs in parallel using one or more computers
- rename - Cpan File::Rename
- tabulate - GitHub: Pretty-print tabular data in Python, a library and a command-line utility.
- tig - GitHub: text-mode interface for Git
- tmux-fzf - GitHub: Use fzf to manage your tmux work environment!
- tqdm - GitHub: Progress Bar.
- ug/ugrep - GitHub: Search for anything in everything... ultra fast.
- zoxide - GitHub: zoxide is a smarter cd command, inspired by z and autojump. It remembers which directories you use most frequently, so you can "jump" to them in just a few keystrokes. zoxide works on all major shells.
eval "$(zoxide init bash)"
- asciigraph - GitHub: Go package to make lightweight ASCII line graphs ╭┈╯.
- bat - GitHub: A cat(1) clone with syntax
- bottom - GitHub: Another TUI based system monitor, this time in Rust
- bpytop - GitHub: Linux/OSX/FreeBSD resource monitor
- chezmoi - GitHub: Manage your dotfiles across multiple diverse machines, securely.
- delta - GitHub: A syntax-highlighting pager for git, diff, and grep output
- difftastic - GitHub: Difftastic is an experimental diff tool that compares files based on their syntax.
- Diskonaut - GitHub: windirstat like for the CLI.
- duf - GitHub: Disk Usage/Free Utility (Linux, BSD, macOS & Windows).
- dust: du + rust = dust - GitHub: Like du but more intuitive.
- Erdtree - GitHub: A bLazInGlY fAsT, simplified version of the ancient tree command which displays a colorful depth indented listing of files with their memory sizes adjacent.
- exa - Documentation: modern replacement for ls
- F2 - GitHub: F2 is a cross-platform command-line tool for batch renaming files and directories quickly and safely. Written in Go!
- fd - GitHub: is a program to find entries in your filesystem
- forgit - GitHub: A utility tool powered by fzf for using git interactively.
- fzf - GitHub: fzf is a general-purpose command-line fuzzy finder. Also available, a vim plugin for fzf.
- fzf-git.sh - GitHub: bash and zsh key bindings for Git objects, powered by fzf.
- fzf-tmux - GitHub: Starts fzf in a tmux pane.
- gdu - go DiskUsage - GitHub: Pretty fast disk usage analyzer written in Go.
- glances - GitHub: An eye on your system
- Glow - GitHub: Render markdown on the CLI, with pizzazz!
- gojq - GitHub: Pure Go implementation of jq. This is an implementation of jq command written in Go language. You can also embed gojq as a library to your Go products.
- gotz - GitHub: gotz - a simple CLI timezone info tool.
- hexyl - GitHub: is a simple hex viewer for the terminal. It uses a colored output to distinguish different categories of bytes (NULL bytes, printable ASCII characters, ASCII whitespace characters, other ASCII characters and non-ASCII).
- histo - GitHub: Histograms with a configurable number of buckets, and a terminal-friendly Display.
- histogram.py - GitHub: Command line utilities for data analysis.
- hq - GitHub: Powerful HTML slicing and dicing at the command line.
- htop - GitHub: is a cross-platform interactive process viewer
- hyperfine - GitHub: A command-line benchmarking tool
- jless - GitHub: jless is a command-line JSON viewer. Use it as a replacement for whatever combination of less, jq, cat and your editor you currently use for viewing JSON files. It is written in Rust and can be installed as a single standalone binary. jless — a command-line JSON viewer
- jo - GitHub: JSON output from a shell.
- jq: jq is a lightweight and flexible command-line JSON processor
- lazydocker - GitHub: A simple terminal UI for both docker and docker-compose, written in Go with the gocui library.
- lazygit - GitHub: A simple terminal UI for git commands, written in Go with the gocui library.
- lf - GitHub: lf (as in "list files") is a terminal file manager written in Go with a heavy inspiration from ranger file manager.
- lsd (LSDeluxe) - GitHub: This project is a rewrite of GNU ls with lot of added features like colors, icons, tree-view, more formatting options etc. The project is heavily inspired by the super colorls project.
- Miller - GitHub: Miller is like awk, sed, cut, join, and sort for data formats such as CSV, TSV, JSON, JSON Lines, and positionally-indexed.
- Navi - GitHub: An interactive cheatsheet tool for the command-line.
- ncdu: NCurses Disk Usage
- oxker - GitHub: A simple tui to view & control docker containers.
- parallel - GNU parallel: is a shell tool for executing jobs in parallel using one or more computers
- procs - GitHub: is a replacement for ps written in Rust
- pv - GitHub: a terminal-based tool for monitoring the progress of data through a pipeline.
- py-spy: py-spy: Sampling profiler for Python programs
py-spy top -- python myprogram.py
- Pyinstrument: Pyinstrument is a Python profiler.
- rename - Cpan File::Rename
- rg: ripgrep - GitHub: ripgrep is a line-oriented search tool that recursively searches the current directory for a regex pattern
- Rich CLI - GitHub: Rich-cli is a command line toolbox for fancy output in the terminal, built with Rich. Use the rich command to highlight a variety of file types in the terminal, with specialized rendering for Markdown and JSON files. Additionally you can markup and format text from the command line.
- RnR - GitHub: RnR is a command-line tool to securely rename multiple files and directories that supports regular expressions.
- runiq - GitHub: This project offers an efficient way (in both time and space) to filter duplicate entries (lines) from texual input.
- starship - GitHub: ☄🌌️ The minimal, blazing-fast, and infinitely customizable prompt for any shell!
- tabulate - GitHub: Pretty-print tabular data in Python, a library and a command-line utility.
- termeter - GitHub: Visualize data in the terminal.
- Termgraph - GitHub: A command-line tool that draws basic graphs in the terminal, written in Python. Termgraph – How To Draw basic graphs on Linux terminal - Blog.
- termscp - GitHub: A feature rich terminal UI file transfer and explorer with support for SCP/SFTP/FTP/S3.
- tig - GitHub: text-mode interface for Git
- tldr-pages - GitHub: The tldr-pages project is a collection of community-maintained help pages for command-line tools, that aims to be a simpler, more approachable complement to traditional man pages.
- tmux-fzf - GitHub: Use fzf to manage your tmux work environment!
- tmuxp - GitHub: tmuxp, tmux session manager.
- tqdm - GitHub: Progress Bar.
- ug/ugrep - GitHub: Search for anything in everything... ultra fast.
- vifm - GitHub: Vim-like file manager
- vivid - GitHub: vivid is a generator for the
LS_COLORS
environment variable that controls the colorized output of ls, tree, fd, bfs, dust and many other tools. - xonsh: XONSH is a Python-powered shell
- xq - GitHub: Apply XPath expressions to XML, like jq does for JSONPath and JSON.
- xsv - GitHub: xsv is a command line program for indexing, slicing, analyzing, splitting and joining CSV files. Commands should be simple, fast and composable.
- yq in python - GitHub: yq: Command-line YAML/XML/TOML processor - jq wrapper for YAML, XML, TOML documents.
- yq in go - GitHub: A lightweight and portable command-line YAML, JSON and XML processor. yq uses jq like syntax but works with yaml files as well as json and xml.
- ytop - GitHub: Another TUI based system monitor, this time in Rust
- zellij: A terminal workspace with batteries included.
- zenith - GitHub: In terminal graphical metrics for your Xnix system written in Rust.
- zoxide - GitHub: zoxide is a smarter cd command, inspired by z and autojump. It remembers which directories you use most frequently, so you can "jump" to them in just a few keystrokes. zoxide works on all major shells.
eval "$(zoxide init bash)"
- elvish: Elvish is an expressive programming language and a versatile interactive shell, combined into one seamless package. It runs on Linux, BSDs, macOS and Windows.
- elvish - GitHub: Elvish = Expressive Programming Language + Versatile Interactive Shell
- fish - GitHub: the friendly interactive shell
- nushell: A new type of shell with plugins.
- nushell - GitHub: A new type of shell.
- xonsh: XONSH is a Python-powered shell
- fz - GitHub: A shell plugin that seamlessly adds fuzzy search to tab completion of z, lets you easy to jump around among your historical directories
- z - GitHub: jump around
~/.gitconfig
[core]
pager = delta
[interactive]
diffFilter = delta --color-only
[delta]
navigate = true # use n and N to move between diff sections
[merge]
conflictstyle = diff3
[diff]
colorMoved = default
- Desed - GitHub: Demystify and debug your sed scripts, from comfort of your terminal.
- artem - GitHub: artem is a small cli program written in rust to easily convert images to ascii art.
- atuin - GitHub: Atuin replaces your existing shell history with a SQLite database, and records additional context for your commands. Additionally, it provides optional and fully encrypted synchronisation of your history between machines, via an Atuin server.
- autoenv - GitHub: Directory-based environments
- bfs - GitHub A breadth-first version of the UNIX find command.
- direnv: Unclutter your .profile
- fx - GitHub: Terminal JSON viewer
- gitui - GitHub: GitUI provides you with the comfort of a git GUI but right in your terminal. Not as great as lazygit.
- hoard - GitHub: command organizer tool to hoard all your precious commands.
- jaq - GitHub: jaq is a clone of the JSON data processing tool jq. jaq aims to support a large subset of jq's syntax and operations.
- joshuto - GitHub: ranger-like terminal file manager written in rust
- jql - GitHub: A JSON Query Language CLI tool built with Rust.
- ripgrep (rg) - GitHub: ripgrep is a line-oriented search tool that recursively searches the current directory for a regex pattern
- xq - GitHub: JQ reimplemented purely in Rust.
- yazi - GitHub: 💥 Blazing fast terminal file manager written in Rust, based on async I/O.
- Jeremy Kahn - Youtube: Vim Plugins and Tricks That Give Me Super Powers.
- Jeremy Kahn: .vimrc - GitHub
- CoC - GitHub: Make your Vim/Neovim as smart as VSCode.
- anyjump - GitHub: Vim code inspection plugin for finding definitions and pick and references/usages.
- ctrlsf.vim - GitHub: An ack/ag/pt/rg powered code search and view tool, takes advantage of Vim 8's power to support asynchronous searching, and lets you edit file in-place with Edit Mode.
- ALE - GitHub: Asynchronous Lint Engine.
I'm debating if I should switch to Neovim or one of it's customization.
- Neovim: Neovim is a Vim-fork focused on extensibility and usability
- LazyVim: Neovim config for the lazy LazyVim
- Lunarvim: 🌙 LunarVim is an IDE layer for Neovim. Completely free and community driven.
- AstroNvim: AstroNvim is an aesthetic and feature-rich neovim config that is extensible and easy to use with a great set of plugins.
- NvChad: Blazing fast Neovim config providing solid defaults and a beautiful UI, enhancing your neovim experience. NvChad
- CosmicNvim: CosmicNvim is a lightweight and opinionated Neovim config for web development, specifically designed to provide a 💫 COSMIC programming experience!
Vim Plugins equivalent
vim | neovim |
---|---|
vimgutter | gitsigns |
VCSVimDiff | diffview.nvim |
statusbar | navic |
tagbar | symbols-outline, navbuddy, aerial, vista |
- jq - manual
- jq - cookbook
- jq-hopkok jq utility library - GitHub: Checkout how they handle
parallel
withjq
. - 6 stellar libraries for profiling Python code
- Nerd Fonts: Nerd Fonts patches developer targeted fonts with a high number of glyphs (icons). Specifically to add a high number of extra glyphs from popular ‘iconic fonts’ such as Font Awesome, Devicons, Octicons, and others.
- Programming Fonts: Test drive all the programming fonts!
- Command Line - Reddit: This is for anything regarding the command line, in any operating system. All questions (including dumb ones), tips, and links to interesting programs/console applications you've found or made yourself are welcome. Linux / BSD / OSX / Windows CLI and TUI apps or questions or comments, we're happy to take them all!
- Vim - Reddit: For Vim enthusiasts and anyone interested in Vim.
- A list of new(ish) command line tools
- tui-rs - GitHub: Build terminal user interfaces and dashboards using Rust.
- Awesome TUIs List of projects that provide terminal user interfaces.
- fzf Web Color Picker
- Conventional Commits
- AWESOME VIM PLUGINS from ACROSS THE UNIVERSE
- Awesome Neovim
- The Modern JavaScript Tutorial
- Find your next tool at TerminalTrove