nixos-config/home/hyprland.nix
2025-08-09 12:02:06 -06:00

206 lines
5.8 KiB
Nix

{
config,
pkgs,
inputs,
...
}:
{
wayland.windowManager.hyprland = {
settings = {
"$mod" = "SUPER";
monitor = [
"DP-1, 1920x1080@144, 0x0, 1"
"DP-3, 2560x1440@240, 1920x0, 1"
"HMDI-A-1, 3440x1440@160, 4480x0, 1"
# "DP-3,addreserved,30,0,0,0"
];
# Mouse stuff (Ew... I know)
bindm = [
# Left click move
"$mod, mouse:272, movewindow"
# Left click resize
"ALT, mouse:272, resizewindow"
# "ALT CTRL, mouse:272, resizewindow 1"
];
binde = [
"$mod CTRL, h, resizeactive, -30 0"
"$mod CTRL, l, resizeactive, 30 0"
"$mod CTRL, j, resizeactive, 0 30"
"$mod CTRL, k, resizeactive, 0 -30"
];
bind = [
"$mod, h, movefocus, l"
"$mod, l, movefocus, r"
"$mod, k, movefocus, u"
"$mod, j, movefocus, d"
"$mod SHIFT, q, killactive"
"$mod, 0, layoutmsg, rollnext"
"$mod SHIFT, n, layoutmsg, cycleprev"
"$mod SHIFT, p, layoutmsg, cyclenext"
"$mod, f, fullscreen, 0"
"$mod, d, exec, wofi --show drun"
"$mod, t, exec, kitty --single-instance"
"$mod, c, exec, code"
"$mod SHIFT, l, movewindow, mon:-1"
"$mod SHIFT, h, movewindow, mon:+1"
", Print, exec, grimblast copy area"
"$mod, e, exec, thunderbird"
"$mod, r, exec, kitty -- zsh -c 'exec yazi; exec zsh'"
"$mod, b, exec, kitty -- zsh -c 'btop; exec zsh'"
"$mod CTRL, n, exec, kitty --start-as=normal -- zsh -ic 'code ~/nixos-config && exit'"
"$mod, i, exec, brave"
"$mod, u, exec, kitty --start-as=normal -- zsh -ic 'home'"
"$mod, y, exec, kitty --start-as=normal -- zsh -ic 'repos'"
"$mod, s, togglespecialworkspace, special1"
# "$mod, v, togglespecialworkspace, special2"
"$mod, p, layoutmsg, swapwithmaster"
"$mod, v, togglefloating, active"
# Log out
# "$mod, -, exec, hyprctl dispatch exit"
"$mod SHIFT ALT, x, exec, hyprctl dispatch exit"
"$mod ALT, L, exec, hyprlock --immediate"
# Shift+Print → select area and copy
"SHIFT, Print, exec, grimblast copy area"
# Ctrl+Print → select window and copy
"CTRL, Print, exec, grimblast copy active"
]
++ (
# workspaces
# binds $mod + [shift +] {1..9} to [move to] workspace {1..9}
builtins.concatLists (
builtins.genList (
i:
let
ws = i + 1;
in
[
"$mod, code:1${toString i}, workspace, ${toString ws}"
"$mod SHIFT, code:1${toString i}, movetoworkspace, ${toString ws}"
]
) 9
)
);
general = {
layout = "master";
};
windowrulev2 = [
"opacity 0.85, class:^(Code)$"
"opacity 0.85, class:^(kitty)$"
];
# layerrule = [
# "ignorealpha 0.1, title:^(Blur)$"
# ];
decoration = {
# active_opacity = 1.0;
# inactive_opacity = 1.0;
# rounding = 5;
blur = {
enabled = true;
size = 5;
passes = 2;
brightness = 1;
contrast = 1.0;
ignore_opacity = false;
noise = 0;
new_optimizations = true;
# xray = true;
};
blurls = "^(popup|menu)$";
shadow = {
enabled = true;
ignore_window = true;
offset = "0 2";
range = 20;
render_power = 3;
color = "rgba(00000055)";
};
};
animations = {
enabled = true;
bezier = [
"fluent_decel, 0, 0.2, 0.4, 1"
"easeOutCirc, 0, 0.55, 0.45, 1"
"easeOutCubic, 0.33, 1, 0.68, 1"
"fade_curve, 0, 0.55, 0.45, 1"
];
animation = [
# name, enable, speed, curve, style
# Windows
"windowsIn, 0, 4, easeOutCubic, popin 20%" # window open
"windowsOut, 0, 4, fluent_decel, popin 80%" # window close.
"windowsMove, 1, 2, fluent_decel, slide" # everything in between, moving, dragging, resizing.
# Fade
"fadeIn, 1, 3, fade_curve" # fade in (open) -> layers and windows
"fadeOut, 1, 3, fade_curve" # fade out (close) -> layers and windows
"fadeSwitch, 0, 1, easeOutCirc" # fade on changing activewindow and its opacity
"fadeShadow, 1, 10, easeOutCirc" # fade on changing activewindow for shadows
"fadeDim, 1, 4, fluent_decel" # the easing of the dimming of inactive windows
# "border, 1, 2.7, easeOutCirc" # for animating the border's color switch speed
# "borderangle, 1, 30, fluent_decel, once" # for animating the border's gradient angle - styles: once (default), loop
"workspaces, 1, 4, easeOutCubic, fade" # styles: slide, slidevert, fade, slidefade, slidefadevert
];
};
exec-once = [
# "sleep 2 && waybar &"
"hypridle &"
# "waybar &"
"eval $(gnome-keyring-daemon --start --components=secrets,ssh,gpg)"
# "hash dbus-update-activation-environment 2>/dev/null"
# "dbus-update-activation-environment --all --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
"systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
# "nm-applet &"
# "poweralertd &"
# "wl-clip-persist --clipboard both &"
# "wl-paste --watch cliphist store &"
# "waybar &"
# "swaync &"
# "hyprctl setcursor Bibata-Modern-Ice 24 &"
# "swww-daemon &"
# "hyprlock"
];
plugins = [
# inputs.hyprland-plugins.packages.${pkgs.stdenv.hostPlatform.system}.hyprbars
];
};
};
}