From 53cea2beb37a7cc0bb7ef3f8dabc0f037f5ac236 Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Thu, 19 Jun 2025 15:00:06 +1000 Subject: feat: screenshot tool --- modules/areapicker/AreaPicker.qml | 70 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 modules/areapicker/AreaPicker.qml (limited to 'modules/areapicker/AreaPicker.qml') diff --git a/modules/areapicker/AreaPicker.qml b/modules/areapicker/AreaPicker.qml new file mode 100644 index 0000000..547810b --- /dev/null +++ b/modules/areapicker/AreaPicker.qml @@ -0,0 +1,70 @@ +import "root:/widgets" +import Quickshell +import Quickshell.Wayland +import Quickshell.Io + +Scope { + LazyLoader { + id: root + + property bool freeze + + Variants { + model: Quickshell.screens + + StyledWindow { + id: win + + required property ShellScreen modelData + + screen: modelData + name: "area-picker" + WlrLayershell.exclusionMode: ExclusionMode.Ignore + WlrLayershell.layer: WlrLayer.Overlay + WlrLayershell.keyboardFocus: WlrKeyboardFocus.Exclusive + + anchors.top: true + anchors.bottom: true + anchors.left: true + anchors.right: true + + Picker { + loader: root + screen: win.modelData + } + } + } + } + + IpcHandler { + target: "picker" + + function open(): void { + root.freeze = false; + root.activeAsync = true; + } + + function openFreeze(): void { + root.freeze = true; + root.activeAsync = true; + } + } + + CustomShortcut { + name: "screenshot" + description: "Open screenshot tool" + onPressed: { + root.freeze = false; + root.activeAsync = true; + } + } + + CustomShortcut { + name: "screenshotFreeze" + description: "Open screenshot tool (freeze mode)" + onPressed: { + root.freeze = true; + root.activeAsync = true; + } + } +} -- cgit v1.2.3-freya