diff --git a/modules/scrolling-desktop/default.nix b/modules/scrolling-desktop/default.nix index 00ed2b0..a25dd8a 100644 --- a/modules/scrolling-desktop/default.nix +++ b/modules/scrolling-desktop/default.nix @@ -43,7 +43,6 @@ gimp darktable reversal-icon-theme - nerd-fonts.victor-mono adwaita-fonts bodoni-moda nautilus @@ -151,6 +150,10 @@ inputs.dms.homeModules.dank-material-shell ]; + home.package = with pkgs; [ + nerd-fonts.victor-mono + ]; + programs.dank-material-shell = { enable = true; systemd = { @@ -163,11 +166,602 @@ enableClipboardPaste = true; settings = { - theme = "dark"; + currentThemeName = "dynamic"; + currentThemeCategory = "dynamic"; + customThemeFile = ""; + registryThemeVariants = { }; + matugenScheme = "scheme-tonal-spot"; + runUserMatugenTemplates = true; + matugenTargetMonitor = ""; + popupTransparency = 1; + dockTransparency = 1; + widgetBackgroundColor = "sch"; + widgetColorMode = "default"; + controlCenterTileColorMode = "primary"; + buttonColorMode = "primary"; + cornerRadius = 12; + niriLayoutGapsOverride = 8; + layoutBorderSize = 2; + showSeconds = false; + padHours12Hour = false; + useFahrenheit = false; + windSpeedUnit = "ms"; + nightModeEnabled = false; + animationSpeed = 1; + customAnimationDuration = 500; + syncComponentAnimationSpeeds = true; + popoutAnimationSpeed = 1; + popoutCustomAnimationDuration = 150; + modalAnimationSpeed = 1; + modalCustomAnimationDuration = 150; + enableRippleEffects = false; + wallpaperFillMode = "Fill"; + blurredWallpaperLayer = false; + blurWallpaperOnOverview = false; + showLauncherButton = true; + showWorkspaceSwitcher = true; + showFocusedWindow = true; + showWeather = true; + showMusic = true; + showClipboard = true; + showCpuUsage = true; + showMemUsage = true; + showCpuTemp = true; + showGpuTemp = true; + selectedGpuIndex = 0; + enabledGpuPciIds = [ ]; + showSystemTray = true; + showClock = true; + showNotificationButton = true; + showBattery = true; + showControlCenterButton = true; + showCapsLockIndicator = true; + controlCenterShowNetworkIcon = true; + controlCenterShowBluetoothIcon = true; + controlCenterShowAudioIcon = true; + controlCenterShowAudioPercent = false; + controlCenterShowVpnIcon = true; + controlCenterShowBrightnessIcon = false; + controlCenterShowBrightnessPercent = false; + controlCenterShowMicIcon = false; + controlCenterShowMicPercent = false; + controlCenterShowBatteryIcon = false; + controlCenterShowPrinterIcon = false; + controlCenterShowScreenSharingIcon = true; + showPrivacyButton = true; + privacyShowMicIcon = false; + privacyShowCameraIcon = false; + privacyShowScreenShareIcon = false; + controlCenterWidgets = [ + { + id = "volumeSlider"; + enabled = true; + width = 50; + } + { + id = "brightnessSlider"; + enabled = true; + width = 50; + } + { + id = "wifi"; + enabled = true; + width = 50; + } + { + id = "bluetooth"; + enabled = true; + width = 50; + } + { + id = "audioOutput"; + enabled = true; + width = 50; + } + { + id = "audioInput"; + enabled = true; + width = 50; + } + { + id = "nightMode"; + enabled = true; + width = 50; + } + { + id = "darkMode"; + enabled = true; + width = 50; + } + ]; + showWorkspaceIndex = true; + showWorkspaceName = false; + showWorkspacePadding = false; + workspaceScrolling = false; + showWorkspaceApps = false; + workspaceDragReorder = true; + maxWorkspaceIcons = 3; + workspaceAppIconSizeOffset = 0; + groupWorkspaceApps = true; + workspaceFollowFocus = false; + showOccupiedWorkspacesOnly = false; + reverseScrolling = false; + dwlShowAllTags = false; + workspaceColorMode = "default"; + workspaceOccupiedColorMode = "none"; + workspaceUnfocusedColorMode = "default"; + workspaceUrgentColorMode = "default"; + workspaceFocusedBorderEnabled = false; + workspaceFocusedBorderColor = "primary"; + workspaceFocusedBorderThickness = 2; + workspaceNameIcons = { }; + waveProgressEnabled = true; + scrollTitleEnabled = true; + audioVisualizerEnabled = false; + audioScrollMode = "volume"; + audioWheelScrollAmount = 5; + clockCompactMode = false; + focusedWindowCompactMode = false; + runningAppsCompactMode = true; + barMaxVisibleApps = 0; + barMaxVisibleRunningApps = 0; + barShowOverflowBadge = true; + appsDockHideIndicators = false; + appsDockColorizeActive = false; + appsDockActiveColorMode = "primary"; + appsDockEnlargeOnHover = false; + appsDockEnlargePercentage = 125; + appsDockIconSizePercentage = 100; + keyboardLayoutNameCompactMode = false; + runningAppsCurrentWorkspace = true; + runningAppsGroupByApp = false; + runningAppsCurrentMonitor = false; + appIdSubstitutions = [ + { + pattern = "Spotify"; + replacement = "spotify"; + type = "exact"; + } + { + pattern = "beepertexts"; + replacement = "beeper"; + type = "exact"; + } + { + pattern = "home assistant desktop"; + replacement = "homeassistant-desktop"; + type = "exact"; + } + { + pattern = "com.transmissionbt.transmission"; + replacement = "transmission-gtk"; + type = "contains"; + } + { + pattern = "^steam_app_(\\d+)$"; + replacement = "steam_icon_$1"; + type = "regex"; + } + ]; + centeringMode = "index"; + clockDateFormat = "dddd, MMMM d"; + lockDateFormat = "dddd, MMMM d"; + mediaSize = 1; + appLauncherViewMode = "list"; + spotlightModalViewMode = "list"; + browserPickerViewMode = "grid"; + browserUsageHistory = { }; + appPickerViewMode = "grid"; + filePickerUsageHistory = { }; + sortAppsAlphabetically = false; + appLauncherGridColumns = 4; + spotlightCloseNiriOverview = true; + spotlightSectionViewModes = { }; + appDrawerSectionViewModes = { }; + niriOverviewOverlayEnabled = true; + dankLauncherV2Size = "compact"; + dankLauncherV2BorderEnabled = false; + dankLauncherV2BorderThickness = 2; + dankLauncherV2BorderColor = "primary"; + dankLauncherV2ShowFooter = true; + dankLauncherV2UnloadOnClose = false; + useAutoLocation = false; + weatherEnabled = true; + networkPreference = "auto"; + iconTheme = "System Default"; + cursorSettings = { + theme = "Bibata-Modern-Ice"; + size = 24; + niri = { + hideWhenTyping = false; + hideAfterInactiveMs = 0; + }; + hyprland = { + hideOnKeyPress = false; + hideOnTouch = false; + inactiveTimeout = 0; + }; + dwl = { + cursorHideTimeout = 0; + }; + }; + launcherLogoMode = "apps"; + launcherLogoCustomPath = ""; + launcherLogoColorOverride = ""; + launcherLogoColorInvertOnMode = false; + launcherLogoBrightness = 0.5; + launcherLogoContrast = 1; + launcherLogoSizeOffset = 0; + fontFamily = "Adwaita Sans"; + monoFontFamily = "Fira Code"; + fontWeight = 400; + fontScale = 1; + notepadUseMonospace = true; + notepadFontFamily = ""; + notepadFontSize = 14; + notepadShowLineNumbers = false; + adLastCustomTransparency = 0.7; + soundsEnabled = true; + useSystemSoundTheme = false; + soundNewNotification = true; + soundVolumeChanged = true; + soundPluggedIn = true; + acMonitorTimeout = 0; + acLockTimeout = 0; + acSuspendTimeout = 0; + acSuspendBehavior = 0; + acProfileName = ""; + batteryMonitorTimeout = 0; + batteryLockTimeout = 0; + batterySuspendTimeout = 0; + batterySuspendBehavior = 0; + batteryProfileName = ""; + batteryChargeLimit = 100; + lockBeforeSuspend = false; + loginctlLockIntegration = true; + fadeToLockEnabled = true; + fadeToLockGracePeriod = 5; + fadeToDpmsEnabled = true; + fadeToDpmsGracePeriod = 5; + launchPrefix = ""; + brightnessDevicePins = { }; + wifiNetworkPins = { }; + bluetoothDevicePins = { }; + audioInputDevicePins = { }; + audioOutputDevicePins = { }; + gtkThemingEnabled = false; + qtThemingEnabled = false; + syncModeWithPortal = true; + terminalsAlwaysDark = false; + runDmsMatugenTemplates = true; + matugenTemplateGtk = true; + matugenTemplateNiri = true; + matugenTemplateHyprland = true; + matugenTemplateMangowc = true; + matugenTemplateQt5ct = true; + matugenTemplateQt6ct = true; + matugenTemplateFirefox = true; + matugenTemplatePywalfox = true; + matugenTemplateZenBrowser = true; + matugenTemplateVesktop = true; + matugenTemplateEquibop = true; + matugenTemplateGhostty = false; + matugenTemplateKitty = true; + matugenTemplateFoot = true; + matugenTemplateAlacritty = true; + matugenTemplateNeovim = false; + matugenTemplateWezterm = true; + matugenTemplateDgop = true; + matugenTemplateKcolorscheme = true; + matugenTemplateVscode = true; + matugenTemplateEmacs = true; + showDock = false; + dockAutoHide = false; + dockSmartAutoHide = false; + dockGroupByApp = false; + dockOpenOnOverview = false; + dockPosition = 1; + dockSpacing = 4; + dockBottomGap = 0; + dockMargin = 0; + dockIconSize = 40; + dockIndicatorStyle = "circle"; + dockBorderEnabled = false; + dockBorderColor = "surfaceText"; + dockBorderOpacity = 1; + dockBorderThickness = 1; + dockIsolateDisplays = false; + dockLauncherEnabled = false; + dockLauncherLogoMode = "apps"; + dockLauncherLogoCustomPath = ""; + dockLauncherLogoColorOverride = ""; + dockLauncherLogoSizeOffset = 0; + dockLauncherLogoBrightness = 0.5; + dockLauncherLogoContrast = 1; + dockMaxVisibleApps = 0; + dockMaxVisibleRunningApps = 0; + dockShowOverflowBadge = true; + notificationOverlayEnabled = false; + notificationPopupShadowEnabled = true; + notificationPopupPrivacyMode = false; + modalDarkenBackground = true; + lockScreenShowPowerActions = true; + lockScreenShowSystemIcons = true; + lockScreenShowTime = true; + lockScreenShowDate = true; + lockScreenShowProfileImage = true; + lockScreenShowPasswordField = true; + lockScreenShowMediaPlayer = true; + lockScreenPowerOffMonitorsOnLock = false; + lockAtStartup = false; + enableFprint = false; + maxFprintTries = 15; + lockScreenActiveMonitor = "all"; + lockScreenInactiveColor = "#000000"; + lockScreenNotificationMode = 0; + hideBrightnessSlider = false; + notificationTimeoutLow = 5000; + notificationTimeoutNormal = 5000; + notificationTimeoutCritical = 0; + notificationCompactMode = false; + notificationPopupPosition = 0; + notificationAnimationSpeed = 1; + notificationCustomAnimationDuration = 400; + notificationHistoryEnabled = true; + notificationHistoryMaxCount = 50; + notificationHistoryMaxAgeDays = 7; + notificationHistorySaveLow = true; + notificationHistorySaveNormal = true; + notificationHistorySaveCritical = true; + notificationRules = [ ]; + osdAlwaysShowValue = false; + osdPosition = 5; + osdVolumeEnabled = true; + osdMediaVolumeEnabled = true; + osdMediaPlaybackEnabled = false; + osdBrightnessEnabled = true; + osdIdleInhibitorEnabled = true; + osdMicMuteEnabled = true; + osdCapsLockEnabled = true; + osdPowerProfileEnabled = false; + osdAudioOutputEnabled = true; + powerActionConfirm = true; + powerActionHoldDuration = 0.5; + powerMenuActions = [ + "reboot" + "logout" + "poweroff" + "lock" + "suspend" + "restart" + ]; + powerMenuDefaultAction = "logout"; + powerMenuGridLayout = false; + customPowerActionLock = ""; + customPowerActionLogout = ""; + customPowerActionSuspend = ""; + customPowerActionHibernate = ""; + customPowerActionReboot = ""; + customPowerActionPowerOff = ""; + updaterHideWidget = false; + updaterUseCustomCommand = false; + updaterCustomCommand = ""; + updaterTerminalAdditionalParams = ""; + displayNameMode = "system"; + screenPreferences = { }; + showOnLastDisplay = { }; + niriOutputSettings = { }; + hyprlandOutputSettings = { }; + displayProfiles = { }; + activeDisplayProfile = { }; + displayProfileAutoSelect = false; + displayShowDisconnected = false; + displaySnapToEdge = true; + barConfigs = [ + { + id = "default"; + name = "Main Bar"; + enabled = true; + position = 0; + screenPreferences = [ + "all" + ]; + showOnLastDisplay = true; + leftWidgets = [ + { + id = "workspaceSwitcher"; + enabled = true; + } + { + id = "focusedWindow"; + enabled = true; + } + { + id = "appsDock"; + enabled = true; + } + ]; + centerWidgets = [ + "music" + ]; + rightWidgets = [ + { + id = "systemTray"; + enabled = true; + } + { + id = "clipboard"; + enabled = true; + } + { + id = "clock"; + enabled = true; + } + { + id = "controlCenterButton"; + enabled = true; + } + ]; + spacing = 0; + transparency = 1; + widgetTransparency = 1; + squareCorners = true; + noBackground = false; + gothCornersEnabled = false; + gothCornerRadiusOverride = false; + gothCornerRadiusValue = 12; + borderEnabled = false; + borderColor = "surfaceText"; + borderOpacity = 1; + borderThickness = 1; + fontScale = 1.05; + autoHide = false; + autoHideDelay = 250; + openOnOverview = false; + visible = true; + popupGapsAuto = true; + popupGapsManual = 0; + maximizeDetection = false; + widgetPadding = 12; + iconScale = 1.1; + maximizeWidgetIcons = false; + maximizeWidgetText = false; + removeWidgetPadding = false; + shadowIntensity = 0; + shadowOpacity = 37; + widgetOutlineEnabled = false; + } + ]; + desktopClockEnabled = false; + desktopClockStyle = "analog"; + desktopClockTransparency = 0.8; + desktopClockColorMode = "primary"; + desktopClockShowDate = true; + desktopClockShowAnalogNumbers = false; + desktopClockShowAnalogSeconds = true; + desktopClockWidth = 280; + desktopClockHeight = 180; + desktopClockDisplayPreferences = [ + "all" + ]; + systemMonitorEnabled = false; + systemMonitorShowHeader = true; + systemMonitorTransparency = 0.8; + systemMonitorColorMode = "primary"; + systemMonitorShowCpu = true; + systemMonitorShowCpuGraph = true; + systemMonitorShowCpuTemp = true; + systemMonitorShowGpuTemp = false; + systemMonitorGpuPciId = ""; + systemMonitorShowMemory = true; + systemMonitorShowMemoryGraph = true; + systemMonitorShowNetwork = true; + systemMonitorShowNetworkGraph = true; + systemMonitorShowDisk = true; + systemMonitorShowTopProcesses = false; + systemMonitorTopProcessCount = 3; + systemMonitorTopProcessSortBy = "cpu"; + systemMonitorGraphInterval = 60; + systemMonitorLayoutMode = "auto"; + systemMonitorWidth = 320; + systemMonitorHeight = 480; + systemMonitorDisplayPreferences = [ + "all" + ]; + systemMonitorVariants = [ ]; + desktopWidgetPositions = { }; + desktopWidgetGridSettings = { }; + desktopWidgetInstances = [ ]; + desktopWidgetGroups = [ ]; + builtInPluginSettings = { + dms_settings_search = { + trigger = "?"; + }; + }; + clipboardEnterToPaste = false; + launcherPluginVisibility = { }; + launcherPluginOrder = [ ]; + configVersion = 5; }; session = { isLightMode = false; + doNotDisturb = false; + wallpaperPath = "/home/dennis/Pictures/Wallpapers/safe/dark/mountain.jpg"; + perMonitorWallpaper = false; + monitorWallpapers = { }; + perModeWallpaper = false; + wallpaperPathLight = ""; + wallpaperPathDark = ""; + monitorWallpapersLight = { }; + monitorWallpapersDark = { }; + monitorWallpaperFillModes = { }; + wallpaperTransition = "fade"; + includedTransitions = [ + "fade" + "wipe" + "disc" + "stripes" + "iris bloom" + "pixelate" + "portal" + ]; + wallpaperCyclingEnabled = false; + wallpaperCyclingMode = "interval"; + wallpaperCyclingInterval = 300; + wallpaperCyclingTime = "06:00"; + monitorCyclingSettings = { }; + nightModeEnabled = false; + nightModeTemperature = 4500; + nightModeHighTemperature = 6500; + nightModeAutoEnabled = false; + nightModeAutoMode = "time"; + nightModeStartHour = 18; + nightModeStartMinute = 0; + nightModeEndHour = 6; + nightModeEndMinute = 0; + latitude = 0; + longitude = 0; + nightModeUseIPLocation = false; + nightModeLocationProvider = ""; + themeModeAutoEnabled = false; + themeModeAutoMode = "time"; + themeModeStartHour = 18; + themeModeStartMinute = 0; + themeModeEndHour = 6; + themeModeEndMinute = 0; + themeModeShareGammaSettings = true; + weatherLocation = "München, Bayern"; + weatherCoordinates = "48.1371079,11.5753822"; + pinnedApps = [ ]; + barPinnedApps = [ ]; + dockLauncherPosition = 0; + hiddenTrayIds = [ ]; + trayItemOrder = [ ]; + recentColors = [ ]; + showThirdPartyPlugins = false; + launchPrefix = ""; + lastBrightnessDevice = ""; + brightnessExponentialDevices = { }; + brightnessUserSetValues = { }; + brightnessExponentValues = { }; + selectedGpuIndex = 0; + nvidiaGpuTempEnabled = false; + nonNvidiaGpuTempEnabled = false; + enabledGpuPciIds = [ ]; + wifiDeviceOverride = ""; + weatherHourlyDetailed = true; + hiddenApps = [ ]; + appOverrides = { }; + searchAppActions = true; + vpnLastConnected = ""; + deviceMaxVolumes = { }; + hiddenOutputDeviceNames = [ ]; + hiddenInputDeviceNames = [ ]; + launcherLastMode = "all"; + appDrawerLastMode = "apps"; + niriOverviewLastMode = "apps"; + configVersion = 3; }; }; diff --git a/modules/scrolling-desktop/niri/config.kdl b/modules/scrolling-desktop/niri/config.kdl index 273a2f8..536a710 100644 --- a/modules/scrolling-desktop/niri/config.kdl +++ b/modules/scrolling-desktop/niri/config.kdl @@ -513,3 +513,9 @@ xwayland-satellite { // off path "xwayland-satellite" } + +include "dms/cursor.kdl" +include "dms/colors.kdl" +include "dms/layout.kdl" +include "dms/windowrules.kdl" +include "dms/wpblur.kdl" diff --git a/modules/scrolling-desktop/niri/config.kdl.backup1772654511 b/modules/scrolling-desktop/niri/config.kdl.backup1772654511 new file mode 100644 index 0000000..273a2f8 --- /dev/null +++ b/modules/scrolling-desktop/niri/config.kdl.backup1772654511 @@ -0,0 +1,515 @@ +// This config is in the KDL format: https://kdl.dev +// "/-" comments out the following node. +// Check the wiki for a full description of the configuration: +// https://yalter.github.io/niri/Configuration:-Introduction + +environment { + XDG_CURRENT_DESKTOP "niri" + QT_QPA_PLATFORM "wayland" + ELECTRON_OZONE_PLATFORM_HINT "auto" + QT_QPA_PLATFORMTHEME "gtk3" + QT_QPA_PLATFORMTHEME_QT6 "gtk3" +} + +// Input device configuration. +// Find the full list of options on the wiki: +// https://yalter.github.io/niri/Configuration:-Input +input { + keyboard { + xkb { + layout "eu" + } + numlock + } + + // Next sections include libinput settings. + // Omitting settings disables them, or leaves them at their default values. + // All commented-out settings here are examples, not defaults. + touchpad { + // off + tap + // dwt + // dwtp + // drag false + // drag-lock + natural-scroll + // accel-speed 0.2 + // accel-profile "flat" + // scroll-method "two-finger" + // disabled-on-external-mouse + } + + mouse { + // off + // natural-scroll + accel-speed -0.3 + // accel-profile "flat" + // scroll-method "no-scroll" + } + + tablet { + map-to-output "DP-3" + // calibration-matrix 1.0 1.0 1.0 1.0 1.0 1.0 + } + + // Uncomment this to make the mouse warp to the center of newly focused windows. + // warp-mouse-to-focus + + // Focus windows and outputs automatically when moving the mouse into them. + // Setting max-scroll-amount="0%" makes it work only on windows already fully on screen. + // focus-follows-mouse max-scroll-amount="0%" +} + +output "DP-3" { + // off + mode "3440x1440@99.982" + scale 1 + transform "normal" +} + +cursor { + xcursor-theme "Bibata-Modern-Ice" + xcursor-size 24 + hide-when-typing + hide-after-inactive-ms 5000 +} + +layout { + gaps 5 + background-color "transparent" + + // When to center a column when changing focus, options are: + // - "never", default behavior, focusing an off-screen column will keep at the left + // or right edge of the screen. + // - "always", the focused column will always be centered. + // - "on-overflow", focusing a column will center it if it doesn't fit + // together with the previously focused column. + center-focused-column "on-overflow" + + // You can customize the widths that "switch-preset-column-width" (Mod+R) toggles between. + preset-column-widths { + proportion 0.33333 + proportion 0.5 + proportion 0.66667 + } + + default-column-width { proportion 0.5; } + + // By default focus ring and border are rendered as a solid background rectangle + // behind windows. That is, they will show up through semitransparent windows. + // This is because windows using client-side decorations can have an arbitrary shape. + // + // If you don't like that, you should uncomment `prefer-no-csd` below. + // Niri will draw focus ring and border *around* windows that agree to omit their + // client-side decorations. + // + // Alternatively, you can override it with a window rule called + // `draw-border-with-background`. + + // You can change how the focus ring looks. + focus-ring { + // off + width 3 + active-color "#c57faf" + inactive-color "#d369af" + } + + // You can also add a border. It's similar to the focus ring, but always visible. + border { + // The settings are the same as for the focus ring. + // If you enable the border, you probably want to disable the focus ring. + off + + width 4 + active-color "#ffc87f" + inactive-color "#505050" + + // Color of the border around windows that request your attention. + urgent-color "#9b0000" + + // Gradients can use a few different interpolation color spaces. + // For example, this is a pastel rainbow gradient via in="oklch longer hue". + // + // active-gradient from="#e5989b" to="#ffb4a2" angle=45 relative-to="workspace-view" in="oklch longer hue" + + // inactive-gradient from="#505050" to="#808080" angle=45 relative-to="workspace-view" + } + + // You can enable drop shadows for windows. + shadow { + // Uncomment the next line to enable shadows. + // on + + // By default, the shadow draws only around its window, and not behind it. + // Uncomment this setting to make the shadow draw behind its window. + // + // Note that niri has no way of knowing about the CSD window corner + // radius. It has to assume that windows have square corners, leading to + // shadow artifacts inside the CSD rounded corners. This setting fixes + // those artifacts. + // + // However, instead you may want to set prefer-no-csd and/or + // geometry-corner-radius. Then, niri will know the corner radius and + // draw the shadow correctly, without having to draw it behind the + // window. These will also remove client-side shadows if the window + // draws any. + // + // draw-behind-window true + + // You can change how shadows look. The values below are in logical + // pixels and match the CSS box-shadow properties. + + // Softness controls the shadow blur radius. + softness 30 + + // Spread expands the shadow. + spread 5 + + // Offset moves the shadow relative to the window. + offset x=0 y=5 + + // You can also change the shadow color and opacity. + color "#0007" + } + + // Struts shrink the area occupied by windows, similarly to layer-shell panels. + // You can think of them as a kind of outer gaps. They are set in logical pixels. + // Left and right struts will cause the next window to the side to always be visible. + // Top and bottom struts will simply add outer gaps in addition to the area occupied by + // layer-shell panels and regular gaps. + struts { + // left 64 + // right 64 + // top 64 + // bottom 64 + } +} + +layer-rule { + match namespace="^quickshell$" + place-within-backdrop true +} + +layer-rule { + match namespace="dms:blurwallpaper" + place-within-backdrop true +} + +// STARTUP +hotkey-overlay { + // Uncomment this line to disable the "Important Hotkeys" pop-up at startup. + skip-at-startup +} + +// Uncomment this line to ask the clients to omit their client-side decorations if possible. +// If the client will specifically ask for CSD, the request will be honored. +// Additionally, clients will be informed that they are tiled, removing some client-side rounded corners. +// This option will also fix border/focus ring drawing behind some semitransparent windows. +// After enabling or disabling this, you need to restart the apps for this to take effect. +prefer-no-csd + +// You can change the path where screenshots are saved. +// A ~ at the front will be expanded to the home directory. +// The path is formatted with strftime(3) to give you the screenshot date and time. +screenshot-path "~/Pictures/Screenshots/taken_at_%Y-%m-%d %H-%M-%S.png" + +// Animation settings. +// The wiki explains how to configure individual animations: +// https://yalter.github.io/niri/Configuration:-Animations +animations { + // Uncomment to turn off all animations. + off + + // Slow down all animations by this factor. Values below 1 speed them up instead. + // slowdown 3.0 +} + +overview { + backdrop-color "#0f0b15" +} + +// Window rules let you adjust behavior for individual windows. +// Find more information on the wiki: +// https://yalter.github.io/niri/Configuration:-Window-Rules + +window-rule { + match app-id=r#"^steam$"# +} + +// window-rule { +// match at-startup=true app-id=r#"^Spotify$"# +// open-on-workspace "media" +// } + +// window-rule { +// match at-startup=true app-id=r#"^Signal$"# +// open-on-workspace "chat" +// } + +// Open the Firefox picture-in-picture player as floating by default. +window-rule { + // This app-id regular expression will work for both: + // - host Firefox (app-id is "firefox") + // - Flatpak Firefox (app-id is "org.mozilla.firefox") + match app-id=r#"zen-beta$"# title="^Picture-in-Picture$" + open-floating true +} + +window-rule { + match app-id=r#"gimp$"# title="^GIMP$" + open-maximized true +} + +// Example: block out two password managers from screen capture. +// (This example rule is commented out with a "/-" in front.) +/-window-rule { + match app-id=r#"^org\.keepassxc\.KeePassXC$"# + match app-id=r#"^org\.gnome\.World\.Secrets$"# + + block-out-from "screen-capture" + + // Use this instead if you want them visible on third-party screenshot tools. + // block-out-from "screencast" +} + +// Example: enable rounded corners for all windows. +// (This example rule is commented out with a "/-" in front.) +window-rule { + geometry-corner-radius 12 + clip-to-geometry true +} + +binds { + // Keys consist of modifiers separated by + signs, followed by an XKB key name + // in the end. To find an XKB name for a particular key, you may use a program + // like wev. + // + // "Mod" is a special modifier equal to Super when running on a TTY, and to Alt + // when running as a winit window. + // + // Most actions that you can bind here can also be invoked programmatically with + // `niri msg action do-something`. + + // Mod-Shift-/, which is usually the same as Mod-?, + // shows a list of important hotkeys. + Mod+Shift+Slash { show-hotkey-overlay; } + + Mod+B hotkey-overlay-title="Browser" { spawn "helium"; } + Mod+N hotkey-overlay-title="File Manager" { spawn "nautilus"; } + Mod+Return hotkey-overlay-title="Open a terminal" { spawn "ghostty"; } + Mod+Space hotkey-overlay-title="Application Launcher" { + spawn "dms" "ipc" "call" "spotlight" "toggle"; + } + Mod+V hotkey-overlay-title="Clipboard Manager" { + spawn "dms" "ipc" "call" "clipboard" "toggle"; + } + Mod+M hotkey-overlay-title="Task Manager" { + spawn "dms" "ipc" "call" "processlist" "focusOrToggle"; + } + Mod+Comma hotkey-overlay-title="Settings" { + spawn "dms" "ipc" "call" "settings" "focusOrToggle"; + } + Mod+S hotkey-overlay-title="Notification Center" { + spawn "dms" "ipc" "call" "notifications" "toggle"; + } + Mod+Y hotkey-overlay-title="Browse Wallpapers" { + spawn "dms" "ipc" "call" "dankdash" "wallpaper"; + } + + // Security + Mod+Alt+L hotkey-overlay-title="Lock Screen" { + spawn "dms" "ipc" "call" "lock" "lock"; + } + + // Audio Controls + XF86AudioRaiseVolume allow-when-locked=true { + spawn "dms" "ipc" "call" "audio" "increment" "3"; + } + XF86AudioLowerVolume allow-when-locked=true { + spawn "dms" "ipc" "call" "audio" "decrement" "3"; + } + XF86AudioMute allow-when-locked=true { + spawn "dms" "ipc" "call" "audio" "mute"; + } + + XF86MonBrightnessUp allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "+10%"; } + XF86MonBrightnessDown allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "10%-"; } + + // Open/close the Overview: a zoomed-out view of workspaces and windows. + // You can also move the mouse into the top-left hot corner, + // or do a four-finger swipe up on a touchpad. + Mod+O repeat=false { toggle-overview; } + Mod+Q repeat=false { close-window; } + + Mod+Left { focus-column-left; } + Mod+Down { focus-window-down; } + Mod+Up { focus-window-up; } + Mod+Right { focus-column-right; } + Mod+H { focus-column-left; } + Mod+J { focus-window-or-workspace-down; } + Mod+K { focus-window-or-workspace-up; } + Mod+L { focus-column-right; } + + Mod+Shift+H { move-column-left; } + Mod+Shift+J { move-column-to-workspace-down; } + Mod+Shift+K { move-column-to-workspace-up; } + Mod+Shift+L { move-column-right; } + + Mod+A { focus-column-first; } + Mod+E { focus-column-last; } + Mod+Ctrl+A { move-column-to-first; } + Mod+Ctrl+E { move-column-to-last; } + + Mod+D { focus-workspace-down; } + Mod+U { focus-workspace-up; } + Mod+Ctrl+D { move-column-to-workspace-down; } + Mod+Ctrl+U { move-column-to-workspace-up; } + + Mod+Shift+Page_Down { move-workspace-down; } + Mod+Shift+Page_Up { move-workspace-up; } + Mod+Shift+U { move-workspace-down; } + Mod+Shift+I { move-workspace-up; } + + // You can bind mouse wheel scroll ticks using the following syntax. + // These binds will change direction based on the natural-scroll setting. + // + // To avoid scrolling through workspaces really fast, you can use + // the cooldown-ms property. The bind will be rate-limited to this value. + // You can set a cooldown on any bind, but it's most useful for the wheel. + Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; } + Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; } + Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; } + Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; } + + Mod+WheelScrollRight { focus-column-right; } + Mod+WheelScrollLeft { focus-column-left; } + Mod+Ctrl+WheelScrollRight { move-column-right; } + Mod+Ctrl+WheelScrollLeft { move-column-left; } + + // Usually scrolling up and down with Shift in applications results in + // horizontal scrolling; these binds replicate that. + Mod+Shift+WheelScrollDown { focus-column-right; } + Mod+Shift+WheelScrollUp { focus-column-left; } + Mod+Ctrl+Shift+WheelScrollDown { move-column-right; } + Mod+Ctrl+Shift+WheelScrollUp { move-column-left; } + + // Similarly, you can bind touchpad scroll "ticks". + // Touchpad scrolling is continuous, so for these binds it is split into + // discrete intervals. + // These binds are also affected by touchpad's natural-scroll, so these + // example binds are "inverted", since we have natural-scroll enabled for + // touchpads by default. + // Mod+TouchpadScrollDown { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.02+"; } + // Mod+TouchpadScrollUp { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.02-"; } + + // You can refer to workspaces by index. However, keep in mind that + // niri is a dynamic workspace system, so these commands are kind of + // "best effort". Trying to refer to a workspace index bigger than + // the current workspace count will instead refer to the bottommost + // (empty) workspace. + // + // For example, with 2 workspaces + 1 empty, indices 3, 4, 5 and so on + // will all refer to the 3rd workspace. + Alt+1 { focus-workspace 1; } + Alt+2 { focus-workspace 2; } + Alt+3 { focus-workspace 3; } + Alt+4 { focus-workspace 4; } + Alt+5 { focus-workspace 5; } + Alt+6 { focus-workspace 6; } + Alt+7 { focus-workspace 7; } + Alt+8 { focus-workspace 8; } + Alt+9 { focus-workspace 9; } + Alt+Ctrl+1 { move-column-to-workspace 1; } + Alt+Ctrl+2 { move-column-to-workspace 2; } + Alt+Ctrl+3 { move-column-to-workspace 3; } + Alt+Ctrl+4 { move-column-to-workspace 4; } + Alt+Ctrl+5 { move-column-to-workspace 5; } + Alt+Ctrl+6 { move-column-to-workspace 6; } + Alt+Ctrl+7 { move-column-to-workspace 7; } + Alt+Ctrl+8 { move-column-to-workspace 8; } + Alt+Ctrl+9 { move-column-to-workspace 9; } + + // Alternatively, there are commands to move just a single window: + // Mod+Ctrl+1 { move-window-to-workspace 1; } + + // Switches focus between the current and the previous workspace. + // Mod+Tab { focus-workspace-previous; } + + // The following binds move the focused window in and out of a column. + // If the window is alone, they will consume it into the nearby column to the side. + // If the window is already in a column, they will expel it out. + Mod+Period { consume-or-expel-window-right; } + + // Consume one window from the right to the bottom of the focused column. + // Mod+Comma { consume-window-into-column; } + // Expel the bottom window from the focused column to the right. + // Mod+Period { expel-window-from-column; } + + Mod+R { switch-preset-column-width; } + // Cycling through the presets in reverse order is also possible. + // Mod+R { switch-preset-column-width-back; } + Mod+Shift+R { switch-preset-window-height; } + Mod+Ctrl+R { reset-window-height; } + Mod+F { maximize-column; } + Mod+Shift+F { fullscreen-window; } + + // Expand the focused column to space not taken up by other fully visible columns. + // Makes the column "fill the rest of the space". + Mod+Ctrl+F { expand-column-to-available-width; } + + Mod+C { center-column; } + + // Center all fully visible columns on screen. + Mod+Ctrl+C { center-visible-columns; } + + // Finer width adjustments. + // This command can also: + // * set width in pixels: "1000" + // * adjust width in pixels: "-5" or "+5" + // * set width as a percentage of screen width: "25%" + // * adjust width as a percentage of screen width: "-10%" or "+10%" + // Pixel sizes use logical, or scaled, pixels. I.e. on an output with scale 2.0, + // set-column-width "100" will make the column occupy 200 physical screen pixels. + Mod+Minus { set-column-width "-10%"; } + Mod+Equal { set-column-width "+10%"; } + + // Finer height adjustments when in column with other windows. + Mod+Shift+Minus { set-window-height "-10%"; } + Mod+Shift+Equal { set-window-height "+10%"; } + + // Move the focused window between the floating and the tiling layout. + Mod+Shift+S { toggle-window-floating; } + // Mod+Shift+V { switch-focus-between-floating-and-tiling; } + + // Toggle tabbed column display mode. + // Windows in this column will appear as vertical tabs, + // rather than stacked on top of each other. + // Mod+W { toggle-column-tabbed-display; } + + // Actions to switch layouts. + // Note: if you uncomment these, make sure you do NOT have + // a matching layout switch hotkey configured in xkb options above. + // Having both at once on the same hotkey will break the switching, + // since it will switch twice upon pressing the hotkey (once by xkb, once by niri). + // Mod+Space { switch-layout "next"; } + // Mod+Shift+Space { switch-layout "prev"; } + + Print { screenshot; } + + // Applications such as remote-desktop clients and software KVM switches may + // request that niri stops processing the keyboard shortcuts defined here + // so they may, for example, forward the key presses as-is to a remote machine. + // It's a good idea to bind an escape hatch to toggle the inhibitor, + // so a buggy application can't hold your session hostage. + // + // The allow-inhibiting=false property can be applied to other binds as well, + + // The quit action will show a confirmation dialog to avoid accidental exits. + Mod+Shift+E { quit; } + Ctrl+Alt+Delete { quit; } +} + +xwayland-satellite { + // off + path "xwayland-satellite" +} diff --git a/modules/scrolling-desktop/niri/dms/alttab.kdl b/modules/scrolling-desktop/niri/dms/alttab.kdl new file mode 100644 index 0000000..091ea07 --- /dev/null +++ b/modules/scrolling-desktop/niri/dms/alttab.kdl @@ -0,0 +1,10 @@ +// ! DO NOT EDIT ! + // ! AUTO-GENERATED BY DMS ! + // ! CHANGES WILL BE OVERWRITTEN ! + // ! PLACE YOUR CUSTOM CONFIGURATION ELSEWHERE ! + + recent-windows { + highlight { + corner-radius 12 + } + } diff --git a/modules/scrolling-desktop/niri/dms/binds.kdl b/modules/scrolling-desktop/niri/dms/binds.kdl new file mode 100644 index 0000000..e69de29 diff --git a/modules/scrolling-desktop/niri/dms/colors.kdl b/modules/scrolling-desktop/niri/dms/colors.kdl new file mode 100644 index 0000000..705b90e --- /dev/null +++ b/modules/scrolling-desktop/niri/dms/colors.kdl @@ -0,0 +1,39 @@ +// ! Auto-generated file. Do not edit directly. +// Remove `include "dms/colors.kdl"` from your config to override. + +layout { + background-color "transparent" + + focus-ring { + active-color "#c3c0ff" + inactive-color "#928f9a" + urgent-color "#ffb4ab" + } + + border { + active-color "#c3c0ff" + inactive-color "#928f9a" + urgent-color "#ffb4ab" + } + + shadow { + color "#00000070" + } + + tab-indicator { + active-color "#c3c0ff" + inactive-color "#928f9a" + urgent-color "#ffb4ab" + } + + insert-hint { + color "#c3c0ff80" + } +} + +recent-windows { + highlight { + active-color "#424078" + urgent-color "#ffb4ab" + } +} diff --git a/modules/scrolling-desktop/niri/dms/cursor.kdl b/modules/scrolling-desktop/niri/dms/cursor.kdl new file mode 100644 index 0000000..531abd7 --- /dev/null +++ b/modules/scrolling-desktop/niri/dms/cursor.kdl @@ -0,0 +1,9 @@ +// ! DO NOT EDIT ! +// ! AUTO-GENERATED BY DMS ! +// ! CHANGES WILL BE OVERWRITTEN ! +// ! PLACE YOUR CUSTOM CONFIGURATION ELSEWHERE ! + +cursor { + xcursor-theme "Bibata-Modern-Ice" + xcursor-size 24 +} \ No newline at end of file diff --git a/modules/scrolling-desktop/niri/dms/layout.kdl b/modules/scrolling-desktop/niri/dms/layout.kdl new file mode 100644 index 0000000..81c88f6 --- /dev/null +++ b/modules/scrolling-desktop/niri/dms/layout.kdl @@ -0,0 +1,22 @@ +// ! DO NOT EDIT ! + // ! AUTO-GENERATED BY DMS ! + // ! CHANGES WILL BE OVERWRITTEN ! + // ! PLACE YOUR CUSTOM CONFIGURATION ELSEWHERE ! + + layout { + gaps 8 + + border { + width 2 + } + + focus-ring { + width 2 + } + } + window-rule { + geometry-corner-radius 12 + clip-to-geometry true + tiled-state true + draw-border-with-background false + } diff --git a/modules/scrolling-desktop/niri/dms/outputs.kdl b/modules/scrolling-desktop/niri/dms/outputs.kdl new file mode 100644 index 0000000..e69de29 diff --git a/modules/scrolling-desktop/niri/dms/windowrules.kdl b/modules/scrolling-desktop/niri/dms/windowrules.kdl new file mode 100644 index 0000000..e69de29 diff --git a/modules/scrolling-desktop/niri/dms/wpblur.kdl b/modules/scrolling-desktop/niri/dms/wpblur.kdl new file mode 100644 index 0000000..3d58802 --- /dev/null +++ b/modules/scrolling-desktop/niri/dms/wpblur.kdl @@ -0,0 +1,9 @@ +// ! DO NOT EDIT ! +// ! AUTO-GENERATED BY DMS ! +// ! CHANGES WILL BE OVERWRITTEN ! +// ! PLACE YOUR CUSTOM CONFIGURATION ELSEWHERE ! + +layer-rule { + match namespace="dms:blurwallpaper" + place-within-backdrop true +}