From 6a270c0450bc6e7ccbd72b5983e697ada4361926 Mon Sep 17 00:00:00 2001 From: chlorospingus Date: Sat, 16 May 2026 00:35:13 -0700 Subject: [PATCH] Add magnifiers for thin macro (mcsr) --- Boateye.qml | 3 ++ Thin.qml | 137 ++++++++++++++++++++++++++++++++++++++++++++++++++++ shell.qml | 1 + 3 files changed, 141 insertions(+) create mode 100644 Thin.qml diff --git a/Boateye.qml b/Boateye.qml index b4756cb..b9eece7 100644 --- a/Boateye.qml +++ b/Boateye.qml @@ -13,6 +13,7 @@ PanelWindow { left: true bottom: true } + WlrLayershell.namespace: "mcsr" implicitHeight: 540 implicitWidth: 540 color: "transparent" @@ -42,6 +43,8 @@ PanelWindow { radius: 12 Item { anchors.fill: parent + layer.enabled: true + layer.smooth: false ScreencopyView { width: Quickshell.screens[0].width height: Quickshell.screens[0].height diff --git a/Thin.qml b/Thin.qml new file mode 100644 index 0000000..eed97fe --- /dev/null +++ b/Thin.qml @@ -0,0 +1,137 @@ +import Quickshell +import Quickshell.Wayland +import Quickshell.Widgets +import Quickshell.Io + +import QtQuick +import QtQuick.Effects + +Item { + id: thin + property bool open: false + property real pos: 0 + PropertyAnimation on pos { + id: entry + running: false + to: 1 + duration: 400 + easing.type: Easing.OutQuint + } + PropertyAnimation on pos { + id: exit + running: false + to: 0 + duration: 350 + easing.type: Easing.OutQuint + onFinished: thin.open = false + } + IpcHandler { + target: "thin" + function open() { + thin.open = true + exit.stop() + entry.start() + } + function close() { + entry.stop() + exit.start() + } + } + PanelWindow { + visible: thin.open + anchors { + right: true + bottom: true + } + implicitHeight: 430 + implicitWidth: 1080 + color: "transparent" + WlrLayershell.layer: WlrLayer.Overlay + + RectangularShadow { + anchors.fill: pie_wrapper + radius: pie_wrapper.radius + blur: 10 + spread: 2 + } + ClippingRectangle { + id: pie_wrapper + anchors { + left: parent.left + top: parent.top + margins: 12 + leftMargin: 1080 * (1 - thin.pos) + 12 + } + width: 210 + height: 210 + color: "white" + radius: 12 + Item { + anchors.fill: parent + layer.enabled: true + layer.smooth: false + ScreencopyView { + width: Quickshell.screens[0].width + height: Quickshell.screens[0].height + live: true + captureSource: Quickshell.screens[0] + x: -1386 + y: -1208 + } + transform: Scale { + origin: {x: 0; y: 0} + xScale: 6 + yScale: xScale + } + } + } + } + PanelWindow { + visible: thin.open + anchors { + top: true + left: true + } + implicitWidth: 1080 + implicitHeight: 120 + color: "transparent" + WlrLayershell.layer: WlrLayer.Overlay + RectangularShadow { + anchors.fill: e_wrapper + radius: e_wrapper.radius + blur: 10 + spread: 2 + } + ClippingRectangle { + id: e_wrapper + anchors { + right: parent.right + bottom: parent.bottom + margins: 12 + rightMargin: 1080 * (1 - thin.pos) + 12 + } + width: 240 + height: 48 + color: "white" + radius: 12 + Item { + anchors.fill: parent + ScreencopyView { + layer.enabled: true + layer.smooth: false + width: Quickshell.screens[0].width + height: Quickshell.screens[0].height + live: true + captureSource: Quickshell.screens[0] + x: -1080 + y: -47 + } + transform: Scale { + origin: {x: 0; y: 0} + xScale: 5 + yScale: xScale + } + } + } + } +} diff --git a/shell.qml b/shell.qml index 11fc6c2..bf82414 100644 --- a/shell.qml +++ b/shell.qml @@ -12,6 +12,7 @@ ShellRoot { Shell.Wall {} Shell.TopBar {id: bar} Shell.Boateye {} + Shell.Thin {} Shell.Lock {id: lock} IpcHandler { target: "lock"