kotofetch is a small, configurable CLI tool that displays Japanese quotes in the terminal. It comes with built-in quotes and allows users to customize display options such as padding, width, translation display, and text styles.
Note
The latest release does not contain all the built-in quotes.
If you want all the built-in quotes, please add them manually by checking the quotes folder.
You can install the stable release from the AUR using any AUR helper:
yay -S kotofetchOr by cloning the AUR from here:
git clone https://aur.archlinux.org/kotofetch.git
cd kotofetch
makepkg -siYou can install kotofetch natively via Homebrew.
brew install kotofetchNote
Huge thanks to the community member who independently packaged and submitted kotofetch to the official Homebrew Core repository!
If you use Nix, you can install kotofetch using those commands:
git clone https://github.com/hxpe-dev/kotofetch.git
cd kotofetch
nix-buildYou can download prebuilt binaries for Linux, Windows and macOS from the Releases page.
| System / Distribution | File Extension | Description |
|---|---|---|
| Generic Linux | .tar.gz |
The most universal build. Extract and run the binary. |
| Debian / Ubuntu | .deb |
Install using dpkg. |
| Fedora / CentOS / openSUSE | .rpm |
For all RPM-based systems. |
| Windows | .exe or .zip |
The standalone .exe is ready to run. The .zip contains the executable. |
| macOS | .tar.gz |
Extract and run the binary. |
Requires Rust and Cargo:
git clone https://github.com/hxpe-dev/kotofetch.git
cd kotofetch
cargo install --path .After installation, you can run kotofetch from anywhere in your terminal.
You need to have a Japanese font installed on your machine.
One popular choice is the Noto CJK Font.
sudo pacman -S noto-fonts-cjk
sudo apt update
sudo apt install fonts-noto-cjk
sudo dnf install google-noto-cjk-fonts
sudo zypper install noto-fonts-cjk
brew tap homebrew/cask-fonts
brew install --cask font-noto-sans-cjk
User configuration lives in:
~/.config/kotofetch/config.toml # On Linux
~/Library/Application Support/kotofetch/config.toml # On macOS
%APPDATA%\kotofetch\config.toml # On WindowsHere you can customize:
horizontal_padding/vertical_padding- spacing around quoteswidth- max width for text wrapping (0for automatic width)show_translation- translation modes to display; accepts a single value ("english") or an array (["english", "romaji"]); available values:"none","english","romaji","furigana"quote_color- named ANSI colors ("red","yellow","dim", etc.) or hex ("#ffcc00")translation_color- named ANSI colors ("red","yellow","dim", etc.) or hex ("#ffcc00")border_color- named ANSI colors ("red","yellow","dim", etc.) or hex ("#ffcc00")font_size- small, medium, or large (adds spacing between characters)bold- bold Japanese text (true/false)border- show a box border (true/false)rounded_border- show rounded border (needborderto be enabled) (true/false)source- show the quote source (true/false)modes- list of quote files to use (any.tomlfile in~/.config/kotofetch/quotes/or built-in)seed- RNG seed for random quotes (0for random seed)centered- center text (true/false)dynamic- dynamic re-centering of the text (true/false)furigana_position- show furigana"above"or"below"the Japanese text (default:"below")animation- animated reveal on startup:"none"(default),"typewriter","scramble","slide"animation_duration_ms- total duration of the animation in milliseconds (default:1000)
Example config.toml:
[display]
horizontal_padding = 3
vertical_padding = 1
width = 50
show_translation = ["furigana", "english"]
quote_color = "#a3be8c"
translation_color = "dim"
border_color = "#be8ca3"
font_size = "medium"
bold = true
border = true
rounded_border = true
source = true
modes = ["proverb", "anime"]
seed = 0
centered = true
dynamic = false
furigana_position = "above"
animation = "scramble"
animation_duration_ms = 1500You can import your Anki decks as kotofetch quote files using the AnkiConnect plugin.
Requirements:
- Anki desktop must be running.
- AnkiConnect must be installed (plugin code:
2055492159).
Interactive import:
kotofetch init ankiThis connects to http://localhost:8765, shows your available decks, and walks you through mapping note fields (japanese text, translation, furigana reading) interactively.
Non-interactive import (for scripting):
kotofetch init anki \
--deck "Core 2k" \
--japanese-field Expression \
--translation-field Meaning \
--furigana-field Reading \
--romaji-field Romaji \
--yesEach imported deck is saved as ~/.config/kotofetch/quotes/<deck-name>.toml. After importing, use it with:
kotofetch --modes <deck-name>Furigana support: if your note's japanese field contains Anki's native furigana syntax (食[た]べる), it is automatically converted to kotofetch's inline format (食(た)べる). If the japanese field has no readings, the furigana field is used as a fallback. HTML ruby tags (<ruby>/<rt>) are also converted.
Built-in quotes are embedded in the binary. To add your own quotes, create:
~/.config/kotofetch/quotes/ # On Linux
~/Library/Application Support/kotofetch/quotes/ # On macOS
%APPDATA%\kotofetch\quotes\ # On Windows- Place any
.tomlfile there. - The filenames can be arbitrary, the program automatically reads all
.tomlfiles in this folder. - Each
.tomlmust follow this structure:
[[quote]]
japanese = "逃(に)げちゃダメだ"
translation = "You mustn't run away."
romaji = "Nigeccha dame da"
source = "Neon Genesis Evangelion"
[[quote]]
japanese = "人(ひと)は心(こころ)で生(い)きるんだ"
translation = "People live by their hearts."
romaji = "Hito wa kokoro de ikiru nda"
source = "Your Name"Note: Furigana readings are embedded inline in the
japanesefield using parentheses:kanji(reading). The reading immediately follows the kanji it annotates. Compound (multi-kanji) words can share a single reading, e.g.大事(だいじ). Kanji without a(reading)after them simply have no annotation. The parentheses are automatically stripped in non-furigana display modes.
- These custom quotes automatically merge with the built-in ones.
You can see the built-in quotes in the quotes folder.
kotofetch # display a quote following the config
kotofetch --translation furigana # display furigana readings below kanji
kotofetch --translation english,romaji # display both English and romaji
kotofetch --furigana-position above # show furigana readings above the Japanese text
kotofetch --horizontal-padding 3 # override specific config parameter temporarily
kotofetch --modes anime,mycustomquotes # display quotes from specific files
kotofetch --animation typewriter # animated reveal on startup
kotofetch --animation scramble --animation-duration-ms 2000 # scramble with a 2-second duration| Mode | Description |
|---|---|
none |
Japanese text only |
english |
Shows English translation below Japanese |
romaji |
Shows romaji (romanized Japanese) below Japanese |
furigana |
Shows furigana readings below kanji (if available) |
Multiple modes can be combined by passing a comma-separated list: --translation english,romaji or --translation furigana,english. Modes are displayed in the order given.
Furigana displays readings aligned with their kanji, supporting both single-kanji annotations (知(し)) and compound words (大海(たいかい)). Only quotes that include inline ruby markup in their japanese field will show furigana readings. Use --furigana-position above (or furigana_position = "above" in config) to render readings above the Japanese text instead of below.
Animations play once on startup, revealing the Japanese text, furigana, and translation together. They are skipped automatically when output is piped.
| Animation | Description |
|---|---|
none |
No animation (default) |
typewriter |
Characters appear one by one, left to right |
scramble |
Characters cycle through random kana/ASCII before settling into the real text |
slide |
Text streams in from the left |
Use --animation-duration-ms to control the total playback time (default: 1000 ms).
When combined with --dynamic, the animation plays once on the first frame and the dynamic re-centering loop takes over afterwards.
You can get the script by running this command:
kotofetch completion <SHELL>The setup depends on the specific shell.
The supported shells are those supported by the currently used clap_complete version.
A huge thanks to the community members who shared their setups!
![]() Setup by @hxpe |
![]() Setup by @coko_7 |
![]() Setup by @kikeijuu |
![]() Setup by @QL_Leo |
Contributions are welcome (donations too, they support me a lot in my work)! Here's how you can help:
If you use any AI tools for your contribution, please specify which AI tool was used and for what in the commit message.
- Fork the repository.
- Clone your fork locally:
git clone https://github.com/hxpe-dev/kotofetch.git
cd kotofetch- Create a branch for your changes:
git checkout -b feat/my-feature- Make changes and commit:
git add .
git commit -m "Add my feature"- Push your branch:
git push origin feat/my-feature- Open a Pull Request on GitHub!
Made with ❤️ by hxpe
If you enjoy kotofetch, consider starring the GitHub repository!




