34 lines
1.2 KiB
QML
34 lines
1.2 KiB
QML
pragma Singleton
|
|
|
|
import QtQuick
|
|
import Quickshell.Io
|
|
|
|
QtObject {
|
|
id: root
|
|
|
|
signal workspacesChanged(var workspaces)
|
|
signal workspaceActivated(int id, bool focused)
|
|
signal windowFocusChanged(var windowId)
|
|
signal windowOpenedOrChanged(var window)
|
|
|
|
property var _eventStream: Process {
|
|
running: true
|
|
command: ["niri", "msg", "--json", "event-stream"]
|
|
stdout: SplitParser {
|
|
splitMarker: "\n"
|
|
onRead: line => {
|
|
try {
|
|
const ev = JSON.parse(line);
|
|
if (ev.WorkspacesChanged !== undefined)
|
|
root.workspacesChanged(ev.WorkspacesChanged.workspaces);
|
|
else if (ev.WorkspaceActivated !== undefined)
|
|
root.workspaceActivated(ev.WorkspaceActivated.id, ev.WorkspaceActivated.focused);
|
|
else if (ev.WindowFocusChanged !== undefined)
|
|
root.windowFocusChanged(ev.WindowFocusChanged.id);
|
|
else if (ev.WindowOpenedOrChanged !== undefined)
|
|
root.windowOpenedOrChanged(ev.WindowOpenedOrChanged.window);
|
|
} catch (e) {}
|
|
}
|
|
}
|
|
}
|
|
}
|