diff options
| -rw-r--r-- | modules/bar/popouts/KbLayout.qml | 2 | ||||
| -rw-r--r-- | plugin/src/Caelestia/Internal/hyprextras.cpp | 30 | ||||
| -rw-r--r-- | plugin/src/Caelestia/Internal/hyprextras.hpp | 2 | ||||
| -rw-r--r-- | services/GameMode.qml | 13 | ||||
| -rw-r--r-- | services/Hypr.qml | 6 |
5 files changed, 45 insertions, 8 deletions
diff --git a/modules/bar/popouts/KbLayout.qml b/modules/bar/popouts/KbLayout.qml index 4ecea9e..ace5af2 100644 --- a/modules/bar/popouts/KbLayout.qml +++ b/modules/bar/popouts/KbLayout.qml @@ -23,6 +23,6 @@ ColumnLayout { Layout.fillWidth: true text: qsTr("Switch layout") - onClicked: Hypr.message("switchxkblayout all next") + onClicked: Hypr.extras.message("switchxkblayout all next") } } diff --git a/plugin/src/Caelestia/Internal/hyprextras.cpp b/plugin/src/Caelestia/Internal/hyprextras.cpp index 23495b2..0504d70 100644 --- a/plugin/src/Caelestia/Internal/hyprextras.cpp +++ b/plugin/src/Caelestia/Internal/hyprextras.cpp @@ -51,10 +51,40 @@ HyprDevices* HyprExtras::devices() const { } void HyprExtras::message(const QString& message) { + if (message.isEmpty()) { + return; + } + makeRequest(message, [](bool, const QByteArray&) { }); } +void HyprExtras::batchMessage(const QStringList& messages) { + if (messages.isEmpty()) { + return; + } + + makeRequest("[[BATCH]]" + messages.join(";"), [](bool, const QByteArray&) { + }); +} + +void HyprExtras::applyOptions(const QVariantHash& options) { + if (options.isEmpty()) { + return; + } + + QString request = "[[BATCH]]"; + for (auto it = options.constBegin(); it != options.constEnd(); ++it) { + request += QString("keyword %1 %2;").arg(it.key(), it.value().toString()); + } + + makeRequest(request, [this](bool success, const QByteArray&) { + if (success) { + refreshOptions(); + } + }); +} + void HyprExtras::refreshOptions() { if (!m_optionsRefresh.isNull()) { m_optionsRefresh->close(); diff --git a/plugin/src/Caelestia/Internal/hyprextras.hpp b/plugin/src/Caelestia/Internal/hyprextras.hpp index ca1b2f2..f1863ed 100644 --- a/plugin/src/Caelestia/Internal/hyprextras.hpp +++ b/plugin/src/Caelestia/Internal/hyprextras.hpp @@ -21,6 +21,8 @@ public: [[nodiscard]] HyprDevices* devices() const; Q_INVOKABLE void message(const QString& message); + Q_INVOKABLE void batchMessage(const QStringList& messages); + Q_INVOKABLE void applyOptions(const QVariantHash& options); Q_INVOKABLE void refreshOptions(); Q_INVOKABLE void refreshDevices(); diff --git a/services/GameMode.qml b/services/GameMode.qml index edd741c..83770b7 100644 --- a/services/GameMode.qml +++ b/services/GameMode.qml @@ -13,7 +13,16 @@ Singleton { property alias enabled: props.enabled function setDynamicConfs(): void { - Hypr.message("[[BATCH]]keyword animations:enabled 0;keyword decoration:shadow:enabled 0;keyword decoration:blur:enabled 0;keyword general:gaps_in 0;keyword general:gaps_out 0;keyword general:border_size 1;keyword decoration:rounding 0;keyword general:allow_tearing 1"); + Hypr.extras.applyOptions({ + "animations:enabled": 0, + "decoration:shadow:enabled": 0, + "decoration:blur:enabled": 0, + "general:gaps_in": 0, + "general:gaps_out": 0, + "general:border_size": 1, + "decoration:rounding": 0, + "general:allow_tearing": 1 + }); } onEnabledChanged: { @@ -22,7 +31,7 @@ Singleton { if (Config.utilities.toasts.gameModeChanged) Toaster.toast(qsTr("Game mode enabled"), qsTr("Disabled Hyprland animations, blur, gaps and shadows"), "gamepad"); } else { - Hypr.message("reload"); + Hypr.extras.message("reload"); if (Config.utilities.toasts.gameModeChanged) Toaster.toast(qsTr("Game mode disabled"), qsTr("Hyprland settings restored"), "gamepad"); } diff --git a/services/Hypr.qml b/services/Hypr.qml index 7a17212..c141a9b 100644 --- a/services/Hypr.qml +++ b/services/Hypr.qml @@ -35,10 +35,6 @@ Singleton { signal configReloaded - function message(message: string): void { - extras.message(message); - } - function dispatch(request: string): void { Hyprland.dispatch(request); } @@ -77,7 +73,7 @@ Singleton { if (n === "configreloaded") { root.configReloaded(); - extras.message("[[BATCH]]keyword bindln ,Caps_Lock,global,caelestia:refreshDevices;keyword bindln ,Num_Lock,global,caelestia:refreshDevices"); + extras.batchMessage(["keyword bindln ,Caps_Lock,global,caelestia:refreshDevices", "keyword bindln ,Num_Lock,global,caelestia:refreshDevices"]); } else if (["workspace", "moveworkspace", "activespecial", "focusedmon"].includes(n)) { Hyprland.refreshWorkspaces(); Hyprland.refreshMonitors(); |