My personal dotfiles managed with chezmoi.
This is my Garuda Linux desktop setup using KDE Plasma, therefore heavily adjusted to my personal preference. It should be able to generalize to other Linux distributions (especially Arch-based ones) with some adjustments. For a general and minimal Linux terminal environment setup, I recommend using my CLI Toolbox.
I don't recommend using this repository directly, as my dotfiles are tailored to my personal setup and may not work for you. Instead, you should build your own dotfiles from scratch, while perhaps taking this repository as a reference.
But only if you really want to build your dotfiles on top of this, fork this repo first to your own GitHub account, then run:
# init chezmoi with your forked repo:
chezmoi init git@github.com:yourusername/chezmoi.git
# remove my encrypted files you can't access:
chezmoi cd
find . -name "encrypted_*.age" -delete
git add .
git commit -m "remove encrypted files"
git push
exit
# apply all the dotfiles: (potentially dangerous, review the changes first)
chezmoi applySee the chezmoi documentation for more information on how to use it.
See my font configuration in ~/.config/fontconfig/fonts.conf. I also like to set font to Bookerly in KDE Plasma system settings. Several fonts to install:
paru -S --needed ttf-lxgw-bright ttf-lxgw-wenkai noto-fonts-cjk noto-fonts ttf-cascadia-code-nerd amazon-fontsI use fcitx5 + rime as my input method framework. I pick rime-ice for Chinese input configuration, with flypy as my double pinyin scheme. Check the configuration in ~/.local/share/fcitx5/rime.
# fcitx5 + rime
paru -S --needed fcitx5 fcitx5-configtool fcitx5-gtk fcitx5-qt fcitx5-rime
# rime-ice: this includes all supported input schemes
paru -S --needed rime-ice-git
# or better, install just a specific input scheme like flypy
# paru -S --needed rime-ice-double-pinyin-flypy-gitNecessary environment variables have been set in ~/.config/environment.d/fcitx5.conf. Additional steps may include this integration.
I use kitty as my main terminal emulator. It's always at the frontier of terminal features like ligatures, cursor animation, image display, etc.
Please take a look at my CLI Toolbox where I introduce must-have terminal utilities and configurations. Their configs are also included here.
Apart from those, I also found these terminal utils useful on desktop:
-
aerc: A terminal email client. It supports multiple accounts, various backends (including JMAP), Vim-style keybindings, HTML rendering (using
chawanorw3m), and has a nice TUI. -
chawan: A terminal web browser and pager with CSS, inline images, and JavaScript support. I found it more feature-rich than
w3morlynx. -
atuin: A better shell history search and sync tool. It stores your shell history in a SQLite database, supports fuzzy search, and can sync across devices. It encrypts your data before sending to their server, and if you don't trust them you can self-host the server.
My preferred GUI softwares:
-
mpv: A minimal, versatile and highly customizable media player. My configuration includes several utils (media control & thumbnail generation) and a nice UI skin. Check and run
~/.config/mpv/packages.installto install the necessary packages. -
Zathura: A lightweight and customizable PDF viewer with vim-like keybindings. Can even be wrapped to view Office documents like this.
-
WPS Office: A solid alternative to Microsoft Office. I find it the most compatible and responsible on Linux.
-
Readest: A cross-platform ebook reader with cloud sync across devices. The best open-source eBook reader currently.
- Also check Foliate if you just want a local eBook reader with a nice interface.
-
Syncthing: The best open-source file synchronization tool. It can be used to sync files between your devices, including your phone. There's no subscription or centralized providers, as the data transfer is encrypted in a volunteered p2p network. There is a nice tray integration.
-
Kopia: Fast and secure open-source backup software, including both TUI and CLI. It supports both local and various cloud backends. Snapshot scheduling, compression, and encryption all function well. I once wrote a blog in Chinese promoting it.
-
KDE Connect: Included in KDE Plasma by default but still worth mentioning. A great tool to integrate your phone with your desktop. It allows you to share clipboards, files, notifications, and control your desktop from your phone.
-
Kdenlive: A powerful and user-friendly video editor.
-
Krita: A professional open-source painting program, great for digital art and photo editing.
-
Yakuake: A drop-down terminal emulator for KDE Plasma.
-
Obsidian: A powerful knowledge base that works on top of a local folder of plain text Markdown files. It supports all platforms and has tons of community plugins and themes. I use it for note-taking and knowledge management.
- Tip: don't want to pay for sync? Use Syncthing to sync your vault across devices.
-
Typst: A modern typesetting system that is designed to be as powerful as LaTeX while being much easier to learn and use. I just love its speed and elegant syntax design that surpasses LaTeX so much. Writing math equations feel like a breeze without backslashes. I use it for my academic writing and note-taking.
- Obsidian user? Check out this plugin to render Typst math equations in Obsidian.
- Neovim user? Check out the extra config by Lazyvim.
-
Spectacle OCR: OCR screenshot utility usingNow with KDE Plasma 6.6, the built-in screenshot toolspectacleandtesseract. It allows you to select a region of the screen, take a screenshot, and extract (English + Simplified Chinese) text from it. Mapped toMeta+Printin KDE Plasma shortcuts.spectaclealready supports OCR. Install the necessary packages with:paru -S --needed tesseract tesseract-data-eng tesseract-data-chi_sim spectacle # English + Simplified Chinese (change it to your language)
-
Libinput-gestures: Actions gestures on your touchpad using libinput. Bundled with Garuda Linux by default. I map 3-finger swipe up/down to
ctrl-t/wfor quick tab new/close in browsers with ydotool (the defaultxdotoolmapping is not compatible with Wayland). See~/.config/libinput-gestures.conf. Enable it with:paru -S --needed libinput-gestures ydotool systemctl --user enable --now ydotool.service- Alternative: Fusuma is also configured. Uncomment the line in
~/.profileto enable it. Do not enable both.
- Alternative: Fusuma is also configured. Uncomment the line in
-
Firefox Ctrl+W Disable Hook: A pacman post-install hook that patches Firefox to prevent accidental tab closing with Ctrl+W. Handy if you use vim mode in Typst or Overleaf. See this blog post for details. Run ~/Scripts/install-firefox-omni-hook.sh to automatically set it up.
-
Darkman: Auto switch light/dark mode based on time and your location, with customizable scripts for many softwares. See my list of configured softwares for light/dark schemes. Manual toggle keybinding is mapped to
Meta+Shift+Din KDE Plasma shortcuts. Run~/.config/darkman/install.shto set it up. -
Caps Lock Enhancement: Turn CAPSLOCK into CTRL when key-chording and ESC when pressed alone. Very handy for vim users. I use keyd, a great keyboard remapping daemon for this. Run ~/.config/keyd/install.sh to set it up.
- Alternative: interception-tools is another util for altering input events. Run
~/.config/udevmon/install.shto enable the Caps Lock enhancement with it. Do not enable both.
- Alternative: interception-tools is another util for altering input events. Run