An open API service indexing awesome lists of open source software.

https://github.com/irichu/dotfiles

ðŸ“Ķ Simple yet powerful cross-platform dotfiles. Easily setup the intuitive Ubuntu Desktop, Linux server (Ubuntu/Fedora/Arch Linux), macOS, and Termux.
https://github.com/irichu/dotfiles

android brew docker dotfiles gnome-desktop homebrew japanese lazyvim macos neovim starship termux termux-configuration tmux ubuntu wsl2 zsh

Last synced: about 19 hours ago
JSON representation

ðŸ“Ķ Simple yet powerful cross-platform dotfiles. Easily setup the intuitive Ubuntu Desktop, Linux server (Ubuntu/Fedora/Arch Linux), macOS, and Termux.

Awesome Lists containing this project

README

          

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



Dotfiles logo image




GitHub code size in bytes


Tokei total line


GitHub Created At

GitHub last commit

GitHub License

GitHub Release

GitHub Repo stars


# Dotfiles for Linux and Termux

## 🎉 Welcome

Welcome to my dotfiles. [This GitHub repository] helps easily set up a fast and intuitive desktop and 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!

irichu dotfiles ubuntu desktop terminal

irichu dotfiles ubuntu desktop vscode nautilus

## 🚀 Installation

**1. Download and Install dotfiles**

Use the following `curl`, `wget`, or `git` command:

curl


curl -sL https://raw.githubusercontent.com/irichu/dotfiles/main/install.sh | bash

wget


wget -qO- https://raw.githubusercontent.com/irichu/dotfiles/main/install.sh | bash

git (>=2.35.0 recommended)


git clone --depth=1 https://github.com/irichu/dotfiles.git && cd dotfiles && ./install.sh


**2. Automatic package installation**

> [!IMPORTANT]
> On Ubuntu Desktop, automatic setup is possible `--ubuntu-desktop`.

> On Ubuntu, fast installation is possible with `--apt` or `--snap`.

> On Linux (Ubuntu/Fedora/Arch Linux) or macOS, automatic setup is available using `--brew`.

> 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]`

**Examples:**

- To install on Ubuntu Desktop (New):

```bash
dots install --ubuntu-desktop
```

- To use brew on Linux or macOS:

```bash
dots install --brew
```

- To use pkg on Termux:

```bash
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
>

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

**3. Start**

Relogin or execute the following command:

```bash
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

- Linux 🐧
- Ubuntu 22.04 and newer (recommended)
- Arch Linux
- Fedora
- Mac 🍎
- macOS
- Android ðŸ“ą
- The latest version of Termux

> [!WARNING]
> The Google Play Store version of Termux may not work properly with some commands.

> It is recommended to install it from [F-Droid].
>

irichu dotfiles main screenshot

## âœĻ Features

- Desktop
- Themes
- Icons: [Flat-Remix-Blue-Dark]
- Shell: [Marble-blue-dark]
- GTK: [Flat-Remix-GTK-Blue-Dark-Solid]
- Gnome Extensions
- Blur my Shell
- Just Perfection
- Space Bar
- Tactile
- etc.
- Terminal
- Shell: Zsh with the [starship] prompt
- Editor: [Neovim] configured via [LazyVim]
- Terminal Multiplexers: [tmux] for session management, [zellij] for workspace management
- TUI File Managers: [broot] for efficient navigation, [yazi] for rapid file access
- Terminal Emulator: [Alacritty] for performance, [Termux] for Android environments

## ðŸģ Docker

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

```bash
cd ~/.local/share/dotfiles-main
```

docker compose command:

```bash
docker compose up -d --build
docker compose exec dotfiles zsh
```

docker command


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

```bash
dots install --apt
```

or install Homebrew with following command.

```bash
dots install --brew
```

## 📗 Basic commands

Get/Set the current tmux theme


# get theme
dots tmux-theme


# set theme
dots set-tmux-theme

# example
dots set-tmux-theme 4 # Set by number
dots set-tmux-theme developer-mono # Set by name

Available themes:


Developer (purple base)

1. developer

tmux status image

2. developer-textcolored

tmux status image

3. developer-colorful

tmux status image

4. developer-mono

tmux status image


Turquoise

5. dark-turquoise

tmux status image

6. dark-turquoise-textcolored

tmux status image

7. dark-turquoise-colorful

tmux status image

8. dark-turquoise-mono

tmux status image


Orange

9. dark-orange

tmux status image

10. dark-orange-textcolored

tmux status image

11. dark-orange-colorful

tmux status image

12. dark-orange-mono

tmux status image


Skyblue

13. dark-skyblue

tmux status image

14. dark-skyblue-textcolored

tmux status image

15. dark-skyblue-colorful

tmux status image

16. dark-skyblue-mono

tmux status image


Get/Set the starship theme


# get current starship theme
dots starship


# set starship theme
dots set-starship simple # oneline
dots set-starship default # multiline

Get/Set the terminal window opacity


# get current opacity
dots opacity


# set opacity
dots set-opacity

Show install target package list


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

Install individual package


dots install {package_name}

- 🐧 [Linux packages]
- 🍚 [Brew Apps]

Backup a dotfiles directory


# 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

Print dotfiles version


dots --version

Show help and available commands


dots --help

| Help image |
| :----------------------------------------------------------------------------------------------------------------: |
| help |

## 📚 Application List

>_ CLI/TUI Apps



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.


ðŸ–Ĩïļ Linux GUI Apps



Package Name
Description




chrome
Google Chrome on Ubuntu Desktop


code
Visual Studio Code on Ubuntu Desktop


copyq
CopyQ on X11


localsend
LocalSend on Ubuntu Desktop


obsidian
Obsidian on Ubuntu Desktop


rustdesk
RustDesk on Linux Desktop


signal
Signal Desktop on Ubuntu Desktop


waydroid
Waydroid on Ubuntu Desktop


zed
Zed editor on Linux Desktop


ðŸŠī Others



Package Name
Description




hackgen
HackGen font (Nerd Fonts)


mplus2
M PLUS 2 font (Google Fonts)


mozc
Mozc - a Japanese input method editor(IME)


🍚 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.


🍚 Brew apps



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


tldr
Simple help for command-line tools


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


## 🖞ïļ Gallery

### Ubuntu Desktop

irichu dotfiles ubuntu desktop terminal

### Android Termux

Android smartphone screenshot

Android tablet screenshot

### WSL2

wsl_zsh_nvim_startuptime

### 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.

```bash
t # tmux new
```

#### Attach the last session

Reconnect to the most recent tmux session.

```bash
ta # tmux attach
```

#### Show all sessions

List all tmux sessions that are currently running.

```bash
tls # tmux ls
```

#### Terminate tmux server

Kill the entire tmux server and all running sessions.

```bash
tks # tmux kill-server
```

#### Show tmux pane id

Show tmux pane id

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

#### Reload tmux config

Reload .tmux.conf

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

### Neovim

#### Search and Open

Search and open files by fd and fzf.

```bash
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:

- [tpm]
- [tmux-continuum]
- [tmux-logging]
- [tmux-resurrect]
- [tmux-fingers]

#### 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.

- Ctrl+[abdefnpuwy]
- Alt+[bdf]

## 📜 License

This project is licensed under the [MIT License].

[Japanese(æ—ĨæœŽčŠž)]: docs/README-ja.md
[This GitHub repository]: https://github.com/irichu/dotfiles
[F-Droid]: https://f-droid.org/
[Flat-Remix-Blue-Dark]: https://www.opendesktop.org/p/1012430
[Marble-blue-dark]: https://www.gnome-look.org/p/1977647
[Flat-Remix-GTK-Blue-Dark-Solid]: https://www.opendesktop.org/p/1214931
[starship]:
[Neovim]:
[LazyVim]:
[tmux]:
[zellij]:
[broot]:
[yazi]:
[Alacritty]:
[Termux]:
[Linux packages]: docs/app-packages.md
[Brew Apps]: docs/brew-packages.md
[tpm]:
[tmux-continuum]:
[tmux-logging]:
[tmux-resurrect]:
[tmux-fingers]:
[LazyVim keymaps]:
[Emacs-like shortcuts]: docs/neovim.md#emacs-like
[MIT License]: LICENSE.md