hypr: refactor config to a more modular design
This commit is contained in:
+15
-706
@@ -1,16 +1,3 @@
|
|||||||
-- Central theme (basic/.config/themes): single source of truth for colors.
|
|
||||||
-- Consumers must use `theme.*` roles, never hardcoded hex, so a future
|
|
||||||
-- non-Catppuccin theme only adds a new directory. (HyprMod's
|
|
||||||
-- hyprland-gui.conf may additionally override borders at runtime.)
|
|
||||||
local theme = dofile(os.getenv("HOME") .. "/.config/themes/current/theme.lua")
|
|
||||||
local var_color_active_border = theme.border_active
|
|
||||||
local var_color_inactive_border = theme.border_inactive
|
|
||||||
local var_color_decoration_shadow = theme.shadow
|
|
||||||
local var_mainMod = "SUPER"
|
|
||||||
local var_terminal = "kitty"
|
|
||||||
local var_fileManager = "dolphin"
|
|
||||||
local var_menu = "noctalia msg panel-toggle launcher"
|
|
||||||
local var_screenshot_folder = "~/Bilder/Screenshots/"
|
|
||||||
|
|
||||||
require("env")
|
require("env")
|
||||||
hl.exec_cmd("bash ~/.config/hypr/env.sh")
|
hl.exec_cmd("bash ~/.config/hypr/env.sh")
|
||||||
@@ -19,7 +6,16 @@ hl.exec_cmd("bash ~/.config/hypr/env.sh")
|
|||||||
-- ## MONITORS ###
|
-- ## MONITORS ###
|
||||||
-- ###############
|
-- ###############
|
||||||
|
|
||||||
require("monitor_setup")
|
-- load default monitor config
|
||||||
|
require("modules.monitor_setup_default")
|
||||||
|
|
||||||
|
-- Only use monitor_setup if the file exists
|
||||||
|
local config_home = os.getenv("XDG_CONFIG_HOME") or os.getenv("HOME") .. "/.config"
|
||||||
|
local f = io.open(config_home .. "/hypr/monitor_setup.lua", "r")
|
||||||
|
if f then
|
||||||
|
f:close()
|
||||||
|
require("monitor_setup")
|
||||||
|
end
|
||||||
|
|
||||||
-- unscale XWayland
|
-- unscale XWayland
|
||||||
hl.config({
|
hl.config({
|
||||||
@@ -41,698 +37,11 @@ hl.on("hyprland.start", function()
|
|||||||
hl.exec_cmd("sh ~/.config/hypr/scripts/ensure-mime-defaults.sh")
|
hl.exec_cmd("sh ~/.config/hypr/scripts/ensure-mime-defaults.sh")
|
||||||
end)
|
end)
|
||||||
|
|
||||||
-- ############################
|
require("modules.environment_variables")
|
||||||
-- ## ENVIRONMENT VARIABLES ###
|
require("modules.look_and_feel")
|
||||||
-- ############################
|
require("modules.input")
|
||||||
|
require("modules.keybinds")
|
||||||
-- See https://wiki.hypr.land/Configuring/Environment-variables/
|
require("modules.windows_and_workspaces")
|
||||||
hl.env("XCURSOR_SIZE", "24")
|
|
||||||
hl.env("HYPRCURSOR_SIZE", "24")
|
|
||||||
hl.env("XDG_CURRENT_DESKTOP", "Hyprland")
|
|
||||||
hl.env("XDG_SESSION_DESKTOP", "Hyprland")
|
|
||||||
hl.env("XDG_SESSION_TYPE", "wayland")
|
|
||||||
hl.env("XDG_MENU_PREFIX", "plasma-")
|
|
||||||
hl.env("GTK_USE_PORTAL", "1")
|
|
||||||
hl.env("GTK_THEME", os.getenv("THEME_GTK") or "Adwaita:dark")
|
|
||||||
hl.env("QT_WAYLAND_DISABLE_WINDOWDECORATION", "1")
|
|
||||||
hl.env("QT_QPA_PLATFORMTHEME", "kde")
|
|
||||||
|
|
||||||
-- ##################
|
|
||||||
-- ## PERMISSIONS ###
|
|
||||||
-- ##################
|
|
||||||
|
|
||||||
-- ####################
|
|
||||||
-- ## COLOR SCHEMES ###
|
|
||||||
-- ####################
|
|
||||||
|
|
||||||
-- (Colors come from the central theme via `theme` above; no per-file copies.)
|
|
||||||
|
|
||||||
-- ####################
|
|
||||||
-- ## LOOK AND FEEL ###
|
|
||||||
-- ####################
|
|
||||||
|
|
||||||
-- Refer to https://wiki.hypr.land/Configuring/Variables/
|
|
||||||
|
|
||||||
-- https://wiki.hypr.land/Configuring/Variables/#general
|
|
||||||
hl.config({
|
|
||||||
general = {
|
|
||||||
gaps_in = 3,
|
|
||||||
gaps_out = 4,
|
|
||||||
border_size = 3,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
-- https://wiki.hypr.land/Configuring/Variables/#variable-types for info about colors
|
|
||||||
hl.config({
|
|
||||||
general = {
|
|
||||||
col = {
|
|
||||||
active_border = var_color_active_border,
|
|
||||||
inactive_border = var_color_inactive_border,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Set to true enable resizing windows by clicking and dragging on borders and gaps
|
|
||||||
hl.config({
|
|
||||||
general = {
|
|
||||||
resize_on_border = true,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Please see https://wiki.hypr.land/Configuring/Tearing/ before you turn this on
|
|
||||||
hl.config({
|
|
||||||
general = {
|
|
||||||
allow_tearing = false,
|
|
||||||
layout = "dwindle",
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
-- https://wiki.hypr.land/Configuring/Variables/#decoration
|
|
||||||
hl.config({
|
|
||||||
decoration = {
|
|
||||||
rounding = 5,
|
|
||||||
rounding_power = 2,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Change transparency of focused and unfocused windows
|
|
||||||
hl.config({
|
|
||||||
decoration = {
|
|
||||||
active_opacity = 1.0,
|
|
||||||
inactive_opacity = 1.0,
|
|
||||||
shadow = {
|
|
||||||
enabled = true,
|
|
||||||
range = 10,
|
|
||||||
render_power = 3,
|
|
||||||
color = var_color_decoration_shadow,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
-- https://wiki.hypr.land/Configuring/Variables/#blur
|
|
||||||
hl.config({
|
|
||||||
decoration = {
|
|
||||||
blur = {
|
|
||||||
enabled = true,
|
|
||||||
size = 10,
|
|
||||||
passes = 2,
|
|
||||||
vibrancy = 0.1696,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
-- https://wiki.hypr.land/Configuring/Variables/#animations
|
|
||||||
hl.config({
|
|
||||||
animations = {
|
|
||||||
enabled = true,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Default curves, see https://wiki.hypr.land/Configuring/Animations/#curves
|
|
||||||
|
|
||||||
-- NAME, X0, Y0, X1, Y1
|
|
||||||
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 animations, see https://wiki.hypr.land/Configuring/Animations/
|
|
||||||
|
|
||||||
-- NAME, ONOFF, SPEED, CURVE, [STYLE]
|
|
||||||
hl.animation({
|
|
||||||
leaf = "global",
|
|
||||||
enabled = true,
|
|
||||||
speed = 10,
|
|
||||||
bezier = "default",
|
|
||||||
})
|
|
||||||
hl.animation({
|
|
||||||
leaf = "border",
|
|
||||||
enabled = true,
|
|
||||||
speed = 5.39,
|
|
||||||
bezier = "easeOutQuint",
|
|
||||||
})
|
|
||||||
hl.animation({
|
|
||||||
leaf = "windows",
|
|
||||||
enabled = true,
|
|
||||||
speed = 4.79,
|
|
||||||
bezier = "easeOutQuint",
|
|
||||||
})
|
|
||||||
hl.animation({
|
|
||||||
leaf = "windowsIn",
|
|
||||||
enabled = true,
|
|
||||||
speed = 4.1,
|
|
||||||
bezier = "easeOutQuint",
|
|
||||||
style = "popin 87%",
|
|
||||||
})
|
|
||||||
hl.animation({
|
|
||||||
leaf = "windowsOut",
|
|
||||||
enabled = true,
|
|
||||||
speed = 1.49,
|
|
||||||
bezier = "linear",
|
|
||||||
style = "popin 87%",
|
|
||||||
})
|
|
||||||
hl.animation({
|
|
||||||
leaf = "fadeIn",
|
|
||||||
enabled = true,
|
|
||||||
speed = 1.73,
|
|
||||||
bezier = "almostLinear",
|
|
||||||
})
|
|
||||||
hl.animation({
|
|
||||||
leaf = "fadeOut",
|
|
||||||
enabled = true,
|
|
||||||
speed = 1.46,
|
|
||||||
bezier = "almostLinear",
|
|
||||||
})
|
|
||||||
hl.animation({
|
|
||||||
leaf = "fade",
|
|
||||||
enabled = true,
|
|
||||||
speed = 3.03,
|
|
||||||
bezier = "quick",
|
|
||||||
})
|
|
||||||
hl.animation({
|
|
||||||
leaf = "layers",
|
|
||||||
enabled = true,
|
|
||||||
speed = 3.81,
|
|
||||||
bezier = "easeOutQuint",
|
|
||||||
})
|
|
||||||
hl.animation({
|
|
||||||
leaf = "layersIn",
|
|
||||||
enabled = true,
|
|
||||||
speed = 4,
|
|
||||||
bezier = "easeOutQuint",
|
|
||||||
style = "fade",
|
|
||||||
})
|
|
||||||
hl.animation({
|
|
||||||
leaf = "layersOut",
|
|
||||||
enabled = true,
|
|
||||||
speed = 1.5,
|
|
||||||
bezier = "linear",
|
|
||||||
style = "fade",
|
|
||||||
})
|
|
||||||
hl.animation({
|
|
||||||
leaf = "fadeLayersIn",
|
|
||||||
enabled = true,
|
|
||||||
speed = 1.79,
|
|
||||||
bezier = "almostLinear",
|
|
||||||
})
|
|
||||||
hl.animation({
|
|
||||||
leaf = "fadeLayersOut",
|
|
||||||
enabled = true,
|
|
||||||
speed = 1.39,
|
|
||||||
bezier = "almostLinear",
|
|
||||||
})
|
|
||||||
hl.animation({
|
|
||||||
leaf = "workspaces",
|
|
||||||
enabled = true,
|
|
||||||
speed = 1.94,
|
|
||||||
bezier = "almostLinear",
|
|
||||||
style = "slide",
|
|
||||||
})
|
|
||||||
hl.animation({
|
|
||||||
leaf = "workspacesIn",
|
|
||||||
enabled = true,
|
|
||||||
speed = 1.21,
|
|
||||||
bezier = "almostLinear",
|
|
||||||
style = "slide",
|
|
||||||
})
|
|
||||||
hl.animation({
|
|
||||||
leaf = "workspacesOut",
|
|
||||||
enabled = true,
|
|
||||||
speed = 1.94,
|
|
||||||
bezier = "almostLinear",
|
|
||||||
style = "slide",
|
|
||||||
})
|
|
||||||
hl.animation({
|
|
||||||
leaf = "zoomFactor",
|
|
||||||
enabled = true,
|
|
||||||
speed = 7,
|
|
||||||
bezier = "quick",
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Ref https://wiki.hypr.land/Configuring/Workspace-Rules/
|
|
||||||
|
|
||||||
-- "Smart gaps" / "No gaps when only"
|
|
||||||
|
|
||||||
-- uncomment all if you wish to use that.
|
|
||||||
hl.workspace_rule({
|
|
||||||
workspace = "w[tv1]",
|
|
||||||
gaps_out = 0,
|
|
||||||
gaps_in = 0,
|
|
||||||
})
|
|
||||||
hl.workspace_rule({
|
|
||||||
workspace = "f[1]",
|
|
||||||
gaps_out = 0,
|
|
||||||
gaps_in = 0,
|
|
||||||
})
|
|
||||||
hl.window_rule({
|
|
||||||
name = "no-gaps-wtv1",
|
|
||||||
match = {
|
|
||||||
float = false,
|
|
||||||
workspace = "w[tv1]",
|
|
||||||
},
|
|
||||||
border_size = 0,
|
|
||||||
rounding = 0,
|
|
||||||
})
|
|
||||||
hl.window_rule({
|
|
||||||
name = "no-gaps-f1",
|
|
||||||
match = {
|
|
||||||
float = false,
|
|
||||||
workspace = "f[1]",
|
|
||||||
},
|
|
||||||
border_size = 0,
|
|
||||||
rounding = 0,
|
|
||||||
})
|
|
||||||
|
|
||||||
-- See https://wiki.hypr.land/Configuring/Dwindle-Layout/ for more
|
|
||||||
hl.config({
|
|
||||||
dwindle = {
|
|
||||||
preserve_split = true,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
-- See https://wiki.hypr.land/Configuring/Master-Layout/ for more
|
|
||||||
hl.config({
|
|
||||||
master = {
|
|
||||||
new_status = "master",
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
-- https://wiki.hypr.land/Configuring/Variables/#misc
|
|
||||||
hl.config({
|
|
||||||
misc = {
|
|
||||||
force_default_wallpaper = -1,
|
|
||||||
disable_hyprland_logo = false,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
-- ############
|
|
||||||
-- ## INPUT ###
|
|
||||||
-- ############
|
|
||||||
|
|
||||||
-- https://wiki.hypr.land/Configuring/Variables/#input
|
|
||||||
hl.config({
|
|
||||||
input = {
|
|
||||||
kb_layout = "de",
|
|
||||||
kb_variant = "",
|
|
||||||
kb_model = "",
|
|
||||||
kb_options = "grp:alt_shift_toggle",
|
|
||||||
kb_rules = "",
|
|
||||||
follow_mouse = 1,
|
|
||||||
numlock_by_default = true,
|
|
||||||
sensitivity = 0,
|
|
||||||
touchpad = {
|
|
||||||
natural_scroll = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
-- See https://wiki.hypr.land/Configuring/Gestures
|
|
||||||
hl.gesture({
|
|
||||||
fingers = 3,
|
|
||||||
direction = "horizontal",
|
|
||||||
action = "workspace",
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Example per-device config
|
|
||||||
|
|
||||||
-- See https://wiki.hypr.land/Configuring/Keywords/#per-device-input-configs for more
|
|
||||||
hl.device({
|
|
||||||
name = "epic-mouse-v1",
|
|
||||||
sensitivity = -0.5,
|
|
||||||
})
|
|
||||||
|
|
||||||
-- ##################
|
|
||||||
-- ## KEYBINDINGS ###
|
|
||||||
-- ##################
|
|
||||||
|
|
||||||
-- See https://wiki.hypr.land/Configuring/Keywords/
|
|
||||||
|
|
||||||
-- Example binds, see https://wiki.hypr.land/Configuring/Binds/ for more
|
|
||||||
hl.bind(var_mainMod .. " + RETURN", hl.dsp.exec_cmd(var_terminal), { description = "Open terminal (kitty)" })
|
|
||||||
hl.bind(var_mainMod .. " + Q", hl.dsp.window.close(), { description = "Close focused window" })
|
|
||||||
-- Session menu (noctalia owns the session panel)
|
|
||||||
hl.bind(var_mainMod .. " + ESCAPE", hl.dsp.exec_cmd("noctalia msg panel-toggle session"), { description = "Session menu (logout/reboot/shutdown)" })
|
|
||||||
hl.bind(
|
|
||||||
var_mainMod .. " + SHIFT + ESCAPE",
|
|
||||||
hl.dsp.exec_cmd("command -v noctalia >/dev/null 2>&1 && noctalia msg session logout || hyprctl dispatch exit"),
|
|
||||||
{ description = "Exit Hyprland" }
|
|
||||||
)
|
|
||||||
hl.bind(
|
|
||||||
var_mainMod .. " + CTRL + ESCAPE",
|
|
||||||
hl.dsp.exec_cmd("noctalia msg session shutdown"),
|
|
||||||
{ description = "Power off the system" }
|
|
||||||
)
|
|
||||||
hl.bind(
|
|
||||||
var_mainMod .. " + ALT + ESCAPE",
|
|
||||||
hl.dsp.exec_cmd("noctalia msg session reboot"),
|
|
||||||
{ description = "Reboot the system" }
|
|
||||||
)
|
|
||||||
hl.bind(var_mainMod .. " + E", hl.dsp.exec_cmd(var_fileManager), { description = "Open file manager (dolphin)" })
|
|
||||||
hl.bind(var_mainMod .. " + V", hl.dsp.window.float({ action = "toggle" }), { description = "Toggle floating window" })
|
|
||||||
hl.bind(var_mainMod .. " + SPACE", hl.dsp.exec_cmd(var_menu), { description = "Open app launcher (noctalia)" })
|
|
||||||
hl.bind(var_mainMod .. " + P", hl.dsp.window.pseudo(), { description = "Toggle pseudo-tiling" })
|
|
||||||
hl.bind(var_mainMod .. " + SHIFT + J", hl.dsp.layout("togglesplit"), { description = "Toggle split layout" })
|
|
||||||
hl.bind(var_mainMod .. " + I", hl.dsp.exec_cmd("firefox &"), { description = "Open Firefox" })
|
|
||||||
hl.bind(var_mainMod .. " + n", hl.dsp.exec_cmd("nm-connection-editor"), { description = "Network manager" })
|
|
||||||
hl.bind(var_mainMod .. " + comma", hl.dsp.exec_cmd("noctalia msg settings-toggle"), { description = "Noctalia settings" })
|
|
||||||
hl.bind(var_mainMod .. " + S", hl.dsp.exec_cmd("noctalia msg panel-toggle control-center"), { description = "Control center (noctalia)" })
|
|
||||||
|
|
||||||
-- Move focus with mainMod or Vim-style
|
|
||||||
hl.bind(var_mainMod .. " + CTRL + h", hl.dsp.focus({ direction = "left" }), { description = "Focus window left" })
|
|
||||||
hl.bind(var_mainMod .. " + CTRL + l", hl.dsp.focus({ direction = "right" }), { description = "Focus window right" })
|
|
||||||
hl.bind(var_mainMod .. " + CTRL + k", hl.dsp.focus({ direction = "up" }), { description = "Focus window up" })
|
|
||||||
hl.bind(var_mainMod .. " + CTRL + j", hl.dsp.focus({ direction = "down" }), { description = "Focus window down" })
|
|
||||||
|
|
||||||
-- Move windows with mainMod or Vim-style
|
|
||||||
hl.bind(var_mainMod .. " + SHIFT + h", hl.dsp.window.move({ direction = "left" }), { description = "Move window left" })
|
|
||||||
hl.bind(
|
|
||||||
var_mainMod .. " + SHIFT + l",
|
|
||||||
hl.dsp.window.move({ direction = "right" }),
|
|
||||||
{ description = "Move window right" }
|
|
||||||
)
|
|
||||||
hl.bind(var_mainMod .. " + SHIFT + k", hl.dsp.window.move({ direction = "up" }), { description = "Move window up" })
|
|
||||||
hl.bind(var_mainMod .. " + SHIFT + j", hl.dsp.window.move({ direction = "down" }), { description = "Move window down" })
|
|
||||||
|
|
||||||
-- Resize focused window with mainMod + Arrows
|
|
||||||
hl.bind(
|
|
||||||
var_mainMod .. " + left",
|
|
||||||
hl.dsp.window.resize({ x = -10, y = 0, relative = true }),
|
|
||||||
{ description = "Resize window left" }
|
|
||||||
)
|
|
||||||
hl.bind(
|
|
||||||
var_mainMod .. " + right",
|
|
||||||
hl.dsp.window.resize({ x = 10, y = 0, relative = true }),
|
|
||||||
{ description = "Resize window right" }
|
|
||||||
)
|
|
||||||
hl.bind(
|
|
||||||
var_mainMod .. " + up",
|
|
||||||
hl.dsp.window.resize({ x = 0, y = -10, relative = true }),
|
|
||||||
{ description = "Resize window up" }
|
|
||||||
)
|
|
||||||
hl.bind(
|
|
||||||
var_mainMod .. " + down",
|
|
||||||
hl.dsp.window.resize({ x = 0, y = 10, relative = true }),
|
|
||||||
{ description = "Resize window down" }
|
|
||||||
)
|
|
||||||
|
|
||||||
-- Switch workspaces with mainMod + [0-9]
|
|
||||||
hl.bind(var_mainMod .. " + 1", hl.dsp.focus({ workspace = 1 }), { description = "Switch to workspace 1" })
|
|
||||||
hl.bind(var_mainMod .. " + 2", hl.dsp.focus({ workspace = 2 }), { description = "Switch to workspace 2" })
|
|
||||||
hl.bind(var_mainMod .. " + 3", hl.dsp.focus({ workspace = 3 }), { description = "Switch to workspace 3" })
|
|
||||||
hl.bind(var_mainMod .. " + 4", hl.dsp.focus({ workspace = 4 }), { description = "Switch to workspace 4" })
|
|
||||||
hl.bind(var_mainMod .. " + 5", hl.dsp.focus({ workspace = 5 }), { description = "Switch to workspace 5" })
|
|
||||||
hl.bind(var_mainMod .. " + 6", hl.dsp.focus({ workspace = 6 }), { description = "Switch to workspace 6" })
|
|
||||||
hl.bind(var_mainMod .. " + 7", hl.dsp.focus({ workspace = 7 }), { description = "Switch to workspace 7" })
|
|
||||||
hl.bind(var_mainMod .. " + 8", hl.dsp.focus({ workspace = 8 }), { description = "Switch to workspace 8" })
|
|
||||||
hl.bind(var_mainMod .. " + 9", hl.dsp.focus({ workspace = 9 }), { description = "Switch to workspace 9" })
|
|
||||||
hl.bind(var_mainMod .. " + 0", hl.dsp.focus({ workspace = 10 }), { description = "Switch to workspace 10" })
|
|
||||||
hl.bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd("wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+"), {
|
|
||||||
repeating = true,
|
|
||||||
description = "Volume up",
|
|
||||||
})
|
|
||||||
hl.bind("XF86AudioLowerVolume", hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"), {
|
|
||||||
locked = true,
|
|
||||||
description = "Volume down",
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Move active window to a workspace with mainMod + SHIFT + [0-9]
|
|
||||||
hl.bind(
|
|
||||||
var_mainMod .. " + SHIFT + 1",
|
|
||||||
hl.dsp.window.move({ workspace = 1 }),
|
|
||||||
{ description = "Move window to workspace 1" }
|
|
||||||
)
|
|
||||||
hl.bind(
|
|
||||||
var_mainMod .. " + SHIFT + 2",
|
|
||||||
hl.dsp.window.move({ workspace = 2 }),
|
|
||||||
{ description = "Move window to workspace 2" }
|
|
||||||
)
|
|
||||||
hl.bind(
|
|
||||||
var_mainMod .. " + SHIFT + 3",
|
|
||||||
hl.dsp.window.move({ workspace = 3 }),
|
|
||||||
{ description = "Move window to workspace 3" }
|
|
||||||
)
|
|
||||||
hl.bind(
|
|
||||||
var_mainMod .. " + SHIFT + 4",
|
|
||||||
hl.dsp.window.move({ workspace = 4 }),
|
|
||||||
{ description = "Move window to workspace 4" }
|
|
||||||
)
|
|
||||||
hl.bind(
|
|
||||||
var_mainMod .. " + SHIFT + 5",
|
|
||||||
hl.dsp.window.move({ workspace = 5 }),
|
|
||||||
{ description = "Move window to workspace 5" }
|
|
||||||
)
|
|
||||||
hl.bind(
|
|
||||||
var_mainMod .. " + SHIFT + 6",
|
|
||||||
hl.dsp.window.move({ workspace = 6 }),
|
|
||||||
{ description = "Move window to workspace 6" }
|
|
||||||
)
|
|
||||||
hl.bind(
|
|
||||||
var_mainMod .. " + SHIFT + 7",
|
|
||||||
hl.dsp.window.move({ workspace = 7 }),
|
|
||||||
{ description = "Move window to workspace 7" }
|
|
||||||
)
|
|
||||||
hl.bind(
|
|
||||||
var_mainMod .. " + SHIFT + 8",
|
|
||||||
hl.dsp.window.move({ workspace = 8 }),
|
|
||||||
{ description = "Move window to workspace 8" }
|
|
||||||
)
|
|
||||||
hl.bind(
|
|
||||||
var_mainMod .. " + SHIFT + 9",
|
|
||||||
hl.dsp.window.move({ workspace = 9 }),
|
|
||||||
{ description = "Move window to workspace 9" }
|
|
||||||
)
|
|
||||||
hl.bind(
|
|
||||||
var_mainMod .. " + SHIFT + 0",
|
|
||||||
hl.dsp.window.move({ workspace = 10 }),
|
|
||||||
{ description = "Move window to workspace 10" }
|
|
||||||
)
|
|
||||||
|
|
||||||
-- # Example special workspace (scratchpad)
|
|
||||||
|
|
||||||
-- bind = $mainMod, S, togglespecialworkspace, magic
|
|
||||||
|
|
||||||
-- bind = $mainMod SHIFT, S, movetoworkspace, special:magic
|
|
||||||
|
|
||||||
-- Scroll through existing workspaces with mainMod + scroll
|
|
||||||
hl.bind(
|
|
||||||
var_mainMod .. " + mouse_down",
|
|
||||||
hl.dsp.focus({ workspace = "e+1" }),
|
|
||||||
{ description = "Next workspace (scroll down)" }
|
|
||||||
)
|
|
||||||
hl.bind(
|
|
||||||
var_mainMod .. " + mouse_up",
|
|
||||||
hl.dsp.focus({ workspace = "e-1" }),
|
|
||||||
{ description = "Previous workspace (scroll up)" }
|
|
||||||
)
|
|
||||||
|
|
||||||
-- Move/resize windows with mainMod + LMB/RMB and dragging
|
|
||||||
hl.bind(var_mainMod .. " + mouse:272", hl.dsp.window.drag(), {
|
|
||||||
mouse = true,
|
|
||||||
description = "Move window with mouse",
|
|
||||||
})
|
|
||||||
hl.bind(var_mainMod .. " + mouse:273", hl.dsp.window.resize(), {
|
|
||||||
mouse = true,
|
|
||||||
description = "Resize window with mouse",
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Laptop multimedia keys for volume and LCD brightness
|
|
||||||
hl.bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd("wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"), {
|
|
||||||
repeating = true,
|
|
||||||
locked = true,
|
|
||||||
description = "Volume up (repeat)",
|
|
||||||
})
|
|
||||||
hl.bind("XF86AudioLowerVolume", hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"), {
|
|
||||||
repeating = true,
|
|
||||||
locked = true,
|
|
||||||
description = "Volume down (repeat)",
|
|
||||||
})
|
|
||||||
hl.bind("XF86AudioMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"), {
|
|
||||||
repeating = true,
|
|
||||||
locked = true,
|
|
||||||
description = "Mute audio",
|
|
||||||
})
|
|
||||||
hl.bind("XF86AudioMicMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"), {
|
|
||||||
repeating = true,
|
|
||||||
locked = true,
|
|
||||||
description = "Mute microphone",
|
|
||||||
})
|
|
||||||
hl.bind("XF86MonBrightnessUp", hl.dsp.exec_cmd("brightnessctl -e4 -n2 set 5%+"), {
|
|
||||||
repeating = true,
|
|
||||||
locked = true,
|
|
||||||
description = "Brightness up",
|
|
||||||
})
|
|
||||||
hl.bind("XF86MonBrightnessDown", hl.dsp.exec_cmd("brightnessctl -e4 -n2 set 5%-"), {
|
|
||||||
repeating = true,
|
|
||||||
locked = true,
|
|
||||||
description = "Brightness down",
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Requires playerctl
|
|
||||||
hl.bind("XF86AudioNext", hl.dsp.exec_cmd("playerctl next"), {
|
|
||||||
locked = true,
|
|
||||||
description = "Next track",
|
|
||||||
})
|
|
||||||
hl.bind("XF86AudioPause", hl.dsp.exec_cmd("playerctl play-pause"), {
|
|
||||||
locked = true,
|
|
||||||
description = "Play/Pause",
|
|
||||||
})
|
|
||||||
hl.bind("XF86AudioPlay", hl.dsp.exec_cmd("playerctl play-pause"), {
|
|
||||||
locked = true,
|
|
||||||
description = "Play/Pause",
|
|
||||||
})
|
|
||||||
hl.bind("XF86AudioPrev", hl.dsp.exec_cmd("playerctl previous"), {
|
|
||||||
locked = true,
|
|
||||||
description = "Previous track",
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Screenshots
|
|
||||||
hl.bind("PRINT", hl.dsp.exec_cmd("hyprshot -m region --output-folder " .. var_screenshot_folder), {
|
|
||||||
locked = true,
|
|
||||||
description = "Screenshot region",
|
|
||||||
})
|
|
||||||
hl.bind("CTRL + PRINT", hl.dsp.exec_cmd("hyprshot -m window --output-folder " .. var_screenshot_folder), {
|
|
||||||
locked = true,
|
|
||||||
description = "Screenshot window",
|
|
||||||
})
|
|
||||||
hl.bind("SHIFT + PRINT", hl.dsp.exec_cmd("hyprshot -m active --output-folder " .. var_screenshot_folder), {
|
|
||||||
locked = true,
|
|
||||||
description = "Screenshot active monitor",
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Screenlock (noctalia owns the lock screen)
|
|
||||||
hl.bind("CTRL + ALT + L", hl.dsp.exec_cmd("noctalia msg session lock"), { locked = true, description = "Lock screen" })
|
|
||||||
hl.bind(var_mainMod .. " + L", hl.dsp.exec_cmd("noctalia msg session lock"), { locked = true, description = "Lock screen" })
|
|
||||||
|
|
||||||
-- Keybind overview popup
|
|
||||||
hl.bind(
|
|
||||||
var_mainMod .. " + K",
|
|
||||||
hl.dsp.exec_cmd("sh ~/.config/hypr/scripts/show-keybinds.sh"),
|
|
||||||
{ description = "Show keybind overview" }
|
|
||||||
)
|
|
||||||
|
|
||||||
hl.bind(var_mainMod .. " + W", hl.dsp.exec_cmd("noctalia msg panel-toggle wallpaper"), { description = "Wallpaper select (noctalia)" })
|
|
||||||
|
|
||||||
-- #############################
|
|
||||||
-- ## WINDOWS AND WORKSPACES ###
|
|
||||||
-- #############################
|
|
||||||
|
|
||||||
-- See https://wiki.hypr.land/Configuring/Window-Rules/ for more
|
|
||||||
|
|
||||||
-- See https://wiki.hypr.land/Configuring/Workspace-Rules/ for workspace rules
|
|
||||||
|
|
||||||
-- Example windowrules that are useful
|
|
||||||
|
|
||||||
-- Ignore maximize requests from all apps. You'll probably like this.
|
|
||||||
hl.window_rule({
|
|
||||||
name = "suppress-maximize-events",
|
|
||||||
match = {
|
|
||||||
class = ".*",
|
|
||||||
},
|
|
||||||
suppress_event = "maximize",
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Fix some dragging issues with XWayland
|
|
||||||
hl.window_rule({
|
|
||||||
name = "fix-xwayland-drags",
|
|
||||||
match = {
|
|
||||||
class = "^$",
|
|
||||||
title = "^$",
|
|
||||||
xwayland = true,
|
|
||||||
float = true,
|
|
||||||
fullscreen = false,
|
|
||||||
pin = false,
|
|
||||||
},
|
|
||||||
no_focus = true,
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Hyprland-run windowrule
|
|
||||||
hl.config({
|
|
||||||
decoration = {
|
|
||||||
blur = {
|
|
||||||
size = 8,
|
|
||||||
passes = 2,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
hl.window_rule({
|
|
||||||
name = "move-hyprland-run",
|
|
||||||
match = {
|
|
||||||
class = "hyprland-run",
|
|
||||||
},
|
|
||||||
move = "20 monitor_h-120",
|
|
||||||
float = true,
|
|
||||||
})
|
|
||||||
hl.window_rule({
|
|
||||||
name = "keybinds-float",
|
|
||||||
match = {
|
|
||||||
class = "keybinds",
|
|
||||||
},
|
|
||||||
float = true,
|
|
||||||
size = "900 700",
|
|
||||||
center = true,
|
|
||||||
dim_around = true,
|
|
||||||
})
|
|
||||||
hl.window_rule({
|
|
||||||
name = "opacity-kitty-dolphin",
|
|
||||||
match = {
|
|
||||||
class = ".*(kitty|dolphin).*",
|
|
||||||
},
|
|
||||||
opacity = "0.80 0.70",
|
|
||||||
})
|
|
||||||
-- Noctalia shell surfaces: blur bars/panels/dock/notifications and let
|
|
||||||
-- Noctalia run its own animations (no Hyprland layer animation on top).
|
|
||||||
hl.layer_rule({
|
|
||||||
name = "noctalia",
|
|
||||||
match = {
|
|
||||||
namespace = "^noctalia-(bar-.+|notification|dock|panel|attached-panel|osd|window-switcher)$",
|
|
||||||
},
|
|
||||||
no_anim = true,
|
|
||||||
ignore_alpha = 0.5,
|
|
||||||
blur = true,
|
|
||||||
blur_popups = true,
|
|
||||||
})
|
|
||||||
hl.window_rule({
|
|
||||||
name = "noctalia-settings",
|
|
||||||
match = {
|
|
||||||
class = "dev.noctalia.Noctalia",
|
|
||||||
},
|
|
||||||
float = true,
|
|
||||||
size = "1080 920",
|
|
||||||
})
|
|
||||||
hl.window_rule({
|
|
||||||
name = "no-rounding-fullscreen",
|
|
||||||
match = {
|
|
||||||
fullscreen = 1,
|
|
||||||
},
|
|
||||||
rounding = 0,
|
|
||||||
border_size = 0,
|
|
||||||
})
|
|
||||||
|
|
||||||
-- windowrule {
|
|
||||||
|
|
||||||
-- name = no-rounding-steam-games
|
|
||||||
|
|
||||||
-- match:class = ^steam_app_.*$
|
|
||||||
|
|
||||||
-- rounding = 0
|
|
||||||
|
|
||||||
-- border_size = 0
|
|
||||||
|
|
||||||
-- }
|
|
||||||
|
|
||||||
-- windowrule {
|
|
||||||
|
|
||||||
-- name = no-rounding-gamescope
|
|
||||||
|
|
||||||
-- match:class = ^gamescope$
|
|
||||||
|
|
||||||
-- rounding = 0
|
|
||||||
|
|
||||||
-- border_size = 0
|
|
||||||
|
|
||||||
-- }
|
|
||||||
|
|
||||||
-- HyprMod managed settings
|
-- HyprMod managed settings
|
||||||
require("hyprland-gui")
|
require("hyprland-gui")
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
-- See https://wiki.hypr.land/Configuring/Environment-variables/
|
||||||
|
hl.env("XCURSOR_SIZE", "24")
|
||||||
|
hl.env("HYPRCURSOR_SIZE", "24")
|
||||||
|
hl.env("XDG_CURRENT_DESKTOP", "Hyprland")
|
||||||
|
hl.env("XDG_SESSION_DESKTOP", "Hyprland")
|
||||||
|
hl.env("XDG_SESSION_TYPE", "wayland")
|
||||||
|
hl.env("XDG_MENU_PREFIX", "plasma-")
|
||||||
|
hl.env("GTK_USE_PORTAL", "1")
|
||||||
|
hl.env("GTK_THEME", os.getenv("THEME_GTK") or "Adwaita:dark")
|
||||||
|
hl.env("QT_WAYLAND_DISABLE_WINDOWDECORATION", "1")
|
||||||
|
hl.env("QT_QPA_PLATFORMTHEME", "kde")
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
|
||||||
|
|
||||||
|
-- https://wiki.hypr.land/Configuring/Variables/#input
|
||||||
|
hl.config({
|
||||||
|
input = {
|
||||||
|
kb_layout = "de",
|
||||||
|
kb_variant = "",
|
||||||
|
kb_model = "",
|
||||||
|
kb_options = "grp:alt_shift_toggle",
|
||||||
|
kb_rules = "",
|
||||||
|
follow_mouse = 1,
|
||||||
|
numlock_by_default = true,
|
||||||
|
sensitivity = 0,
|
||||||
|
touchpad = {
|
||||||
|
natural_scroll = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- See https://wiki.hypr.land/Configuring/Gestures
|
||||||
|
hl.gesture({
|
||||||
|
fingers = 3,
|
||||||
|
direction = "horizontal",
|
||||||
|
action = "workspace",
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Example per-device config
|
||||||
|
|
||||||
|
-- See https://wiki.hypr.land/Configuring/Keywords/#per-device-input-configs for more
|
||||||
|
hl.device({
|
||||||
|
name = "epic-mouse-v1",
|
||||||
|
sensitivity = -0.5,
|
||||||
|
})
|
||||||
@@ -0,0 +1,248 @@
|
|||||||
|
|
||||||
|
local var = require("modules.variables")
|
||||||
|
-- See https://wiki.hypr.land/Configuring/Keywords/
|
||||||
|
|
||||||
|
-- Example binds, see https://wiki.hypr.land/Configuring/Binds/ for more
|
||||||
|
hl.bind(var.mainMod .. " + RETURN", hl.dsp.exec_cmd(var.terminal), { description = "Open terminal (kitty)" })
|
||||||
|
hl.bind(var.mainMod .. " + Q", hl.dsp.window.close(), { description = "Close focused window" })
|
||||||
|
-- Session menu (noctalia owns the session panel)
|
||||||
|
hl.bind(var.mainMod .. " + ESCAPE", hl.dsp.exec_cmd("noctalia msg panel-toggle session"), { description = "Session menu (logout/reboot/shutdown)" })
|
||||||
|
hl.bind(
|
||||||
|
var.mainMod .. " + SHIFT + ESCAPE",
|
||||||
|
hl.dsp.exec_cmd("command -v noctalia >/dev/null 2>&1 && noctalia msg session logout || hyprctl dispatch exit"),
|
||||||
|
{ description = "Exit Hyprland" }
|
||||||
|
)
|
||||||
|
hl.bind(
|
||||||
|
var.mainMod .. " + CTRL + ESCAPE",
|
||||||
|
hl.dsp.exec_cmd("noctalia msg session shutdown"),
|
||||||
|
{ description = "Power off the system" }
|
||||||
|
)
|
||||||
|
hl.bind(
|
||||||
|
var.mainMod .. " + ALT + ESCAPE",
|
||||||
|
hl.dsp.exec_cmd("noctalia msg session reboot"),
|
||||||
|
{ description = "Reboot the system" }
|
||||||
|
)
|
||||||
|
hl.bind(var.mainMod .. " + E", hl.dsp.exec_cmd(var.fileManager), { description = "Open file manager (dolphin)" })
|
||||||
|
hl.bind(var.mainMod .. " + V", hl.dsp.window.float({ action = "toggle" }), { description = "Toggle floating window" })
|
||||||
|
hl.bind(var.mainMod .. " + SPACE", hl.dsp.exec_cmd(var.menu), { description = "Open app launcher (noctalia)" })
|
||||||
|
hl.bind(var.mainMod .. " + P", hl.dsp.window.pseudo(), { description = "Toggle pseudo-tiling" })
|
||||||
|
hl.bind(var.mainMod .. " + SHIFT + J", hl.dsp.layout("togglesplit"), { description = "Toggle split layout" })
|
||||||
|
hl.bind(var.mainMod .. " + I", hl.dsp.exec_cmd("firefox &"), { description = "Open Firefox" })
|
||||||
|
hl.bind(var.mainMod .. " + n", hl.dsp.exec_cmd("nm-connection-editor"), { description = "Network manager" })
|
||||||
|
hl.bind(var.mainMod .. " + comma", hl.dsp.exec_cmd("noctalia msg settings-toggle"), { description = "Noctalia settings" })
|
||||||
|
hl.bind(var.mainMod .. " + S", hl.dsp.exec_cmd("noctalia msg panel-toggle control-center"), { description = "Control center (noctalia)" })
|
||||||
|
|
||||||
|
-- Move focus with mainMod or Vim-style
|
||||||
|
hl.bind(var.mainMod .. " + CTRL + h", hl.dsp.focus({ direction = "left" }), { description = "Focus window left" })
|
||||||
|
hl.bind(var.mainMod .. " + CTRL + l", hl.dsp.focus({ direction = "right" }), { description = "Focus window right" })
|
||||||
|
hl.bind(var.mainMod .. " + CTRL + k", hl.dsp.focus({ direction = "up" }), { description = "Focus window up" })
|
||||||
|
hl.bind(var.mainMod .. " + CTRL + j", hl.dsp.focus({ direction = "down" }), { description = "Focus window down" })
|
||||||
|
|
||||||
|
-- Move windows with mainMod or Vim-style
|
||||||
|
hl.bind(var.mainMod .. " + SHIFT + h", hl.dsp.window.move({ direction = "left" }), { description = "Move window left" })
|
||||||
|
hl.bind(
|
||||||
|
var.mainMod .. " + SHIFT + l",
|
||||||
|
hl.dsp.window.move({ direction = "right" }),
|
||||||
|
{ description = "Move window right" }
|
||||||
|
)
|
||||||
|
hl.bind(var.mainMod .. " + SHIFT + k", hl.dsp.window.move({ direction = "up" }), { description = "Move window up" })
|
||||||
|
hl.bind(var.mainMod .. " + SHIFT + j", hl.dsp.window.move({ direction = "down" }), { description = "Move window down" })
|
||||||
|
|
||||||
|
-- Resize focused window with mainMod + Arrows
|
||||||
|
hl.bind(
|
||||||
|
var.mainMod .. " + left",
|
||||||
|
hl.dsp.window.resize({ x = -10, y = 0, relative = true }),
|
||||||
|
{ description = "Resize window left" }
|
||||||
|
)
|
||||||
|
hl.bind(
|
||||||
|
var.mainMod .. " + right",
|
||||||
|
hl.dsp.window.resize({ x = 10, y = 0, relative = true }),
|
||||||
|
{ description = "Resize window right" }
|
||||||
|
)
|
||||||
|
hl.bind(
|
||||||
|
var.mainMod .. " + up",
|
||||||
|
hl.dsp.window.resize({ x = 0, y = -10, relative = true }),
|
||||||
|
{ description = "Resize window up" }
|
||||||
|
)
|
||||||
|
hl.bind(
|
||||||
|
var.mainMod .. " + down",
|
||||||
|
hl.dsp.window.resize({ x = 0, y = 10, relative = true }),
|
||||||
|
{ description = "Resize window down" }
|
||||||
|
)
|
||||||
|
|
||||||
|
-- Switch workspaces with mainMod + [0-9]
|
||||||
|
hl.bind(var.mainMod .. " + 1", hl.dsp.focus({ workspace = 1 }), { description = "Switch to workspace 1" })
|
||||||
|
hl.bind(var.mainMod .. " + 2", hl.dsp.focus({ workspace = 2 }), { description = "Switch to workspace 2" })
|
||||||
|
hl.bind(var.mainMod .. " + 3", hl.dsp.focus({ workspace = 3 }), { description = "Switch to workspace 3" })
|
||||||
|
hl.bind(var.mainMod .. " + 4", hl.dsp.focus({ workspace = 4 }), { description = "Switch to workspace 4" })
|
||||||
|
hl.bind(var.mainMod .. " + 5", hl.dsp.focus({ workspace = 5 }), { description = "Switch to workspace 5" })
|
||||||
|
hl.bind(var.mainMod .. " + 6", hl.dsp.focus({ workspace = 6 }), { description = "Switch to workspace 6" })
|
||||||
|
hl.bind(var.mainMod .. " + 7", hl.dsp.focus({ workspace = 7 }), { description = "Switch to workspace 7" })
|
||||||
|
hl.bind(var.mainMod .. " + 8", hl.dsp.focus({ workspace = 8 }), { description = "Switch to workspace 8" })
|
||||||
|
hl.bind(var.mainMod .. " + 9", hl.dsp.focus({ workspace = 9 }), { description = "Switch to workspace 9" })
|
||||||
|
hl.bind(var.mainMod .. " + 0", hl.dsp.focus({ workspace = 10 }), { description = "Switch to workspace 10" })
|
||||||
|
hl.bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd("wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+"), {
|
||||||
|
repeating = true,
|
||||||
|
description = "Volume up",
|
||||||
|
})
|
||||||
|
hl.bind("XF86AudioLowerVolume", hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"), {
|
||||||
|
locked = true,
|
||||||
|
description = "Volume down",
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||||
|
hl.bind(
|
||||||
|
var.mainMod .. " + SHIFT + 1",
|
||||||
|
hl.dsp.window.move({ workspace = 1 }),
|
||||||
|
{ description = "Move window to workspace 1" }
|
||||||
|
)
|
||||||
|
hl.bind(
|
||||||
|
var.mainMod .. " + SHIFT + 2",
|
||||||
|
hl.dsp.window.move({ workspace = 2 }),
|
||||||
|
{ description = "Move window to workspace 2" }
|
||||||
|
)
|
||||||
|
hl.bind(
|
||||||
|
var.mainMod .. " + SHIFT + 3",
|
||||||
|
hl.dsp.window.move({ workspace = 3 }),
|
||||||
|
{ description = "Move window to workspace 3" }
|
||||||
|
)
|
||||||
|
hl.bind(
|
||||||
|
var.mainMod .. " + SHIFT + 4",
|
||||||
|
hl.dsp.window.move({ workspace = 4 }),
|
||||||
|
{ description = "Move window to workspace 4" }
|
||||||
|
)
|
||||||
|
hl.bind(
|
||||||
|
var.mainMod .. " + SHIFT + 5",
|
||||||
|
hl.dsp.window.move({ workspace = 5 }),
|
||||||
|
{ description = "Move window to workspace 5" }
|
||||||
|
)
|
||||||
|
hl.bind(
|
||||||
|
var.mainMod .. " + SHIFT + 6",
|
||||||
|
hl.dsp.window.move({ workspace = 6 }),
|
||||||
|
{ description = "Move window to workspace 6" }
|
||||||
|
)
|
||||||
|
hl.bind(
|
||||||
|
var.mainMod .. " + SHIFT + 7",
|
||||||
|
hl.dsp.window.move({ workspace = 7 }),
|
||||||
|
{ description = "Move window to workspace 7" }
|
||||||
|
)
|
||||||
|
hl.bind(
|
||||||
|
var.mainMod .. " + SHIFT + 8",
|
||||||
|
hl.dsp.window.move({ workspace = 8 }),
|
||||||
|
{ description = "Move window to workspace 8" }
|
||||||
|
)
|
||||||
|
hl.bind(
|
||||||
|
var.mainMod .. " + SHIFT + 9",
|
||||||
|
hl.dsp.window.move({ workspace = 9 }),
|
||||||
|
{ description = "Move window to workspace 9" }
|
||||||
|
)
|
||||||
|
hl.bind(
|
||||||
|
var.mainMod .. " + SHIFT + 0",
|
||||||
|
hl.dsp.window.move({ workspace = 10 }),
|
||||||
|
{ description = "Move window to workspace 10" }
|
||||||
|
)
|
||||||
|
|
||||||
|
-- # Example special workspace (scratchpad)
|
||||||
|
|
||||||
|
-- bind = $mainMod, S, togglespecialworkspace, magic
|
||||||
|
|
||||||
|
-- bind = $mainMod SHIFT, S, movetoworkspace, special:magic
|
||||||
|
|
||||||
|
-- Scroll through existing workspaces with mainMod + scroll
|
||||||
|
hl.bind(
|
||||||
|
var.mainMod .. " + mouse_down",
|
||||||
|
hl.dsp.focus({ workspace = "e+1" }),
|
||||||
|
{ description = "Next workspace (scroll down)" }
|
||||||
|
)
|
||||||
|
hl.bind(
|
||||||
|
var.mainMod .. " + mouse_up",
|
||||||
|
hl.dsp.focus({ workspace = "e-1" }),
|
||||||
|
{ description = "Previous workspace (scroll up)" }
|
||||||
|
)
|
||||||
|
|
||||||
|
-- Move/resize windows with mainMod + LMB/RMB and dragging
|
||||||
|
hl.bind(var.mainMod .. " + mouse:272", hl.dsp.window.drag(), {
|
||||||
|
mouse = true,
|
||||||
|
description = "Move window with mouse",
|
||||||
|
})
|
||||||
|
hl.bind(var.mainMod .. " + mouse:273", hl.dsp.window.resize(), {
|
||||||
|
mouse = true,
|
||||||
|
description = "Resize window with mouse",
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Laptop multimedia keys for volume and LCD brightness
|
||||||
|
hl.bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd("wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"), {
|
||||||
|
repeating = true,
|
||||||
|
locked = true,
|
||||||
|
description = "Volume up (repeat)",
|
||||||
|
})
|
||||||
|
hl.bind("XF86AudioLowerVolume", hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"), {
|
||||||
|
repeating = true,
|
||||||
|
locked = true,
|
||||||
|
description = "Volume down (repeat)",
|
||||||
|
})
|
||||||
|
hl.bind("XF86AudioMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"), {
|
||||||
|
repeating = true,
|
||||||
|
locked = true,
|
||||||
|
description = "Mute audio",
|
||||||
|
})
|
||||||
|
hl.bind("XF86AudioMicMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"), {
|
||||||
|
repeating = true,
|
||||||
|
locked = true,
|
||||||
|
description = "Mute microphone",
|
||||||
|
})
|
||||||
|
hl.bind("XF86MonBrightnessUp", hl.dsp.exec_cmd("brightnessctl -e4 -n2 set 5%+"), {
|
||||||
|
repeating = true,
|
||||||
|
locked = true,
|
||||||
|
description = "Brightness up",
|
||||||
|
})
|
||||||
|
hl.bind("XF86MonBrightnessDown", hl.dsp.exec_cmd("brightnessctl -e4 -n2 set 5%-"), {
|
||||||
|
repeating = true,
|
||||||
|
locked = true,
|
||||||
|
description = "Brightness down",
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Requires playerctl
|
||||||
|
hl.bind("XF86AudioNext", hl.dsp.exec_cmd("playerctl next"), {
|
||||||
|
locked = true,
|
||||||
|
description = "Next track",
|
||||||
|
})
|
||||||
|
hl.bind("XF86AudioPause", hl.dsp.exec_cmd("playerctl play-pause"), {
|
||||||
|
locked = true,
|
||||||
|
description = "Play/Pause",
|
||||||
|
})
|
||||||
|
hl.bind("XF86AudioPlay", hl.dsp.exec_cmd("playerctl play-pause"), {
|
||||||
|
locked = true,
|
||||||
|
description = "Play/Pause",
|
||||||
|
})
|
||||||
|
hl.bind("XF86AudioPrev", hl.dsp.exec_cmd("playerctl previous"), {
|
||||||
|
locked = true,
|
||||||
|
description = "Previous track",
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Screenshots
|
||||||
|
hl.bind("PRINT", hl.dsp.exec_cmd("hyprshot -m region --output-folder " .. var.screenshot_folder), {
|
||||||
|
locked = true,
|
||||||
|
description = "Screenshot region",
|
||||||
|
})
|
||||||
|
hl.bind("CTRL + PRINT", hl.dsp.exec_cmd("hyprshot -m window --output-folder " .. var.screenshot_folder), {
|
||||||
|
locked = true,
|
||||||
|
description = "Screenshot window",
|
||||||
|
})
|
||||||
|
hl.bind("SHIFT + PRINT", hl.dsp.exec_cmd("hyprshot -m active --output-folder " .. var.screenshot_folder), {
|
||||||
|
locked = true,
|
||||||
|
description = "Screenshot active monitor",
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Screenlock (noctalia owns the lock screen)
|
||||||
|
hl.bind("CTRL + ALT + L", hl.dsp.exec_cmd("noctalia msg session lock"), { locked = true, description = "Lock screen" })
|
||||||
|
hl.bind(var.mainMod .. " + L", hl.dsp.exec_cmd("noctalia msg session lock"), { locked = true, description = "Lock screen" })
|
||||||
|
|
||||||
|
-- Keybind overview popup
|
||||||
|
hl.bind(
|
||||||
|
var.mainMod .. " + K",
|
||||||
|
hl.dsp.exec_cmd("sh ~/.config/hypr/scripts/show-keybinds.sh"),
|
||||||
|
{ description = "Show keybind overview" }
|
||||||
|
)
|
||||||
|
|
||||||
|
hl.bind(var.mainMod .. " + W", hl.dsp.exec_cmd("noctalia msg panel-toggle wallpaper"), { description = "Wallpaper select (noctalia)" })
|
||||||
@@ -0,0 +1,257 @@
|
|||||||
|
|
||||||
|
local var = require("modules.variables")
|
||||||
|
|
||||||
|
-- Refer to https://wiki.hypr.land/Configuring/Variables/
|
||||||
|
|
||||||
|
-- https://wiki.hypr.land/Configuring/Variables/#general
|
||||||
|
hl.config({
|
||||||
|
general = {
|
||||||
|
gaps_in = 3,
|
||||||
|
gaps_out = 4,
|
||||||
|
border_size = 3,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- https://wiki.hypr.land/Configuring/Variables/#variable-types for info about colors
|
||||||
|
hl.config({
|
||||||
|
general = {
|
||||||
|
col = {
|
||||||
|
active_border = var.color_active_border,
|
||||||
|
inactive_border = var.color_inactive_border,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Set to true enable resizing windows by clicking and dragging on borders and gaps
|
||||||
|
hl.config({
|
||||||
|
general = {
|
||||||
|
resize_on_border = true,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Please see https://wiki.hypr.land/Configuring/Tearing/ before you turn this on
|
||||||
|
hl.config({
|
||||||
|
general = {
|
||||||
|
allow_tearing = false,
|
||||||
|
layout = "dwindle",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- https://wiki.hypr.land/Configuring/Variables/#decoration
|
||||||
|
hl.config({
|
||||||
|
decoration = {
|
||||||
|
rounding = 5,
|
||||||
|
rounding_power = 2,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Change transparency of focused and unfocused windows
|
||||||
|
hl.config({
|
||||||
|
decoration = {
|
||||||
|
active_opacity = 1.0,
|
||||||
|
inactive_opacity = 1.0,
|
||||||
|
shadow = {
|
||||||
|
enabled = true,
|
||||||
|
range = 10,
|
||||||
|
render_power = 3,
|
||||||
|
color = var.color_decoration_shadow,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- https://wiki.hypr.land/Configuring/Variables/#blur
|
||||||
|
hl.config({
|
||||||
|
decoration = {
|
||||||
|
blur = {
|
||||||
|
enabled = true,
|
||||||
|
size = 10,
|
||||||
|
passes = 2,
|
||||||
|
vibrancy = 0.1696,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- https://wiki.hypr.land/Configuring/Variables/#animations
|
||||||
|
hl.config({
|
||||||
|
animations = {
|
||||||
|
enabled = true,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Default curves, see https://wiki.hypr.land/Configuring/Animations/#curves
|
||||||
|
|
||||||
|
-- NAME, X0, Y0, X1, Y1
|
||||||
|
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 animations, see https://wiki.hypr.land/Configuring/Animations/
|
||||||
|
|
||||||
|
-- NAME, ONOFF, SPEED, CURVE, [STYLE]
|
||||||
|
hl.animation({
|
||||||
|
leaf = "global",
|
||||||
|
enabled = true,
|
||||||
|
speed = 10,
|
||||||
|
bezier = "default",
|
||||||
|
})
|
||||||
|
hl.animation({
|
||||||
|
leaf = "border",
|
||||||
|
enabled = true,
|
||||||
|
speed = 5.39,
|
||||||
|
bezier = "easeOutQuint",
|
||||||
|
})
|
||||||
|
hl.animation({
|
||||||
|
leaf = "windows",
|
||||||
|
enabled = true,
|
||||||
|
speed = 4.79,
|
||||||
|
bezier = "easeOutQuint",
|
||||||
|
})
|
||||||
|
hl.animation({
|
||||||
|
leaf = "windowsIn",
|
||||||
|
enabled = true,
|
||||||
|
speed = 4.1,
|
||||||
|
bezier = "easeOutQuint",
|
||||||
|
style = "popin 87%",
|
||||||
|
})
|
||||||
|
hl.animation({
|
||||||
|
leaf = "windowsOut",
|
||||||
|
enabled = true,
|
||||||
|
speed = 1.49,
|
||||||
|
bezier = "linear",
|
||||||
|
style = "popin 87%",
|
||||||
|
})
|
||||||
|
hl.animation({
|
||||||
|
leaf = "fadeIn",
|
||||||
|
enabled = true,
|
||||||
|
speed = 1.73,
|
||||||
|
bezier = "almostLinear",
|
||||||
|
})
|
||||||
|
hl.animation({
|
||||||
|
leaf = "fadeOut",
|
||||||
|
enabled = true,
|
||||||
|
speed = 1.46,
|
||||||
|
bezier = "almostLinear",
|
||||||
|
})
|
||||||
|
hl.animation({
|
||||||
|
leaf = "fade",
|
||||||
|
enabled = true,
|
||||||
|
speed = 3.03,
|
||||||
|
bezier = "quick",
|
||||||
|
})
|
||||||
|
hl.animation({
|
||||||
|
leaf = "layers",
|
||||||
|
enabled = true,
|
||||||
|
speed = 3.81,
|
||||||
|
bezier = "easeOutQuint",
|
||||||
|
})
|
||||||
|
hl.animation({
|
||||||
|
leaf = "layersIn",
|
||||||
|
enabled = true,
|
||||||
|
speed = 4,
|
||||||
|
bezier = "easeOutQuint",
|
||||||
|
style = "fade",
|
||||||
|
})
|
||||||
|
hl.animation({
|
||||||
|
leaf = "layersOut",
|
||||||
|
enabled = true,
|
||||||
|
speed = 1.5,
|
||||||
|
bezier = "linear",
|
||||||
|
style = "fade",
|
||||||
|
})
|
||||||
|
hl.animation({
|
||||||
|
leaf = "fadeLayersIn",
|
||||||
|
enabled = true,
|
||||||
|
speed = 1.79,
|
||||||
|
bezier = "almostLinear",
|
||||||
|
})
|
||||||
|
hl.animation({
|
||||||
|
leaf = "fadeLayersOut",
|
||||||
|
enabled = true,
|
||||||
|
speed = 1.39,
|
||||||
|
bezier = "almostLinear",
|
||||||
|
})
|
||||||
|
hl.animation({
|
||||||
|
leaf = "workspaces",
|
||||||
|
enabled = true,
|
||||||
|
speed = 1.94,
|
||||||
|
bezier = "almostLinear",
|
||||||
|
style = "slide",
|
||||||
|
})
|
||||||
|
hl.animation({
|
||||||
|
leaf = "workspacesIn",
|
||||||
|
enabled = true,
|
||||||
|
speed = 1.21,
|
||||||
|
bezier = "almostLinear",
|
||||||
|
style = "slide",
|
||||||
|
})
|
||||||
|
hl.animation({
|
||||||
|
leaf = "workspacesOut",
|
||||||
|
enabled = true,
|
||||||
|
speed = 1.94,
|
||||||
|
bezier = "almostLinear",
|
||||||
|
style = "slide",
|
||||||
|
})
|
||||||
|
hl.animation({
|
||||||
|
leaf = "zoomFactor",
|
||||||
|
enabled = true,
|
||||||
|
speed = 7,
|
||||||
|
bezier = "quick",
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Ref https://wiki.hypr.land/Configuring/Workspace-Rules/
|
||||||
|
|
||||||
|
-- "Smart gaps" / "No gaps when only"
|
||||||
|
|
||||||
|
-- uncomment all if you wish to use that.
|
||||||
|
hl.workspace_rule({
|
||||||
|
workspace = "w[tv1]",
|
||||||
|
gaps_out = 0,
|
||||||
|
gaps_in = 0,
|
||||||
|
})
|
||||||
|
hl.workspace_rule({
|
||||||
|
workspace = "f[1]",
|
||||||
|
gaps_out = 0,
|
||||||
|
gaps_in = 0,
|
||||||
|
})
|
||||||
|
hl.window_rule({
|
||||||
|
name = "no-gaps-wtv1",
|
||||||
|
match = {
|
||||||
|
float = false,
|
||||||
|
workspace = "w[tv1]",
|
||||||
|
},
|
||||||
|
border_size = 0,
|
||||||
|
rounding = 0,
|
||||||
|
})
|
||||||
|
hl.window_rule({
|
||||||
|
name = "no-gaps-f1",
|
||||||
|
match = {
|
||||||
|
float = false,
|
||||||
|
workspace = "f[1]",
|
||||||
|
},
|
||||||
|
border_size = 0,
|
||||||
|
rounding = 0,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- See https://wiki.hypr.land/Configuring/Dwindle-Layout/ for more
|
||||||
|
hl.config({
|
||||||
|
dwindle = {
|
||||||
|
preserve_split = true,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- See https://wiki.hypr.land/Configuring/Master-Layout/ for more
|
||||||
|
hl.config({
|
||||||
|
master = {
|
||||||
|
new_status = "master",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- https://wiki.hypr.land/Configuring/Variables/#misc
|
||||||
|
hl.config({
|
||||||
|
misc = {
|
||||||
|
force_default_wallpaper = -1,
|
||||||
|
disable_hyprland_logo = false,
|
||||||
|
},
|
||||||
|
})
|
||||||
@@ -1 +0,0 @@
|
|||||||
monitor=,preferred,auto,1.0
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
monitor=,preferred,auto,1.0
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
-- monitor=,preferred,auto,1.0
|
|
||||||
|
|
||||||
hl.monitor({
|
|
||||||
output = "",
|
|
||||||
disabled = false,
|
|
||||||
mode = "preferred",
|
|
||||||
position = "auto",
|
|
||||||
scale = 1.0,
|
|
||||||
})
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
# monitorv2 {
|
|
||||||
# output = DP-2
|
|
||||||
# mode = highres highrr
|
|
||||||
# position = 0x0
|
|
||||||
# scale = 1.2
|
|
||||||
# bitdepth = 10
|
|
||||||
# cm = hdr
|
|
||||||
# supports_wide_color = 1
|
|
||||||
# supports_hdr = 1
|
|
||||||
# sdr_min_luminance = 0.005
|
|
||||||
# sdr_max_luminance = 200
|
|
||||||
# min_luminance = 0.002
|
|
||||||
# max_luminance = 200
|
|
||||||
# max_avg_luminance = 150
|
|
||||||
# }
|
|
||||||
|
|
||||||
monitor = DP-2, preferred, auto-left, 1.5
|
|
||||||
monitor = DP-3, preferred, auto-right, 1.0
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
hl.monitor({
|
|
||||||
output = "DP-2",
|
|
||||||
disabled = false,
|
|
||||||
mode = "preferred",
|
|
||||||
position = "auto-left",
|
|
||||||
scale = 1.5,
|
|
||||||
})
|
|
||||||
hl.monitor({
|
|
||||||
output = "DP-3",
|
|
||||||
disabled = false,
|
|
||||||
mode = "preferred",
|
|
||||||
position = "auto-right",
|
|
||||||
scale = 1.0,
|
|
||||||
})
|
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
|
||||||
|
|
||||||
|
-- Default
|
||||||
|
hl.monitor({
|
||||||
|
output = "",
|
||||||
|
disabled = false,
|
||||||
|
mode = "preferred",
|
||||||
|
position = "auto",
|
||||||
|
scale = 1.0,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- -- Buntes Monster
|
||||||
|
-- hl.monitor({
|
||||||
|
-- output = "DP-2",
|
||||||
|
-- disabled = false,
|
||||||
|
-- mode = "preferred",
|
||||||
|
-- position = "auto-left",
|
||||||
|
-- scale = 1.5,
|
||||||
|
-- })
|
||||||
|
-- hl.monitor({
|
||||||
|
-- output = "DP-3",
|
||||||
|
-- disabled = false,
|
||||||
|
-- mode = "preferred",
|
||||||
|
-- position = "auto-right",
|
||||||
|
-- scale = 1.0,
|
||||||
|
-- })
|
||||||
|
|
||||||
|
-- -- Archtop
|
||||||
|
-- hl.monitor({
|
||||||
|
-- output = "",
|
||||||
|
-- disabled = false,
|
||||||
|
-- mode = "preferred",
|
||||||
|
-- position = "auto",
|
||||||
|
-- scale = 1.0,
|
||||||
|
-- })
|
||||||
|
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
|
||||||
|
local theme = dofile(os.getenv("HOME") .. "/.config/themes/current/theme.lua")
|
||||||
|
-- local var_color_active_border = theme.border_active
|
||||||
|
-- local var_color_inactive_border = theme.border_inactive
|
||||||
|
-- local var_color_decoration_shadow = theme.shadow
|
||||||
|
-- local var_mainMod = "SUPER"
|
||||||
|
-- local var_terminal = "kitty"
|
||||||
|
-- local var_fileManager = "dolphin"
|
||||||
|
-- local var_menu = "noctalia msg panel-toggle launcher"
|
||||||
|
-- local var_screenshot_folder = "~/Bilder/Screenshots/"
|
||||||
|
|
||||||
|
return {
|
||||||
|
color_active_border = theme.border_active,
|
||||||
|
color_inactive_border = theme.border_inactive,
|
||||||
|
color_decoration_shadow = theme.shadow,
|
||||||
|
mainMod = "SUPER",
|
||||||
|
terminal = "kitty",
|
||||||
|
fileManager = "dolphin",
|
||||||
|
menu = "noctalia msg panel-toggle launcher",
|
||||||
|
screenshot_folder = "~/Bilder/Screenshots/",
|
||||||
|
}
|
||||||
@@ -0,0 +1,118 @@
|
|||||||
|
|
||||||
|
|
||||||
|
-- See https://wiki.hypr.land/Configuring/Window-Rules/ for more
|
||||||
|
|
||||||
|
-- See https://wiki.hypr.land/Configuring/Workspace-Rules/ for workspace rules
|
||||||
|
|
||||||
|
-- Example windowrules that are useful
|
||||||
|
|
||||||
|
-- Ignore maximize requests from all apps. You'll probably like this.
|
||||||
|
hl.window_rule({
|
||||||
|
name = "suppress-maximize-events",
|
||||||
|
match = {
|
||||||
|
class = ".*",
|
||||||
|
},
|
||||||
|
suppress_event = "maximize",
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Fix some dragging issues with XWayland
|
||||||
|
hl.window_rule({
|
||||||
|
name = "fix-xwayland-drags",
|
||||||
|
match = {
|
||||||
|
class = "^$",
|
||||||
|
title = "^$",
|
||||||
|
xwayland = true,
|
||||||
|
float = true,
|
||||||
|
fullscreen = false,
|
||||||
|
pin = false,
|
||||||
|
},
|
||||||
|
no_focus = true,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Hyprland-run windowrule
|
||||||
|
hl.config({
|
||||||
|
decoration = {
|
||||||
|
blur = {
|
||||||
|
size = 8,
|
||||||
|
passes = 2,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
hl.window_rule({
|
||||||
|
name = "move-hyprland-run",
|
||||||
|
match = {
|
||||||
|
class = "hyprland-run",
|
||||||
|
},
|
||||||
|
move = "20 monitor_h-120",
|
||||||
|
float = true,
|
||||||
|
})
|
||||||
|
hl.window_rule({
|
||||||
|
name = "keybinds-float",
|
||||||
|
match = {
|
||||||
|
class = "keybinds",
|
||||||
|
},
|
||||||
|
float = true,
|
||||||
|
size = "900 700",
|
||||||
|
center = true,
|
||||||
|
dim_around = true,
|
||||||
|
})
|
||||||
|
hl.window_rule({
|
||||||
|
name = "opacity-kitty-dolphin",
|
||||||
|
match = {
|
||||||
|
class = ".*(kitty|dolphin).*",
|
||||||
|
},
|
||||||
|
opacity = "0.80 0.70",
|
||||||
|
})
|
||||||
|
-- Noctalia shell surfaces: blur bars/panels/dock/notifications and let
|
||||||
|
-- Noctalia run its own animations (no Hyprland layer animation on top).
|
||||||
|
hl.layer_rule({
|
||||||
|
name = "noctalia",
|
||||||
|
match = {
|
||||||
|
namespace = "^noctalia-(bar-.+|notification|dock|panel|attached-panel|osd|window-switcher)$",
|
||||||
|
},
|
||||||
|
no_anim = true,
|
||||||
|
ignore_alpha = 0.5,
|
||||||
|
blur = true,
|
||||||
|
blur_popups = true,
|
||||||
|
})
|
||||||
|
hl.window_rule({
|
||||||
|
name = "noctalia-settings",
|
||||||
|
match = {
|
||||||
|
class = "dev.noctalia.Noctalia",
|
||||||
|
},
|
||||||
|
float = true,
|
||||||
|
size = "1080 920",
|
||||||
|
})
|
||||||
|
hl.window_rule({
|
||||||
|
name = "no-rounding-fullscreen",
|
||||||
|
match = {
|
||||||
|
fullscreen = 1,
|
||||||
|
},
|
||||||
|
rounding = 0,
|
||||||
|
border_size = 0,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- windowrule {
|
||||||
|
|
||||||
|
-- name = no-rounding-steam-games
|
||||||
|
|
||||||
|
-- match:class = ^steam_app_.*$
|
||||||
|
|
||||||
|
-- rounding = 0
|
||||||
|
|
||||||
|
-- border_size = 0
|
||||||
|
|
||||||
|
-- }
|
||||||
|
|
||||||
|
-- windowrule {
|
||||||
|
|
||||||
|
-- name = no-rounding-gamescope
|
||||||
|
|
||||||
|
-- match:class = ^gamescope$
|
||||||
|
|
||||||
|
-- rounding = 0
|
||||||
|
|
||||||
|
-- border_size = 0
|
||||||
|
|
||||||
|
-- }
|
||||||
Reference in New Issue
Block a user