Files
dotfiles/hyprland/.config/hypr/hyprland.lua
T
sam_oneal f60b7e263b hyprland: SUPER+Right creates a new workspace past the end of a monitor
m+1/m-1 only cycle existing workspaces on the active monitor and wrap at
the edges, so SUPER+Right never created a workspace. Replace them with a
Lua helper: advancing past the last workspace on the monitor now creates
a fresh (empty) workspace there; going before the first wraps to the
monitor's last workspace.
2026-09-07 18:26:27 -06:00

122 lines
3.4 KiB
Lua

-- Hyprland config (Lua)
-- Converted from hyprlang .conf files. See https://wiki.hypr.land/Configuring/Start/
-- This file is a stow symlink; Hyprland resolves it to the repo path, so make
-- sure requires (e.g. mocha.lua from the hyprmocha package) resolve through
-- the real config dir.
package.path = os.getenv("HOME") .. "/.config/hypr/?.lua;" .. package.path
require("keywords")
require("variables")
require("mocha")
require("monitors")
require("env")
require("input")
require("device")
require("window_rules")
require("binds")
require("exec")
hl.config({
xwayland = {
force_zero_scaling = true,
},
})
hl.config({
general = {
border_size = 3,
col = {
active_border = { colors = { mauve, flamingo }, angle = 90 },
inactive_border = subtext0,
},
resize_on_border = true,
gaps_in = 2,
gaps_out = 4,
layout = "dwindle",
-- Please see https://wiki.hypr.land/Configuring/Advanced-and-Cool/Tearing/ before you turn this on
allow_tearing = false,
},
})
hl.config({
binds = {
-- Let SUPER+scroll workspace cycling wrap around instead of stopping at
-- the edges. (SUPER+Left/Right wrapping is handled directly in binds.lua.)
allow_workspace_cycles = true,
},
})
hl.config({
decoration = {
rounding = 4,
blur = {
enabled = true,
size = 3,
passes = 1,
new_optimizations = true,
},
shadow = {
enabled = true,
range = 4,
render_power = 3,
color = "rgba(1a1a1aee)",
},
dim_inactive = true,
dim_strength = 0.05,
dim_special = 0.07,
},
})
hl.config({
animations = {
enabled = true,
},
})
hl.curve("linear", { type = "bezier", points = { { 0, 0 }, { 1, 1 } } })
-- borderangle disabled: the old "loop" style animated continuously, forcing
-- constant redraws and spiking idle CPU usage even with VFR enabled.
hl.animation({ leaf = "borderangle", enabled = false, speed = 50, bezier = "linear", style = "loop" })
hl.animation({ leaf = "workspaces", enabled = true, speed = 0.5, bezier = "default" })
hl.animation({ leaf = "windows", enabled = false })
hl.animation({ leaf = "fade", enabled = false })
hl.config({
dwindle = {
-- pseudotile had no Lua config-table equivalent; toggled via the P bind
preserve_split = true,
},
})
-- master {
-- new_is_master = true
-- }
-- CPU/power efficiency. See https://wiki.hypr.land/Configuring/Variables/#misc
hl.config({
misc = {
force_default_wallpaper = 0, -- Set to 0 or 1 to disable the anime mascot wallpapers
middle_click_paste = false,
-- Don't wake/re-render just because the cursor crossed a monitor edge.
mouse_move_focuses_monitor = false,
-- Skip drawing the Hyprland logo in the corner of empty workspaces.
disable_hyprland_logo = true,
-- Allow a new hyprlock to take over the lock after a crash; without this a
-- dead lock client leaves the session permanently locked (no lockscreen).
allow_session_lock_restore = true,
},
})
-- Variable framerate: only redraw when the scene actually changes instead of
-- running at a fixed rate. This is the single biggest idle-CPU saver; it is
-- true by default, but set explicitly (note it lives under `debug:`).
hl.config({
debug = {
vfr = true,
-- Temporarily on to diagnose the mystery re-lock (disable_logs=true
-- default hides dispatch exec lines from hyprland.log).
disable_logs = false,
},
})