214 lines
6.8 KiB
Nix
214 lines
6.8 KiB
Nix
{
|
|
wayland.windowManager.hyprland = {
|
|
settings = {
|
|
# autostart
|
|
exec-once = [
|
|
"picokontroller"
|
|
"systemctl --user start hyprpolkitagent"
|
|
"busctl --user -- set-property rs.wl-gammarelay / rs.wl.gammarelay Temperature q 4000"
|
|
"hyprshade on bluelight"
|
|
"fcitx5 -d"
|
|
"webcord --start-minimized --force-audio-share-support"
|
|
"kdeconnect-indicator & kdeconnect-cli -l"
|
|
"signal-desktop --start-in-tray"
|
|
"easyeffects --gapplication-service"
|
|
];
|
|
|
|
input = {
|
|
kb_layout = "de";
|
|
numlock_by_default = true;
|
|
follow_mouse = 1;
|
|
sensitivity = 0; # 0 means no modification
|
|
touchpad = {
|
|
natural_scroll = true;
|
|
};
|
|
};
|
|
|
|
general = {
|
|
"$mainMod" = "SUPER";
|
|
"$terminal" = "alacritty";
|
|
"$menu" = "wofi --show drun --allow-images --no-actions";
|
|
layout = "dwindle";
|
|
gaps_in = 5;
|
|
gaps_out = 10;
|
|
border_size = 2;
|
|
border_part_of_window = false;
|
|
no_border_on_floating = false;
|
|
};
|
|
|
|
plugin = {
|
|
hyprsplit = {
|
|
num_workspaces = 10;
|
|
};
|
|
};
|
|
|
|
misc = {
|
|
disable_hyprland_logo = true;
|
|
always_follow_on_dnd = true;
|
|
layers_hog_keyboard_focus = true;
|
|
animate_manual_resizes = false;
|
|
enable_swallow = true;
|
|
focus_on_activate = true;
|
|
new_window_takes_over_fullscreen = 2;
|
|
middle_click_paste = false;
|
|
};
|
|
|
|
dwindle = {
|
|
pseudotile = true;
|
|
preserve_split = true;
|
|
};
|
|
|
|
master = {
|
|
new_status = "master";
|
|
};
|
|
|
|
decoration = {
|
|
rounding = 10;
|
|
|
|
blur = {
|
|
enabled = true;
|
|
passes = 3;
|
|
};
|
|
|
|
shadow = {
|
|
enabled = true;
|
|
range = 4;
|
|
render_power = 3;
|
|
};
|
|
};
|
|
|
|
animations = {
|
|
enabled = true;
|
|
|
|
# Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
|
|
|
|
bezier = [
|
|
"easeOutQuint,0.23,1,0.32,1"
|
|
"easeInOutCubic,0.65,0.05,0.36,1"
|
|
"linear,0,0,1,1"
|
|
"almostLinear,0.5,0.5,0.75,1.0"
|
|
"quick,0.15,0,0.1,1"
|
|
];
|
|
|
|
animation = [
|
|
"global, 1, 10, default"
|
|
"border, 1, 5.39, easeOutQuint"
|
|
"windows, 1, 4.79, easeOutQuint"
|
|
"windowsIn, 1, 4.1, easeOutQuint, popin 87%"
|
|
"windowsOut, 1, 1.49, linear, popin 87%"
|
|
"fadeIn, 1, 1.73, almostLinear"
|
|
"fadeOut, 1, 1.46, almostLinear"
|
|
"fade, 1, 3.03, quick"
|
|
"layers, 1, 3.81, easeOutQuint"
|
|
"layersIn, 1, 4, easeOutQuint, fade"
|
|
"layersOut, 1, 1.5, linear, fade"
|
|
"fadeLayersIn, 1, 1.79, almostLinear"
|
|
"fadeLayersOut, 1, 1.39, almostLinear"
|
|
"workspaces, 1, 1.94, almostLinear, fade"
|
|
"workspacesIn, 1, 1.21, almostLinear, fade"
|
|
"workspacesOut, 1, 1.94, almostLinear, fade"
|
|
];
|
|
};
|
|
|
|
bind = [
|
|
"$mainMod, Return, exec, $terminal"
|
|
"$mainMod SHIFT, C, killactive"
|
|
"$mainMod SHIFT, Q, exit"
|
|
"$mainMod, V, togglefloating"
|
|
"$mainMod, Space, exec, $menu"
|
|
"$mainMod, P, pseudo" # dwindle
|
|
"$mainMod, J, togglesplit" # dwindle
|
|
|
|
# Move focus with mainMod + arrow keys
|
|
"$mainMod, left, movefocus, l"
|
|
"$mainMod, right, movefocus, r"
|
|
"$mainMod, up, movefocus, u"
|
|
"$mainMod, down, movefocus, d"
|
|
|
|
# Switch workspaces with mainMod + [0-9]
|
|
"$mainMod, 1, split:workspace, 1"
|
|
"$mainMod, 2, split:workspace, 2"
|
|
"$mainMod, 3, split:workspace, 3"
|
|
"$mainMod, 4, split:workspace, 4"
|
|
"$mainMod, 5, split:workspace, 5"
|
|
"$mainMod, 6, split:workspace, 6"
|
|
"$mainMod, 7, split:workspace, 7"
|
|
"$mainMod, 8, split:workspace, 8"
|
|
"$mainMod, 9, split:workspace, 9"
|
|
"$mainMod, 0, split:workspace, 10"
|
|
|
|
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
|
"$mainMod SHIFT, 1, split:movetoworkspacesilent, 1"
|
|
"$mainMod SHIFT, 2, split:movetoworkspacesilent, 2"
|
|
"$mainMod SHIFT, 3, split:movetoworkspacesilent, 3"
|
|
"$mainMod SHIFT, 4, split:movetoworkspacesilent, 4"
|
|
"$mainMod SHIFT, 5, split:movetoworkspacesilent, 5"
|
|
"$mainMod SHIFT, 6, split:movetoworkspacesilent, 6"
|
|
"$mainMod SHIFT, 7, split:movetoworkspacesilent, 7"
|
|
"$mainMod SHIFT, 8, split:movetoworkspacesilent, 8"
|
|
"$mainMod SHIFT, 9, split:movetoworkspacesilent, 9"
|
|
"$mainMod SHIFT, 0, split:movetoworkspacesilent, 10"
|
|
|
|
# Example special workspace (scratchpad)
|
|
"$mainMod, S, togglespecialworkspace, magic"
|
|
"$mainMod SHIFT, S, movetoworkspace, special:magic"
|
|
|
|
# Scroll through existing workspaces with mainMod + scroll
|
|
"$mainMod, mouse_down, workspace, e+1"
|
|
"$mainMod, mouse_up, workspace, e-1"
|
|
|
|
# media and volume controls
|
|
",XF86AudioPlay,exec, playerctl play-pause"
|
|
",XF86AudioNext,exec, playerctl next"
|
|
",XF86AudioPrev,exec, playerctl previous"
|
|
",XF86AudioStop,exec, playerctl stop"
|
|
];
|
|
|
|
# Move/resize windows with mainMod + LMB/RMB and dragging
|
|
bindm = [
|
|
"$mainMod, mouse:272, movewindow"
|
|
"$mainMod, mouse:273, resizewindow"
|
|
];
|
|
|
|
windowrulev2 = [
|
|
"suppressevent maximize, class:.*" # Ignore maximize requests from apps. You'll probably like this.
|
|
"nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0" # Fix some dragging issues with XWayland
|
|
|
|
"float, title:^(Picture-in-Picture)$"
|
|
"opacity 1.0 override 1.0 override, title:^(Picture-in-Picture)$"
|
|
"pin, title:^(Picture-in-Picture)$"
|
|
"float,class:^(pavucontrol)$"
|
|
"float,class:^(SoundWireServer)$"
|
|
"float,class:^(.sameboy-wrapped)$"
|
|
"float,class:^(file_progress)$"
|
|
"float,class:^(confirm)$"
|
|
"float,class:^(dialog)$"
|
|
"float,class:^(download)$"
|
|
"float,class:^(notification)$"
|
|
"float,class:^(error)$"
|
|
"float,class:^(confirmreset)$"
|
|
"float,title:^(Open File)$"
|
|
"float,title:^(File Upload)$"
|
|
"float,title:^(branchdialog)$"
|
|
"float,title:^(Confirm to replace files)$"
|
|
"float,title:^(File Operation Progress)$"
|
|
|
|
# workspace setup
|
|
"workspace 10, class:^(feishin)$"
|
|
|
|
# nextcloud
|
|
"float,class:^(com.nextcloud.desktopclient.nextcloud)$"
|
|
"stayfocused,class:^(com.nextcloud.desktopclient.nextcloud)$" # otherwise window immediately closes
|
|
|
|
# Remove context menu transparency in chromium based apps
|
|
"opaque,class:^()$,title:^()$"
|
|
"noshadow,class:^()$,title:^()$"
|
|
"noblur,class:^()$,title:^()$"
|
|
];
|
|
|
|
monitor = [
|
|
",preferred,auto,auto"
|
|
];
|
|
};
|
|
};
|
|
}
|