Skip to content

Configuration Guide

All configuration files are located in ~/.config/. This guide covers customizing each component.

Window ManagerWM-01Hyprland~/.config/hypr/
Status BarSB-01Waybar~/.config/waybar/
TerminalTM-01Foot~/.config/foot/
TerminalTM-02Ghostty~/.config/ghostty/
LauncherLN-01Fuzzel~/.config/fuzzel/
NotificationsNT-01Mako~/.config/mako/
EditorED-01Neovim~/.config/nvim/
GTKGTK~/.config/gtk-*/

The main window manager configuration is in ~/.config/hypr/.

File Structure
~/.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 configuration

Edit ~/.config/hypr/conf/monitors.conf:

# Single monitor
monitor=,preferred,auto,1
# Specific resolution and refresh rate
monitor=DP-1,2560x1440@144,0x0,1
# Laptop with external monitor
monitor=eDP-1,1920x1080@60,0x0,1
monitor=HDMI-A-1,2560x1440@60,1920x0,1
# HiDPI scaling
monitor=eDP-1,2880x1800@60,0x0,1.5

Edit ~/.config/hypr/conf/looknfeel.conf:

General Settings
general {
gaps_in = 5
gaps_out = 10
border_size = 2
layout = dwindle
}
Decoration & Blur
decoration {
rounding = 10
blur {
enabled = true
size = 8
passes = 2
}
shadow {
enabled = true
range = 15
render_power = 3
}
}
Animations
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
}

Edit ~/.config/hypr/conf/windows.conf:

# Float specific apps
windowrulev2 = float, class:^(pavucontrol)$
windowrulev2 = float, class:^(blueman-manager)$
windowrulev2 = float, title:^(Picture-in-Picture)$
# Assign to workspaces
windowrulev2 = workspace 2, class:^(firefox)$
windowrulev2 = workspace 3, class:^(code)$
# Opacity
windowrulev2 = opacity 0.95, class:^(foot)$
# Size constraints
windowrulev2 = size 800 600, class:^(calculator)$
windowrulev2 = center, class:^(calculator)$

Edit ~/.config/hypr/hypridle.conf:

General Lock Configuration
general {
lock_cmd = pidof hyprlock || hyprlock
before_sleep_cmd = loginctl lock-session
after_sleep_cmd = hyprctl dispatch dpms on
}
Screen Dim Listener (5 minutes)
# Screen dim after 5 minutes
listener {
timeout = 300
on-timeout = brightnessctl -s set 10%
on-resume = brightnessctl -r
}
Lock Screen Listener (10 minutes)
# Lock screen after 10 minutes
listener {
timeout = 600
on-timeout = loginctl lock-session
}
Display Off Listener (15 minutes)
# Display off after 15 minutes
listener {
timeout = 900
on-timeout = hyprctl dispatch dpms off
on-resume = hyprctl dispatch dpms on
}

Status bar configuration is in ~/.config/waybar/.

Edit ~/.config/waybar/config.jsonc:

Complete Configuration Example
{
"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": ["", "", ""]
}
}

Edit ~/.config/foot/foot.ini:

[main]
font=JetBrainsMono Nerd Font:size=12
pad=10x10
[cursor]
style=block
blink=no
[mouse]
hide-when-typing=yes
[colors]
# Managed by theme-set

Edit ~/.config/ghostty/config:

font-family = JetBrainsMono Nerd Font
font-size = 12
window-padding-x = 10
window-padding-y = 10
theme = TokyoNight
shell-integration = bash

Edit ~/.config/fuzzel/fuzzel.ini:

Main Configuration
[main]
font=JetBrainsMono Nerd Font:size=14
terminal=foot
width=50
lines=15
horizontal-pad=20
vertical-pad=10
Border Styling
[border]
width=2
radius=8

Edit ~/.config/mako/config:

font=sans-serif 14
width=400
height=150
margin=20
padding=15
border-size=2
border-radius=8
default-timeout=5000
anchor=top-right
layer=overlay

The Neovim configuration uses lazy.nvim and supports dynamic theme reloading.

Edit ~/.config/nvim/init.lua for customizations. The theme system automatically:

  1. Reads theme definitions from ~/.config/omfreebdy/themes/<name>/neovim.lua
  2. Installs required colorscheme plugins via lazy.nvim
  3. Signals running Neovim instances to reload on theme change

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.css

Most config changes take effect immediately or after reloading:

Reload Commands

ComponentCommand
Hyprlandhyprctl reload
Waybarpkill -SIGUSR2 waybar
Makomakoctl reload
Footpkill -USR1 foot
Ghosttypkill -USR2 ghostty