summaryrefslogtreecommitdiff
path: root/modules/windowinfo/Details.qml
diff options
context:
space:
mode:
author2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-06-21 22:47:13 +1000
committer2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-06-21 22:47:13 +1000
commit4a86b66d06dda958f8d136234225ed160604a61a (patch)
tree8dab0f695e035f26dccc2089ee4636c2b7b7ee2a /modules/windowinfo/Details.qml
parentpopouts: convert to layout (diff)
downloadcaelestia-shell-4a86b66d06dda958f8d136234225ed160604a61a.tar.gz
caelestia-shell-4a86b66d06dda958f8d136234225ed160604a61a.tar.bz2
caelestia-shell-4a86b66d06dda958f8d136234225ed160604a61a.zip
feat: window info panel
Also disable reload popup
Diffstat (limited to 'modules/windowinfo/Details.qml')
-rw-r--r--modules/windowinfo/Details.qml158
1 files changed, 158 insertions, 0 deletions
diff --git a/modules/windowinfo/Details.qml b/modules/windowinfo/Details.qml
new file mode 100644
index 0000000..1480f96
--- /dev/null
+++ b/modules/windowinfo/Details.qml
@@ -0,0 +1,158 @@
+import "root:/widgets"
+import "root:/services"
+import "root:/config"
+import Quickshell
+import QtQuick
+import QtQuick.Layouts
+
+ColumnLayout {
+ id: root
+
+ anchors.fill: parent
+ spacing: Appearance.spacing.small
+
+ Label {
+ Layout.topMargin: Appearance.padding.large * 2
+
+ text: Hyprland.activeClient.title
+ wrapMode: Text.WrapAtWordBoundaryOrAnywhere
+
+ font.pointSize: Appearance.font.size.large
+ font.weight: 500
+ }
+
+ Label {
+ text: Hyprland.activeClient.wmClass
+ color: Colours.palette.m3tertiary
+
+ font.pointSize: Appearance.font.size.larger
+ }
+
+ StyledRect {
+ Layout.fillWidth: true
+ Layout.preferredHeight: 1
+ Layout.leftMargin: Appearance.padding.large * 2
+ Layout.rightMargin: Appearance.padding.large * 2
+ Layout.topMargin: Appearance.spacing.normal
+ Layout.bottomMargin: Appearance.spacing.large
+
+ color: Colours.palette.m3secondary
+ }
+
+ Detail {
+ icon: "location_on"
+ text: qsTr("Address: %1").arg(Hyprland.activeClient.address)
+ color: Colours.palette.m3primary
+ }
+
+ Detail {
+ icon: "location_searching"
+ text: qsTr("Position: %1, %2").arg(Hyprland.activeClient.x).arg(Hyprland.activeClient.y)
+ }
+
+ Detail {
+ icon: "resize"
+ text: qsTr("Size: %1 x %2").arg(Hyprland.activeClient.width).arg(Hyprland.activeClient.height)
+ color: Colours.palette.m3tertiary
+ }
+
+ Detail {
+ icon: "workspaces"
+ text: qsTr("Workspace: %1 (%2)").arg(Hyprland.activeClient.workspace.name).arg(Hyprland.activeClient.workspace.id)
+ color: Colours.palette.m3secondary
+ }
+
+ Detail {
+ icon: "desktop_windows"
+ text: {
+ const mon = Hyprland.activeClient.monitor;
+ return qsTr("Monitor: %1 (%2) at %3, %4").arg(mon.name).arg(mon.id).arg(mon.x).arg(mon.y);
+ }
+ }
+
+ Detail {
+ icon: "page_header"
+ text: qsTr("Initial title: %1").arg(Hyprland.activeClient.initialTitle)
+ color: Colours.palette.m3tertiary
+ }
+
+ Detail {
+ icon: "category"
+ text: qsTr("Initial class: %1").arg(Hyprland.activeClient.initialClass)
+ }
+
+ Detail {
+ icon: "account_tree"
+ text: qsTr("Process id: %1").arg(Hyprland.activeClient.pid)
+ color: Colours.palette.m3primary
+ }
+
+ Detail {
+ icon: "picture_in_picture_center"
+ text: qsTr("Floating: %1").arg(Hyprland.activeClient.floating ? "yes" : "no")
+ color: Colours.palette.m3secondary
+ }
+
+ Detail {
+ icon: "gradient"
+ text: qsTr("Xwayland: %1").arg(Hyprland.activeClient.lastIpcObject.xwayland ? "yes" : "no")
+ }
+
+ Detail {
+ icon: "keep"
+ text: qsTr("Pinned: %1").arg(Hyprland.activeClient.pinned ? "yes" : "no")
+ color: Colours.palette.m3secondary
+ }
+
+ Detail {
+ icon: "fullscreen"
+ text: {
+ const fs = Hyprland.activeClient.fullscreen;
+ return qsTr("Fullscreen state: %1").arg(fs == 0 ? "off" : fs == 1 ? "maximised" : "on");
+ }
+ color: Colours.palette.m3tertiary
+ }
+
+ Item {
+ Layout.fillHeight: true
+ }
+
+ component Detail: RowLayout {
+ id: detail
+
+ required property string icon
+ required property string text
+ property alias color: icon.color
+
+ Layout.leftMargin: Appearance.padding.large
+ Layout.rightMargin: Appearance.padding.large
+ Layout.fillWidth: true
+
+ spacing: Appearance.spacing.normal
+
+ MaterialIcon {
+ id: icon
+
+ Layout.alignment: Qt.AlignVCenter
+ text: detail.icon
+ }
+
+ StyledText {
+ Layout.fillWidth: true
+ Layout.alignment: Qt.AlignVCenter
+
+ text: detail.text
+ elide: Text.ElideRight
+ font.pointSize: Appearance.font.size.normal
+ }
+ }
+
+ component Label: StyledText {
+ Layout.leftMargin: Appearance.padding.large
+ Layout.rightMargin: Appearance.padding.large
+ Layout.fillWidth: true
+ elide: Text.ElideRight
+ horizontalAlignment: Text.AlignHCenter
+ animate: true
+ }
+}