My personal dotfiles for Hyprland-based Wayland environment.
- Window Manager: Hyprland - Dynamic tiling Wayland compositor
- Terminal: Kitty - Fast, feature-rich GPU-accelerated terminal
- Shell: Zsh + Starship - Powerful shell with custom prompt
- Editor: Neovim + Zed - Modern editors for different needs
- Launcher: Rofi - Application launcher and window switcher
- Status Bar: Waybar - Customizable Wayland status bar
- Notifications: Dunst - Lightweight notification daemon
- File Manager: Yazi - Blazing fast terminal file manager
- Version Control: Jujutsu - Git-compatible VCS
- Shell Scripting: Ashell - POSIX-compliant shell scripting library
# Clone the repository
git clone <your-repo-url> ~/.dotfiles
cd ~/.dotfiles
# Run the deployment script
uv run mxbin/deploy.pyThe deployment script will create symlinks from ~/.dotfiles to the appropriate locations in your home directory.
.
├── ashell/ # Ashell shell scripting configuration
├── dunst/ # Notification daemon config
├── hypr/ # Hyprland configs (main, plugins, launcher, lock)
├── jj/ # Jujutsu version control config
├── kitty/ # Kitty terminal emulator config
├── latexmkrc # LaTeX compilation settings
├── mxbin/ # Custom shell scripts
├── nvim/ # Neovim configuration
├── rofi/ # Rofi launcher themes and configs
├── starship/ # Starship prompt configuration
├── waybar/ # Waybar status bar config
├── yazi/ # Yazi file manager config
├── zed/ # Zed editor settings
└── zsh/ # Zsh shell configuration
deploy.py- Symlink deployment scriptscreenShot.sh- Screenshot toolclipboard.sh- Clipboard managergamemode.sh- Game mode toggleswytch.sh- Window/workspace switcherwaybarCava.sh- Audio visualizer for Waybarcaps_use_for_shurufa.sh- Caps Lock remapping for input methodschwp- Wallpaper changerjy- Utility scriptrime-clipboard-learn.py- Boosts frequently copied words in the Rime user dictionary (runs via systemd timer, see below)
The base config lives in the system directory (/usr/share/rime-data, default
朙月拼音) and the user data in ~/.local/share/fcitx5/rime. Rime already
learns from what you type (user dictionary), but it knows nothing about what
you copy. Two ways to make it smarter:
-
Manual pinned phrases - create
~/.local/share/fcitx5/rime/custom_phrase.txtwith lines文字<Tab>编码<Tab>权重(weight optional, larger ranks first), then redeploy (input method tray menu "重新部署", orfcitx5-remote -r). -
Clipboard learning -
rime-clipboard-learn.pyscans cliphist history, counts frequent words, and imports them intoluna_pinyin.userdbwith a boosted weight. Enable it with:uv run mxbin/deploy.py # symlinks mxbin/ and systemd/user/ systemctl --user daemon-reload systemctl --user enable --now rime-clipboard-learn.timer
The timer scans every 30 minutes; on login the Hyprland autostart applies any pending words before fcitx5 starts, so imports never interrupt typing. Tune behavior via env vars documented in the script header (
RIME_LEARN_THRESHOLD,RIME_LEARN_STATE_DIR, ...).
- Located in
hypr/ - Contains main config, plugins, launcher, and lock screen settings
- Sub-configs for bindings, colors, executables, and window rules
- LazyVim-based configuration
- Located in
nvim/ - See
nvim/README.mdfor editor-specific details
- Multiple theme support (current, dank)
- Located in
kitty/
- Custom styled status bar with modules
- Located in
waybar/
- Configuration files are managed via symbolic links
- Existing files will not be overwritten (check deployment script output)
- Tested on Arch Linux with Wayland session