summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFreya Murphy <freya@freyacat.org>2026-05-25 21:34:02 -0400
committerFreya Murphy <freya@freyacat.org>2026-05-25 21:43:18 -0400
commit4724eb3f4c193325597439592149c2f2c4b51201 (patch)
tree08b016498b07557bd0c9c5cd3053ae7802d48a15
parentupdate commits (diff)
downloaddotfiles-nix-4724eb3f4c193325597439592149c2f2c4b51201.tar.gz
dotfiles-nix-4724eb3f4c193325597439592149c2f2c4b51201.tar.bz2
dotfiles-nix-4724eb3f4c193325597439592149c2f2c4b51201.zip
fix hyprland, and move it to lua
-rw-r--r--flake.lock32
-rw-r--r--flake.nix2
-rw-r--r--home/desktops/hyprland/binds.nix130
-rw-r--r--home/desktops/hyprland/default.nix18
-rw-r--r--home/desktops/hyprland/env.nix14
-rw-r--r--home/desktops/hyprland/hyprland.lua321
-rw-r--r--home/desktops/hyprland/plugins.nix39
-rw-r--r--home/desktops/hyprland/settings.nix145
8 files changed, 352 insertions, 349 deletions
diff --git a/flake.lock b/flake.lock
index 8827936..dedc9f2 100644
--- a/flake.lock
+++ b/flake.lock
@@ -48,11 +48,11 @@
]
},
"locked": {
- "lastModified": 1778620495,
- "narHash": "sha256-Gu7UhWjwKCgSiVC3Qz/Rc7cYi9DNuDTBxYzg3kfLvfM=",
+ "lastModified": 1777499565,
+ "narHash": "sha256-nU55VWk99Pn1QzQDDjFISocC4SgDZ3Xp+zb6ji3JclM=",
"owner": "hyprwm",
"repo": "aquamarine",
- "rev": "be35f75ac305f430f5f9d89b5f5a4af59ca7567e",
+ "rev": "813c1e8981893c11e118b19c125d6bc282f51765",
"type": "github"
},
"original": {
@@ -377,16 +377,16 @@
"xdph": "xdph"
},
"locked": {
- "lastModified": 1778936359,
- "narHash": "sha256-ZuZ9nfmb1Oh3qOPfrQ0zeTBRuMS0DqYTkKiuG9x06CQ=",
+ "lastModified": 1778333727,
+ "narHash": "sha256-RGYGbW6aH3jUwGVB9BrSYcKsQj7Dl2K32ao5aWbTK40=",
"owner": "hyprwm",
"repo": "Hyprland",
- "rev": "39d7e209c79d451efab1b21151d5938289da838d",
+ "rev": "af923e30d1d24f1f4a4f5cb8308065173c1d9539",
"type": "github"
},
"original": {
"owner": "hyprwm",
- "ref": "v0.55.2",
+ "ref": "v0.55.0",
"repo": "Hyprland",
"type": "github"
}
@@ -640,11 +640,11 @@
]
},
"locked": {
- "lastModified": 1778410714,
- "narHash": "sha256-o6RzFj4nJXaPRY7EM01siuCQeT41RfwwmcmFQqwFJJg=",
+ "lastModified": 1777388329,
+ "narHash": "sha256-40YxVGF2rA9iH3D7am5fy4EOSBbMgpJtJ9yhl0Cx+qI=",
"owner": "hyprwm",
"repo": "hyprwire",
- "rev": "85148a8e612808cf5ddb25d0b3c5840f3498a7dc",
+ "rev": "04be2897e05f9b271d532b5ae56ca088d2eeac02",
"type": "github"
},
"original": {
@@ -765,11 +765,11 @@
]
},
"locked": {
- "lastModified": 1778507602,
- "narHash": "sha256-kTwur1wV+01SdqskVMSo6JMEpg71ps3HpbFY2GsflKs=",
+ "lastModified": 1776796298,
+ "narHash": "sha256-PcRvlWayisPSjd0UcRQbhG8Oqw78AcPE6x872cPRHN8=",
"owner": "cachix",
"repo": "git-hooks.nix",
- "rev": "61ab0e80d9c7ab14c256b5b453d8b3fb0189ba0a",
+ "rev": "3cfd774b0a530725a077e17354fbdb87ea1c4aad",
"type": "github"
},
"original": {
@@ -998,11 +998,11 @@
]
},
"locked": {
- "lastModified": 1778265244,
- "narHash": "sha256-8jlPtGSsv/CQY6tVVyLF4Jjd0gnS+Zbn9yk/V13A9nM=",
+ "lastModified": 1777585783,
+ "narHash": "sha256-JTeWRy42VElroJ0rVdZuVXSoTLsx+NzQfGPKMbtn3SU=",
"owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland",
- "rev": "813ea5ca9a1702a9a2d1f5836bc00172ef698968",
+ "rev": "fa50d6fbaff8f42c61071b87b034a90d82a33558",
"type": "github"
},
"original": {
diff --git a/flake.nix b/flake.nix
index c8bc970..fc28cd8 100644
--- a/flake.nix
+++ b/flake.nix
@@ -8,7 +8,7 @@
home-manager.url = "github:nix-community/home-manager/master";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
# hyprland
- hyprland.url = "github:hyprwm/Hyprland/v0.55.2";
+ hyprland.url = "github:hyprwm/Hyprland/v0.55.0";
hyprland.inputs.nixpkgs.follows = "nixpkgs";
# hyprland plugins
hyprland-plugins.url = "github:hyprwm/hyprland-plugins/v0.55.0";
diff --git a/home/desktops/hyprland/binds.nix b/home/desktops/hyprland/binds.nix
deleted file mode 100644
index d6aa3b9..0000000
--- a/home/desktops/hyprland/binds.nix
+++ /dev/null
@@ -1,130 +0,0 @@
-{config, ...}: let
- mod = "SUPER";
-in {
- wayland.windowManager.hyprland.settings = {
- # Keybinds
- bind = [
- # Launch programs
-
- "${mod}, W, exec, ${config.default.browser}"
- "${mod}, D, exec, ${config.default.appLauncher}"
- "${mod}, L, exec, ${config.default.lockScreen}"
- "${mod}, Return, exec, ${config.default.terminal}"
- ", Print, exec, grimblast copy area"
-
- # Misc
-
- "${mod} SHIFT, L, exit"
-
- # Window operations
-
- "${mod} SHIFT, Q, killactive"
- "${mod} SHIFT, SPACE, togglefloating"
- "${mod}, F, fullscreen"
- "${mod}, J, layoutmsg, togglesplit"
-
- # Move focus with mod + arrow keys
-
- "${mod}, left, movefocus, l"
- "${mod}, right, movefocus, r"
- "${mod}, up, movefocus, u"
- "${mod}, down, movefocus, d"
-
- # Move window across workspace with mod + arrow keys
-
- "${mod} SHIFT, left, hy3:movewindow, l"
- "${mod} SHIFT, right, hy3:movewindow, r"
- "${mod} SHIFT, up, hy3:movewindow, u"
- "${mod} SHIFT, down, hy3:movewindow, d"
-
- # Switch workspaces with mod + [0-9]
-
- "${mod}, 1, workspace, 1"
- "${mod}, 2, workspace, 2"
- "${mod}, 3, workspace, 3"
- "${mod}, 4, workspace, 4"
- "${mod}, 5, workspace, 5"
- "${mod}, 6, workspace, 6"
- "${mod}, 7, workspace, 7"
- "${mod}, 8, workspace, 8"
- "${mod}, 9, workspace, 9"
-
- # Move active window to a workspace with mod + SHIFT + [0-9]
-
- "${mod} SHIFT, 1, movetoworkspacesilent, 1"
- "${mod} SHIFT, 2, movetoworkspacesilent, 2"
- "${mod} SHIFT, 3, movetoworkspacesilent, 3"
- "${mod} SHIFT, 4, movetoworkspacesilent, 4"
- "${mod} SHIFT, 5, movetoworkspacesilent, 5"
- "${mod} SHIFT, 6, movetoworkspacesilent, 6"
- "${mod} SHIFT, 7, movetoworkspacesilent, 7"
- "${mod} SHIFT, 8, movetoworkspacesilent, 8"
- "${mod} SHIFT, 9, movetoworkspacesilent, 9"
- "${mod} SHIFT, 0, movetoworkspacesilent, 10"
-
- # Move to tab
-
- "LALT, 1, hy3:focustab, index, 01"
- "LALT, 2, hy3:focustab, index, 02"
- "LALT, 3, hy3:focustab, index, 03"
- "LALT, 4, hy3:focustab, index, 04"
- "LALT, 5, hy3:focustab, index, 05"
- "LALT, 6, hy3:focustab, index, 06"
- "LALT, 7, hy3:focustab, index, 07"
- "LALT, 8, hy3:focustab, index, 08"
- "LALT, 9, hy3:focustab, index, 09"
- "LALT, 0, hy3:focustab, index, 10"
-
- "${mod} SHIFT, B, hy3:makegroup, h"
- "${mod} SHIFT, V, hy3:makegroup, v"
- "${mod} SHIFT, C, hy3:changegroup, toggletab"
-
- # Scroll through existing workspaces with mod + scroll
-
- "${mod}, mouse_down, workspace, e+1"
- "${mod}, mouse_up, workspace, e-1"
- ];
-
- bindn = [
- # Focus windows with scroll wheel or middle click
-
- ", mouse:272, hy3:focustab, mouse"
- ", mouse_down, hy3:focustab, l, require_hovered"
- ", mouse_up, hy3:focustab, r, require_hovered"
- ];
-
- bindm = [
- # Move/resize windows with mod + LMB/RMB and dragging
-
- "${mod}, mouse:272, movewindow"
- "${mod}, mouse:273, resizewindow"
- ];
-
- binde = [
- # Audio
-
- # raise volume
- ", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+"
- # lower volume
- ", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
- # mute speaker
- ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
- # mute mic
- ", XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
-
- # Media
-
- # play
- ", XF86AudioPlay, exec, playerctl play-pause"
- # next
- ", XF86AudioNext, exec, playerctl next"
- # prev
- ", XF86AudioPrev, exec, playerctl previous"
-
- # Backlight
-
- ", XF86MonBrightnessDown, exec, brightnessctl set 5%-"
- ", XF86MonBrightnessUp, exec, brightnessctl set 5%+"
- ];
- };
-}
diff --git a/home/desktops/hyprland/default.nix b/home/desktops/hyprland/default.nix
index e3624ec..35668f3 100644
--- a/home/desktops/hyprland/default.nix
+++ b/home/desktops/hyprland/default.nix
@@ -6,13 +6,12 @@
}: let
inherit (lib) mkIf;
cfg = config.desktops.hyprland;
+
+ lua = builtins.readFile ./hyprland.lua;
+ lua_cfg = (lib.generators.toLua {}) {inherit (config) monitors theme default autoRun;};
in {
imports = [
- ./binds.nix
- ./env.nix
./idle.nix
- ./plugins.nix
- ./settings.nix
./wallpaper.nix
];
@@ -28,6 +27,17 @@ in {
xwayland.enable = true;
systemd.enable = true;
+
+ plugins = with pkgs; [
+ hy3
+ ];
+
+ configType = "lua";
+ extraConfig = ''
+ local config = ${lua_cfg}
+
+ ${lua}
+ '';
};
};
}
diff --git a/home/desktops/hyprland/env.nix b/home/desktops/hyprland/env.nix
deleted file mode 100644
index 8699587..0000000
--- a/home/desktops/hyprland/env.nix
+++ /dev/null
@@ -1,14 +0,0 @@
-_: {
- wayland.windowManager.hyprland.settings = {
- env = [
- "XDG_CURRENT_DESKTOP,Hyprland"
- "XDG_SESSION_TYPE,wayland"
- "XDG_SESSION_DESKTOP,Hyprland"
- "MOZ_ENABLE_WAYLAND,1"
- "NIXOS_OZONE_WL,1"
-
- "HYPRCURSOR_THEME,rose-pine-hyprcursor"
- "HYPRCURSOR_SIZE,24"
- ];
- };
-}
diff --git a/home/desktops/hyprland/hyprland.lua b/home/desktops/hyprland/hyprland.lua
new file mode 100644
index 0000000..c9596ca
--- /dev/null
+++ b/home/desktops/hyprland/hyprland.lua
@@ -0,0 +1,321 @@
+--[[
+
+ Hyprland Configuration
+ Copyright (c) Freya Murphy 2026
+
+]]--
+
+--[[ PLUGINS ]]--
+
+local hy3 = hl.plugin.hy3
+
+--[[ LIB ]]--
+
+local function exec(cmd)
+ return hl.dsp.exec_cmd(cmd)
+end
+
+local function bind(keys, cb, opts)
+ hl.bind(table.concat(keys, " + "), cb, opts or {})
+end
+
+local function rgb(color)
+ return "rgb(" .. color .. ")"
+end
+
+local function animation(leaf, speed, bezier, style)
+ hl.animation({
+ leaf = leaf,
+ enabled = true,
+ speed = speed,
+ bezier = bezier,
+ style = style,
+ })
+end
+
+--[[ GENERAL ]]--
+
+hl.config({
+ general = {
+ layout = "hy3",
+ resize_on_border = true,
+ extend_border_grab_area = 20,
+ },
+})
+
+
+--[[ MONITORS ]]--
+
+for _,monitor in pairs(config.monitors) do
+ local opts = {
+ scale = monitor.scale,
+ bitdepth = monitor.bitdepth,
+ }
+
+ -- output
+ if monitor.desc == "" then
+ opts.output = monitor.port
+ else
+ opts.output = "desc:" .. monitor.desc
+ end
+
+ -- mode
+ if monitor.size.enabled then
+ opts.mode = monitor.size.x .. "x" .. monitor.size.y
+ else
+ opts.mode = "preferred"
+ end
+
+ -- position
+ if monitor.position.enabled then
+ opts.position = monitor.position.x .. "x" .. monitor.position.y
+ else
+ opts.position = "auto"
+ end
+
+ hl.monitor(opts)
+end
+
+--[[ ENVIRONMENT ]]--
+
+hl.env("XDG_CURRENT_DESKTOP", "Hyprland")
+hl.env("XDG_SESSION_TYPE", "wayland")
+hl.env("XDG_SESSION_DESKTOP", "Hyprland")
+hl.env("MOZ_ENABLE_WAYLAND", "1")
+hl.env("NIXOS_OZONE_WL", "1")
+
+hl.env("HYPRCURSOR_THEME", "rose-pine-hyprcursor")
+hl.env("HYPRCURSOR_SIZE", "24")
+
+--[[ KEYBINDS ]]--
+
+local mod = "SUPER"
+
+-- Launch programs
+bind({mod, "D"}, exec(config.default.appLauncher))
+bind({mod, "W"}, exec(config.default.browser))
+bind({mod, "L"}, exec(config.default.lockScreen))
+bind({mod, "Return"}, exec(config.default.terminal))
+bind({"Print"}, exec("grimblast copy area"))
+
+-- Misc
+bind({mod, "SHIFT", "L"}, hl.dsp.exit())
+
+-- Window operations
+bind({mod, "SHIFT", "Q"}, hl.dsp.window.close())
+bind({mod, "SHIFT", "SPACE"}, hl.dsp.window.float({ action = "toggle" }))
+bind({mod, "F"}, hl.dsp.window.fullscreen({ action = "toggle" }))
+bind({mod, "J"}, hl.dsp.layout("togglesplit"))
+
+-- Move focus with mod + arrow keys
+-- Move window across workspace with mod + arrow keys
+for _,direction in pairs({"left", "right", "up", "down"}) do
+ bind({mod, direction}, hl.dsp.focus({ direction = direction }))
+ bind({mod, "SHIFT", direction}, hy3.move_focus(direction))
+end
+
+-- Switch workspaces with mod + [0-9]
+-- Move active window to a workspace with mod + SHIFT + [0-9]
+-- Move to tab in tab group
+for i = 1, 10 do
+ local key = i % 10
+ bind({mod, key}, hl.dsp.focus({ workspace = i }))
+ bind({mod, "SHIFT", key}, hl.dsp.window.move({ workspace = i }))
+ bind({"ALT", key}, hy3.focus_tab({ index = i }))
+end
+
+-- Hy3 groups and tab groups
+bind({mod, "SHIFT", "B"}, hy3.make_group("h"))
+bind({mod, "SHIFT", "V"}, hy3.make_group("v"))
+bind({mod, "SHIFT", "C"}, hy3.change_group("toggletab"))
+
+-- Scroll through existing workspaces with mod + scroll
+bind({mod, "mouse_down"}, hl.dsp.focus({ workspace = "e+1" }))
+bind({mod, "mouse_up"}, hl.dsp.focus({ workspace = "e-1" }))
+
+-- Focus windows with scroll wheel or middle click
+bind({"mouse_down"}, hy3.focus_tab({ direction = "l", mouse = "require_hovered" }))
+bind({"mouse_up"}, hy3.focus_tab({ direction = "r", mouse = "require_hovered" }))
+
+-- Move/resize windows with mod + LMB/RMB and dragging
+bind({mod, "mouse:272"}, hl.dsp.window.drag(), { mouse = true })
+bind({mod, "mouse:273"}, hl.dsp.window.resize(), { mouse = true })
+
+-- Audio
+bind({"XF86AudioRaiseVolume"}, exec("wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+"))
+bind({"XF86AudioLowerVolume"}, exec("wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"))
+bind({"XF86AudioMute"}, exec("wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"))
+bind({"XF86AudioMicMute"}, exec("wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"))
+
+-- Media
+bind({"XF86AudioPlay"}, exec("playerctl play-pause"))
+bind({"XF86AudioNext"}, exec("playerctl next"))
+bind({"XF86AudioPrev"}, exec("playerctl previous"))
+
+-- Backlight
+bind({"XF86MonBrightnessDown"}, exec("brightnessctl set 5%-"))
+bind({"XF86MonBrightnessUp"}, exec("brightnessctl set 5%+"))
+
+--[[ THEME ]]--
+
+hl.config({
+ general = {
+ gaps_in = config.theme.innerGap,
+ gaps_out = config.theme.outerGap,
+ border_size = config.theme.borderWidth,
+
+ col = {
+ active_border = rgb(config.theme.colors.primary),
+ inactive_border = rgb(config.theme.colors.surface),
+ },
+ },
+
+ decoration = {
+ rounding = config.theme.outerRadius,
+ shadow = {
+ enabled = true,
+ },
+ blur = {
+ enabled = config.theme.blur,
+ size = 4,
+ passes = 2,
+ noise = 0.008,
+ contrast = 0.8916,
+ brightness = 0.8,
+ },
+ },
+})
+
+--[[ INPUT ]]--
+
+hl.config({
+ input = {
+ kb_layout = "us",
+ kb_variant = "",
+ kb_model = "",
+ kb_options = "gtp:alt_shift_toggle, compose:ralt",
+ kb_rules = "",
+
+ follow_mouse = 1,
+
+ sensitivity = 0,
+
+ touchpad = {
+ natural_scroll = true,
+ },
+ },
+})
+
+--[[ GESTURES ]]--
+
+-- Allow 3 finger swipe on trackpad to seek workspaces
+hl.gesture({
+ fingers = 3,
+ direction = "horizontal",
+ action = "workspace",
+})
+
+--[[ ANIMATIONS ]]--
+
+hl.config({
+ animations = {
+ enabled = true,
+ },
+})
+
+hl.curve("default", { type = "bezier", points = {{0.12, 0.92}, {0.08, 1.00}} })
+hl.curve("overshot", { type = "bezier", points = {{0.18, 0.95}, {0.22, 1.03}} })
+hl.curve("linear", { type = "bezier", points = {{1.00, 1.00}, {1.00, 1.00}} })
+
+animation("windows", 5, "default", "popin 60%")
+animation("windowsIn", 6, "overshot", "popin 60%")
+animation("windowsOut", 4, "overshot", "popin 60%")
+animation("windowsMove", 4, "overshot", "slide")
+animation("layers", 4, "default", "popin")
+animation("fadeIn", 7, "default", nil)
+animation("fadeOut", 7, "default", nil)
+animation("fadeSwitch", 7, "default", nil)
+animation("fadeShadow", 7, "default", nil)
+animation("fadeDim", 7, "default", nil)
+animation("fadeLayers", 7, "default", nil)
+animation("workspaces", 5, "overshot", "slide")
+animation("border", 1, "linear", nil)
+animation("borderangle", 24, "linear", "loop")
+
+-- [[ LAYER RULES ]]--
+
+-- Fix wierd borders
+for _,namespace in pairs({"wofi", "notification"}) do
+ hl.layer_rule({ blur = true, match = { namespace = namespace } })
+ hl.layer_rule({ ignore_alpha = 0, match = { namespace = namespace } })
+end
+
+hl.layer_rule({ no_anim = true, match = { namespace = "selection" } })
+
+--[[ XWAYLAND ]]--
+
+hl.config({
+ xwayland = {
+ force_zero_scaling = true,
+ use_nearest_neighbor = false,
+ },
+})
+
+--[[ HY3 ]]--
+
+hl.config({
+ plugin = {
+ hy3 = {
+
+ -- Tabs
+ tabs = {
+ height = 24,
+ text_height = 9,
+ text_padding = 10,
+ padding = 2,
+ render_text = true,
+ text_font = "monospace",
+ radius = config.theme.outerRadius,
+ border_width = config.theme.borderWidth,
+ colors = {
+ active = rgb(config.theme.colors.base),
+ active_border = rgb(config.theme.colors.primary),
+ active_text = rgb(config.theme.colors.text),
+ inactive = rgb(config.theme.colors.base),
+ inactive_border = rgb(config.theme.colors.surface),
+ inactive_text = rgb(config.theme.colors.text),
+ }
+ },
+
+ autotile = {
+ enable = true,
+ },
+ }
+ }
+})
+
+--[[ MISC ]]--
+
+hl.config({
+ misc = {
+ disable_hyprland_logo = true,
+ disable_splash_rendering = true,
+ key_press_enables_dpms = true,
+ mouse_move_enables_dpms = true,
+ enable_anr_dialog = false,
+ vrr = 1,
+ },
+
+ ecosystem = {
+ no_update_news = true,
+ no_donation_nag = true,
+ },
+})
+
+--[[ AUTOSTART ]]--
+
+hl.on("hyprland.start", function()
+ for _,app in config.autoRun do
+ hl.exec_cmd(app)
+ end
+end)
diff --git a/home/desktops/hyprland/plugins.nix b/home/desktops/hyprland/plugins.nix
deleted file mode 100644
index b0ba204..0000000
--- a/home/desktops/hyprland/plugins.nix
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- config,
- pkgs,
- ...
-}: {
- wayland.windowManager.hyprland = {
- plugins = with pkgs; [
- hy3
- ];
-
- settings.plugin = {
- # hy3
- hy3 = {
- tabs = {
- height = 24;
- text_height = 9;
- text_padding = 10;
- padding = 2;
- render_text = true;
- text_font = "monospace";
- radius = config.theme.outerRadius;
- border_width = config.theme.borderWidth;
- colors = {
- active = "rgb(${config.theme.colors.base})";
- active_border = "rgb(${config.theme.colors.primary})";
- active_text = "rgb(${config.theme.colors.text})";
- inactive = "rgb(${config.theme.colors.base})";
- inactive_border = "rgb(${config.theme.colors.surface})";
- inactive_text = "rgb(${config.theme.colors.text})";
- };
- };
-
- autotile = {
- enable = true;
- };
- };
- };
- };
-}
diff --git a/home/desktops/hyprland/settings.nix b/home/desktops/hyprland/settings.nix
deleted file mode 100644
index 98fc12b..0000000
--- a/home/desktops/hyprland/settings.nix
+++ /dev/null
@@ -1,145 +0,0 @@
-{config, ...}: {
- wayland.windowManager.hyprland = {
- importantPrefixes = [
- "bezier"
- "enabled"
- "output"
- ];
-
- settings = {
- # Monitors
- monitorv2 =
- map (monitor: {
- output =
- if monitor.desc == ""
- then monitor.port
- else "desc:${monitor.desc}";
- mode =
- if monitor.size.enabled
- then "${toString monitor.size.x}x${toString monitor.size.y}"
- else "preferred";
- position =
- if monitor.position.enabled
- then "${toString monitor.position.x}x${toString monitor.position.y}"
- else "auto";
- scale = toString monitor.scale;
- bitdepth = toString monitor.bitdepth;
- })
- config.monitors;
-
- # Autostart
- exec-once = config.autoRun;
-
- # General
- general = {
- gaps_in = config.theme.innerGap;
- gaps_out = config.theme.outerGap;
- layout = "hy3";
- resize_on_border = "yes";
- extend_border_grab_area = 20;
- border_size = config.theme.borderWidth;
- "col.active_border" = "rgb(${config.theme.colors.primary})";
- "col.inactive_border" = "rgb(${config.theme.colors.surface})";
- };
-
- # Gestures
- gesture = [
- "3, horizontal, workspace"
- ];
-
- # Decoration
- decoration = {
- rounding = config.theme.outerRadius;
- shadow.enabled = false;
- blur = {
- enabled = config.theme.blur;
- size = 4;
- passes = 2;
- noise = 0.008;
- contrast = 0.8916;
- brightness = 0.8;
- };
- };
-
- animations = {
- enabled = true;
-
- bezier = [
- "default, 0.12, 0.92, 0.08, 1.0"
- "wind, 0.12, 0.92, 0.08, 1.0"
- "overshot, 0.18, 0.95, 0.22, 1.03"
- "linear, 1, 1, 1, 1"
- ];
-
- animation = [
- "windows, 1, 5, wind, popin 60%"
- "windowsIn, 1, 6, overshot, popin 60%"
- "windowsOut, 1, 4, overshot, popin 60%"
- "windowsMove, 1, 4, overshot, slide"
- "layers, 1, 4, default, popin"
- "fadeIn, 1, 7, default"
- "fadeOut, 1, 7, default"
- "fadeSwitch, 1, 7, default"
- "fadeShadow, 1, 7, default"
- "fadeDim, 1, 7, default"
- "fadeLayers, 1, 7, default"
- "workspaces, 1, 5, overshot, slide"
- "border, 1, 1, linear"
- "borderangle, 1, 24, linear, loop"
- ];
- };
-
- # Input
- input = {
- kb_layout = "us";
- kb_variant = "";
- kb_model = "";
- kb_options = "gtp:alt_shift_toggle, compose:ralt";
- kb_rules = "";
- follow_mouse = 1;
- touchpad = {
- natural_scroll = "yes";
- };
- sensitivity = 0;
- };
-
- # Layer rules
- layerrule = [
- # fix weird borders
- "blur true, match:namespace wofi"
- "ignore_alpha 0, match:namespace wofi"
- "blur true, match:namespace notificaations"
- "ignore_alpha 0, match:namespace notifications"
- "blur true, match:namespace swaync-notificaation-window"
- "ignore_alpha 0, match:namespace swaync-notification-window"
- "blur true, match:namespace swaync-control-center"
- "ignore_alpha 0, match:namespace swaync-control-center"
-
- # dont animate slurp
- "no_anim true, match:namespace selection"
- ];
-
- # XWayland
- xwayland = {
- force_zero_scaling = "true";
- use_nearest_neighbor = "false";
- };
-
- # Misc
- misc = {
- disable_hyprland_logo = true;
- disable_splash_rendering = true;
- key_press_enables_dpms = true;
- mouse_move_enables_dpms = true;
- enable_anr_dialog = false;
- vrr = 1;
- };
-
- # Ecosystem
- ecosystem = {
- no_update_news = true;
- no_donation_nag = true;
- };
- }; # end settings
- }; # end hyprland
-}