summaryrefslogtreecommitdiff
path: root/modules/areapicker/AreaPicker.qml
diff options
context:
space:
mode:
author2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-06-19 15:00:06 +1000
committer2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-06-19 15:00:06 +1000
commit53cea2beb37a7cc0bb7ef3f8dabc0f037f5ac236 (patch)
treec3567d5ab374d60eca65165b3bc844319a7c3990 /modules/areapicker/AreaPicker.qml
parentnotifs: fix material icon offset (diff)
downloadcaelestia-shell-53cea2beb37a7cc0bb7ef3f8dabc0f037f5ac236.tar.gz
caelestia-shell-53cea2beb37a7cc0bb7ef3f8dabc0f037f5ac236.tar.bz2
caelestia-shell-53cea2beb37a7cc0bb7ef3f8dabc0f037f5ac236.zip
feat: screenshot tool
Diffstat (limited to 'modules/areapicker/AreaPicker.qml')
-rw-r--r--modules/areapicker/AreaPicker.qml70
1 files changed, 70 insertions, 0 deletions
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;
+ }
+ }
+}