mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2025-12-05 21:15:38 -05:00
support for Hyprland workspaces
This commit is contained in:
@@ -33,17 +33,21 @@ Item {
|
||||
}
|
||||
|
||||
property var currentWorkspace: {
|
||||
if (useExtWorkspace) {
|
||||
return getExtWorkspaceActiveWorkspace()
|
||||
} else if (CompositorService.isNiri) {
|
||||
if (useExtWorkspace) return getExtWorkspaceActiveWorkspace()
|
||||
|
||||
switch (CompositorService.compositor) {
|
||||
case "niri":
|
||||
return getNiriActiveWorkspace()
|
||||
} else if (CompositorService.isDwl) {
|
||||
case "hyprland":
|
||||
return getHyprlandActiveWorkspace()
|
||||
case "dwl":
|
||||
const activeTags = getDwlActiveTags()
|
||||
return activeTags.length > 0 ? activeTags[0] : -1
|
||||
} else if (CompositorService.isSway) {
|
||||
case "sway":
|
||||
return getSwayActiveWorkspace()
|
||||
default:
|
||||
return 1
|
||||
}
|
||||
return 1
|
||||
}
|
||||
property var dwlActiveTags: {
|
||||
if (CompositorService.isDwl) {
|
||||
@@ -56,19 +60,25 @@ Item {
|
||||
const baseList = getExtWorkspaceWorkspaces()
|
||||
return SettingsData.showWorkspacePadding ? padWorkspaces(baseList) : baseList
|
||||
}
|
||||
if (CompositorService.isNiri) {
|
||||
const baseList = getNiriWorkspaces()
|
||||
return SettingsData.showWorkspacePadding ? padWorkspaces(baseList) : baseList
|
||||
|
||||
let baseList
|
||||
switch (CompositorService.compositor) {
|
||||
case "niri":
|
||||
baseList = getNiriWorkspaces()
|
||||
break
|
||||
case "hyprland":
|
||||
baseList = getHyprlandWorkspaces()
|
||||
break
|
||||
case "dwl":
|
||||
baseList = getDwlTags()
|
||||
break
|
||||
case "sway":
|
||||
baseList = getSwayWorkspaces()
|
||||
break
|
||||
default:
|
||||
return [1]
|
||||
}
|
||||
if (CompositorService.isDwl) {
|
||||
const baseList = getDwlTags()
|
||||
return SettingsData.showWorkspacePadding ? padWorkspaces(baseList) : baseList
|
||||
}
|
||||
if (CompositorService.isSway) {
|
||||
const baseList = getSwayWorkspaces()
|
||||
return SettingsData.showWorkspacePadding ? padWorkspaces(baseList) : baseList
|
||||
}
|
||||
return [1]
|
||||
return SettingsData.showWorkspacePadding ? padWorkspaces(baseList) : baseList
|
||||
}
|
||||
|
||||
function getSwayWorkspaces() {
|
||||
@@ -93,6 +103,27 @@ Item {
|
||||
return focusedWs ? focusedWs.num : 1
|
||||
}
|
||||
|
||||
function getHyprlandWorkspaces() {
|
||||
const workspaces = Hyprland.workspaces?.values || []
|
||||
if (workspaces.length === 0) return [{id: 1}]
|
||||
|
||||
if (!root.screenName || !SettingsData.workspacesPerMonitor) {
|
||||
return workspaces.slice().sort((a, b) => a.id - b.id)
|
||||
}
|
||||
|
||||
const monitorWorkspaces = workspaces.filter(ws => ws.monitor?.name === root.screenName)
|
||||
return monitorWorkspaces.length > 0 ? monitorWorkspaces.sort((a, b) => a.id - b.id) : [{id: 1}]
|
||||
}
|
||||
|
||||
function getHyprlandActiveWorkspace() {
|
||||
if (!root.screenName || !SettingsData.workspacesPerMonitor) {
|
||||
return Hyprland.focusedWorkspace?.id || 1
|
||||
}
|
||||
|
||||
const monitor = Hyprland.monitors?.values?.find(m => m.name === root.screenName)
|
||||
return monitor?.activeWorkspace?.id || 1
|
||||
}
|
||||
|
||||
function getWorkspaceIcons(ws) {
|
||||
_desktopEntriesUpdateTrigger
|
||||
if (!SettingsData.showWorkspaceApps || !ws) {
|
||||
@@ -892,6 +923,11 @@ Item {
|
||||
enabled: CompositorService.isDwl
|
||||
function onStateChanged() { delegateRoot.updateAllData() }
|
||||
}
|
||||
Connections {
|
||||
target: Hyprland.workspaces
|
||||
enabled: CompositorService.isHyprland
|
||||
function onValuesChanged() { delegateRoot.updateAllData() }
|
||||
}
|
||||
Connections {
|
||||
target: I3.workspaces
|
||||
enabled: CompositorService.isSway
|
||||
|
||||
@@ -347,7 +347,8 @@ Singleton {
|
||||
}
|
||||
|
||||
function detectCompositor() {
|
||||
if (hyprlandSignature && hyprlandSignature.length > 0) {
|
||||
if (hyprlandSignature && hyprlandSignature.length > 0 &&
|
||||
!niriSocket && !swaySocket && !labwcPid) {
|
||||
isHyprland = true
|
||||
isNiri = false
|
||||
isDwl = false
|
||||
|
||||
Reference in New Issue
Block a user