feat: replace noctalia-shell with dma-shell

Signed-off-by: Ryan Yin <xiaoyin_c@qq.com>
This commit is contained in:
Ryan Yin
2026-01-06 14:57:07 +08:00
parent 23ff53dcac
commit 8f3780ba5d
7 changed files with 549 additions and 44 deletions

67
flake.lock generated
View File

@@ -124,6 +124,27 @@
"type": "github" "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": { "disko": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@@ -145,6 +166,29 @@
"type": "github" "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-compat": {
"flake": false, "flake": false,
"locked": { "locked": {
@@ -975,6 +1019,28 @@
"type": "github" "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": { "root": {
"inputs": { "inputs": {
"aagl": "aagl", "aagl": "aagl",
@@ -982,6 +1048,7 @@
"blender-bin": "blender-bin", "blender-bin": "blender-bin",
"catppuccin": "catppuccin", "catppuccin": "catppuccin",
"disko": "disko", "disko": "disko",
"dms": "dms",
"ghostty": "ghostty", "ghostty": "ghostty",
"haumea": "haumea", "haumea": "haumea",
"helix": "helix", "helix": "helix",

View File

@@ -142,6 +142,11 @@
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
dms = {
url = "github:AvengeMedia/DankMaterialShell/stable";
inputs.nixpkgs.follows = "nixpkgs";
};
# -------------- Gaming --------------------- # -------------- Gaming ---------------------
nix-gaming = { nix-gaming = {

View File

@@ -7,10 +7,14 @@
"MOZ_WEBRENDER" = "1"; "MOZ_WEBRENDER" = "1";
# enable native Wayland support for most Electron apps # enable native Wayland support for most Electron apps
"ELECTRON_OZONE_PLATFORM_HINT" = "auto"; "ELECTRON_OZONE_PLATFORM_HINT" = "auto";
# misc
"_JAVA_AWT_WM_NONREPARENTING" = "1"; # qt
"QT_WAYLAND_DISABLE_WINDOWDECORATION" = "1"; "QT_WAYLAND_DISABLE_WINDOWDECORATION" = "1";
"QT_QPA_PLATFORM" = "wayland"; "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"; "SDL_VIDEODRIVER" = "wayland";
"GDK_BACKEND" = "wayland"; "GDK_BACKEND" = "wayland";
"XDG_SESSION_TYPE" = "wayland"; "XDG_SESSION_TYPE" = "wayland";

View File

@@ -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)
};
}

View File

@@ -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()

View File

@@ -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
}

View File

@@ -12,46 +12,46 @@ let
in in
{ {
home.packages = [ # home.packages = [
package # package
pkgs.qt6Packages.qt6ct # for icon theme # pkgs.qt6Packages.qt6ct # for icon theme
pkgs.app2unit # Launch Desktop Entries (or arbitrary commands) as Systemd user units # pkgs.app2unit # Launch Desktop Entries (or arbitrary commands) as Systemd user units
] # ]
++ (lib.optionals pkgs.stdenv.isx86_64 [ # ++ (lib.optionals pkgs.stdenv.isx86_64 [
pkgs.gpu-screen-recorder # recoding screen # pkgs.gpu-screen-recorder # recoding screen
]); # ]);
#
home.file."Pictures/Wallpapers".source = wallpapers; # home.file."Pictures/Wallpapers".source = wallpapers;
#
xdg.configFile = # xdg.configFile =
let # let
mkSymlink = config.lib.file.mkOutOfStoreSymlink; # mkSymlink = config.lib.file.mkOutOfStoreSymlink;
confPath = "${config.home.homeDirectory}/nix-config/home/linux/gui/base/noctalia"; # confPath = "${config.home.homeDirectory}/nix-config/home/linux/gui/base/noctalia";
in # in
{ # {
"noctalia/settings.json".source = mkSymlink "${confPath}/settings.json"; # "noctalia/settings.json".source = mkSymlink "${confPath}/settings.json";
"qt6ct/qt6ct.conf".source = mkSymlink "${confPath}/qt6ct.conf"; # "qt6ct/qt6ct.conf".source = mkSymlink "${confPath}/qt6ct.conf";
}; # };
#
systemd.user.services.noctalia-shell = { # systemd.user.services.noctalia-shell = {
Unit = { # Unit = {
Description = "Noctalia Shell - Wayland desktop shell"; # Description = "Noctalia Shell - Wayland desktop shell";
Documentation = "https://docs.noctalia.dev/docs"; # Documentation = "https://docs.noctalia.dev/docs";
PartOf = [ config.wayland.systemd.target ]; # PartOf = [ config.wayland.systemd.target ];
After = [ config.wayland.systemd.target ]; # After = [ config.wayland.systemd.target ];
}; # };
#
Service = { # Service = {
ExecStart = lib.getExe package; # ExecStart = lib.getExe package;
Restart = "on-failure"; # Restart = "on-failure";
#
Environment = [ # Environment = [
"QT_QPA_PLATFORM=wayland;xcb" # "QT_QPA_PLATFORM=wayland;xcb"
"QT_QPA_PLATFORMTHEME=qt6ct" # "QT_QPA_PLATFORMTHEME=qt6ct"
"QT_AUTO_SCREEN_SCALE_FACTOR=1" # "QT_AUTO_SCREEN_SCALE_FACTOR=1"
]; # ];
}; # };
#
Install.WantedBy = [ config.wayland.systemd.target ]; # Install.WantedBy = [ config.wayland.systemd.target ];
}; # };
} }