summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/bar/popouts/KbLayout.qml2
-rw-r--r--plugin/src/Caelestia/Internal/hyprextras.cpp30
-rw-r--r--plugin/src/Caelestia/Internal/hyprextras.hpp2
-rw-r--r--services/GameMode.qml13
-rw-r--r--services/Hypr.qml6
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();