Skip to content

Hyprland Tweaks

Curated, community-popular Hyprland (Lua config, hyprland.lua) tweaks. Reviewed against the 0.55 Lua API. None were added to the live config — kept here as a reference for a limited/minimal setup. Snippets use the hl.* Lua API and drop into the relevant module under ~/.config/hypr/modules/.

Performance (good for limited hardware)

hl.config({ misc = { cursor_inactive_pause = true } })  -- stop rendering when nothing changes
- Lower blur cost in appearance.lua: blur = { size = 4, passes = 2 } instead of 6/3. - hl.config({ render = { explicit_sync = true } }) — avoids frame stutter on supported GPUs (newer).

Quality-of-life (most-loved community bits)

hl.config({
  binds = {
    workspace_back_and_forth = true,   -- same workspace key toggles last one
    allow_workspace_cycles   = true,   -- 1 -> 0 wraps to 10
    workspace_center_on      = true,   -- focus follows on switch
    mouse_move_enables_dpms  = true,   -- moving mouse wakes screen
  },
  dwindle = { persist_focus = true },  -- keep focus when switching workspaces
  misc = { layers_hog_keyboard_focus = false },  -- launchers/rofi grab keys properly
})

Groups & layout polish

hl.config({
  group = { auto_group = true, group_on_movetoworkspace = true },  -- auto-tab similar windows
  master = { mfact = 0.55, orientation = "left" },                 -- nicer master split
  input = { repeat_rate = 50, repeat_delay = 300 },                -- snappier key repeat
})

hl.window_rule({ match = { class = "Pavucontrol" },      float = true, center = true, size = "800 600" })
hl.window_rule({ match = { class = "Keepassxc" },        float = true, center = true })
hl.window_rule({ match = { class = ".(b|d)luemanage" },  float = true, center = true })
hl.window_rule({ match = { class = "xdg-desktop-portal" }, no_focus = true, float = false })
For HiDPI/XWayland: hl.config({ xwayland = { force_zero_scaling = true } }).

hl.config({ ecosystem = { enforce_permissions = true } })
hl.permission({ binary = "/usr/bin/grim",     type = "screencopy", mode = "allow" })
hl.permission({ binary = "/usr/bin/hyprshot", type = "screencopy", mode = "allow" })
hl.permission({ binary = "/usr/bin/wlogin",   type = "keyboard",   mode = "ask"   })

If performance/lag is a concern, prioritise: - cursor_inactive_pause - workspace_back_and_forth, allow_workspace_cycles - layers_hog_keyboard_focus = false - the floating window rules - reducing blur passes/size