312 lines
9.6 KiB
Nix
312 lines
9.6 KiB
Nix
{...}: {
|
|
wayland.windowManager.hyprland = {
|
|
enable = true;
|
|
package = null;
|
|
portalPackage = null;
|
|
|
|
plugins = [
|
|
#inputs.hyprland-plugins.packages.${pkgs.stdenv.hostPlatform.system}.hyprscrolling
|
|
];
|
|
|
|
xwayland.enable = true;
|
|
|
|
extraConfig = ''
|
|
source = ./colors.conf
|
|
source = ./theme.conf
|
|
source = ./windowrules.conf
|
|
|
|
source = ./keybinds/virtual.conf
|
|
'';
|
|
|
|
settings = {
|
|
# shorthand command keywords
|
|
"$mod" = "SUPER";
|
|
|
|
# applications
|
|
"$terminal" = "kitty";
|
|
"$explorer" = "kitty -e yazi";
|
|
"$browser" = "zen-twilight";
|
|
|
|
# menu
|
|
"$menu" = "rofi";
|
|
|
|
# startup programs
|
|
exec-once = [
|
|
"waybar"
|
|
"awww-daemon"
|
|
|
|
"wl-paste --type text --watch cliphist store"
|
|
"wl-paste --type image --watch cliphist store"
|
|
"wl-clip-persist --clipboard regular"
|
|
|
|
"playerctld daemon"
|
|
|
|
# swaps around the 3rd and 4th workspace because they always start
|
|
# in the wrong order
|
|
"hyprctl dispatch workspace 4 && hyprctl dispatch workspace 5 && hyprctl dispatch workspace 3 && hyprctl dispatch workspace 4 && hyprctl dispatch workspace 5 && hyprctl dispatch workspace 3 && hyprctl dispatch workspace 1"
|
|
];
|
|
|
|
# monitor configuration
|
|
monitor = [
|
|
# note: display stream compression pending for open source
|
|
# amd gpu driver and my monitor (VG279QM) only supports DP 1.2
|
|
# so no >240hz atm
|
|
"DP-2, 1920x1080@239.76, 0x0, 1" # main monitor
|
|
"DP-3, 1920x1080@143.61, 1920x0, 1" # second monitor
|
|
"HDMI-A-2, 2560x1440@59.95, 3840x0, 1" # third monitor (drawing tablet)
|
|
"HDMI-A-1, 1920x1080@60.00, -1920x0, 1" # tv
|
|
];
|
|
|
|
general = {
|
|
gaps_in = 5;
|
|
gaps_out = "0, 10, 10, 10";
|
|
border_size = 2;
|
|
layout = "dwindle";
|
|
};
|
|
|
|
plugin = {
|
|
# options at https://github.com/hyprwm/hyprland-plugins/tree/main/hyprscrolling
|
|
hyprscrolling = {
|
|
fullscreen_on_one_column = false;
|
|
column_width = 1.0;
|
|
};
|
|
};
|
|
|
|
dwindle = {
|
|
preserve_split = true;
|
|
};
|
|
|
|
decoration = {
|
|
rounding = 8;
|
|
|
|
active_opacity = 1.00;
|
|
inactive_opacity = 1.00;
|
|
|
|
blur = {
|
|
xray = true;
|
|
size = 6;
|
|
passes = 2;
|
|
#vibrancy = 0.3;
|
|
special = true;
|
|
};
|
|
};
|
|
|
|
bezier = [
|
|
"workspace_curve, 0.56,0.19,0.24,0.58"
|
|
"workspace_in_curve, 0.56,0.19,0.56,0.99"
|
|
];
|
|
|
|
animation = [
|
|
#"workspaces, 1, 1.94, workspace_in_curve, slide"
|
|
#"workspacesIn, 1, 1.21, workspace_in_curve, slide"
|
|
#"workspacesOut, 1, 1.94, workspace_in_curve, slide"
|
|
];
|
|
|
|
input = {
|
|
repeat_rate = 50;
|
|
repeat_delay = 300;
|
|
|
|
sensitivity = 0; # 0 = no modification
|
|
accel_profile = "flat";
|
|
force_no_accel = false; # not recommended to turn on
|
|
};
|
|
|
|
cursor.no_hardware_cursors = true;
|
|
|
|
misc = {
|
|
enable_anr_dialog = false;
|
|
font_family = "DepartureMono Nerd Font";
|
|
};
|
|
|
|
# bindings
|
|
bind = [
|
|
# binds for applications
|
|
"$mod, t, exec, $terminal"
|
|
"$mod, r, exec, $browser"
|
|
"$mod, e, exec, $explorer"
|
|
|
|
# binds for rofi
|
|
"$mod, d, exec, pkill -x rofi || rofi -show drun -show-icons"
|
|
"alt, tab, exec, pkill -x rofi || rofi -modi window -show window -show-icons"
|
|
"$mod, v, exec, pkill -x rofi || cliphist list | rofi -dmenu | cliphist decode | wl-copy"
|
|
|
|
# screenshots
|
|
# todo: add active monitor
|
|
"$mod, s, exec, grim -g \"\$(slurp -d)\" - | wl-copy" # region
|
|
"$mod+alt, s, exec, grim -g \"\$(slurp -o)\" - | wl-copy" # monitor
|
|
"$mod+ctrl, s, exec, grim - | wl-copy" # all monitors
|
|
|
|
# hyprpicker
|
|
"$mod, n, exec, hyprpicker -v"
|
|
# hyprlock
|
|
"$mod+alt, y, exec, hyprlock"
|
|
# task manager
|
|
"$mod+ctrl, escape, exec, task-manager.sh"
|
|
"$mod+ctrl, grave, exec, task-manager.sh"
|
|
|
|
# media binds (more in binde below)
|
|
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
|
", XF86AudioPlay, exec, playerctl play-pause"
|
|
", XF86AudioNext, exec, playerctl next"
|
|
", XF86AudioPrev, exec, playerctl previous"
|
|
"Shift_R, XF86AudioPlay, exec, playerctl shuffle toggle"
|
|
"Shift_R, XF86AudioNext, exec, playerctl loop track"
|
|
|
|
# manage windows / session
|
|
"$mod+alt, c, killactive"
|
|
"$mod, f, fullscreen"
|
|
"$mod, x, togglefloating"
|
|
"$mod, i, togglesplit"
|
|
"$mod+Alt, Delete, exit" # exit hyprland
|
|
|
|
# move focus
|
|
"$mod, h, movefocus, l"
|
|
"$mod, j, movefocus, d"
|
|
"$mod, k, movefocus, u"
|
|
"$mod, l, movefocus, r"
|
|
|
|
# move window
|
|
"$mod+alt, h, movewindow, l"
|
|
"$mod+alt, j, movewindow, d"
|
|
"$mod+alt, k, movewindow, u"
|
|
"$mod+alt, l, movewindow, r"
|
|
|
|
# swap window
|
|
"$mod+ctrl, h, swapwindow, l"
|
|
"$mod+ctrl, j, swapwindow, d"
|
|
"$mod+ctrl, k, swapwindow, u"
|
|
"$mod+ctrl, l, swapwindow, r"
|
|
|
|
# move column (hyprscrolling)
|
|
"$mod, period, layoutmsg, move +col"
|
|
"$mod, comma, layoutmsg, move -col"
|
|
|
|
# focus monitor
|
|
#"$mod+Ctrl+Tab, 1, focusmonitor, DP-2"
|
|
#"$mod+Ctrl+Tab, 2, focusmonitor, DP-3"
|
|
#"$mod+Ctrl+Tab, 3, focusmonitor, HDMI-A-2"
|
|
#"$mod+Ctrl+Tab, 4, focusmonitor, HDMI-A-1"
|
|
|
|
# move workspace to monitor
|
|
#"$mod+Tab, 1, movecurrentworkspacetomonitor, DP-2"
|
|
#"$mod+Tab, 2, movecurrentworkspacetomonitor, DP-3"
|
|
#"$mod+Tab, 3, movecurrentworkspacetomonitor, HDMI-A-2"
|
|
#"$mod+Tab, 4, movecurrentworkspacetomonitor, HDMI-A-1"
|
|
|
|
# special workspace
|
|
"$mod, escape, togglespecialworkspace"
|
|
"$mod+shift, escape, movetoworkspace, special"
|
|
"$mod+alt, escape, movetoworkspacesilent, special"
|
|
"$mod, grave, togglespecialworkspace"
|
|
"$mod+shift, grave, movetoworkspace, special"
|
|
"$mod+alt, grave, movetoworkspacesilent, special"
|
|
|
|
# switch workspaces
|
|
"$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"
|
|
"$mod, 0, workspace, 10"
|
|
"$mod, minus, workspace, 11"
|
|
"$mod, equal, workspace, 12"
|
|
|
|
# move focused window to workspace
|
|
"$mod+shift, 1, movetoworkspace, 1"
|
|
"$mod+shift, 2, movetoworkspace, 2"
|
|
"$mod+shift, 3, movetoworkspace, 3"
|
|
"$mod+shift, 4, movetoworkspace, 4"
|
|
"$mod+shift, 5, movetoworkspace, 5"
|
|
"$mod+shift, 6, movetoworkspace, 6"
|
|
"$mod+shift, 7, movetoworkspace, 7"
|
|
"$mod+shift, 8, movetoworkspace, 8"
|
|
"$mod+shift, 9, movetoworkspace, 9"
|
|
"$mod+shift, 0, movetoworkspace, 10"
|
|
"$mod+shift, minus, movetoworkspace, 11"
|
|
"$mod+shift, equal, movetoworkspace, 12"
|
|
|
|
# move focused window to workspace silently
|
|
"$mod+alt, 1, movetoworkspacesilent, 1"
|
|
"$mod+alt, 2, movetoworkspacesilent, 2"
|
|
"$mod+alt, 3, movetoworkspacesilent, 3"
|
|
"$mod+alt, 4, movetoworkspacesilent, 4"
|
|
"$mod+alt, 5, movetoworkspacesilent, 5"
|
|
"$mod+alt, 6, movetoworkspacesilent, 6"
|
|
"$mod+alt, 7, movetoworkspacesilent, 7"
|
|
"$mod+alt, 8, movetoworkspacesilent, 8"
|
|
"$mod+alt, 9, movetoworkspacesilent, 9"
|
|
"$mod+alt, 0, movetoworkspacesilent, 10"
|
|
"$mod+alt, minus, movetoworkspacesilent, 11"
|
|
"$mod+alt, equal, movetoworkspacesilent, 12"
|
|
|
|
# move current workspace to monitor
|
|
"$mod+shift+alt, 1, movecurrentworkspacetomonitor, DP-2"
|
|
"$mod+shift+alt, 2, movecurrentworkspacetomonitor, DP-3"
|
|
"$mod+shift+alt, 3, movecurrentworkspacetomonitor, HDMI-A-2"
|
|
"$mod+shift+alt, 4, movecurrentworkspacetomonitor, HDMI-A-1"
|
|
];
|
|
|
|
# bindings for mouse
|
|
bindm = [
|
|
"$mod, mouse:272, movewindow" # left click
|
|
"$mod, mouse:273, resizewindow" # right click
|
|
];
|
|
|
|
# repeating binds, repeats when held
|
|
binde = [
|
|
", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%+"
|
|
", XF86AudioLowerVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%-"
|
|
"Shift_R, XF86AudioRaiseVolume, exec, playerctl volume 0.05+"
|
|
"Shift_R, XF86AudioLowerVolume, exec, playerctl volume 0.05-"
|
|
|
|
# resize window
|
|
# variable for `resizeactive` is (x, y)
|
|
# starting at 0, 0 in the top left
|
|
# meaning:
|
|
# -x = left
|
|
# +x = right
|
|
# -y = up
|
|
# +y = down
|
|
"$mod+ctrl+shift, h, resizeactive, -10 0"
|
|
"$mod+ctrl+shift, j, resizeactive, 0 10"
|
|
"$mod+ctrl+shift, k, resizeactive, 0 -10"
|
|
"$mod+ctrl+shift, l, resizeactive, 10 0"
|
|
];
|
|
|
|
layerrule = [
|
|
#"blur, aurorashell"
|
|
#"ignorealpha 0.7, aurorashell"
|
|
|
|
"blur on, match:namespace waybar"
|
|
"ignore_alpha 0, match:namespace waybar"
|
|
|
|
"blur on, match:namespace rofi"
|
|
"xray on, match:namespace rofi"
|
|
"ignore_alpha 0, match:namespace rofi"
|
|
];
|
|
|
|
env = [
|
|
"EDITOR,auravim"
|
|
|
|
"XCURSOR_THEME,Bunny (Icy) and Strawberries"
|
|
"XCURSOR_SIZE,24"
|
|
"HYPRCURSOR_THEME,Bunny (Icy) and Strawberries"
|
|
"HYPRCURSOR_SIZE,24"
|
|
|
|
"QT_QPA_PLATFORM,wayland"
|
|
];
|
|
};
|
|
};
|
|
|
|
# extra hyprland config for organisation,
|
|
# and to load colors.conf
|
|
# writes ./hypr to ~/.config/hypr
|
|
xdg.configFile."hypr" = {
|
|
recursive = true;
|
|
source = ./hypr;
|
|
};
|
|
}
|