1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2025-12-08 06:25:37 -05:00

handle new ConfigReloaded event

This commit is contained in:
bbedward
2025-08-17 12:27:52 -04:00
parent d8082f70b3
commit 24b44186bd
4 changed files with 253 additions and 44 deletions

View File

@@ -26,6 +26,10 @@ Singleton {
// Overview state
property bool inOverview: false
// Config validation
property string configValidationOutput: ""
property bool hasInitialConnection: false
signal windowOpenedOrChanged(var windowData)
// Feature availability
@@ -97,6 +101,8 @@ Singleton {
handleWindowOpenedOrChanged(event.WindowOpenedOrChanged)
} else if (event.OverviewOpenedOrClosed) {
handleOverviewChanged(event.OverviewOpenedOrClosed)
} else if (event.ConfigLoaded) {
handleConfigLoaded(event.ConfigLoaded)
}
}
@@ -248,6 +254,48 @@ Singleton {
inOverview = data.is_open
}
function handleConfigLoaded(data) {
if (data.failed) {
validateProcess.running = true
} else {
configValidationOutput = ""
if (ToastService.toastVisible && ToastService.currentLevel === ToastService.levelError) {
ToastService.hideToast()
}
if (hasInitialConnection) {
ToastService.showInfo("niri: config reloaded")
}
}
if (!hasInitialConnection) {
hasInitialConnection = true
}
}
Process {
id: validateProcess
command: ["niri", "validate"]
running: false
stderr: StdioCollector {
onStreamFinished: {
const lines = text.split('\n')
const trimmedLines = lines.map(line => line.replace(/\s+$/, ''))
.filter(line => line.length > 0)
configValidationOutput = trimmedLines.join('\n').trim()
if (hasInitialConnection) {
ToastService.showError("niri: failed to load config", configValidationOutput)
}
}
}
onExited: exitCode => {
if (exitCode === 0) {
configValidationOutput = ""
}
}
}
function updateCurrentOutputWorkspaces() {
if (!currentOutput) {
currentOutputWorkspaces = allWorkspaces