From 1d7ed473f69d58a71459e83d1929815da333a861 Mon Sep 17 00:00:00 2001 From: Mathias Date: Wed, 23 Sep 2026 19:04:52 +0200 Subject: [PATCH] hypr: refactor config to a more modular design --- hypr/.config/hypr/hyprland.lua | 721 +----------------- .../hypr/modules/environment_variables.lua | 12 + hypr/.config/hypr/modules/input.lua | 33 + hypr/.config/hypr/modules/keybinds.lua | 248 ++++++ hypr/.config/hypr/modules/look_and_feel.lua | 257 +++++++ .../hypr/modules/monitor_setup_0_auto.conf | 1 - .../hypr/modules/monitor_setup_archtop.conf | 1 - .../hypr/modules/monitor_setup_archtop.lua | 9 - .../modules/monitor_setup_buntes_monster.conf | 18 - .../modules/monitor_setup_buntes_monster.lua | 14 - .../hypr/modules/monitor_setup_default.lua | 36 + hypr/.config/hypr/modules/variables.lua | 21 + .../hypr/modules/windows_and_workspaces.lua | 118 +++ 13 files changed, 740 insertions(+), 749 deletions(-) create mode 100644 hypr/.config/hypr/modules/environment_variables.lua create mode 100644 hypr/.config/hypr/modules/input.lua create mode 100644 hypr/.config/hypr/modules/keybinds.lua create mode 100644 hypr/.config/hypr/modules/look_and_feel.lua delete mode 100644 hypr/.config/hypr/modules/monitor_setup_0_auto.conf delete mode 100644 hypr/.config/hypr/modules/monitor_setup_archtop.conf delete mode 100644 hypr/.config/hypr/modules/monitor_setup_archtop.lua delete mode 100644 hypr/.config/hypr/modules/monitor_setup_buntes_monster.conf delete mode 100644 hypr/.config/hypr/modules/monitor_setup_buntes_monster.lua create mode 100644 hypr/.config/hypr/modules/monitor_setup_default.lua create mode 100644 hypr/.config/hypr/modules/variables.lua create mode 100644 hypr/.config/hypr/modules/windows_and_workspaces.lua diff --git a/hypr/.config/hypr/hyprland.lua b/hypr/.config/hypr/hyprland.lua index b23daaa..c0529f5 100644 --- a/hypr/.config/hypr/hyprland.lua +++ b/hypr/.config/hypr/hyprland.lua @@ -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") hl.exec_cmd("bash ~/.config/hypr/env.sh") @@ -19,7 +6,16 @@ hl.exec_cmd("bash ~/.config/hypr/env.sh") -- ## 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 hl.config({ @@ -41,698 +37,11 @@ hl.on("hyprland.start", function() hl.exec_cmd("sh ~/.config/hypr/scripts/ensure-mime-defaults.sh") end) --- ############################ --- ## ENVIRONMENT VARIABLES ### --- ############################ - --- 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") - --- ################## --- ## 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 - --- } +require("modules.environment_variables") +require("modules.look_and_feel") +require("modules.input") +require("modules.keybinds") +require("modules.windows_and_workspaces") -- HyprMod managed settings require("hyprland-gui") diff --git a/hypr/.config/hypr/modules/environment_variables.lua b/hypr/.config/hypr/modules/environment_variables.lua new file mode 100644 index 0000000..c0b9289 --- /dev/null +++ b/hypr/.config/hypr/modules/environment_variables.lua @@ -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") diff --git a/hypr/.config/hypr/modules/input.lua b/hypr/.config/hypr/modules/input.lua new file mode 100644 index 0000000..51084bf --- /dev/null +++ b/hypr/.config/hypr/modules/input.lua @@ -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, +}) diff --git a/hypr/.config/hypr/modules/keybinds.lua b/hypr/.config/hypr/modules/keybinds.lua new file mode 100644 index 0000000..3188652 --- /dev/null +++ b/hypr/.config/hypr/modules/keybinds.lua @@ -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)" }) diff --git a/hypr/.config/hypr/modules/look_and_feel.lua b/hypr/.config/hypr/modules/look_and_feel.lua new file mode 100644 index 0000000..de1cae6 --- /dev/null +++ b/hypr/.config/hypr/modules/look_and_feel.lua @@ -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, + }, +}) diff --git a/hypr/.config/hypr/modules/monitor_setup_0_auto.conf b/hypr/.config/hypr/modules/monitor_setup_0_auto.conf deleted file mode 100644 index 98c7d02..0000000 --- a/hypr/.config/hypr/modules/monitor_setup_0_auto.conf +++ /dev/null @@ -1 +0,0 @@ -monitor=,preferred,auto,1.0 diff --git a/hypr/.config/hypr/modules/monitor_setup_archtop.conf b/hypr/.config/hypr/modules/monitor_setup_archtop.conf deleted file mode 100644 index 98c7d02..0000000 --- a/hypr/.config/hypr/modules/monitor_setup_archtop.conf +++ /dev/null @@ -1 +0,0 @@ -monitor=,preferred,auto,1.0 diff --git a/hypr/.config/hypr/modules/monitor_setup_archtop.lua b/hypr/.config/hypr/modules/monitor_setup_archtop.lua deleted file mode 100644 index 47f477a..0000000 --- a/hypr/.config/hypr/modules/monitor_setup_archtop.lua +++ /dev/null @@ -1,9 +0,0 @@ --- monitor=,preferred,auto,1.0 - -hl.monitor({ - output = "", - disabled = false, - mode = "preferred", - position = "auto", - scale = 1.0, -}) diff --git a/hypr/.config/hypr/modules/monitor_setup_buntes_monster.conf b/hypr/.config/hypr/modules/monitor_setup_buntes_monster.conf deleted file mode 100644 index 2fa553e..0000000 --- a/hypr/.config/hypr/modules/monitor_setup_buntes_monster.conf +++ /dev/null @@ -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 diff --git a/hypr/.config/hypr/modules/monitor_setup_buntes_monster.lua b/hypr/.config/hypr/modules/monitor_setup_buntes_monster.lua deleted file mode 100644 index a6ea1c9..0000000 --- a/hypr/.config/hypr/modules/monitor_setup_buntes_monster.lua +++ /dev/null @@ -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, -}) diff --git a/hypr/.config/hypr/modules/monitor_setup_default.lua b/hypr/.config/hypr/modules/monitor_setup_default.lua new file mode 100644 index 0000000..87dd216 --- /dev/null +++ b/hypr/.config/hypr/modules/monitor_setup_default.lua @@ -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, +-- }) + diff --git a/hypr/.config/hypr/modules/variables.lua b/hypr/.config/hypr/modules/variables.lua new file mode 100644 index 0000000..1694ef9 --- /dev/null +++ b/hypr/.config/hypr/modules/variables.lua @@ -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/", +} diff --git a/hypr/.config/hypr/modules/windows_and_workspaces.lua b/hypr/.config/hypr/modules/windows_and_workspaces.lua new file mode 100644 index 0000000..183e2e7 --- /dev/null +++ b/hypr/.config/hypr/modules/windows_and_workspaces.lua @@ -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 + +-- }