Files
nix-config/modules/programs/hyprland/config.lua
T

129 lines
4.1 KiB
Lua

-- environment variables
hl.env("XCURSOR_SIZE", "24")
hl.env("HYPRCURSOR_SIZE", "24")
-- General config
hl.config({
general = {
border_size = 2,
gaps_in = 0,
gaps_out = 5,
layout = "dwindle",
allow_tearing = false,
resize_on_border = true,
},
decoration = {
shadow = { enabled = false, },
blur = { enabled = true, },
active_opacity = 0.8,
inactive_opacity = 0.8,
},
animations = {
enabled = false,
},
misc = {
disable_hyprland_logo = true;
},
cursor = {
inactive_timeout = 3,
},
ecosystem = {
no_update_news = true,
no_donation_nag = true,
},
})
local mod = "SUPER"
local term = "kitty"
local browser = "zen"
-- Input config
hl.config({
input = {
kb_layout = "de",
follow_mouse = 1,
}
})
-- Keybinds
--- Apps
hl.bind(mod .. " + Return", hl.dsp.exec_cmd(term))
hl.bind(mod .. " + D", hl.dsp.exec_cmd("rofi -show drun -modes drun,calc"))
hl.bind(mod .. " + F2", hl.dsp.exec_cmd(browser))
--- Window manipulation
hl.bind(mod .. " + C", hl.dsp.window.close())
hl.bind(mod .. " + f", hl.dsp.window.fullscreen({ mode = 'fullscreen', action = 'toggle'}))
hl.bind(mod .. " + SHIFT + Space", hl.dsp.window.float({ action = "toggle" }))
hl.bind(mod .. " + H", hl.dsp.focus({ direction = "left" }))
hl.bind(mod .. " + L", hl.dsp.focus({ direction = "right" }))
hl.bind(mod .. " + K", hl.dsp.focus({ direction = "up" }))
hl.bind(mod .. " + J", hl.dsp.focus({ direction = "down" }))
hl.bind(mod .. " + SHIFT + H", hl.dsp.window.move({ direction = "left", group_aware = true, }))
hl.bind(mod .. " + SHIFT + L", hl.dsp.window.move({ direction = "right", group_aware = true, }))
hl.bind(mod .. " + SHIFT + K", hl.dsp.window.move({ direction = "up", group_aware = true, }))
hl.bind(mod .. " + SHIFT + J", hl.dsp.window.move({ direction = "down", group_aware = true, }))
hl.bind(mod .. " + mouse:272", hl.dsp.window.drag(), { mouse = true })
hl.bind(mod .. " + mouse:273", hl.dsp.window.resize(), { mouse = true })
--- Workspace handling
for i = 1, 10 do
local key = i % 10 -- 10 maps to key 0
hl.bind(mod .. " + " .. key, hl.dsp.focus({ workspace = i}))
hl.bind(mod .. " + SHIFT + " .. key, hl.dsp.window.move({ workspace = i }))
end
hl.gesture({
fingers = 3,
direction = "horizontal",
action = "workspace"
})
hl.bind(mod .. " + CTRL + H", hl.dsp.workspace.move({ monitor = "l" }))
hl.bind(mod .. " + CTRL + L", hl.dsp.workspace.move({ monitor = "r" }))
--- Media handling
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("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 })
-- Window rules
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,
})
-- Monitor handling
-- automatically add new monitors and lay them out horizontally
hl.monitor({ output = "", mode = "preferred", position = "auto", scale = 1 })