hl.monitor({ output = "", mode = "preferred", position = "auto", scale = "1", }) hl.monitor({ output = "eDP-1", mode = "preferred", position = "auto", scale = "1", }) hl.monitor({ output = "DP-5", mode = "2560x1440@165", position = "auto", scale = "1", }) -- Set programs that you use local terminal = "ghostty +new-window" local fileManager = "nemo" local menu = "fuzzel" hl.on("hyprland.start", function() hl.exec_cmd("qs") hl.exec_cmd("/usr/libexec/hyprpolkitagent") hl.exec_cmd("ghostty --gtk-single-instance=true --quit-after-last-window-closed=false --initial-window=false") end) hl.config({ general = { gaps_in = 5, gaps_out = 10, border_size = 2, resize_on_border = false, allow_tearing = false, layout = "master", }, decoration = { rounding = 18, rounding_power = 2, active_opacity = 1.0, inactive_opacity = 1.0, shadow = { enabled = true, range = 4, render_power = 3, color = 0xee1a1a1a, }, blur = { enabled = true, size = 3, passes = 2, vibrancy = 0.1696, }, }, animations = { enabled = true, }, }) -- Default curves and animations, see https://wiki.hypr.land/Configuring/Advanced-and-Cool/Animations/ hl.curve("easeOutQuint", { type = "bezier", points = { { 0.23, 1 }, { 0.32, 1 } } }) hl.curve("easeInOutCubic", { type = "bezier", points = { { 0.65, 0.05 }, { 0.36, 1 } } }) hl.curve("linear", { type = "bezier", points = { { 0, 0 }, { 1, 1 } } }) hl.curve("almostLinear", { type = "bezier", points = { { 0.5, 0.5 }, { 0.75, 1 } } }) hl.curve("quick", { type = "bezier", points = { { 0.15, 0 }, { 0.1, 1 } } }) -- Default springs hl.curve("easy", { type = "spring", mass = 1, stiffness = 71.2633, dampening = 15.8273644 }) hl.animation({ leaf = "global", enabled = true, speed = 5, bezier = "easeInOutCubic" }) hl.animation({ leaf = "windows", enabled = true, speed = 4, bezier = "easeOutQuint", style = "slide" }) hl.animation({ leaf = "fade", enabled = true, speed = 3, bezier = "quick" }) hl.animation({ leaf = "layers", enabled = true, speed = 4, bezier = "easeOutQuint" }) hl.animation({ leaf = "workspaces", enabled = true, speed = 2, bezier = "easeOutQuint", style = "slidevert" }) hl.animation({ leaf = "border", enabled = false, speed = 2, bezier = "easeOutQuint", style = "slidevert" }) hl.animation({ leaf = "zoomFactor", enabled = true, speed = 7, bezier = "quick" }) hl.config({ master = { new_status = "slave", }, }) --------------- ---- INPUT ---- --------------- hl.config({ input = { kb_layout = "eu", kb_variant = "", kb_model = "", kb_options = "", kb_rules = "", follow_mouse = 1, sensitivity = 0, -- -1.0 - 1.0, 0 means no modification. accel_profile = "flat", touchpad = { natural_scroll = false, }, }, }) hl.gesture({ fingers = 3, direction = "vertical", action = "workspace", }) local mainMod = "SUPER" -- Sets "Windows" key as main modifier local aux_mod = "ALT" -- Example binds, see https://wiki.hypr.land/Configuring/Basics/Binds/ for more hl.bind(mainMod .. " + Return", hl.dsp.exec_cmd(terminal)) hl.bind(mainMod .. " + Q", hl.dsp.window.close()) hl.bind( mainMod .. " + M", hl.dsp.exec_cmd("command -v hyprshutdown >/dev/null 2>&1 && hyprshutdown || hyprctl dispatch 'hl.dsp.exit()'") ) hl.bind(mainMod .. " + E", hl.dsp.exec_cmd(fileManager)) hl.bind(mainMod .. " + V", hl.dsp.window.float({ action = "toggle" })) hl.bind(mainMod .. " + Space", hl.dsp.exec_cmd(menu)) -- Move focus with mainMod + arrow keys hl.bind(mainMod .. " + left", hl.dsp.focus({ direction = "left" })) hl.bind(mainMod .. " + right", hl.dsp.focus({ direction = "right" })) hl.bind(mainMod .. " + up", hl.dsp.focus({ direction = "up" })) hl.bind(mainMod .. " + down", hl.dsp.focus({ direction = "down" })) hl.bind(mainMod .. " + h", hl.dsp.focus({ direction = "left" })) hl.bind(mainMod .. " + l", hl.dsp.focus({ direction = "right" })) hl.bind(mainMod .. " + k", hl.dsp.focus({ direction = "up" })) hl.bind(mainMod .. " + j", hl.dsp.focus({ direction = "down" })) for i = 1, 10 do local key = i % 10 -- 10 maps to key 0 hl.bind(mainMod .. " + " .. key, hl.dsp.focus({ workspace = i })) hl.bind(mainMod .. " + SHIFT + " .. key, hl.dsp.window.move({ workspace = i })) end -- Move/resize windows with mainMod + LMB/RMB and dragging hl.bind(mainMod .. " + mouse:272", hl.dsp.window.drag(), { mouse = true }) hl.bind(mainMod .. " + mouse:273", hl.dsp.window.resize(), { mouse = true }) hl.bind(aux_mod .. " + mouse:272", hl.dsp.window.resize(), { mouse = true }) -- Laptop multimedia keys for volume and LCD brightness hl.bind( "XF86AudioRaiseVolume", hl.dsp.exec_cmd("wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"), { locked = true, repeating = true } ) hl.bind( "XF86AudioLowerVolume", hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"), { locked = true, repeating = true } ) hl.bind( "XF86AudioMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"), { locked = true, repeating = true } ) hl.bind( "XF86AudioMicMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"), { locked = true, repeating = true } ) hl.bind("XF86MonBrightnessUp", hl.dsp.exec_cmd("brightnessctl set 5%+"), { locked = true, repeating = true }) hl.bind("XF86MonBrightnessDown", hl.dsp.exec_cmd("brightnessctl set 5%-"), { locked = true, repeating = true }) -- Requires playerctl hl.bind("XF86AudioNext", hl.dsp.exec_cmd("playerctl next"), { locked = true }) hl.bind("XF86AudioPause", hl.dsp.exec_cmd("playerctl play-pause"), { locked = true }) hl.bind("XF86AudioPlay", hl.dsp.exec_cmd("playerctl play-pause"), { locked = true }) hl.bind("XF86AudioPrev", hl.dsp.exec_cmd("playerctl previous"), { locked = true }) -- Screenshot binds hl.bind(aux_mod .. "+ SHIFT + S", hl.dsp.exec_cmd("grimblast copy output -n -c")) hl.bind(mainMod .. "+ SHIFT + S", hl.dsp.exec_cmd("grimblast copy area -n -f")) -- misc binds hl.bind(mainMod .. " + w", hl.dsp.exec_cmd("/etc/bash/bashrc.d/90-qs.bash switch-wall fuzzel")) hl.bind(mainMod .. " + t", hl.dsp.exec_cmd("/etc/bash/bashrc.d/90-qs.bash switch-theme fuzzel")) hl.bind(mainMod .. "+ SHIFT + minus", hl.dsp.window.move({ workspace = "special:scratchpad" })) hl.bind(mainMod .. " + minus", hl.dsp.workspace.toggle_special("scratchpad")) hl.window_rule({ -- Ignore maximize requests from all apps. You'll probably like this. name = "suppress-maximize-events", match = { class = ".*" }, suppress_event = "maximize", }) hl.window_rule({ -- Fix some dragging issues with XWayland name = "fix-xwayland-drags", match = { class = "^$", title = "^$", xwayland = true, float = true, fullscreen = false, pin = false, }, no_focus = true, }) hl.window_rule({ name = "discord-to-ws6", match = { class = "^(discord)$" }, workspace = "6 silent", }) hl.window_rule({ name = "spotify-to-ws7", match = { class = "^(Spotify)$" }, workspace = "7 silent", })