Personal dotfiles for macOS, Debian, Arch, and Gentoo Linux — batteries included.
| Terminal (Neofetch) | Editor (Neovim) |
|---|---|
![]() |
![]() |
| Tiling (Yabai) |
|---|
![]() |
Window Switching Demo:
Screen.Recording.2026-02-22.at.01.mp4
Theme: Cyan-magenta palette inspired by Miku color with Ghostty, Neovim, Yabai, and SKHD
bash <(curl -fsSL https://dotfiles.rifuki.dev)Auto-detects OS (macOS, Arch Linux, Gentoo Linux, or Debian Linux). Uses bash <() instead of curl | bash to preserve interactive TTY for password prompts.
Restart terminal or run
exec zshafter install.
macOS:
bash <(curl -fsSL https://dotfiles.rifuki.dev/macos/uninstall.sh)Debian:
bash <(curl -fsSL https://dotfiles.rifuki.dev/debian/uninstall.sh)Arch:
bash <(curl -fsSL https://dotfiles.rifuki.dev/arch/uninstall.sh)Gentoo:
bash <(curl -fsSL https://dotfiles.rifuki.dev/gentoo/uninstall.sh)bash ~/.dotfiles/macos/uninstall-brew.sh| Tool | Description |
|---|---|
| Neovim | Text editor |
| Tmux | Terminal multiplexer |
| Oh My Zsh | Zsh framework |
| Starship | Cross-shell prompt |
| Node.js | JavaScript runtime + npm (via Homebrew) |
| mise | Optional polyglot version manager |
| Bun | JavaScript runtime & package manager |
| Rust | Rust toolchain (stable) |
| Yazi | Terminal file manager |
| Yabai | Tiling window manager |
| Skhd | Hotkey daemon |
| Ghostty | Terminal emulator |
| gh | GitHub CLI |
| trash | Safe rm replacement |
| htop | Process viewer |
| ripgrep | Fast search tool |
| neofetch | System info |
| OrbStack | Docker & Linux VM runtime |
| Cloudflare WARP | VPN client |
| Hot | Menu bar thermal monitor |
| Google Chrome | Browser |
| JetBrainsMono Nerd Font | Patched developer font |
| Tool | Description |
|---|---|
| Solana | Solana CLI + development tools |
| Anchor | Solana framework (via AVM) |
| suiup | Sui version manager |
| sui-move-analyzer | Sui Move LSP (~10min build) |
| Tool | Description |
|---|---|
| Hyprland | Wayland tiling compositor |
| Waybar | Status bar |
| Wofi | App launcher |
| Ghostty | Terminal emulator |
| hyprlock | Screen locker |
| hyprpaper | Wallpaper daemon |
| grim + slurp | Screenshots |
| Floating Screenshot | macOS-style draggable screenshot thumbnail with swipe-to-save (Print / Shift+Print) |
| Three-Finger Drag | macOS-style touchpad drag/select on Hyprland via libinput + ydotoold |
| dunst | Notification daemon |
| Rifuki Shell menus | Waybar quick actions, power menu, and wallpaper picker (swww with hyprpaper fallback) |
Note: Hyprland-related tools are installed via portage by the user. The dotfiles installer symlinks configs and warns about missing tools.
| Tool | Description |
|---|---|
| Hyprland stack | Hyprland, Waybar, Wofi, Ghostty, hyprlock, hyprpaper, swww |
| System stack | PipeWire/WirePlumber, NetworkManager, Bluetooth, Dunst |
| Desktop apps | Dolphin, Pavucontrol, CopyQ, Papirus icons, GTK/Qt theming helpers |
| Fonts | JetBrainsMono Nerd Font, FiraCode Nerd Font, Noto fonts, Terminus TTY font |
| Rifuki Shell menus | Waybar launcher, quick actions, power menu, wallpaper picker |
Note: Arch install can bootstrap a very fresh TTY system. It installs packages with
pacman, sets a readable TTY font, symlinks configs, and adds.zprofileto auto-start Hyprland on TTY1.
nvim— NvChad-based config with LSP, Treesitter, and pluginstmux— Catppuccin Frappe theme, TPM plugins (resurrect, continuum, cpu, battery)starship— Cyan-magenta prompt themeghostty— Terminal emulator config (macOS + Gentoo)yabai+skhd— Tiling window manager + hotkeys (macOS)screenshot-floating— Gentoo/Hyprland screenshot app with temporary draggable thumbnailsthree-finger-drag— Gentoo/Hyprland touchpad daemon for macOS-style three-finger drag/selectwallpaper-picker/actions— shared Waybar popup scripts for Arch + Gentooneofetch— Miku ASCII art + config (unified)yazi— Terminal file manager with cross-platform opener.zshrc— Cyan-magenta syntax highlighting, aliases, PATH setup
~/.dotfiles/
├── shared/
│ ├── .config/
│ │ ├── nvim/ # NvChad config + LSP + plugins
│ │ ├── neofetch/ # Custom ASCII art + config (unified)
│ │ ├── starship/ # Cyan-magenta prompt (unified)
│ │ ├── tmux/ # Catppuccin theme + plugins (unified)
│ │ └── yazi/ # File manager (unified, cross-platform opener)
│ └── .local/bin/ # Shared desktop scripts (quick actions, wallpaper)
│
├── macos/
│ ├── .config/
│ │ ├── ghostty/ # Terminal config
│ │ ├── skhd/ # Hotkey daemon
│ │ └── yabai/ # Window manager
│ ├── .hyper.js # Hyper terminal config
│ ├── .zshrc # macOS shell config
│ ├── install.sh # macOS installer
│ ├── uninstall.sh # macOS uninstaller
│ ├── uninstall-brew.sh # Complete Homebrew removal
│ ├── macos-defaults.sh # macOS system defaults
│ └── macos-defaults-check.sh
│
├── debian/
│ ├── .zshrc # Debian shell config
│ ├── install.sh # Debian installer
│ └── uninstall.sh # Debian uninstaller
│
├── arch/
│ ├── .config/
│ │ ├── dunst/ # Notification daemon
│ │ ├── ghostty/ # Terminal emulator config
│ │ ├── hypr/ # Hyprland + hyprlock + hyprpaper
│ │ ├── waybar/ # Rifuki Shell bar
│ │ └── wofi/ # App launcher + dmenu popups
│ ├── .local/
│ │ └── bin/ # Screenshot scripts
│ ├── .zprofile # Auto-start Hyprland on TTY1
│ ├── .zshrc # Arch shell config
│ ├── install.sh # Arch installer
│ └── uninstall.sh # Arch uninstaller
│
├── gentoo/
│ ├── .config/
│ │ ├── ghostty/ # Terminal emulator config
│ │ ├── hypr/ # Hyprland + hyprlock + hyprpaper
│ │ ├── waybar/ # Status bar (TokyoNight theme)
│ │ └── wofi/ # App launcher
│ ├── .local/
│ │ └── bin/ # Screenshot scripts + three-finger drag daemon
│ ├── system/ # System config backup (reference only, not installed)
│ │ ├── boot/grub/ # grub.cfg snapshot
│ │ └── etc/ # /etc/profile + profile.d/tty-bash.sh
│ ├── .zshrc # Gentoo shell config
│ ├── install.sh # Gentoo installer
│ └── uninstall.sh # Gentoo uninstaller
│
├── install.sh # Entry point (detects OS, delegates)
├── .gitignore
└── README.md
Shared configs use cross-platform strategies (uname checks, ssh_only, graceful fallbacks) so the same files work on both macOS and Linux.
The three-finger-drag daemon autostarts from Hyprland and maps a 3-finger touchpad swipe into left-click hold + pointer motion for drag/drop and area selection.
Requirements:
x11-misc/ydotoolanddev-libs/libinputlibinput debug-eventsaccess to the touchpad device- an accessible
ydotooldsocket for injecting mouse events
If it does not start, check ~/.local/state/three-finger-drag.log. Sensitivity can be tuned with RIFUKI_THREE_FINGER_DRAG_SCALE.
After install, manually set up Yabai and Skhd:
Yabai:
- Configure scripting addition (if SIP disabled):
echo "$(whoami) ALL=(root) NOPASSWD: sha256:$(shasum -a 256 $(which yabai) | cut -d " " -f 1) $(which yabai) --load-sa" | sudo tee /private/etc/sudoers.d/yabai
- Make sure
yabairchas:yabai -m signal --add event=dock_did_restart action="sudo yabai --load-sa" - Run:
yabai --start-service - When prompted, allow Yabai in System Settings > Privacy & Security > Accessibility
Skhd:
- Run:
skhd --start-service - When prompted, allow Skhd in System Settings > Privacy & Security > Accessibility
- Disable Secure Keyboard Entry in Terminal if needed
Re-running install.sh is safe:
- Interactive checklist lets you pick which components to install
- Already-installed tools are detected and shown in the menu
- Local config changes are backed up to
~/.config/backup-TIMESTAMP/ - Dotfiles are restored to the latest remote state
Color Palette (used in Starship, Zsh, installer/uninstaller):
- Cyan:
#00D9FF— Commands, time, headers - Green:
#50FA7B— Paths, success messages - Magenta:
#FF79C6— Git branches, selected items - Purple:
#BD93F9— Builtins - Teal:
#01CBC6— Aliases - Orange:
#FFB86C— Path alternates - Peach:
#F0CAA4— Status, warnings - Gray:
#6C757D— Secondary text
Colors are consistent across:
.zshrcsyntax highlightingstarship.tomlpromptinstall.sh/uninstall.shUI


