dots/home/modules/hyprland.nix
2026-02-27 21:25:49 +01:00

325 lines
9.7 KiB
Nix

{pkgs, ...}: {
wayland.windowManager.hyprland = {
enable = true;
systemd.enable = true;
systemd.variables = ["--all"];
xwayland.enable = true;
settings = {
exec-once = [
"wl-clip-persist --clipboard both"
"wl-paste --watch cliphist store"
"hyprpanel"
];
input = {
kb_layout = "cz";
kb_options = "caps:escape";
numlock_by_default = true;
sensitivity = 0;
touchpad = {
natural_scroll = false;
};
};
misc = {
disable_hyprland_logo = true;
layers_hog_keyboard_focus = true;
animate_manual_resizes = true;
enable_swallow = true;
focus_on_activate = true;
middle_click_paste = false;
};
dwindle = {
force_split = 0;
special_scale_factor = 1.0;
split_width_multiplier = 1.0;
use_active_for_splits = true;
pseudotile = "yes";
preserve_split = "yes";
};
general = {
layout = "dwindle";
gaps_in = 4;
gaps_out = 3;
border_size = 2;
};
decoration = {
rounding = 7;
active_opacity = 1.0;
inactive_opacity = 1.0;
fullscreen_opacity = 1.0;
blur.enabled = false;
shadow.enabled = false;
};
animations = {
enabled = true;
bezier = [
"myBezier, 0.05, 0.9, 0.1, 1.05"
];
animation = [
"windows, 1, 7, myBezier"
"windowsOut, 1, 7, default, popin 80%"
"border, 1, 10, default"
"borderangle, 1, 8, default"
"fade, 1, 7, default"
"workspaces, 1, 6, default"
];
};
binds = {
movefocus_cycles_fullscreen = true;
};
bind = [
# keybindings
"SUPER, Return, exec, foot"
"SUPER, B, exec, zen"
"SUPER, Q, killactive,"
"SUPER, F, fullscreen, 0"
"SUPER SHIFT, F, fullscreen, 1"
"SUPER, W, togglefloating"
"SUPER, A, exec, fuzzel"
"SUPER, P, pseudo,"
"SUPER, E, exec, foot yazi"
"SUPER, C, exec, floating-calculator"
"SUPER, code:23, swapsplit"
"SUPER, code:66, togglesplit"
"Alt, F4, exec, hyprctl kill"
"SUPER, S, exec, hyprlock"
# switch focus
"SUPER, left, movefocus, l"
"SUPER, right, movefocus, r"
"SUPER, up, movefocus, u"
"SUPER, down, movefocus, d"
"SUPER, h, movefocus, l"
"SUPER, j, movefocus, d"
"SUPER, k, movefocus, u"
"SUPER, l, movefocus, r"
"SUPER, left, alterzorder, top"
"SUPER, right, alterzorder, top"
"SUPER, up, alterzorder, top"
"SUPER, down, alterzorder, top"
"SUPER, h, alterzorder, top"
"SUPER, j, alterzorder, top"
"SUPER, k, alterzorder, top"
"SUPER, l, alterzorder, top"
# switch workspace
"SUPER, code:10, workspace, 1"
"SUPER, code:11, workspace, 2"
"SUPER, code:12, workspace, 3"
"SUPER, code:13, workspace, 4"
"SUPER, code:14, workspace, 5"
"SUPER, code:15, workspace, 6"
"SUPER, code:16, workspace, 7"
"SUPER, code:17, workspace, 8"
"SUPER, code:18, workspace, 9"
"SUPER, code:19, workspace, 10"
# same as above, but switch to the workspace
"SUPER SHIFT, code:10, movetoworkspace, 1"
"SUPER SHIFT, code:11, movetoworkspace, 2"
"SUPER SHIFT, code:12, movetoworkspace, 3"
"SUPER SHIFT, code:13, movetoworkspace, 4"
"SUPER SHIFT, code:14, movetoworkspace, 5"
"SUPER SHIFT, code:15, movetoworkspace, 6"
"SUPER SHIFT, code:16, movetoworkspace, 7"
"SUPER SHIFT, code:17, movetoworkspace, 8"
"SUPER SHIFT, code:18, movetoworkspace, 9"
"SUPER SHIFT, code:19, movetoworkspace, 10"
"SUPER ALT, code:10, movetoworkspacesilent, 1"
"SUPER ALT, code:11, movetoworkspacesilent, 2"
"SUPER ALT, code:12, movetoworkspacesilent, 3"
"SUPER ALT, code:13, movetoworkspacesilent, 4"
"SUPER ALT, code:14, movetoworkspacesilent, 5"
"SUPER ALT, code:15, movetoworkspacesilent, 6"
"SUPER ALT, code:16, movetoworkspacesilent, 7"
"SUPER ALT, code:17, movetoworkspacesilent, 8"
"SUPER ALT, code:18, movetoworkspacesilent, 9"
"SUPER ALT, code:19, movetoworkspacesilent, 10"
# switch worspace
"SUPER CTRL, code:10, workspace, 11"
"SUPER CTRL, code:11, workspace, 12"
"SUPER CTRL, code:12, workspace, 13"
"SUPER CTRL, code:13, workspace, 14"
"SUPER CTRL, code:14, workspace, 15"
"SUPER CTRL, code:15, workspace, 16"
"SUPER CTRL, code:16, workspace, 17"
"SUPER CTRL, code:17, workspace, 18"
"SUPER CTRL, code:18, workspace, 19"
"SUPER CTRL, code:19, workspace, 20"
# same as above, but switch to the workspace
"SUPER CTRL SHIFT, code:10, movetoworkspace, 11"
"SUPER CTRL SHIFT, code:11, movetoworkspace, 12"
"SUPER CTRL SHIFT, code:12, movetoworkspace, 13"
"SUPER CTRL SHIFT, code:13, movetoworkspace, 14"
"SUPER CTRL SHIFT, code:14, movetoworkspace, 15"
"SUPER CTRL SHIFT, code:15, movetoworkspace, 16"
"SUPER CTRL SHIFT, code:16, movetoworkspace, 17"
"SUPER CTRL SHIFT, code:17, movetoworkspace, 18"
"SUPER CTRL SHIFT, code:18, movetoworkspace, 19"
"SUPER CTRL SHIFT, code:19, movetoworkspace, 20"
"SUPER CTRL ALT, code:10, movetoworkspacesilent, 11"
"SUPER CTRL ALT, code:11, movetoworkspacesilent, 12"
"SUPER CTRL ALT, code:12, movetoworkspacesilent, 13"
"SUPER CTRL ALT, code:13, movetoworkspacesilent, 14"
"SUPER CTRL ALT, code:14, movetoworkspacesilent, 15"
"SUPER CTRL ALT, code:15, movetoworkspacesilent, 16"
"SUPER CTRL ALT, code:16, movetoworkspacesilent, 17"
"SUPER CTRL ALT, code:17, movetoworkspacesilent, 18"
"SUPER CTRL ALT, code:18, movetoworkspacesilent, 19"
"SUPER CTRL ALT, code:19, movetoworkspacesilent, 20"
# window control
"SUPER SHIFT, left, movewindow, l"
"SUPER SHIFT, right, movewindow, r"
"SUPER SHIFT, up, movewindow, u"
"SUPER SHIFT, down, movewindow, d"
"SUPER SHIFT, h, movewindow, l"
"SUPER SHIFT, j, movewindow, d"
"SUPER SHIFT, k, movewindow, u"
"SUPER SHIFT, l, movewindow, r"
"SUPER CTRL, left, resizeactive, -80 0"
"SUPER CTRL, right, resizeactive, 80 0"
"SUPER CTRL, up, resizeactive, 0 -80"
"SUPER CTRL, down, resizeactive, 0 80"
"SUPER CTRL, h, resizeactive, -80 0"
"SUPER CTRL, j, resizeactive, 0 80"
"SUPER CTRL, k, resizeactive, 0 -80"
"SUPER CTRL, l, resizeactive, 80 0"
# media and volume controls
# ",XF86AudioMute,exec, pamixer -t"
",XF86AudioPlay,exec, playerctl play-pause"
",XF86AudioNext,exec, playerctl next"
",XF86AudioPrev,exec, playerctl previous"
",XF86AudioStop,exec, playerctl stop"
];
# mouse binding
bindm = [
"SUPER, mouse:272, movewindow"
"SUPER, mouse:273, resizewindow"
];
windowrule = [
# "float,class:^(mpv)$"
];
};
};
programs.hyprlock = {
enable = true;
settings = {
general.hide_cursor = true;
background = {
blur_size = 3;
blur_passes = 2;
};
};
};
programs.hyprpanel = {
enable = true;
systemd.enable = true;
settings = {
bar = {
launcher.autoDetectIcon = true;
clock.format = "%d %b %H:%M";
workspaces.show_icons = true;
workspaces.workspaces = 20;
};
menus.clock = {
time = {
military = true;
hideSeconds = false;
};
weather.enabled = false;
};
menus.dashboard.directories.enabled = false;
menus.dashboard.shortcuts.enabled = true;
menus.dashboard.stats.enabled = false;
menus.dashboard.controls.enabled = false;
menus.workspaces.show_icons = true;
theme.bar.transparent = true;
theme.bar.buttons.dashboard.icon = "#88B1F7";
theme.bar.buttons.workspaces = {
hover = "#FFFFFF";
active = "#FFFFFF";
occupied = "#88B1F7";
available = "#88B1F7";
numbered_active_underline_color = "#FFFFFF";
};
theme.bar.buttons.clock.text = "#88B1F7";
theme.bar.buttons.clock.icon = "#88B1F7";
theme.bar.menus.menu.clock.time.time = "#88B1F7";
theme.bar.menus.menu.clock.calendar.weekdays = "#88B1F7";
theme.bar.menus.menu.clock.calendar.paginator = "#88B1F7";
theme.bar.menus.menu.clock.calendar.currentday = "#88B1F7";
theme.bar.buttons.notifications.icon = "#88B1F7";
theme.bar.battery.icon = "#88B1F7";
theme.bar.buttons.battery.text = "#88B1F7";
theme.bar.buttons.battery.icon = "#88B1F7";
theme.bar.menus.menu.battery.label.color = "#88B1F7";
theme.bar.menus.menu.battery.slider.primary = "#88B1F7";
theme.bar.menus.menu.battery.listitems.active = "#88B1F7";
theme.bar.menus.menu.battery.icons.active = "#88B1F7";
theme.bar.menus.menu.volume = {
label.color = "#88B1F7";
listitems.active = "#88B1F7";
iconbutton.active = "#88B1F7";
audio_slider.primary = "#88B1F7";
input_slider.primary = "#88B1F7";
};
theme.bar.buttons.volume = {
text = "#88b1f7";
icon = "#88b1f7";
};
theme.font = {
size = "12px";
};
};
};
home.packages = with pkgs; [
hyprpanel
hyprpicker
wl-clip-persist
cliphist
wf-recorder
slurp
grim
wl-clipboard
playerctl
];
}