diff options
| author | Don Williams <don.e.williams@gmail.com> | 2026-07-13 15:58:40 -0400 |
|---|---|---|
| committer | Pinapelz <yukais@pinapelz.com> | 2026-08-29 21:40:34 -0700 |
| commit | 292b6daf5c56ff60a6263ff4945e74e5ca4372e7 (patch) | |
| tree | 0c01784cf05adc8deec5a8a50fa71e1db294c96e /config/quickshell/overview-unified/modules/overview/Overview.qml | |
| parent | 54b56290253719aa71d8ccfddff6fa0424e22804 (diff) | |
Creating an overview version that works with all branches
Signed-off-by: Don Williams <don.e.williams@gmail.com>
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
new file: config/quickshell/overview-unified/README.md
new file: config/quickshell/overview-unified/assets/image.png
new file: config/quickshell/overview-unified/common/Appearance.qml
new file: config/quickshell/overview-unified/common/Config.qml
new file: config/quickshell/overview-unified/common/functions/ColorUtils.qml
new file: config/quickshell/overview-unified/common/functions/qmldir
new file: config/quickshell/overview-unified/common/qmldir
new file: config/quickshell/overview-unified/common/widgets/RectangularShadow.qml
new file: config/quickshell/overview-unified/common/widgets/StyledRectangularShadow.qml
new file: config/quickshell/overview-unified/common/widgets/StyledText.qml
new file: config/quickshell/overview-unified/common/widgets/StyledToolTip.qml
new file: config/quickshell/overview-unified/common/widgets/StyledToolTipContent.qml
new file: config/quickshell/overview-unified/common/widgets/qmldir
new file: config/quickshell/overview-unified/modules/overview/Overview.qml
new file: config/quickshell/overview-unified/modules/overview/OverviewWidget.qml
new file: config/quickshell/overview-unified/modules/overview/OverviewWindow.qml
new file: config/quickshell/overview-unified/modules/overview/qmldir
new file: config/quickshell/overview-unified/services/GlobalStates.qml
new file: config/quickshell/overview-unified/services/HyprlandData.qml
new file: config/quickshell/overview-unified/services/qmldir
new file: config/quickshell/overview-unified/shell.qml
new file: config/quickshell/qs-hyprview-trixie/LICENSE
new file: config/quickshell/qs-hyprview-trixie/README.md
new file: config/quickshell/qs-hyprview-trixie/common/Appearance.qml
new file: config/quickshell/qs-hyprview-trixie/layouts/BandsLayout.qml
new file: config/quickshell/qs-hyprview-trixie/layouts/ColumnarLayout.qml
new file: config/quickshell/qs-hyprview-trixie/layouts/HeroLayout.qml
new file: config/quickshell/qs-hyprview-trixie/layouts/JustifiedLayout.qml
new file: config/quickshell/qs-hyprview-trixie/layouts/LayoutsManager.qml
new file: config/quickshell/qs-hyprview-trixie/layouts/MasonryLayout.qml
new file: config/quickshell/qs-hyprview-trixie/layouts/SatelliteLayout.qml
new file: config/quickshell/qs-hyprview-trixie/layouts/SmartGridLayout.qml
new file: config/quickshell/qs-hyprview-trixie/layouts/SpiralLayout.qml
new file: config/quickshell/qs-hyprview-trixie/layouts/StarggeredLayout.qml
new file: config/quickshell/qs-hyprview-trixie/layouts/VortexLayout.qml
new file: config/quickshell/qs-hyprview-trixie/layouts/qmldir
new file: config/quickshell/qs-hyprview-trixie/modules/Hyprview.qml
new file: config/quickshell/qs-hyprview-trixie/modules/SearchBox.qml
new file: config/quickshell/qs-hyprview-trixie/modules/WindowThumbnail.qml
new file: config/quickshell/qs-hyprview-trixie/modules/qmldir
new file: config/quickshell/qs-hyprview-trixie/qs-hyprview-template.qml
new file: config/quickshell/qs-hyprview-trixie/screenshots/bands.jpeg
new file: config/quickshell/qs-hyprview-trixie/screenshots/hero.jpeg
new file: config/quickshell/qs-hyprview-trixie/screenshots/masonry.jpeg
new file: config/quickshell/qs-hyprview-trixie/screenshots/satellite.jpeg
new file: config/quickshell/qs-hyprview-trixie/screenshots/smartgrid.jpeg
new file: config/quickshell/qs-hyprview-trixie/screenshots/spiral.jpeg
new file: config/quickshell/qs-hyprview-trixie/screenshots/staggered.jpeg
new file: config/quickshell/qs-hyprview-trixie/screenshots/vortex.jpeg
new file: config/quickshell/qs-hyprview-trixie/shell.qml
Diffstat (limited to 'config/quickshell/overview-unified/modules/overview/Overview.qml')
| -rw-r--r-- | config/quickshell/overview-unified/modules/overview/Overview.qml | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/config/quickshell/overview-unified/modules/overview/Overview.qml b/config/quickshell/overview-unified/modules/overview/Overview.qml new file mode 100644 index 00000000..b3a299cb --- /dev/null +++ b/config/quickshell/overview-unified/modules/overview/Overview.qml @@ -0,0 +1,147 @@ +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import Quickshell +import Quickshell.Io +import Quickshell.Wayland +import Quickshell.Hyprland +import "../../common" +import "../../services" +import "." + +Scope { + id: overviewScope + Variants { + id: overviewVariants + model: Quickshell.screens + PanelWindow { + id: root + required property var modelData + readonly property HyprlandMonitor monitor: Hyprland.monitorFor(root.screen) + property bool monitorIsFocused: (Hyprland.focusedMonitor?.id == monitor?.id) + screen: modelData + visible: GlobalStates.overviewOpen + + WlrLayershell.namespace: "quickshell:overview" + WlrLayershell.layer: WlrLayer.Overlay + WlrLayershell.keyboardFocus: WlrKeyboardFocus.Exclusive + color: "transparent" + + mask: Region { + item: GlobalStates.overviewOpen ? keyHandler : null + } + + anchors { + top: true + bottom: true + left: !(Config?.options.overview.enable ?? true) + right: !(Config?.options.overview.enable ?? true) + } + + HyprlandFocusGrab { + id: grab + windows: [root] + property bool canBeActive: root.monitorIsFocused + active: false + onCleared: () => { + if (!active) + GlobalStates.overviewOpen = false; + } + } + + Connections { + target: GlobalStates + function onOverviewOpenChanged() { + if (GlobalStates.overviewOpen) { + delayedGrabTimer.start(); + } + } + } + + Timer { + id: delayedGrabTimer + interval: Config.options.hacks.arbitraryRaceConditionDelay + repeat: false + onTriggered: { + if (!grab.canBeActive) + return; + grab.active = GlobalStates.overviewOpen; + } + } + + implicitWidth: columnLayout.implicitWidth + implicitHeight: columnLayout.implicitHeight + + Item { + id: keyHandler + anchors.fill: parent + visible: GlobalStates.overviewOpen + focus: GlobalStates.overviewOpen + + Keys.onPressed: event => { + if (event.key === Qt.Key_Escape || event.key === Qt.Key_Return) { + GlobalStates.overviewOpen = false; + event.accepted = true; + } else if (event.key === Qt.Key_Left || event.key === Qt.Key_Right || event.key === Qt.Key_Up || event.key === Qt.Key_Down) { + const workspacesPerGroup = Config.options.overview.rows * Config.options.overview.columns; + const currentId = Hyprland.focusedMonitor?.activeWorkspace?.id ?? 1; + const currentGroup = Math.floor((currentId - 1) / workspacesPerGroup); + const minWorkspaceId = currentGroup * workspacesPerGroup + 1; + const maxWorkspaceId = minWorkspaceId + workspacesPerGroup - 1; + + let targetId; + if (event.key === Qt.Key_Left) { + targetId = currentId - 1; + if (targetId < minWorkspaceId) targetId = maxWorkspaceId; + } else if (event.key === Qt.Key_Right) { + targetId = currentId + 1; + if (targetId > maxWorkspaceId) targetId = minWorkspaceId; + } else if (event.key === Qt.Key_Up) { + targetId = currentId - Config.options.overview.columns; + if (targetId < minWorkspaceId) targetId += workspacesPerGroup; + } else { + targetId = currentId + Config.options.overview.columns; + if (targetId > maxWorkspaceId) targetId -= workspacesPerGroup; + } + + Hyprland.dispatch("workspace " + targetId); + event.accepted = true; + } + } + } + + ColumnLayout { + id: columnLayout + visible: GlobalStates.overviewOpen + anchors { + horizontalCenter: parent.horizontalCenter + top: parent.top + topMargin: 100 + } + + Loader { + id: overviewLoader + active: GlobalStates.overviewOpen && (Config?.options.overview.enable ?? true) + sourceComponent: OverviewWidget { + panelWindow: root + visible: true + } + } + } + } + } + + IpcHandler { + target: "overview" + + function toggle() { + GlobalStates.overviewOpen = !GlobalStates.overviewOpen; + } + function close() { + GlobalStates.overviewOpen = false; + } + function open() { + GlobalStates.overviewOpen = true; + } + } +} |
