2024-08-28 13:52:43 +02:00
|
|
|
{
|
|
|
|
config,
|
|
|
|
lib,
|
|
|
|
...
|
|
|
|
}: let
|
|
|
|
inherit (builtins) toString;
|
2025-04-09 15:31:18 +02:00
|
|
|
inherit (lib.attrsets) mapAttrsToList;
|
|
|
|
|
2024-09-16 21:02:38 +02:00
|
|
|
inherit (config.modules.style.colorScheme) colors;
|
2025-04-09 15:31:18 +02:00
|
|
|
inherit (config.modules.system.hardware) monitors;
|
2024-08-28 13:52:43 +02:00
|
|
|
in {
|
2024-11-04 12:35:21 +01:00
|
|
|
config = {
|
|
|
|
programs.hyprland = {
|
|
|
|
settings = {
|
|
|
|
# Hyprland settings
|
|
|
|
"$mainMod" = "SUPER";
|
2024-08-28 13:52:43 +02:00
|
|
|
|
2024-11-04 12:35:21 +01:00
|
|
|
# Monitor config
|
|
|
|
# Thanks Poz for inspiration, using an attrSet is actually much smarter
|
|
|
|
# than using a normal list.
|
|
|
|
monitor =
|
|
|
|
mapAttrsToList (
|
|
|
|
name: m: let
|
|
|
|
w = toString m.resolution.x;
|
|
|
|
h = toString m.resolution.y;
|
|
|
|
refreshRate = toString m.refreshRate;
|
|
|
|
x = toString m.position.x;
|
|
|
|
y = toString m.position.y;
|
|
|
|
scale = toString m.scale;
|
|
|
|
in "${name},${w}x${h}@${refreshRate},${x}x${y},${scale}"
|
|
|
|
)
|
|
|
|
monitors;
|
2024-08-28 13:52:43 +02:00
|
|
|
|
2024-11-04 12:35:21 +01:00
|
|
|
# Input settings
|
|
|
|
input = {
|
2025-03-31 11:05:32 +02:00
|
|
|
kb_layout = "us,ru";
|
|
|
|
kb_variant = ",phonetic_winkeys";
|
2025-04-09 15:31:18 +02:00
|
|
|
kb_options = "grp:rctrl_rshift_toggle, compose:102";
|
2024-08-28 13:52:43 +02:00
|
|
|
|
2024-11-04 12:35:21 +01:00
|
|
|
follow_mouse = true;
|
2024-08-28 13:52:43 +02:00
|
|
|
|
2024-11-04 12:35:21 +01:00
|
|
|
repeat_rate = 60;
|
|
|
|
repeat_delay = 200;
|
2024-08-28 13:52:43 +02:00
|
|
|
|
2024-11-04 12:35:21 +01:00
|
|
|
touchpad = {
|
|
|
|
disable_while_typing = true;
|
|
|
|
};
|
2024-08-28 13:52:43 +02:00
|
|
|
};
|
|
|
|
|
2024-11-04 12:35:21 +01:00
|
|
|
general = {
|
2025-03-26 19:15:12 +01:00
|
|
|
layout = "dwindle";
|
2024-11-04 12:35:21 +01:00
|
|
|
gaps_in = 0;
|
|
|
|
gaps_out = 0;
|
|
|
|
border_size = 2;
|
2024-08-28 13:52:43 +02:00
|
|
|
|
2024-11-04 12:35:21 +01:00
|
|
|
"col.active_border" = "0xff${colors.base07}";
|
|
|
|
no_border_on_floating = true;
|
2024-10-18 18:50:55 +02:00
|
|
|
};
|
2024-10-29 18:29:39 +01:00
|
|
|
|
2025-04-09 15:31:18 +02:00
|
|
|
ecosystem.no_update_news = true;
|
|
|
|
|
2024-11-04 12:35:21 +01:00
|
|
|
plugin = {
|
|
|
|
hyprsplit = {
|
|
|
|
num_workspaces = 10;
|
|
|
|
persistent_workspaces = true;
|
2025-02-26 21:54:48 +01:00
|
|
|
};
|
2024-11-04 12:35:21 +01:00
|
|
|
dynamic-cursors = {
|
|
|
|
enabled = true;
|
|
|
|
|
|
|
|
mode = "rotate";
|
|
|
|
rotate = {
|
|
|
|
length = 20;
|
|
|
|
offset = 0.0;
|
|
|
|
};
|
|
|
|
threshhold = 2;
|
|
|
|
shake.enabled = false;
|
2024-10-29 18:29:39 +01:00
|
|
|
};
|
|
|
|
};
|
2024-08-28 13:52:43 +02:00
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|