From 3a3e9ca7ae3fc8293bffdcef78f0b805a5e704c3 Mon Sep 17 00:00:00 2001 From: AleksElixir <71710534+AleksElixir@users.noreply.github.com> Date: Sat, 20 Sep 2025 23:48:49 +0000 Subject: [PATCH 1/7] keyboard layout --- modules/bar/popouts/KbLayout.qml | 71 +++++++++++++++++++++++++++++++- 1 file changed, 69 insertions(+), 2 deletions(-) diff --git a/modules/bar/popouts/KbLayout.qml b/modules/bar/popouts/KbLayout.qml index 8e5ae8d3e..869c1b4cf 100644 --- a/modules/bar/popouts/KbLayout.qml +++ b/modules/bar/popouts/KbLayout.qml @@ -1,6 +1,73 @@ +pragma ComponentBehavior: Bound + +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts import qs.components +import qs.components.controls import qs.services +import qs.config +import Quickshell + +Item { + id: root + property var wrapper // not required for standalone popout + + implicitWidth: layout.implicitWidth + Appearance.padding.normal * 2 + implicitHeight: layout.implicitHeight + Appearance.padding.normal * 2 + + ColumnLayout { + id: layout + anchors.fill: parent + + // Display current keyboard layout + StyledText { + id: kbLayoutText + text: qsTr("Keyboard layout: %1").arg(Hypr.kbLayoutFull) + font.weight: 500 + } + + // Timer to refresh layout after switching + Timer { + id: refreshTimer + interval: 300 + repeat: false + onTriggered: { + kbLayoutText.text = qsTr("Keyboard layout: %1").arg(Hypr.kbLayoutFull) + } + } + + // Switch Layout button + StyledRect { + Layout.topMargin: Appearance.spacing.small + Layout.fillWidth: true + + implicitWidth: switchBtn.implicitWidth + Appearance.padding.normal * 2 + implicitHeight: switchBtn.implicitHeight + Appearance.padding.small + + radius: Appearance.rounding.normal + color: Colours.palette.m3primaryContainer + + StateLayer { + color: Colours.palette.m3onPrimaryContainer + + function onClicked() { + Quickshell.execDetached(["hyprctl", "switchxkblayout", "all", "next"]); + refreshTimer.start(); + } + } + + RowLayout { + id: switchBtn + anchors.centerIn: parent -StyledText { - text: qsTr("Keyboard layout: %1").arg(Hypr.kbLayoutFull) + StyledText { + text: qsTr("Switch Layout") + color: Colours.palette.m3onPrimaryContainer + font.weight: 500 + anchors.centerIn: parent + } + } + } + } } From f3acb859e63c153ba8855bcdf897bc5863971d43 Mon Sep 17 00:00:00 2001 From: AleksElixir <71710534+AleksElixir@users.noreply.github.com> Date: Tue, 23 Sep 2025 00:22:22 +0300 Subject: [PATCH 2/7] Update KbLayout.qml Code cleanup --- modules/bar/popouts/KbLayout.qml | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/modules/bar/popouts/KbLayout.qml b/modules/bar/popouts/KbLayout.qml index 869c1b4cf..97524c013 100644 --- a/modules/bar/popouts/KbLayout.qml +++ b/modules/bar/popouts/KbLayout.qml @@ -27,16 +27,6 @@ Item { font.weight: 500 } - // Timer to refresh layout after switching - Timer { - id: refreshTimer - interval: 300 - repeat: false - onTriggered: { - kbLayoutText.text = qsTr("Keyboard layout: %1").arg(Hypr.kbLayoutFull) - } - } - // Switch Layout button StyledRect { Layout.topMargin: Appearance.spacing.small From 67fe516c3395e882cc9d6da75b1d8fff3bd23fe2 Mon Sep 17 00:00:00 2001 From: AleksElixir <71710534+AleksElixir@users.noreply.github.com> Date: Tue, 23 Sep 2025 00:23:57 +0300 Subject: [PATCH 3/7] Update KbLayout.qml more code cleanup --- modules/bar/popouts/KbLayout.qml | 3 --- 1 file changed, 3 deletions(-) diff --git a/modules/bar/popouts/KbLayout.qml b/modules/bar/popouts/KbLayout.qml index 97524c013..aeb70683c 100644 --- a/modules/bar/popouts/KbLayout.qml +++ b/modules/bar/popouts/KbLayout.qml @@ -1,5 +1,3 @@ -pragma ComponentBehavior: Bound - import QtQuick import QtQuick.Controls import QtQuick.Layouts @@ -11,7 +9,6 @@ import Quickshell Item { id: root - property var wrapper // not required for standalone popout implicitWidth: layout.implicitWidth + Appearance.padding.normal * 2 implicitHeight: layout.implicitHeight + Appearance.padding.normal * 2 From 831df698423a075277087bc6bdbddacdab14892d Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Tue, 23 Sep 2025 19:30:52 +1000 Subject: [PATCH 4/7] fix --- components/controls/TextButton.qml | 8 +++- modules/bar/popouts/KbLayout.qml | 62 ++++++++---------------------- 2 files changed, 22 insertions(+), 48 deletions(-) diff --git a/components/controls/TextButton.qml b/components/controls/TextButton.qml index 71ebcfa5c..ef84185eb 100644 --- a/components/controls/TextButton.qml +++ b/components/controls/TextButton.qml @@ -25,13 +25,19 @@ StyledRect { property bool internalChecked property color activeColour: type === TextButton.Filled ? Colours.palette.m3primary : Colours.palette.m3secondary - property color inactiveColour: type === TextButton.Filled ? Colours.tPalette.m3surfaceContainer : Colours.palette.m3secondaryContainer + property color inactiveColour: { + if (!toggle && type === TextButton.Filled) + return Colours.palette.m3primary; + return type === TextButton.Filled ? Colours.tPalette.m3surfaceContainer : Colours.palette.m3secondaryContainer; + } property color activeOnColour: { if (type === TextButton.Text) return Colours.palette.m3primary; return type === TextButton.Filled ? Colours.palette.m3onPrimary : Colours.palette.m3onSecondary; } property color inactiveOnColour: { + if (!toggle && type === TextButton.Filled) + return Colours.palette.m3onPrimary; if (type === TextButton.Text) return Colours.palette.m3primary; return type === TextButton.Filled ? Colours.palette.m3onSurface : Colours.palette.m3onSecondaryContainer; diff --git a/modules/bar/popouts/KbLayout.qml b/modules/bar/popouts/KbLayout.qml index aeb70683c..b12f2ef81 100644 --- a/modules/bar/popouts/KbLayout.qml +++ b/modules/bar/popouts/KbLayout.qml @@ -1,60 +1,28 @@ -import QtQuick -import QtQuick.Controls -import QtQuick.Layouts import qs.components import qs.components.controls import qs.services import qs.config import Quickshell +import QtQuick.Layouts -Item { +ColumnLayout { id: root - implicitWidth: layout.implicitWidth + Appearance.padding.normal * 2 - implicitHeight: layout.implicitHeight + Appearance.padding.normal * 2 - - ColumnLayout { - id: layout - anchors.fill: parent - - // Display current keyboard layout - StyledText { - id: kbLayoutText - text: qsTr("Keyboard layout: %1").arg(Hypr.kbLayoutFull) - font.weight: 500 - } - - // Switch Layout button - StyledRect { - Layout.topMargin: Appearance.spacing.small - Layout.fillWidth: true + spacing: Appearance.spacing.normal - implicitWidth: switchBtn.implicitWidth + Appearance.padding.normal * 2 - implicitHeight: switchBtn.implicitHeight + Appearance.padding.small - - radius: Appearance.rounding.normal - color: Colours.palette.m3primaryContainer - - StateLayer { - color: Colours.palette.m3onPrimaryContainer - - function onClicked() { - Quickshell.execDetached(["hyprctl", "switchxkblayout", "all", "next"]); - refreshTimer.start(); - } - } + StyledText { + Layout.topMargin: Appearance.padding.normal + Layout.rightMargin: Appearance.padding.normal + text: qsTr("Keyboard layout: %1").arg(Hypr.kbLayoutFull) + font.weight: 500 + } - RowLayout { - id: switchBtn - anchors.centerIn: parent + TextButton { + Layout.bottomMargin: Appearance.padding.normal + Layout.rightMargin: Appearance.padding.normal + Layout.fillWidth: true - StyledText { - text: qsTr("Switch Layout") - color: Colours.palette.m3onPrimaryContainer - font.weight: 500 - anchors.centerIn: parent - } - } - } + text: qsTr("Switch layout") + onClicked: Quickshell.execDetached(["hyprctl", "switchxkblayout", "all", "next"]) } } From 5395225d28510ce9af998e71d374bec5be80edc4 Mon Sep 17 00:00:00 2001 From: AleksElixir <71710534+AleksElixir@users.noreply.github.com> Date: Wed, 24 Sep 2025 00:55:31 +0300 Subject: [PATCH 5/7] Update KbLayout.qml Remade the button for better theme compatability --- modules/bar/popouts/KbLayout.qml | 41 ++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 7 deletions(-) diff --git a/modules/bar/popouts/KbLayout.qml b/modules/bar/popouts/KbLayout.qml index b12f2ef81..1a1f1e842 100644 --- a/modules/bar/popouts/KbLayout.qml +++ b/modules/bar/popouts/KbLayout.qml @@ -17,12 +17,39 @@ ColumnLayout { font.weight: 500 } - TextButton { - Layout.bottomMargin: Appearance.padding.normal - Layout.rightMargin: Appearance.padding.normal - Layout.fillWidth: true + StyledRect { + Layout.topMargin: Appearance.spacing.small - text: qsTr("Switch layout") - onClicked: Quickshell.execDetached(["hyprctl", "switchxkblayout", "all", "next"]) - } + implicitWidth: expandBtn.implicitWidth + Appearance.padding.normal * 2 + implicitHeight: expandBtn.implicitHeight + Appearance.padding.small + + Layout.fillWidth: true + + radius: Appearance.rounding.normal + color: Colours.palette.m3primaryContainer + + StateLayer { + color: Colours.palette.m3onPrimaryContainer + onClicked: Quickshell.execDetached(["hyprctl", "switchxkblayout", "all", "next"]) + } + + RowLayout { + id: expandBtn + + anchors.centerIn: parent + spacing: Appearance.spacing.small + + MaterialIcon { + Layout.leftMargin: Appearance.padding.smaller + text: "keyboard" + color: Colours.palette.m3onPrimaryContainer + font.pointSize: Appearance.font.size.large + } + + StyledText { + text: qsTr("Switch layout") + color: Colours.palette.m3onPrimaryContainer + } + } + } } From e7eb6ccb0c046142990d9cc7a81ab739eb8b303a Mon Sep 17 00:00:00 2001 From: AleksElixir <71710534+AleksElixir@users.noreply.github.com> Date: Wed, 24 Sep 2025 08:58:00 +0300 Subject: [PATCH 6/7] Update Notifs.qml adding keyboard layout toast --- services/Notifs.qml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/services/Notifs.qml b/services/Notifs.qml index 0012d4b2c..c0ab0f9fc 100644 --- a/services/Notifs.qml +++ b/services/Notifs.qml @@ -138,6 +138,17 @@ Singleton { } } + Connections { + target: Hypr + + function onKbLayoutFullChanged() { + if (!Config.utilities.toasts.keyboardLayoutChanged) + return; + + Toaster.toast(qsTr("Keyboard layout changed"), qsTr("New layout: %1").arg(Hypr.kbLayoutFull), "keyboard"); + } + } + component Notif: QtObject { id: notif From 9e6ba53021aaf5d5abe2d7a1227500da950f0da1 Mon Sep 17 00:00:00 2001 From: AleksElixir <71710534+AleksElixir@users.noreply.github.com> Date: Wed, 24 Sep 2025 08:58:39 +0300 Subject: [PATCH 7/7] Update UtilitiesConfig.qml --- config/UtilitiesConfig.qml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/UtilitiesConfig.qml b/config/UtilitiesConfig.qml index 9117fa1b2..1b6093a51 100644 --- a/config/UtilitiesConfig.qml +++ b/config/UtilitiesConfig.qml @@ -20,5 +20,6 @@ JsonObject { property bool audioInputChanged: true property bool capsLockChanged: true property bool numLockChanged: true + property bool keyboardLayoutChanged: true } }