diff options
| author | Nippy <nippy@rp1.hu> | 2026-05-09 13:33:09 +0200 |
|---|---|---|
| committer | Nippy <nippy@rp1.hu> | 2026-05-09 13:33:09 +0200 |
| commit | a2b924d7e9492b978ad6dc33b6c1ffcb304b4bc5 (patch) | |
| tree | 1a8769217f84bfe9d6216fafaadaf8cdd876d457 /raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Services/DMSService.qml | |
| parent | 34b9c34f982b2596cfa9e368a2d7f74e9a17477c (diff) | |
| download | RaveOS-PKGBUILD-a2b924d7e9492b978ad6dc33b6c1ffcb304b4bc5.tar.gz RaveOS-PKGBUILD-a2b924d7e9492b978ad6dc33b6c1ffcb304b4bc5.zip | |
raveos update
Diffstat (limited to 'raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Services/DMSService.qml')
| -rw-r--r-- | raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Services/DMSService.qml | 757 |
1 files changed, 0 insertions, 757 deletions
diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Services/DMSService.qml b/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Services/DMSService.qml deleted file mode 100644 index 217b96a..0000000 --- a/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Services/DMSService.qml +++ /dev/null @@ -1,757 +0,0 @@ -pragma Singleton -pragma ComponentBehavior: Bound - -import QtQuick -import Quickshell -import Quickshell.Io -import qs.Common - -Singleton { - id: root - - property bool dmsAvailable: false - property var capabilities: [] - property int apiVersion: 0 - property string cliVersion: "" - readonly property int expectedApiVersion: 1 - property var availablePlugins: [] - property var installedPlugins: [] - property var availableThemes: [] - property var installedThemes: [] - property bool isConnected: false - property bool isConnecting: false - property bool subscribeConnected: false - readonly property bool forceExtWorkspace: false - - readonly property string socketPath: Quickshell.env("DMS_SOCKET") - - property var pendingRequests: ({}) - property var clipboardRequestIds: ({}) - property int requestIdCounter: 0 - property bool shownOutdatedError: false - property string updateCommand: "dms update" - property bool checkingUpdateCommand: false - - signal pluginsListReceived(var plugins) - signal installedPluginsReceived(var plugins) - signal searchResultsReceived(var plugins) - signal themesListReceived(var themes) - signal installedThemesReceived(var themes) - signal themeSearchResultsReceived(var themes) - signal operationSuccess(string message) - signal operationError(string error) - signal connectionStateChanged - - signal networkStateUpdate(var data) - signal cupsStateUpdate(var data) - signal loginctlStateUpdate(var data) - signal loginctlEvent(var event) - signal capabilitiesReceived - signal credentialsRequest(var data) - signal bluetoothPairingRequest(var data) - signal dwlStateUpdate(var data) - signal brightnessStateUpdate(var data) - signal brightnessDeviceUpdate(var device) - signal extWorkspaceStateUpdate(var data) - signal wlrOutputStateUpdate(var data) - signal evdevStateUpdate(var data) - signal gammaStateUpdate(var data) - signal themeAutoStateUpdate(var data) - signal openUrlRequested(string url) - signal appPickerRequested(var data) - signal screensaverStateUpdate(var data) - signal clipboardStateUpdate(var data) - signal locationStateUpdate(var data) - - property bool capsLockState: false - property bool screensaverInhibited: false - property var screensaverInhibitors: [] - - property var activeSubscriptions: ["network", "network.credentials", "loginctl", "freedesktop", "freedesktop.screensaver", "gamma", "theme.auto", "bluetooth", "bluetooth.pairing", "dwl", "brightness", "wlroutput", "evdev", "browser", "dbus", "clipboard", "location"] - - Component.onCompleted: { - if (socketPath && socketPath.length > 0) { - detectUpdateCommand(); - } - } - - function detectUpdateCommand() { - checkingUpdateCommand = true; - checkAurHelper.running = true; - } - - function startSocketConnection() { - if (socketPath && socketPath.length > 0) { - testProcess.running = true; - } - } - - Process { - id: checkAurHelper - command: ["sh", "-c", "command -v paru || command -v yay"] - running: false - - stdout: StdioCollector { - onStreamFinished: { - const helper = text.trim(); - if (helper.includes("paru")) { - checkDmsPackage.helper = "paru"; - checkDmsPackage.running = true; - } else if (helper.includes("yay")) { - checkDmsPackage.helper = "yay"; - checkDmsPackage.running = true; - } else { - updateCommand = "dms update"; - checkingUpdateCommand = false; - startSocketConnection(); - } - } - } - - onExited: exitCode => { - if (exitCode !== 0) { - updateCommand = "dms update"; - checkingUpdateCommand = false; - startSocketConnection(); - } - } - } - - Process { - id: checkDmsPackage - property string helper: "" - command: ["sh", "-c", "pacman -Qi dms-shell-git 2>/dev/null || pacman -Qi dms-shell-bin 2>/dev/null"] - running: false - - stdout: StdioCollector { - onStreamFinished: { - if (text.includes("dms-shell-git")) { - updateCommand = checkDmsPackage.helper + " -S dms-shell-git"; - } else if (text.includes("dms-shell-bin")) { - updateCommand = checkDmsPackage.helper + " -S dms-shell-bin"; - } else { - updateCommand = "dms update"; - } - checkingUpdateCommand = false; - startSocketConnection(); - } - } - - onExited: exitCode => { - if (exitCode !== 0) { - updateCommand = "dms update"; - checkingUpdateCommand = false; - startSocketConnection(); - } - } - } - - Process { - id: testProcess - command: ["test", "-S", root.socketPath] - - onExited: exitCode => { - if (exitCode === 0) { - root.dmsAvailable = true; - connectSocket(); - } else { - root.dmsAvailable = false; - } - } - } - - function connectSocket() { - if (!dmsAvailable || isConnected || isConnecting) { - return; - } - - isConnecting = true; - requestSocket.connected = true; - } - - DankSocket { - id: requestSocket - path: root.socketPath - connected: false - - onConnectionStateChanged: { - if (connected) { - root.isConnected = true; - root.isConnecting = false; - root.connectionStateChanged(); - subscribeSocket.connected = true; - } else { - root.isConnected = false; - root.isConnecting = false; - root.apiVersion = 0; - root.capabilities = []; - root.connectionStateChanged(); - } - } - - parser: SplitParser { - onRead: line => { - if (!line || line.length === 0) - return; - - let response; - try { - response = JSON.parse(line); - } catch (e) { - console.warn("DMSService: Failed to parse request response:", line.substring(0, 100)); - return; - } - const isClipboard = clipboardRequestIds[response.id]; - if (isClipboard) - delete clipboardRequestIds[response.id]; - else - console.log("DMSService: Request socket <<", line); - handleResponse(response); - } - } - } - - DankSocket { - id: subscribeSocket - path: root.socketPath - connected: false - - onConnectionStateChanged: { - root.subscribeConnected = connected; - if (connected) { - sendSubscribeRequest(); - } - } - - parser: SplitParser { - onRead: line => { - if (!line || line.length === 0) - return; - - let response; - try { - response = JSON.parse(line); - } catch (e) { - console.warn("DMSService: Failed to parse subscription event:", line.substring(0, 100)); - return; - } - if (!line.includes("clipboard")) - console.log("DMSService: Subscribe socket <<", line); - handleSubscriptionEvent(response); - } - } - } - - function sendSubscribeRequest() { - const request = { - "method": "subscribe" - }; - - if (activeSubscriptions.length > 0) { - request.params = { - "services": activeSubscriptions - }; - console.log("DMSService: Subscribing to services:", JSON.stringify(activeSubscriptions)); - } else { - console.log("DMSService: Subscribing to all services"); - } - - subscribeSocket.send(request); - } - - function subscribe(services) { - if (!Array.isArray(services)) { - services = [services]; - } - - activeSubscriptions = services; - - if (subscribeConnected) { - subscribeSocket.connected = false; - Qt.callLater(() => { - subscribeSocket.connected = true; - }); - } - } - - function addSubscription(service) { - if (activeSubscriptions.includes("all")) - return; - if (!activeSubscriptions.includes(service)) { - const newSubs = [...activeSubscriptions, service]; - subscribe(newSubs); - } - } - - function removeSubscription(service) { - if (activeSubscriptions.includes("all")) { - const allServices = ["network", "loginctl", "freedesktop", "gamma", "bluetooth", "dwl", "brightness", "extworkspace", "browser", "location"]; - const filtered = allServices.filter(s => s !== service); - subscribe(filtered); - } else { - const filtered = activeSubscriptions.filter(s => s !== service); - if (filtered.length === 0) { - console.warn("DMSService: Cannot remove last subscription"); - return; - } - subscribe(filtered); - } - } - - function subscribeAll() { - subscribe(["all"]); - } - - function subscribeAllExcept(excludeServices) { - if (!Array.isArray(excludeServices)) { - excludeServices = [excludeServices]; - } - - const allServices = ["network", "loginctl", "freedesktop", "gamma", "theme.auto", "bluetooth", "cups", "dwl", "brightness", "extworkspace", "browser", "dbus", "location"]; - const filtered = allServices.filter(s => !excludeServices.includes(s)); - subscribe(filtered); - } - - function handleSubscriptionEvent(response) { - if (response.error) { - if (response.error.includes("unknown method") && response.error.includes("subscribe")) { - if (!shownOutdatedError) { - console.error("DMSService: Server does not support subscribe method"); - ToastService.showError(I18n.tr("DMS out of date"), I18n.tr("To update, run the following command:"), updateCommand); - shownOutdatedError = true; - } - } - return; - } - - if (!response.result) { - return; - } - - const service = response.result.service; - const data = response.result.data; - - if (service === "server") { - apiVersion = data.apiVersion || 0; - cliVersion = data.cliVersion || ""; - capabilities = data.capabilities || []; - - console.info("DMSService: Connected (API v" + apiVersion + ", CLI " + cliVersion + ") -", JSON.stringify(capabilities)); - - if (apiVersion < expectedApiVersion) { - ToastService.showError("DMS server is outdated (API v" + apiVersion + ", expected v" + expectedApiVersion + ")"); - } - - capabilitiesReceived(); - } else if (service === "network") { - networkStateUpdate(data); - } else if (service === "network.credentials") { - credentialsRequest(data); - } else if (service === "loginctl") { - if (data.event) { - loginctlEvent(data); - } else { - loginctlStateUpdate(data); - } - } else if (service === "bluetooth.pairing") { - bluetoothPairingRequest(data); - } else if (service === "cups") { - cupsStateUpdate(data); - } else if (service === "dwl") { - dwlStateUpdate(data); - } else if (service === "brightness") { - brightnessStateUpdate(data); - } else if (service === "brightness.update") { - if (data.device) { - brightnessDeviceUpdate(data.device); - } - } else if (service === "extworkspace") { - extWorkspaceStateUpdate(data); - } else if (service === "wlroutput") { - wlrOutputStateUpdate(data); - } else if (service === "evdev") { - if (data.capsLock !== undefined) { - capsLockState = data.capsLock; - } - evdevStateUpdate(data); - } else if (service === "gamma") { - gammaStateUpdate(data); - } else if (service === "theme.auto") { - themeAutoStateUpdate(data); - } else if (service === "browser.open_requested") { - if (data.target) { - if (data.requestType === "url" || !data.requestType) { - openUrlRequested(data.target); - } else { - appPickerRequested(data); - } - } else if (data.url) { - openUrlRequested(data.url); - } - } else if (service === "freedesktop.screensaver") { - screensaverInhibited = data.inhibited || false; - screensaverInhibitors = data.inhibitors || []; - screensaverStateUpdate(data); - } else if (service === "dbus") { - dbusSignalReceived(data.subscriptionId || "", data); - } else if (service === "clipboard") { - clipboardStateUpdate(data); - } else if (service === "location") { - locationStateUpdate(data); - } - } - - function sendRequest(method, params, callback) { - if (!isConnected) { - console.warn("DMSService.sendRequest: Not connected, method:", method); - if (callback) { - callback({ - "error": "not connected to DMS socket" - }); - } - return; - } - - requestIdCounter++; - const id = Date.now() + requestIdCounter; - const request = { - "id": id, - "method": method - }; - - if (params) { - request.params = params; - } - - if (callback) - pendingRequests[id] = callback; - - if (method.startsWith("clipboard")) { - clipboardRequestIds[id] = true; - } else { - console.log("DMSService.sendRequest: Sending request id=" + id + " method=" + method); - } - requestSocket.send(request); - } - - function handleResponse(response) { - const callback = pendingRequests[response.id]; - - if (callback) { - delete pendingRequests[response.id]; - callback(response); - } - } - - function ping(callback) { - sendRequest("ping", null, callback); - } - - function listPlugins(callback) { - sendRequest("plugins.list", null, response => { - if (response.result) { - availablePlugins = response.result; - pluginsListReceived(response.result); - } - if (callback) { - callback(response); - } - }); - } - - function listInstalled(callback) { - sendRequest("plugins.listInstalled", null, response => { - if (response.result) { - installedPlugins = response.result; - installedPluginsReceived(response.result); - } - if (callback) { - callback(response); - } - }); - } - - function search(query, category, compositor, capability, callback) { - const params = { - "query": query - }; - if (category) { - params.category = category; - } - if (compositor) { - params.compositor = compositor; - } - if (capability) { - params.capability = capability; - } - - sendRequest("plugins.search", params, response => { - if (response.result) { - searchResultsReceived(response.result); - } - if (callback) { - callback(response); - } - }); - } - - function install(pluginName, callback) { - sendRequest("plugins.install", { - "name": pluginName - }, response => { - if (callback) { - callback(response); - } - if (!response.error) { - listInstalled(); - } - }); - } - - function uninstall(pluginName, callback) { - sendRequest("plugins.uninstall", { - "name": pluginName - }, response => { - if (callback) { - callback(response); - } - if (!response.error) { - listInstalled(); - } - }); - } - - function update(pluginName, callback) { - sendRequest("plugins.update", { - "name": pluginName - }, response => { - if (callback) { - callback(response); - } - if (!response.error) { - listInstalled(); - } - }); - } - - function listThemes(callback) { - sendRequest("themes.list", null, response => { - if (response.result) { - availableThemes = response.result; - themesListReceived(response.result); - } - if (callback) { - callback(response); - } - }); - } - - function listInstalledThemes(callback) { - sendRequest("themes.listInstalled", null, response => { - if (response.result) { - installedThemes = response.result; - installedThemesReceived(response.result); - } - if (callback) { - callback(response); - } - }); - } - - function searchThemes(query, callback) { - sendRequest("themes.search", { - "query": query - }, response => { - if (response.result) { - themeSearchResultsReceived(response.result); - } - if (callback) { - callback(response); - } - }); - } - - function installTheme(themeName, callback) { - sendRequest("themes.install", { - "name": themeName - }, response => { - if (callback) { - callback(response); - } - if (!response.error) { - listInstalledThemes(); - } - }); - } - - function uninstallTheme(themeName, callback) { - sendRequest("themes.uninstall", { - "name": themeName - }, response => { - if (callback) { - callback(response); - } - if (!response.error) { - listInstalledThemes(); - } - }); - } - - function updateTheme(themeName, callback) { - sendRequest("themes.update", { - "name": themeName - }, response => { - if (callback) { - callback(response); - } - if (!response.error) { - listInstalledThemes(); - } - }); - } - - function lockSession(callback) { - sendRequest("loginctl.lock", null, callback); - } - - function unlockSession(callback) { - sendRequest("loginctl.unlock", null, callback); - } - - function bluetoothPair(devicePath, callback) { - sendRequest("bluetooth.pair", { - "device": devicePath - }, callback); - } - - function bluetoothConnect(devicePath, callback) { - sendRequest("bluetooth.connect", { - "device": devicePath - }, callback); - } - - function bluetoothDisconnect(devicePath, callback) { - sendRequest("bluetooth.disconnect", { - "device": devicePath - }, callback); - } - - function bluetoothRemove(devicePath, callback) { - sendRequest("bluetooth.remove", { - "device": devicePath - }, callback); - } - - function bluetoothTrust(devicePath, callback) { - sendRequest("bluetooth.trust", { - "device": devicePath - }, callback); - } - - function bluetoothSubmitPairing(token, secrets, accept, callback) { - sendRequest("bluetooth.pairing.submit", { - "token": token, - "secrets": secrets, - "accept": accept - }, callback); - } - - function bluetoothCancelPairing(token, callback) { - sendRequest("bluetooth.pairing.cancel", { - "token": token - }, callback); - } - - signal dbusSignalReceived(string subscriptionId, var data) - - property var dbusSubscriptions: ({}) - - function dbusCall(bus, dest, path, iface, method, args, callback) { - sendRequest("dbus.call", { - "bus": bus, - "dest": dest, - "path": path, - "interface": iface, - "method": method, - "args": args || [] - }, callback); - } - - function dbusGetProperty(bus, dest, path, iface, property, callback) { - sendRequest("dbus.getProperty", { - "bus": bus, - "dest": dest, - "path": path, - "interface": iface, - "property": property - }, callback); - } - - function dbusSetProperty(bus, dest, path, iface, property, value, callback) { - sendRequest("dbus.setProperty", { - "bus": bus, - "dest": dest, - "path": path, - "interface": iface, - "property": property, - "value": value - }, callback); - } - - function dbusGetAllProperties(bus, dest, path, iface, callback) { - sendRequest("dbus.getAllProperties", { - "bus": bus, - "dest": dest, - "path": path, - "interface": iface - }, callback); - } - - function dbusIntrospect(bus, dest, path, callback) { - sendRequest("dbus.introspect", { - "bus": bus, - "dest": dest, - "path": path || "/" - }, callback); - } - - function dbusListNames(bus, callback) { - sendRequest("dbus.listNames", { - "bus": bus - }, callback); - } - - function dbusSubscribe(bus, sender, path, iface, member, callback) { - sendRequest("dbus.subscribe", { - "bus": bus, - "sender": sender || "", - "path": path || "", - "interface": iface || "", - "member": member || "" - }, response => { - if (!response.error && response.result?.subscriptionId) { - dbusSubscriptions[response.result.subscriptionId] = true; - } - if (callback) - callback(response); - }); - } - - function dbusUnsubscribe(subscriptionId, callback) { - sendRequest("dbus.unsubscribe", { - "subscriptionId": subscriptionId - }, response => { - if (!response.error) { - delete dbusSubscriptions[subscriptionId]; - } - if (callback) - callback(response); - }); - } - - function renameWorkspace(name, callback) { - sendRequest("extworkspace.renameWorkspace", { - "name": name - }, callback); - } -} |