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