Configuration Guide
All configuration files are located in . This guide covers customizing each component.~/.config/
| Window Manager | WM-01 | Hyprland | ~/.config/hypr/ |
| Status Bar | SB-01 | Waybar | ~/.config/waybar/ |
| Terminal | TM-01 | Foot | ~/.config/foot/ |
| Terminal | TM-02 | Ghostty | ~/.config/ghostty/ |
| Launcher | LN-01 | Fuzzel | ~/.config/fuzzel/ |
| Notifications | NT-01 | Mako | ~/.config/mako/ |
| Editor | ED-01 | Neovim | ~/.config/nvim/ |
| GTK | GTK | ~/.config/gtk-*/ |
Hyprland
Section titled “Hyprland”The main window manager configuration is in .~/.config/hypr/
~/.config/hypr/├── hyprland.conf # Main config (sources others)├── hypridle.conf # Idle behavior├── hyprlock.conf # Lock screen appearance└── conf/ ├── bindings.conf # Keybindings ├── looknfeel.conf # Appearance (gaps, borders, animations) ├── windows.conf # Window rules └── monitors.conf # Display configurationDisplay Configuration
Section titled “Display Configuration”Edit :~/.config/hypr/conf/monitors.conf
# Single monitormonitor=,preferred,auto,1# Specific resolution and refresh ratemonitor=DP-1,2560x1440@144,0x0,1# Laptop with external monitormonitor=eDP-1,1920x1080@60,0x0,1monitor=HDMI-A-1,2560x1440@60,1920x0,1# HiDPI scalingmonitor=eDP-1,2880x1800@60,0x0,1.5Use hyprctl monitors to see connected displays and their names.
Appearance
Section titled “Appearance”Edit :~/.config/hypr/conf/looknfeel.conf
general { gaps_in = 5 gaps_out = 10 border_size = 2 layout = dwindle}decoration { rounding = 10 blur { enabled = true size = 8 passes = 2 } shadow { enabled = true range = 15 render_power = 3 }}animations { enabled = true bezier = smooth, 0.25, 0.1, 0.25, 1 animation = windows, 1, 5, smooth animation = fade, 1, 5, smooth animation = workspaces, 1, 5, smooth}Window Rules
Section titled “Window Rules”Edit :~/.config/hypr/conf/windows.conf
# Float specific appswindowrulev2 = float, class:^(pavucontrol)$windowrulev2 = float, class:^(blueman-manager)$windowrulev2 = float, title:^(Picture-in-Picture)$# Assign to workspaceswindowrulev2 = workspace 2, class:^(firefox)$windowrulev2 = workspace 3, class:^(code)$# Opacitywindowrulev2 = opacity 0.95, class:^(foot)$# Size constraintswindowrulev2 = size 800 600, class:^(calculator)$windowrulev2 = center, class:^(calculator)$Idle & Lock Behavior
Section titled “Idle & Lock Behavior”Edit :~/.config/hypr/hypridle.conf
general { lock_cmd = pidof hyprlock || hyprlock before_sleep_cmd = loginctl lock-session after_sleep_cmd = hyprctl dispatch dpms on}# Screen dim after 5 minuteslistener { timeout = 300 on-timeout = brightnessctl -s set 10% on-resume = brightnessctl -r}# Lock screen after 10 minuteslistener { timeout = 600 on-timeout = loginctl lock-session}# Display off after 15 minuteslistener { timeout = 900 on-timeout = hyprctl dispatch dpms off on-resume = hyprctl dispatch dpms on}Timeouts are in seconds. Adjust these values based on your preference for battery life vs convenience.
Waybar
Section titled “Waybar”Status bar configuration is in .~/.config/waybar/
Modules
Section titled “Modules”Edit :~/.config/waybar/config.jsonc
{ "layer": "top", "position": "top", "modules-left": ["hyprland/workspaces"], "modules-center": ["clock"], "modules-right": ["pulseaudio", "battery", "tray"],
"clock": { "format": "{:%H:%M}", "format-alt": "{:%A, %B %d}", "tooltip-format": "{:%Y-%m-%d}" },
"battery": { "format": "{icon} {capacity}%", "format-icons": ["", "", "", "", ""] },
"pulseaudio": { "format": "{icon} {volume}%", "format-muted": " muted", "format-icons": ["", "", ""] }}Styling
Section titled “Styling”The theme system manages . Add custom styles at the end of the file to preserve them when switching themes.~/.config/waybar/style.css
Terminals
Section titled “Terminals”Edit :~/.config/foot/foot.ini
[main]font=JetBrainsMono Nerd Font:size=12pad=10x10
[cursor]style=blockblink=no
[mouse]hide-when-typing=yes
[colors]# Managed by theme-setColors are automatically updated by the theme system. Font and padding settings are preserved.
Edit :~/.config/ghostty/config
font-family = JetBrainsMono Nerd Fontfont-size = 12window-padding-x = 10window-padding-y = 10theme = TokyoNightshell-integration = bashGhostty uses built-in theme names. Check their documentation for available themes.
Fuzzel (App Launcher)
Section titled “Fuzzel (App Launcher)”Edit :~/.config/fuzzel/fuzzel.ini
[main]font=JetBrainsMono Nerd Font:size=14terminal=footwidth=50lines=15horizontal-pad=20vertical-pad=10[border]width=2radius=8The terminal option determines which terminal emulator opens for terminal applications launched via Fuzzel.
Mako (Notifications)
Section titled “Mako (Notifications)”Edit :~/.config/mako/config
font=sans-serif 14width=400height=150margin=20padding=15border-size=2border-radius=8default-timeout=5000anchor=top-rightlayer=overlayChange anchor to position notifications: top-right, top-left, bottom-right, or bottom-left.
Neovim
Section titled “Neovim”The Neovim configuration uses lazy.nvim and supports dynamic theme reloading.
Edit for customizations. The theme system automatically:~/.config/nvim/init.lua
- Reads theme definitions from
~/.config/omfreebdy/themes/<name>/neovim.lua - Installs required colorscheme plugins via lazy.nvim
- Signals running Neovim instances to reload on theme change
Ensure your custom plugins and keybindings are added after the theme system loads to avoid conflicts.
GTK Applications
Section titled “GTK Applications”GTK 3/4 apps follow the theme system automatically. Manual overrides:
# Settings~/.config/gtk-3.0/settings.ini
# Custom CSS~/.config/gtk-3.0/gtk.css# Settings~/.config/gtk-4.0/settings.ini
# Custom CSS~/.config/gtk-4.0/gtk.cssCustom CSS overrides will persist across theme changes. Use this for app-specific styling tweaks.
Applying Changes
Section titled “Applying Changes”Most config changes take effect immediately or after reloading:
Reload Commands
| Component | Command |
|---|---|
| Hyprland | hyprctl reload |
| Waybar | pkill -SIGUSR2 waybar |
| Mako | makoctl reload |
| Foot | pkill -USR1 foot |
| Ghostty | pkill -USR2 ghostty |
Some changes (like monitor configuration or major layout changes) may require logging out and back in to take full effect.