summaryrefslogtreecommitdiff
path: root/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Common/DankSocket.qml
diff options
context:
space:
mode:
authornippy <you@example.com>2026-04-18 13:49:56 +0200
committernippy <you@example.com>2026-04-18 13:49:56 +0200
commit5d94c0a7d44a2255b81815a52a7056a94a39842d (patch)
tree759bdea9645c6a62f9e1e4c001f7d81cccd120d2 /raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Common/DankSocket.qml
parente79cdf210b267f21a186255ce1a4d50029439d54 (diff)
downloadRaveOS-PKGBUILD-5d94c0a7d44a2255b81815a52a7056a94a39842d.tar.gz
RaveOS-PKGBUILD-5d94c0a7d44a2255b81815a52a7056a94a39842d.zip
update Raveos themes
Diffstat (limited to 'raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Common/DankSocket.qml')
-rw-r--r--raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Common/DankSocket.qml62
1 files changed, 62 insertions, 0 deletions
diff --git a/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Common/DankSocket.qml b/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Common/DankSocket.qml
new file mode 100644
index 0000000..93471ba
--- /dev/null
+++ b/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Common/DankSocket.qml
@@ -0,0 +1,62 @@
+import QtQuick
+import Quickshell.Io
+
+Item {
+ id: root
+
+ property alias path: socket.path
+ property alias parser: socket.parser
+ property bool connected: false
+
+ property int reconnectBaseMs: 400
+ property int reconnectMaxMs: 15000
+
+ property int _reconnectAttempt: 0
+
+ signal connectionStateChanged()
+
+ onConnectedChanged: {
+ socket.connected = connected
+ }
+
+ Socket {
+ id: socket
+
+ onConnectionStateChanged: {
+ root.connectionStateChanged()
+ if (connected) {
+ root._reconnectAttempt = 0
+ return
+ }
+ if (root.connected) {
+ root._scheduleReconnect()
+ }
+ }
+ }
+
+ Timer {
+ id: reconnectTimer
+ interval: 0
+ repeat: false
+ onTriggered: {
+ socket.connected = false
+ Qt.callLater(() => socket.connected = true)
+ }
+ }
+
+ function send(data) {
+ const json = typeof data === "string" ? data : JSON.stringify(data)
+ const message = json.endsWith("\n") ? json : json + "\n"
+ socket.write(message)
+ socket.flush()
+ }
+
+ function _scheduleReconnect() {
+ const pow = Math.min(_reconnectAttempt, 10)
+ const base = Math.min(reconnectBaseMs * Math.pow(2, pow), reconnectMaxMs)
+ const jitter = Math.floor(Math.random() * Math.floor(base / 4))
+ reconnectTimer.interval = base + jitter
+ reconnectTimer.restart()
+ _reconnectAttempt++
+ }
+}