1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-05-02 02:22:06 -04:00

Compare commits

...

6 Commits

Author SHA1 Message Date
bbedward
9139fd2fb1 doctor: add Miracle WM to checks 2026-04-20 09:27:59 -04:00
bbedward
da3df9bb77 systray: fix missing import 2026-04-20 09:24:13 -04:00
Jos Dehaes
e7834c981a Labwc service (#2248)
* services: add LabwcService with quit

labwc has a minimal IPC surface (no socket, no queries) but it does
expose `labwc --exit` as a clean shutdown path. Wrap that in a small
Singleton service following the same shape as DwlService/NiriService
so the compositor-specific dispatch in callers can stay uniform.

* session: dispatch labwc logout via LabwcService

CompositorService.isLabwc was detected but never dispatched in
_logout(); labwc sessions therefore fell through to the Hyprland
exit call, which silently no-ops under labwc. Users had to set
customPowerActionLogout to 'labwc --exit' as a workaround.

Add a labwc branch alongside the existing niri/dwl/sway branches
so the power menu logout works out of the box.
2026-04-20 09:22:20 -04:00
supposede
316428b14a Update color variables in zen-userchrome.css because it got broken again (#2246) 2026-04-20 09:16:04 -04:00
Walid Salah
6a9de8b423 Fix: Expand tilde from config paths (#2242)
* Expand tilde to the home directory for paths from config

* Remove extra line
2026-04-20 09:15:29 -04:00
Roni Laukkarinen
f1e3452307 feat(system-tray): add optional monochrome icons setting (#2241)
Adds a 'Monochrome Icons' toggle to the system tray widget context menu.
When enabled, all system tray icons are desaturated using MultiEffect,
giving a cleaner monochrome bar aesthetic that matches minimal themes.

The setting is per-user (settings.json), defaults to false to preserve
existing behavior.
2026-04-20 09:15:02 -04:00
11 changed files with 72 additions and 6 deletions

View File

@@ -91,6 +91,7 @@ var (
wayfireVersionRegex = regexp.MustCompile(`wayfire (\d+\.\d+)`)
labwcVersionRegex = regexp.MustCompile(`labwc (\d+\.\d+\.\d+)`)
mangowcVersionRegex = regexp.MustCompile(`mango (\d+\.\d+\.\d+)`)
miracleVersionRegex = regexp.MustCompile(`miracle-wm v?(\d+\.\d+\.\d+)`)
)
var doctorCmd = &cobra.Command{
@@ -469,6 +470,7 @@ func checkWindowManagers() []checkResult {
{"Wayfire", "wayfire", "--version", wayfireVersionRegex, []string{"wayfire"}},
{"labwc", "labwc", "--version", labwcVersionRegex, []string{"labwc"}},
{"mangowc", "mango", "-v", mangowcVersionRegex, []string{"mango"}},
{"Miracle WM", "miracle-wm", "--version", miracleVersionRegex, []string{"miracle-wm"}},
}
var results []checkResult
@@ -501,7 +503,7 @@ func checkWindowManagers() []checkResult {
results = append(results, checkResult{
catCompositor, "Compositor", statusError,
"No supported Wayland compositor found",
"Install Hyprland, niri, Sway, River, or Wayfire",
"Install Hyprland, niri, Sway, River, Wayfire, or miracle-wm",
doctorDocsURL + "#compositor-checks",
})
}
@@ -551,6 +553,8 @@ func detectRunningWM() string {
return "Hyprland"
case os.Getenv("NIRI_SOCKET") != "":
return "niri"
case os.Getenv("MIRACLESOCK") != "":
return "Miracle WM"
case os.Getenv("XDG_CURRENT_DESKTOP") != "":
return os.Getenv("XDG_CURRENT_DESKTOP")
}

View File

@@ -24,7 +24,9 @@ Singleton {
}
function expandTilde(path: string): string {
return strip(path.replace("~", stringify(root.home)));
if (!path.startsWith("~"))
return path;
return strip(root.home) + path.substring(1);
}
function shortenHome(path: string): string {

View File

@@ -211,6 +211,7 @@ Singleton {
property int selectedGpuIndex: 0
property var enabledGpuPciIds: []
property bool showSystemTray: true
property bool systemTrayMonochromeIcons: false
property bool showClock: true
property bool showNotificationButton: true
property bool showBattery: true

View File

@@ -1321,7 +1321,7 @@ Singleton {
}
function loadCustomThemeFromFile(filePath) {
customThemeFileView.path = filePath;
customThemeFileView.path = Paths.expandTilde(filePath);
}
function reloadCustomThemeVariant() {
@@ -1967,6 +1967,7 @@ Singleton {
FileView {
id: customThemeFileView
blockLoading: false
watchChanges: currentTheme === "custom"
function parseAndLoadTheme() {

View File

@@ -79,6 +79,7 @@ var SPEC = {
selectedGpuIndex: { def: 0 },
enabledGpuPciIds: { def: [] },
showSystemTray: { def: true },
systemTrayMonochromeIcons: { def: false },
showClock: { def: true },
showNotificationButton: { def: true },
showBattery: { def: true },

View File

@@ -1,4 +1,5 @@
import QtQuick
import QtQuick.Effects
import Quickshell
import Quickshell.Hyprland
import Quickshell.Services.SystemTray
@@ -366,6 +367,10 @@ BasePill {
smooth: true
mipmap: true
visible: status === Image.Ready
layer.enabled: SettingsData.systemTrayMonochromeIcons
layer.effect: MultiEffect {
saturation: -1
}
}
Text {
@@ -581,6 +586,10 @@ BasePill {
smooth: true
mipmap: true
visible: status === Image.Ready
layer.enabled: SettingsData.systemTrayMonochromeIcons
layer.effect: MultiEffect {
saturation: -1
}
}
Text {
@@ -709,6 +718,10 @@ BasePill {
smooth: true
mipmap: true
visible: status === Image.Ready
layer.enabled: SettingsData.systemTrayMonochromeIcons
layer.effect: MultiEffect {
saturation: -1
}
}
Text {
@@ -1210,6 +1223,10 @@ BasePill {
smooth: true
mipmap: true
visible: status === Image.Ready
layer.enabled: SettingsData.systemTrayMonochromeIcons
layer.effect: MultiEffect {
saturation: -1
}
}
Text {

View File

@@ -714,6 +714,15 @@ Item {
})
}
SettingsToggleCard {
iconName: "filter_b_and_w"
title: I18n.tr("Monochrome System Tray Icons")
description: I18n.tr("Desaturate all system tray icons for a uniform monochrome look")
visible: selectedBarConfig?.enabled
checked: SettingsData.systemTrayMonochromeIcons
onToggled: checked => SettingsData.set("systemTrayMonochromeIcons", checked)
}
SettingsToggleCard {
iconName: "mouse"
title: I18n.tr("Scroll Wheel")

View File

@@ -0,0 +1,15 @@
pragma Singleton
pragma ComponentBehavior: Bound
import QtQuick
import Quickshell
Singleton {
id: root
// Exit the labwc session. Used by SessionService when the user
// triggers logout and no custom logout command is configured.
function quit() {
Quickshell.execDetached(["labwc", "--exit"]);
}
}

View File

@@ -192,7 +192,7 @@ Singleton {
function attachToSession(name) {
if (SettingsData.muxUseCustomCommand && SettingsData.muxCustomCommand) {
Quickshell.execDetached([SettingsData.muxCustomCommand, name])
Quickshell.execDetached([Paths.expandTilde(SettingsData.muxCustomCommand), name])
} else if (root.muxType === "zellij") {
Quickshell.execDetached(_terminalPrefix().concat(["zellij", "attach", name]))
} else {
@@ -202,7 +202,7 @@ Singleton {
function createSession(name) {
if (SettingsData.muxUseCustomCommand && SettingsData.muxCustomCommand) {
Quickshell.execDetached([SettingsData.muxCustomCommand, name])
Quickshell.execDetached([Paths.expandTilde(SettingsData.muxCustomCommand), name])
} else if (root.muxType === "zellij") {
Quickshell.execDetached(_terminalPrefix().concat(["zellij", "-s", name]))
} else {

View File

@@ -320,6 +320,11 @@ Singleton {
return;
}
if (CompositorService.isLabwc) {
LabwcService.quit();
return;
}
if (CompositorService.isSway || CompositorService.isScroll || CompositorService.isMiracle) {
try {
I3.dispatch("exit");

View File

@@ -5,10 +5,21 @@
--toolbar-field-color: {{colors.on_background.default.hex}} !important;
--tab-selected-textcolor: {{colors.primary.default.hex}} !important;
--toolbar-color: {{colors.on_background.default.hex}} !important;
--arrowpanel-color: {{colors.on_surface.default.hex}} !important;
--arrowpanel-color: {{colors.on_background.default.hex}} !important;
--arrowpanel-background: {{colors.surface_container.default.hex}} !important;
--sidebar-text-color: {{colors.on_background.default.hex}} !important;
--zen-main-browser-background: {{colors.background.default.hex}} !important;
--zen-main-browser-background-toolbar: {{colors.background.default.hex}} !important;
}
#zen-browser-background {
--zen-main-browser-background: {{colors.background.default.hex}} !important;
--zen-background-opacity: 1 !important;
}
#zen-toolbar-background {
--zen-main-browser-background-toolbar: {{colors.background.default.hex}} !important;
--zen-background-opacity: 1 !important;
}
.sidebar-placesTree {