Dotfiles

Dotfiles

GitHub code size in bytes GitHub repo size Tokei total line GitHub Created At GitHub last commit GitHub commit activity GitHub License GitHub Release GitHub Repo stars

[English] [Japanese(æ—ĨæœŽčŠž)]

Dotfiles for Linux, macOS, and Termux

🎉 Welcome

Welcome to my dotfiles. This repository helps easily set up a fast and intuitive terminal environment. This setup installs Zsh with starship prompt, tmux, Neovim, and Golang and Rust-based command-line tools that starts and operates quickly. I would be delighted if even a single element leads to a new discovery for you. Grateful that you found this project and took a look!

This dotfiles repository is also available on GitHub Pages.

Linux

Android Termux

WSL2

wsl_zsh_nvim_startuptime

🚀 Installation

1. Download and Install dotfiles

Use the following curl, wget, or git command:

curl -sL https://raw.githubusercontent.com/irichu/dotfiles/main/install.sh | bash
wget -qO- https://raw.githubusercontent.com/irichu/dotfiles/main/install.sh | bash
git clone --depth=1 https://github.com/irichu/dotfiles.git && cd dotfiles && ./install.sh

2. Bulk installation

[!IMPORTANT] On Linux (Ubuntu/Fedora/Arch Linux) or macOS, automatic setup is available using --brew.
On Ubuntu, fast installation is possible with --apt or --snap.
On Termux, setup can be done using --pkg.

[!NOTE] On Linux or macOS, sudo access is required for installation.
This is needed to install Homebrew itself with --brew and to install packages using --apt, --snap.

Install all components using your preferred package manager: dots install [--apt|--brew|--snap|--pkg] Replace [--apt|--brew|--snap|--pkg] with your package manager of choice.

Examples:

dots install --brew
dots install --pkg

[!NOTE] If dots command not found,
please run the following command to add the path to ~/.local/bin
or use ~/.local/bin/dots command directly during the installation process

echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

3. Start

Relogin or execute the following command:

exec -l $(which zsh)

[!NOTE] In a login shell, such as an SSH session, Tmux will start automatically.
If a Tmux server is already running, you can select a session to connect to.

✅ Supported OS

[!WARNING] The Google Play Store version of Termux may not work properly with some commands.
It is recommended to install it from F-Droid.

âœĻ Features

📗 Basic commands

Show help and available commands:

dots --help

Get the current color theme:

dots theme

Set the color theme:

dots set-theme <NUMBER|NAME>

# Example
dots set-theme 4                 # Set by number
dots set-theme "developer-mono"  # Set by name

Available themes:

1. developer

Image

2. developer-textcolored

Image

3. developer-colorful

Image

4. developer-mono

Image

5. dark-turquoise

Image

6. dark-turquoise-textcolored

Image

7. dark-turquoise-colorful

Image

8. dark-turquoise-mono

Image

9. dark-orange

Image

10. dark-orange-textcolored

Image

11. dark-orange-colorful

Image

12. dark-orange-mono

Image

13. dark-skyblue

Image

14. dark-skyblue-textcolored

Image

15. dark-skyblue-colorful

Image

16. dark-skyblue-mono

Image

Copy $XDG_CONFIG_HOME to $XDG_DATA_HOME/dotfiles-main/backup dir:

dots backup

Clean up directories:

# remove dotfiles cache
dots clean

# remove cache + dotfiles backup directories
dots clean backup

# remove cache + config directories
dots clean config

# remove cache + backup + config
dots clean all

Show install target package list:

dots list [--apt|--brew|--snap|--pkg]

Install individual package:

dots install <package_name>
Help image
help

ðŸ–Ĩïļ Install individual package

The following apps can be installed individually from the dots install <package_name> command

>_ CLI/TUI Apps

Package Name Description
docker docker-ce (additional repository)
fnm latest FNM (Fast Node Manager) and Node.js
fzf fzf (fuzzy finder) from github
lazydocker LazyDocker
lazygit LazyGit
lazyvim LazyVim
neovim Neovim and LazyVim
starship starship.rs

ðŸ–Ĩïļ GUI Apps

Package Name Description
copyq CopyQ
rustdesk RustDesk on Ubuntu Desktop
zed Zed editor on Linux Desktop

ðŸŠī Others

Package Name Description
hackgen HackGen font (Nerd Font)

🍚 Brew Apps

The dots install --brew command mainly installs the following apps

macOS (cask)

Package Name Description
alacritty A fast, GPU-accelerated terminal emulator.
clipy Clipboard manager for macOS with history support.
docker Platform for developing, shipping, and running containers.
flameshot Powerful and easy-to-use screenshot tool.
ghostty Minimal, GPU-based terminal emulator for macOS.
rectangle Window management app using keyboard shortcuts.
visual-studio-code Lightweight yet powerful source code editor.

Common (Linux, macOS)

Package Name Description
bat cat replacement
bottom TUI system resource monitor
broot Interactive directory navigation tool
cloc Count lines of code in a project
duf df replacement with better visualization
dust du replacement with intuitive output
eza ls replacement with modern features
fastfetch Fast system information fetcher
fd find replacement with simpler syntax
fnm Fast Node Manager for managing Node.js versions
fzf Fuzzy finder for the command line
gh GitHub CLI tool for interacting with GitHub
git-delta Syntax-highlighting pager for git and diff output
gping Graphical ping tool with live visualization
gum A tool for enhancing shell scripts with interactive UI
jq Command-line JSON processor
just Handy command runner similar to Make
lazygit Simple TUI for Git repositories
ripgrep grep replacement with blazing fast search
ruff Fast Python linter and formatter
sd Simplified and faster replacement for sed
starship Minimal and customizable shell prompt
tmux Terminal multiplexer for managing multiple panes
tokei Code statistics tool for counting lines and files
typst Modern markup-based typesetting system
uv Python version manager with seamless virtual environments
yazi TUI file manager inspired by ranger
zellij Rust-based terminal multiplexer with workspace support
zoxide cd replacement with smart directory jumping
zsh Powerful and customizable shell
zsh-autosuggestions Fish-like command suggestions for zsh
zsh-completions Additional completions for zsh commands
zsh-syntax-highlighting Syntax highlighting for zsh command line

📓 Target apps

If you want to check all applications per package manager, please refer:

ðŸģ Docker

You can build and enter a container with the following commands.

cd ~/.local/share/dotfiles-main

docker build -t dotfiles-img .
docker run -it -d --name dotfiles-con dotfiles-img
docker exec -it dotfiles-con /bin/zsh

In container, install apt packages

dots install --apt

or install Homebrew with following command.

dots install --brew

Neovim

LazyVim tokyonight.nvim style=night
LazyVim

Tmux

Tmux split window
Tmux split window
Tmux synchronize-panes mode
Tmux synchronize-panes mode

eza, lazygit, yazi

eza tree (eza -l -T)
eza tree
lazygit
lazygit
yazi
yazi

⚡ Aliases for quick start

Tmux

Create a session

Quickly start a new tmux session.

t # tmux new

Attach the last session

Reconnect to the most recent tmux session.

ta # tmux attach

Show all sessions

List all tmux sessions that are currently running.

tls # tmux ls

Terminate tmux server

Kill the entire tmux server and all running sessions.

tks # tmux kill-server

Show tmux pane id

Show tmux pane id

tid # tmux display -pt "${TMUX_PANE:?}" "#{pane_index}"

Reload tmux config

Reload .tmux.conf

.t # source ~/.config/tmux/.tmux.conf

Neovim

Search and Open

Search and open files by fd and fzf.

v # fd --type f --hidden --exclude .git | fzf-tmux -p | xargs -o nvim

âŒĻïļ Keymaps

Zsh

Based on Emacs mode with bindkey -e, with some additional key bindings added.

Key Action
Ctrl+(↑/↓) Undo / Redo
Ctrl+(←/→) Backward-word / Forward-word

Tmux

prefix key

[!NOTE] The tmux prefix key is configured to Ctrl + \ for easier access.

Key Description
I Install tmux plugins with tpm
U Update tmux plugins with tpm
Ctrl+s Save tmux env
Ctrl+r Restore tmux env
d Detach the tmux session
e Switch pane-synchronize mode

[!TIP] In nested Tmux sessions, pressing the prefix key (Ctrl-\) multiple times will send it to the innermost session. The number of times you need to press it equals the depth of nesting.

For example, if you are running Tmux inside another Tmux session (nested once), pressing Ctrl-\ twice will send the prefix key to the inner session. If you are three levels deep, you need to press Ctrl-\ three times. Additionally, pressing Ctrl-\ sends the key input to the shell within the session.

tmux plugins

The tmux plugins installed by default are as follows:

alt key shortcut

Key Description Prefix key +
Alt+(↑/↓) Create/delete the window c/&
Alt+(←/→) Switch to the previous/next window p/n
Alt+[1-9] Switch to the 1-9 window [1-9]
Alt+- Split the window horizontally -
Alt+\\ Split the window vertically \\
Alt+[hjkl] Switch to the left/down/up/right pane ←/↓/↑/→

alt+shift key shortcut

Key Description Prefix key +
Alt+Shift+(↑/↓) Create/delete a session  
Alt+Shift+(←/→) Switch to the previous/next session (/)

Neovim

Based on LazyVim keymaps, with some additional key bindings added.

Mode Key Description
n,v Ctrl+(↑/↓) Move to (the end of the previous / the beginning of the next) paragraph
n,v,i Ctrl+(←/→) Backward word / Forward word
i Ctrl+/ Undo
i Ctrl+r Redo

Emacs-like shortcuts are configured in insert mode.

📜 License

This project is licensed under the MIT License.