{ lib, config, pkgs, ... }: { config = lib.mkIf config.zpha.programs.niri.enable { zpha.programs.niri.settings = { environment = { QT_QPA_PLATFORM = "wayland"; QT_WAYLAND_FORCE_DPI = "physical"; QT_WAYLAND_DISABLE_WINDOWDECORATION = "1"; }; workspace = [ { _args = [ "browser" ]; } { _args = [ "mail" ]; } { _args = [ "terminal" ]; } { _args = [ "chat" ]; } ]; prefer-no-csd = [ ]; gestures.hot-corners = [ ]; layout = { always-center-single-column = true; gaps = 15; background-color = "transparent"; focus-ring = { width = 2; inactive-color = "rgba(59, 135, 86, .9)"; active-color = "rgba(74, 169, 108, .9)"; }; tab-indicator = { gaps-between-tabs = 10; position = "top"; }; }; input = { workspace-auto-back-and-forth = [ ]; focus-follows-mouse._props = { max-scroll-amount = "0%"; }; touchpad = { natural-scroll = [ ]; click-method = "clickfinger"; }; keyboard.xkb = { layout = "us,de,ru"; variant = "mac,qwerty,mac"; options = "grp:alt_shift_toggle"; }; }; binds = (lib.mergeAttrsList ( lib.map (num: { "Mod+${toString num}" = lib.mkDefault { focus-workspace = num; }; "Mod+Shift+${toString num}" = lib.mkDefault { move-column-to-workspace = num; }; }) [ 1 2 3 4 5 6 7 8 9 ] )) // { "Mod+1".focus-workspace = "browser"; "Mod+Shift+1".move-column-to-workspace = "browser"; "Mod+2".focus-workspace = "mail"; "Mod+Shift+2".move-column-to-workspace = "mail"; "Mod+3".focus-workspace = "terminal"; "Mod+Shift+3".move-column-to-workspace = "terminal"; "Mod+4".focus-workspace = "chat"; "Mod+Shift+4".move-column-to-workspace = "chat"; "Mod+Shift+E".quit = [ ]; "Mod+Z".power-off-monitors = [ ]; "Mod+Space".spawn = lib.mkDefault [ (lib.getExe pkgs.fuzzel) ]; "Mod+Return".spawn = [ (lib.getExe pkgs.unstable.app2unit) "-T" ]; "Mod+L".spawn = [ (lib.getExe' pkgs.systemd "loginctl") "lock-session" ]; "Mod+W" = { _props.repeat = false; close-window = [ ]; }; "XF86AudioMute" = { _props.allow-when-locked = true; spawn = lib.mkDefault [ "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle" ]; }; "XF86AudioRaiseVolume" = { _props.allow-when-locked = true; spawn = lib.mkDefault [ "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" ".5%+" ]; }; "XF86AudioLowerVolume" = { _props.allow-when-locked = true; spawn = lib.mkDefault [ "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" ".5%-" ]; }; "XF86MonBrightnessUp" = { _props.allow-when-locked = true; spawn = lib.mkDefault [ (lib.getExe pkgs.brightnessctl) "s" "+2%" ]; }; "XF86MonBrightnessDown" = { _props.allow-when-locked = true; spawn = lib.mkDefault [ (lib.getExe pkgs.brightnessctl) "s" "2%-" ]; }; "Mod+Tab".toggle-overview = [ ]; "Mod+Prior".focus-workspace-up = [ ]; "Mod+Next".focus-workspace-down = [ ]; "Mod+WheelScrollDown" = { _props.cooldown-ms = 150; focus-workspace-down = [ ]; }; "Mod+WheelScrollUp" = { _props.cooldown-ms = 150; focus-workspace-up = [ ]; }; "Mod+WheelScrollRight".focus-column-right = [ ]; "Mod+WheelScrollLeft".focus-column-left = [ ]; "Mod+Shift+Prior".move-window-up-or-to-workspace-up = [ ]; "Mod+Shift+Next".move-window-down-or-to-workspace-down = [ ]; "Mod+Ctrl+Left".focus-monitor-left = [ ]; "Mod+Ctrl+Right".focus-monitor-right = [ ]; "Mod+Left".focus-column-left = [ ]; "Mod+Right".focus-column-right = [ ]; "Mod+Up".focus-window-or-workspace-up = [ ]; "Mod+Down".focus-window-or-workspace-down = [ ]; "Mod+Shift+Left".move-column-left = [ ]; "Mod+Shift+Right".move-column-right = [ ]; "Mod+Shift+Up".move-window-up = [ ]; "Mod+Shift+Down".move-window-down = [ ]; "Mod+R".switch-preset-column-width = [ ]; "Mod+Shift+R".switch-preset-window-height = [ ]; "Mod+Ctrl+R".reset-window-height = [ ]; "Mod+C".center-window = [ ]; "Mod+F".maximize-column = [ ]; "Mod+Ctrl+F".expand-column-to-available-width = [ ]; "Mod+Shift+F".fullscreen-window = [ ]; "Mod+Alt+F".set-column-width = "50%"; "Mod+Minus".set-column-width = "-10%"; "Mod+Equal".set-column-width = "+10%"; "Mod+Shift+Minus".set-window-height = "-10%"; "Mod+Shift+Equal".set-window-height = "+10%"; "Mod+Shift+Space".toggle-window-floating = [ ]; "Mod+T".toggle-column-tabbed-display = [ ]; "Mod+Print".spawn = [ (lib.getExe pkgs.hyprpicker) "--lowercase-hex" "--autocopy" ]; "Print".screenshot = [ ]; "Shift+Print".screenshot-window = [ ]; }; }; }; }