diff --git a/flake.lock b/flake.lock index 6ca29505..d8ce6cf5 100644 --- a/flake.lock +++ b/flake.lock @@ -124,6 +124,27 @@ "type": "github" } }, + "dgop": { + "inputs": { + "nixpkgs": [ + "dms", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1762835999, + "narHash": "sha256-UykYGrGFOFTmDpKTLNxj1wvd1gbDG4TkqLNSbV0TYwk=", + "owner": "AvengeMedia", + "repo": "dgop", + "rev": "799301991cd5dcea9b64245f9d500dcc76615653", + "type": "github" + }, + "original": { + "owner": "AvengeMedia", + "repo": "dgop", + "type": "github" + } + }, "disko": { "inputs": { "nixpkgs": [ @@ -145,6 +166,29 @@ "type": "github" } }, + "dms": { + "inputs": { + "dgop": "dgop", + "nixpkgs": [ + "nixpkgs" + ], + "quickshell": "quickshell" + }, + "locked": { + "lastModified": 1765552734, + "narHash": "sha256-rWjWYu5rs3ZOJ4YJpvIscBZSYu74thJHc0VYyYKJTUc=", + "owner": "AvengeMedia", + "repo": "DankMaterialShell", + "rev": "7fb358bada0d3a229ec5ee6aaad0f9b64f367331", + "type": "github" + }, + "original": { + "owner": "AvengeMedia", + "ref": "stable", + "repo": "DankMaterialShell", + "type": "github" + } + }, "flake-compat": { "flake": false, "locked": { @@ -975,6 +1019,28 @@ "type": "github" } }, + "quickshell": { + "inputs": { + "nixpkgs": [ + "dms", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1764663772, + "narHash": "sha256-sHqLmm0wAt3PC4vczJeBozI1/f4rv9yp3IjkClHDXDs=", + "ref": "refs/heads/master", + "rev": "26531fc46ef17e9365b03770edd3fb9206fcb460", + "revCount": 713, + "type": "git", + "url": "https://git.outfoxxed.me/quickshell/quickshell" + }, + "original": { + "rev": "26531fc46ef17e9365b03770edd3fb9206fcb460", + "type": "git", + "url": "https://git.outfoxxed.me/quickshell/quickshell" + } + }, "root": { "inputs": { "aagl": "aagl", @@ -982,6 +1048,7 @@ "blender-bin": "blender-bin", "catppuccin": "catppuccin", "disko": "disko", + "dms": "dms", "ghostty": "ghostty", "haumea": "haumea", "helix": "helix", diff --git a/flake.nix b/flake.nix index ce853a4c..87cc4715 100644 --- a/flake.nix +++ b/flake.nix @@ -142,6 +142,11 @@ inputs.nixpkgs.follows = "nixpkgs"; }; + dms = { + url = "github:AvengeMedia/DankMaterialShell/stable"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + # -------------- Gaming --------------------- nix-gaming = { diff --git a/home/linux/gui/base/desktop-tools.nix b/home/linux/gui/base/desktop-tools.nix index 0bc0fe5b..bc4cdf45 100644 --- a/home/linux/gui/base/desktop-tools.nix +++ b/home/linux/gui/base/desktop-tools.nix @@ -7,10 +7,14 @@ "MOZ_WEBRENDER" = "1"; # enable native Wayland support for most Electron apps "ELECTRON_OZONE_PLATFORM_HINT" = "auto"; - # misc - "_JAVA_AWT_WM_NONREPARENTING" = "1"; + + # qt "QT_WAYLAND_DISABLE_WINDOWDECORATION" = "1"; "QT_QPA_PLATFORM" = "wayland"; + "QT_QPA_PLATFORMTHEME" = "qt6ct"; # Qt6 applications look for icon themes based on this env. + + # misc + "_JAVA_AWT_WM_NONREPARENTING" = "1"; "SDL_VIDEODRIVER" = "wayland"; "GDK_BACKEND" = "wayland"; "XDG_SESSION_TYPE" = "wayland"; diff --git a/home/linux/gui/base/dma-shell/default.nix b/home/linux/gui/base/dma-shell/default.nix new file mode 100644 index 00000000..148b592e --- /dev/null +++ b/home/linux/gui/base/dma-shell/default.nix @@ -0,0 +1,50 @@ +{ + config, + pkgs, + wallpapers, + dms, + ... +}: +{ + imports = [ + dms.homeModules.dankMaterialShell.default + ]; + + home.packages = [ + pkgs.qt6Packages.qt6ct # for icon theme + ]; + + home.file."Pictures/Wallpapers".source = wallpapers; + + xdg.configFile = + let + mkSymlink = config.lib.file.mkOutOfStoreSymlink; + confPath = "${config.home.homeDirectory}/nix-config/home/linux/gui/base/dma-shell"; + in + { + "DankMaterialShell/settings.json".source = mkSymlink "${confPath}/settings.json"; + "qt6ct/qt6ct.conf".source = mkSymlink "${confPath}/qt6ct.conf"; + }; + + systemd.user.services.dms.Service.Environment = [ + "QT_QPA_PLATFORM=wayland" + "QT_QPA_PLATFORMTHEME=qt6ct" + ]; + + programs.dankMaterialShell = { + enable = true; + + systemd = { + enable = true; # Systemd service for auto-start + restartIfChanged = true; # Auto-restart dms.service when dankMaterialShell changes + }; + + # Core features + enableSystemMonitoring = true; # System monitoring widgets (dgop) + enableClipboard = true; # Clipboard history manager + enableVPN = true; # VPN management widget + enableDynamicTheming = true; # Wallpaper-based theming (matugen) + enableAudioWavelength = true; # Audio visualizer (cava) + enableCalendarEvents = true; # Calendar integration (khal) + }; +} diff --git a/home/linux/gui/base/dma-shell/qt6ct.conf b/home/linux/gui/base/dma-shell/qt6ct.conf new file mode 100644 index 00000000..92d59fac --- /dev/null +++ b/home/linux/gui/base/dma-shell/qt6ct.conf @@ -0,0 +1,31 @@ +[Appearance] +custom_palette=false +icon_theme=Papirus +standard_dialogs=default +style=Fusion + +[Fonts] +fixed="Maple Mono NF CN,9,-1,5,400,0,0,0,0,0,0,0,0,0,0,1,Regular" +general="Maple Mono NF CN,9,-1,5,400,0,0,0,0,0,0,0,0,0,0,1,Regular" + +[Interface] +activate_item_on_single_click=1 +buttonbox_layout=0 +cursor_flash_time=1000 +dialog_buttons_have_icons=1 +double_click_interval=400 +gui_effects=@Invalid() +keyboard_scheme=2 +menus_have_icons=true +show_shortcuts_in_context_menus=true +stylesheets=@Invalid() +toolbutton_style=4 +underline_shortcut=1 +wheel_scroll_lines=3 + +[SettingsWindow] +geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x3H\0\0\x3\xf5\0\0\0\0\0\0\0\0\0\0\x3H\0\0\x3\xf5\0\0\0\0\0\0\0\0\x6\xab\0\0\0\0\0\0\0\0\0\0\x3H\0\0\x3\xf5) + +[Troubleshooting] +force_raster_widgets=1 +ignored_applications=@Invalid() diff --git a/home/linux/gui/base/dma-shell/settings.json b/home/linux/gui/base/dma-shell/settings.json new file mode 100644 index 00000000..ff864d89 --- /dev/null +++ b/home/linux/gui/base/dma-shell/settings.json @@ -0,0 +1,348 @@ +{ + "currentThemeName": "dynamic", + "customThemeFile": "", + "matugenScheme": "scheme-tonal-spot", + "runUserMatugenTemplates": true, + "matugenTargetMonitor": "", + "popupTransparency": 1, + "dockTransparency": 1, + "widgetBackgroundColor": "sch", + "widgetColorMode": "colorful", + "cornerRadius": 12, + "use24HourClock": true, + "showSeconds": true, + "useFahrenheit": false, + "nightModeEnabled": false, + "animationSpeed": 1, + "customAnimationDuration": 500, + "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": false, + "controlCenterShowBluetoothIcon": false, + "controlCenterShowAudioIcon": false, + "controlCenterShowVpnIcon": false, + "controlCenterShowBrightnessIcon": false, + "controlCenterShowMicIcon": false, + "controlCenterShowBatteryIcon": false, + "controlCenterShowPrinterIcon": false, + "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": false, + "showWorkspacePadding": false, + "workspaceScrolling": false, + "showWorkspaceApps": false, + "maxWorkspaceIcons": 3, + "workspacesPerMonitor": true, + "showOccupiedWorkspacesOnly": false, + "dwlShowAllTags": false, + "workspaceNameIcons": { + "1terminal": { + "type": "icon", + "value": "terminal" + }, + "2browser": { + "type": "icon", + "value": "desktop_windows" + }, + "3chat": { + "type": "icon", + "value": "forum" + }, + "4music": { + "type": "icon", + "value": "music_note" + }, + "5mail": { + "type": "icon", + "value": "mail" + }, + "6file": { + "type": "icon", + "value": "folder" + }, + "0other": { + "type": "icon", + "value": "update" + } + }, + "waveProgressEnabled": true, + "scrollTitleEnabled": true, + "clockCompactMode": false, + "focusedWindowCompactMode": false, + "runningAppsCompactMode": true, + "keyboardLayoutNameCompactMode": false, + "runningAppsCurrentWorkspace": false, + "runningAppsGroupByApp": false, + "centeringMode": "index", + "clockDateFormat": "", + "lockDateFormat": "", + "mediaSize": 1, + "appLauncherViewMode": "list", + "spotlightModalViewMode": "list", + "sortAppsAlphabetically": false, + "appLauncherGridColumns": 4, + "spotlightCloseNiriOverview": true, + "niriOverviewOverlayEnabled": true, + "weatherLocation": "New York, NY", + "weatherCoordinates": "40.7128,-74.0060", + "useAutoLocation": true, + "weatherEnabled": true, + "networkPreference": "auto", + "vpnLastConnected": "", + "iconTheme": "System Default", + "launcherLogoMode": "os", + "launcherLogoCustomPath": "", + "launcherLogoColorOverride": "primary", + "launcherLogoColorInvertOnMode": false, + "launcherLogoBrightness": 0.5, + "launcherLogoContrast": 1, + "launcherLogoSizeOffset": 0, + "fontFamily": "Inter Variable", + "monoFontFamily": "Maple Mono NF CN", + "fontWeight": 400, + "fontScale": 1, + "notepadUseMonospace": true, + "notepadFontFamily": "", + "notepadFontSize": 14, + "notepadShowLineNumbers": false, + "notepadTransparencyOverride": -1, + "notepadLastCustomTransparency": 0.7, + "soundsEnabled": true, + "useSystemSoundTheme": false, + "soundNewNotification": true, + "soundVolumeChanged": true, + "soundPluggedIn": true, + "acMonitorTimeout": 1800, + "acLockTimeout": 1200, + "acSuspendTimeout": 3600, + "acSuspendBehavior": 0, + "acProfileName": "", + "batteryMonitorTimeout": 900, + "batteryLockTimeout": 600, + "batterySuspendTimeout": 1200, + "batterySuspendBehavior": 0, + "batteryProfileName": "0", + "lockBeforeSuspend": true, + "loginctlLockIntegration": true, + "fadeToLockEnabled": true, + "fadeToLockGracePeriod": 5, + "launchPrefix": "", + "brightnessDevicePins": {}, + "wifiNetworkPins": {}, + "bluetoothDevicePins": {}, + "audioInputDevicePins": {}, + "audioOutputDevicePins": {}, + "gtkThemingEnabled": false, + "qtThemingEnabled": false, + "syncModeWithPortal": true, + "terminalsAlwaysDark": true, + "showDock": false, + "dockAutoHide": false, + "dockGroupByApp": true, + "dockOpenOnOverview": false, + "dockPosition": 1, + "dockSpacing": 4, + "dockBottomGap": 0, + "dockMargin": 0, + "dockIconSize": 40, + "dockIndicatorStyle": "circle", + "dockBorderEnabled": false, + "dockBorderColor": "surfaceText", + "dockBorderOpacity": 1, + "dockBorderThickness": 1, + "notificationOverlayEnabled": false, + "modalDarkenBackground": true, + "lockScreenShowPowerActions": true, + "enableFprint": false, + "maxFprintTries": 15, + "lockScreenActiveMonitor": "all", + "lockScreenInactiveColor": "#000000", + "hideBrightnessSlider": false, + "notificationTimeoutLow": 5000, + "notificationTimeoutNormal": 5000, + "notificationTimeoutCritical": 0, + "notificationPopupPosition": 0, + "osdAlwaysShowValue": true, + "osdPosition": 5, + "osdVolumeEnabled": true, + "osdMediaVolumeEnabled": true, + "osdBrightnessEnabled": true, + "osdIdleInhibitorEnabled": true, + "osdMicMuteEnabled": true, + "osdCapsLockEnabled": true, + "osdPowerProfileEnabled": true, + "osdAudioOutputEnabled": true, + "powerActionConfirm": true, + "powerActionHoldDuration": 0.5, + "powerMenuActions": ["reboot", "logout", "poweroff", "lock", "suspend", "restart"], + "powerMenuDefaultAction": "logout", + "powerMenuGridLayout": false, + "customPowerActionLock": "", + "customPowerActionLogout": "", + "customPowerActionSuspend": "", + "customPowerActionHibernate": "", + "customPowerActionReboot": "", + "customPowerActionPowerOff": "", + "updaterUseCustomCommand": false, + "updaterCustomCommand": "", + "updaterTerminalAdditionalParams": "", + "displayNameMode": "system", + "screenPreferences": {}, + "showOnLastDisplay": {}, + "barConfigs": [ + { + "id": "default", + "name": "Main Bar", + "enabled": true, + "position": 0, + "screenPreferences": ["all"], + "showOnLastDisplay": true, + "leftWidgets": [ + { + "id": "launcherButton", + "enabled": true + }, + { + "id": "clock", + "enabled": true + }, + { + "id": "cpuUsage", + "enabled": true, + "minimumWidth": true + }, + { + "id": "memUsage", + "enabled": true, + "minimumWidth": true + }, + { + "id": "network_speed_monitor", + "enabled": true + } + ], + "centerWidgets": [ + { + "id": "music", + "enabled": true + }, + { + "id": "runningApps", + "enabled": true + } + ], + "rightWidgets": [ + { + "id": "clipboard", + "enabled": true + }, + { + "id": "notificationButton", + "enabled": true + }, + { + "id": "battery", + "enabled": true + }, + { + "id": "systemTray", + "enabled": true + }, + { + "id": "controlCenterButton", + "enabled": true + } + ], + "spacing": 4, + "innerPadding": 4, + "bottomGap": 0, + "transparency": 1, + "widgetTransparency": 1, + "squareCorners": false, + "noBackground": false, + "gothCornersEnabled": false, + "gothCornerRadiusOverride": false, + "gothCornerRadiusValue": 12, + "borderEnabled": false, + "borderColor": "surfaceText", + "borderOpacity": 1, + "borderThickness": 1, + "widgetOutlineEnabled": false, + "widgetOutlineColor": "primary", + "widgetOutlineOpacity": 1, + "widgetOutlineThickness": 1, + "fontScale": 1, + "autoHide": false, + "autoHideDelay": 250, + "openOnOverview": true, + "visible": true, + "popupGapsAuto": true, + "popupGapsManual": 4, + "maximizeDetection": true + } + ], + "configVersion": 2 +} diff --git a/home/linux/gui/base/noctalia/default.nix b/home/linux/gui/base/noctalia/default.nix index 7cbb09fe..05a74867 100644 --- a/home/linux/gui/base/noctalia/default.nix +++ b/home/linux/gui/base/noctalia/default.nix @@ -12,46 +12,46 @@ let in { - home.packages = [ - package - pkgs.qt6Packages.qt6ct # for icon theme - pkgs.app2unit # Launch Desktop Entries (or arbitrary commands) as Systemd user units - ] - ++ (lib.optionals pkgs.stdenv.isx86_64 [ - pkgs.gpu-screen-recorder # recoding screen - ]); - - home.file."Pictures/Wallpapers".source = wallpapers; - - xdg.configFile = - let - mkSymlink = config.lib.file.mkOutOfStoreSymlink; - confPath = "${config.home.homeDirectory}/nix-config/home/linux/gui/base/noctalia"; - in - { - "noctalia/settings.json".source = mkSymlink "${confPath}/settings.json"; - "qt6ct/qt6ct.conf".source = mkSymlink "${confPath}/qt6ct.conf"; - }; - - systemd.user.services.noctalia-shell = { - Unit = { - Description = "Noctalia Shell - Wayland desktop shell"; - Documentation = "https://docs.noctalia.dev/docs"; - PartOf = [ config.wayland.systemd.target ]; - After = [ config.wayland.systemd.target ]; - }; - - Service = { - ExecStart = lib.getExe package; - Restart = "on-failure"; - - Environment = [ - "QT_QPA_PLATFORM=wayland;xcb" - "QT_QPA_PLATFORMTHEME=qt6ct" - "QT_AUTO_SCREEN_SCALE_FACTOR=1" - ]; - }; - - Install.WantedBy = [ config.wayland.systemd.target ]; - }; + # home.packages = [ + # package + # pkgs.qt6Packages.qt6ct # for icon theme + # pkgs.app2unit # Launch Desktop Entries (or arbitrary commands) as Systemd user units + # ] + # ++ (lib.optionals pkgs.stdenv.isx86_64 [ + # pkgs.gpu-screen-recorder # recoding screen + # ]); + # + # home.file."Pictures/Wallpapers".source = wallpapers; + # + # xdg.configFile = + # let + # mkSymlink = config.lib.file.mkOutOfStoreSymlink; + # confPath = "${config.home.homeDirectory}/nix-config/home/linux/gui/base/noctalia"; + # in + # { + # "noctalia/settings.json".source = mkSymlink "${confPath}/settings.json"; + # "qt6ct/qt6ct.conf".source = mkSymlink "${confPath}/qt6ct.conf"; + # }; + # + # systemd.user.services.noctalia-shell = { + # Unit = { + # Description = "Noctalia Shell - Wayland desktop shell"; + # Documentation = "https://docs.noctalia.dev/docs"; + # PartOf = [ config.wayland.systemd.target ]; + # After = [ config.wayland.systemd.target ]; + # }; + # + # Service = { + # ExecStart = lib.getExe package; + # Restart = "on-failure"; + # + # Environment = [ + # "QT_QPA_PLATFORM=wayland;xcb" + # "QT_QPA_PLATFORMTHEME=qt6ct" + # "QT_AUTO_SCREEN_SCALE_FACTOR=1" + # ]; + # }; + # + # Install.WantedBy = [ config.wayland.systemd.target ]; + # }; }