- About
- Features
- Software
- Repository structure
- Requirements
- Dependencies
- Installation
- How the installer works
- Machine-specific settings
- After installing
- Updating
- Maintaining the repository
- Notes
- Acknowledgements
This repository keeps the visual and workflow customizations of a Hyprland desktop in one place, so the same look and behavior can be reproduced on any Arch-based machine with a single script.
It is designed around three rules:
- Only configuration. Everything here mirrors
~/.config; nothing outside it is touched. - Machine independent. Hardware-specific settings (keyboard layout, monitors, GPU) stay on each machine.
- No personal data. Absolute paths are stored with a placeholder and resolved at install time.
| Area | Customization |
|---|---|
| Bar | Media player in place of the window title, RAM in GB, CPU usage, CPU temperature, network download/upload, icon-only battery |
| Theme | Active border and window glow follow the wallpaper accent color (matugen) |
| Windows | Smaller gaps and rounding, blur behind the bar, translucent file manager |
| Keybinds | Super + Space launcher, Super + = / Super + - next/previous workspace, Super + Shift + 1-0 move window |
| Terminal | JetBrains Mono Nerd Font, block cursor with trail, translucent background |
| Editor | Neovim with NvChad v2.5, Lua formatting, HTML/CSS language servers |
| Software | Role | Links |
|---|---|---|
| Hyprland | Wayland compositor | GitHub · Wiki |
| illogical-impulse | Desktop shell (end-4's dots) | GitHub · Docs |
| Quickshell | QML toolkit used by the shell | Website |
| matugen | Color generation from the wallpaper | GitHub |
| kitty | Terminal emulator | Website |
| Neovim | Text editor | Website |
| NvChad | Neovim configuration framework | Website |
| lazy.nvim | Neovim plugin manager | GitHub |
| Dolphin | File manager | Website |
| yadm | Dotfiles manager (maintenance only) | Website |
Every top-level folder is deployed to the same path under ~/.config.
.
├── hypr/custom/ # Hyprland overrides for illogical-impulse
│ ├── env.lua
│ ├── execs.lua
│ ├── general.lua # gaps, rounding, focus; loads keyboard.lua
│ ├── keybinds.lua
│ ├── rules.lua # bar blur, translucent Dolphin
│ └── variables.lua # default apps
├── illogical-impulse/
│ └── config.json # shell options
├── kitty/
│ ├── kitty.conf
│ ├── scroll_mark.py
│ └── search.py
├── matugen/templates/hyprland/
│ └── colors.lua # border and glow colors
├── nvim/ # NvChad v2.5 configuration
├── quickshell/ii/
│ ├── modules/ii/bar/ # customized bar widgets
│ └── services/ResourceUsage.qml
├── yadm/
│ └── arquivos.txt # list of tracked paths (maintenance)
├── .gitignore
├── install.sh
└── README.md
- An Arch Linux based distribution (
pacman). - illogical-impulse already installed with its own installer.
Note
install.sh never installs or updates illogical-impulse. Updating the shell
is always a separate, conscious decision.
Installed automatically by install.sh when missing.
| Package | Purpose |
|---|---|
git |
Cloning this repository, lazy.nvim |
neovim |
Text editor |
kitty |
Terminal emulator |
dolphin |
Default file manager |
ttf-jetbrains-mono-nerd |
Terminal font and icons |
ripgrep |
Live grep in Telescope |
gcc |
Compiling Tree-sitter parsers |
make |
Compiling Tree-sitter parsers |
tree-sitter-cli |
Installing Tree-sitter parsers |
stylua |
Lua formatter (conform.nvim) |
vscode-html-languageserver |
HTML language server |
vscode-css-languageserver |
CSS language server |
git clone https://github.com/yvrcodex/dotfiles.git ~/dotfiles
cd ~/dotfiles
./install.shImportant
Run the script as your normal user. sudo is only requested by pacman
when a dependency is missing.
-
System check — refuses to run as root; requires
pacmanand agit cloneof this repository. -
illogical-impulse check — warns if the shell is not installed.
-
Dependencies — installs only the packages that are missing.
-
Deploy — copies each tracked file to the same path under
~/.config:Situation Action File does not exist Copied File is identical Skipped File is different Backed up, then replaced -
Summary — prints how many files were added, replaced and left unchanged.
Nothing is replaced without a copy. Each run that replaces files creates a folder named with the date and time inside the repository:
backups/2026-01-31_18-45-02/kitty/kitty.conf
backups/ is listed in .gitignore, so backups never leave the machine.
These settings depend on the hardware and are intentionally not part of this repository.
hypr/custom/general.lua loads hypr/custom/keyboard.lua only if it exists.
Create it on each machine:
-- ~/.config/hypr/custom/keyboard.lua
hl.config({
input = {
kb_layout = "us",
kb_variant = "",
},
})Monitor layout stays in ~/.config/hypr/monitors.lua and
~/.config/hypr/workspaces.lua, which illogical-impulse loads when present
(for example, generated by nwg-displays).
illogical-impulse stores absolute paths (wallpaper, recordings folder) in
config.json. In this repository they use the __HOME__ placeholder, which
install.sh replaces with the $HOME of the machine it runs on.
- Open
nvimonce: lazy.nvim downloads NvChad and the plugins on first start. - Restart the illogical-impulse widgets with
Ctrl + Super + R. Hyprland reloads its configuration automatically.
Pull the latest changes and run the installer again. Only files that changed are replaced, and the previous versions are backed up.
cd ~/dotfiles
git pull
./install.shOn the main machine the repository is managed with
yadm, using ~/.config as the work tree, so files are
tracked in place — no copies and no symlinks.
| Task | Command |
|---|---|
| Commit changes to tracked files | yadm add -u && yadm commit -m "message" && yadm push |
| Track a new path | add it to yadm/arquivos.txt, then cd ~/.config && yadm add --pathspec-from-file=yadm/arquivos.txt |
| See what changed | yadm status / yadm diff |
A local git clean filter replaces the home path with __HOME__ in
illogical-impulse/config.json on every commit, so no user name is ever
published.
Warning
The files under quickshell/ii/ are modified copies of illogical-impulse
files. After updating illogical-impulse, review them: upstream changes to the
same files are not merged automatically.
- Shell configuration (zsh) is not included yet.