restructure bar components layout
C++ / fmt (pull_request) Successful in 4s
JS/TS / lint (pull_request) Successful in 19s
JS/TS / fmt (pull_request) Successful in 21s
Python / fmt (pull_request) Successful in 30s
Python / lint (pull_request) Successful in 31s
Python / test (pull_request) Successful in 1m2s
Python / typecheck (pull_request) Failing after 1m5s
Rust / fmt (pull_request) Successful in 43s
C++ / build (pull_request) Successful in 2m25s
Rust / build (pull_request) Successful in 1m42s
Python / buildcheck (pull_request) Successful in 2m27s
Rust / clippy (pull_request) Successful in 1m29s
C++ / clang-tidy (pull_request) Successful in 3m56s
C++ / fmt (pull_request) Successful in 4s
JS/TS / lint (pull_request) Successful in 19s
JS/TS / fmt (pull_request) Successful in 21s
Python / fmt (pull_request) Successful in 30s
Python / lint (pull_request) Successful in 31s
Python / test (pull_request) Successful in 1m2s
Python / typecheck (pull_request) Failing after 1m5s
Rust / fmt (pull_request) Successful in 43s
C++ / build (pull_request) Successful in 2m25s
Rust / build (pull_request) Successful in 1m42s
Python / buildcheck (pull_request) Successful in 2m27s
Rust / clippy (pull_request) Successful in 1m29s
C++ / clang-tidy (pull_request) Successful in 3m56s
This commit is contained in:
@@ -27,10 +27,6 @@ Variants {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Connections {
|
Connections {
|
||||||
function onConfigDashboardPositionChanged(): void {
|
|
||||||
Qt.callLater(scope.rebuild);
|
|
||||||
}
|
|
||||||
|
|
||||||
function onConfigPositionChanged(): void {
|
function onConfigPositionChanged(): void {
|
||||||
Qt.callLater(scope.rebuild);
|
Qt.callLater(scope.rebuild);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import QtQuick
|
|||||||
import qs.Components
|
import qs.Components
|
||||||
import ZShell.Config
|
import ZShell.Config
|
||||||
import qs.Helpers
|
import qs.Helpers
|
||||||
import qs.Modules as BarPopouts
|
import qs.Modules.Bar.Popouts
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
id: root
|
id: root
|
||||||
@@ -15,7 +15,7 @@ Item {
|
|||||||
required property EdgeGeometry geometry
|
required property EdgeGeometry geometry
|
||||||
property bool osdShortcutActive
|
property bool osdShortcutActive
|
||||||
required property Panels panels
|
required property Panels panels
|
||||||
required property BarPopouts.Wrapper popouts
|
required property Wrapper popouts
|
||||||
required property ShellScreen screen
|
required property ShellScreen screen
|
||||||
property bool singleGestureTriggered: false
|
property bool singleGestureTriggered: false
|
||||||
property bool utilitiesShortcutActive
|
property bool utilitiesShortcutActive
|
||||||
|
|||||||
+2
-2
@@ -1,7 +1,7 @@
|
|||||||
import Quickshell
|
import Quickshell
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import qs.Components
|
import qs.Components
|
||||||
import qs.Modules as Modules
|
import qs.Modules.Bar.Popouts as Popouts
|
||||||
import qs.Modules.Notifications as Notifications
|
import qs.Modules.Notifications as Notifications
|
||||||
import qs.Modules.Notifications.Sidebar as Sidebar
|
import qs.Modules.Notifications.Sidebar as Sidebar
|
||||||
import qs.Modules.Notifications.Sidebar.Utils as Utils
|
import qs.Modules.Notifications.Sidebar.Utils as Utils
|
||||||
@@ -100,7 +100,7 @@ Item {
|
|||||||
visibilities: root.visibilities
|
visibilities: root.visibilities
|
||||||
}
|
}
|
||||||
|
|
||||||
Modules.ClipWrapper {
|
Popouts.ClipWrapper {
|
||||||
id: popouts
|
id: popouts
|
||||||
|
|
||||||
borderThickness: root.borderThickness
|
borderThickness: root.borderThickness
|
||||||
|
|||||||
+51
-2
@@ -1,9 +1,8 @@
|
|||||||
pragma Singleton
|
pragma Singleton
|
||||||
|
|
||||||
import ZShell.Config
|
import QtQuick
|
||||||
import Quickshell
|
import Quickshell
|
||||||
import Quickshell.Services.Notifications
|
import Quickshell.Services.Notifications
|
||||||
import QtQuick
|
|
||||||
|
|
||||||
Singleton {
|
Singleton {
|
||||||
id: root
|
id: root
|
||||||
@@ -95,6 +94,15 @@ Singleton {
|
|||||||
return Quickshell.iconPath(icon);
|
return Quickshell.iconPath(icon);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getBatteryIcon(percentage: real, charging = false): string {
|
||||||
|
if (percentage === 1)
|
||||||
|
return charging ? "battery_charging_full" : "battery_full";
|
||||||
|
let level = Math.floor(percentage * 7);
|
||||||
|
if (charging && (level === 4 || level === 1))
|
||||||
|
level--;
|
||||||
|
return charging ? `battery_charging_${(level + 3) * 10}` : `battery_${level}_bar`;
|
||||||
|
}
|
||||||
|
|
||||||
function getBluetoothIcon(icon: string): string {
|
function getBluetoothIcon(icon: string): string {
|
||||||
if (icon.includes("headset") || icon.includes("headphones"))
|
if (icon.includes("headset") || icon.includes("headphones"))
|
||||||
return "headphones";
|
return "headphones";
|
||||||
@@ -168,6 +176,32 @@ Singleton {
|
|||||||
return "chat";
|
return "chat";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getSpecialWsIcon(name: string): string {
|
||||||
|
name = name.toLowerCase().slice("special:".length);
|
||||||
|
|
||||||
|
if (name === "special")
|
||||||
|
return "star";
|
||||||
|
if (name === "communication")
|
||||||
|
return "forum";
|
||||||
|
if (name === "music")
|
||||||
|
return "music_cast";
|
||||||
|
if (name === "todo")
|
||||||
|
return "checklist";
|
||||||
|
if (name === "sysmon")
|
||||||
|
return "monitor_heart";
|
||||||
|
return name[0].toUpperCase();
|
||||||
|
}
|
||||||
|
|
||||||
|
function getTrayIcon(id: string, icon: string): string {
|
||||||
|
if (icon.includes("?path=")) {
|
||||||
|
const [name, path] = icon.split("?path=");
|
||||||
|
const file = name.slice(name.lastIndexOf("/") + 1);
|
||||||
|
const themed = Quickshell.iconPath(file, true);
|
||||||
|
icon = themed ? themed : Qt.resolvedUrl(`${path}/${file}`);
|
||||||
|
}
|
||||||
|
return icon;
|
||||||
|
}
|
||||||
|
|
||||||
function getVolumeIcon(volume: real, isMuted: bool): string {
|
function getVolumeIcon(volume: real, isMuted: bool): string {
|
||||||
if (isMuted)
|
if (isMuted)
|
||||||
return "no_sound";
|
return "no_sound";
|
||||||
@@ -183,4 +217,19 @@ Singleton {
|
|||||||
return weatherIcons[code];
|
return weatherIcons[code];
|
||||||
return "air";
|
return "air";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function matchIconConfig(name: string, iconConfig: var): bool {
|
||||||
|
if (!iconConfig.icon)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (iconConfig.regex) {
|
||||||
|
const re = new RegExp(iconConfig.regex, iconConfig.flags ?? "");
|
||||||
|
if (re.test(name))
|
||||||
|
return true;
|
||||||
|
} else if (iconConfig.name === name) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-4
@@ -3,11 +3,9 @@ pragma ComponentBehavior: Bound
|
|||||||
import Quickshell
|
import Quickshell
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
import qs.Modules
|
|
||||||
import ZShell.Config
|
import ZShell.Config
|
||||||
import qs.Modules.SysTray
|
import qs.Modules.Bar.Components
|
||||||
import qs.Modules.Network
|
import qs.Modules.Bar.Popouts
|
||||||
import qs.Modules.Updates
|
|
||||||
|
|
||||||
GridLayout {
|
GridLayout {
|
||||||
id: root
|
id: root
|
||||||
|
|||||||
@@ -3,12 +3,8 @@ pragma ComponentBehavior: Bound
|
|||||||
import Quickshell
|
import Quickshell
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import ZShell.Config
|
import ZShell.Config
|
||||||
|
import qs.Modules.Bar.Popouts
|
||||||
import qs.Components
|
import qs.Components
|
||||||
import qs.Modules
|
|
||||||
import qs.Helpers
|
|
||||||
import qs.Modules.SysTray
|
|
||||||
import qs.Modules.SysTray.Widgets
|
|
||||||
import qs.Modules.Network
|
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
id: root
|
id: root
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import Quickshell
|
|||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
import ZShell.Config
|
import ZShell.Config
|
||||||
import qs.Modules
|
import qs.Modules.Bar.Popouts
|
||||||
import qs.Helpers
|
import qs.Helpers
|
||||||
import qs.Components
|
import qs.Components
|
||||||
import qs.Services
|
import qs.Services
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
import Quickshell
|
import Quickshell
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import ZShell.Config
|
import ZShell.Config
|
||||||
|
import qs.Modules.Bar.Popouts
|
||||||
import qs.Daemons
|
import qs.Daemons
|
||||||
import qs.Components
|
import qs.Components
|
||||||
import qs.Services
|
import qs.Services
|
||||||
@@ -3,9 +3,9 @@ pragma ComponentBehavior: Bound
|
|||||||
import Quickshell
|
import Quickshell
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
import qs.Helpers
|
|
||||||
import qs.Modules.SysTray.Widgets
|
|
||||||
import ZShell.Config
|
import ZShell.Config
|
||||||
|
import qs.Helpers
|
||||||
|
import qs.Modules.Bar.Components.StatusIcons
|
||||||
import qs.Components
|
import qs.Components
|
||||||
import qs.Services
|
import qs.Services
|
||||||
|
|
||||||
@@ -1,10 +1,9 @@
|
|||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.VectorImage
|
|
||||||
import Quickshell
|
import Quickshell
|
||||||
import Quickshell.Services.SystemTray
|
import Quickshell.Services.SystemTray
|
||||||
import qs.Helpers
|
import qs.Helpers
|
||||||
import qs.Modules
|
import qs.Modules.Bar.Popouts
|
||||||
import qs.Components
|
import qs.Components
|
||||||
import ZShell.Config
|
import ZShell.Config
|
||||||
import qs.Services
|
import qs.Services
|
||||||
@@ -5,7 +5,8 @@ import QtQuick.Layouts
|
|||||||
import Quickshell.Services.SystemTray
|
import Quickshell.Services.SystemTray
|
||||||
import qs.Components
|
import qs.Components
|
||||||
import ZShell.Config
|
import ZShell.Config
|
||||||
import qs.Modules
|
import qs.Modules.Bar.Components.Tray
|
||||||
|
import qs.Modules.Bar.Popouts
|
||||||
import qs.Services
|
import qs.Services
|
||||||
|
|
||||||
CustomClippingRect {
|
CustomClippingRect {
|
||||||
@@ -21,9 +21,9 @@ Item {
|
|||||||
}
|
}
|
||||||
|
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
clip: true
|
clip: false
|
||||||
implicitHeight: horizontal ? current.implicitHeight : current.implicitWidth + current.anchors.topMargin
|
implicitHeight: horizontal ? current.implicitHeight : current.implicitWidth + current.anchors.topMargin
|
||||||
implicitWidth: horizontal ? Math.min(current.implicitWidth, root.maxSize) : current.implicitHeight + current.anchors.topMargin
|
implicitWidth: horizontal ? current.implicitWidth + current.anchors.leftMargin : current.implicitHeight + current.anchors.topMargin
|
||||||
|
|
||||||
Behavior on implicitHeight {
|
Behavior on implicitHeight {
|
||||||
enabled: !root.horizontal
|
enabled: !root.horizontal
|
||||||
@@ -2,10 +2,10 @@ pragma ComponentBehavior: Bound
|
|||||||
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Effects
|
|
||||||
import Quickshell
|
import Quickshell
|
||||||
import Quickshell.Hyprland
|
import Quickshell.Hyprland
|
||||||
import ZShell.Config
|
import ZShell.Config
|
||||||
|
import qs.Modules.Bar.Components.Workspaces
|
||||||
import qs.Components
|
import qs.Components
|
||||||
import qs.Services
|
import qs.Services
|
||||||
|
|
||||||
@@ -90,7 +90,7 @@ Item {
|
|||||||
color: Colors.palette.m3onSecondaryContainer
|
color: Colors.palette.m3onSecondaryContainer
|
||||||
elide: Text.ElideRight
|
elide: Text.ElideRight
|
||||||
horizontalAlignment: Text.AlignHCenter
|
horizontalAlignment: Text.AlignHCenter
|
||||||
text: button.modelData.name
|
text: button.modelData?.name ?? ""
|
||||||
verticalAlignment: Text.AlignVCenter
|
verticalAlignment: Text.AlignVCenter
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5,10 +5,6 @@ import Quickshell.Services.SystemTray
|
|||||||
import QtQuick
|
import QtQuick
|
||||||
import ZShell.Config
|
import ZShell.Config
|
||||||
import qs.Components
|
import qs.Components
|
||||||
import qs.Modules.WSOverview
|
|
||||||
import qs.Modules.Network
|
|
||||||
import qs.Modules.SysTray.Popouts
|
|
||||||
import qs.Modules.Updates
|
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
id: root
|
id: root
|
||||||
@@ -1,159 +0,0 @@
|
|||||||
pragma ComponentBehavior: Bound
|
|
||||||
|
|
||||||
import QtQuick
|
|
||||||
import QtQuick.Layouts
|
|
||||||
import Quickshell.Services.SystemTray
|
|
||||||
import qs.Components
|
|
||||||
import ZShell.Config
|
|
||||||
import qs.Modules.SysTray.Widgets
|
|
||||||
import qs.Modules
|
|
||||||
import qs.Services
|
|
||||||
|
|
||||||
GridLayout {
|
|
||||||
id: root
|
|
||||||
|
|
||||||
required property bool horizontal
|
|
||||||
readonly property alias items: repeater
|
|
||||||
required property GridLayout loader
|
|
||||||
required property Wrapper popouts
|
|
||||||
readonly property real shortSize: Config.bar.height + Tokens.padding.smallest * 2
|
|
||||||
readonly property real size: horizontal ? sysTray.implicitWidth + sysTrayMod.implicitWidth + Tokens.padding.small : sysTray.implicitHeight + sysTrayMod.implicitHeight + Tokens.padding.small
|
|
||||||
|
|
||||||
function closestRowChild(row, x) {
|
|
||||||
let child = row.childAt(x, row.height / 2);
|
|
||||||
if (child)
|
|
||||||
return child;
|
|
||||||
|
|
||||||
let closest = null;
|
|
||||||
let closestDistance = Infinity;
|
|
||||||
|
|
||||||
for (let i = 0; i < row.children.length; ++i) {
|
|
||||||
let c = row.children[i];
|
|
||||||
|
|
||||||
if (!c.visible || c.width <= 0)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
let centerX = c.x + c.width / 2;
|
|
||||||
let dist = Math.abs(x - centerX);
|
|
||||||
|
|
||||||
if (dist < closestDistance) {
|
|
||||||
closestDistance = dist;
|
|
||||||
closest = c;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return closest;
|
|
||||||
}
|
|
||||||
|
|
||||||
function getHoveredSubItem(localX, localY) {
|
|
||||||
let modPos = mapToItem(sysTrayMod, localX, localY);
|
|
||||||
if (sysTrayMod.contains(Qt.point(modPos.x, modPos.y))) {
|
|
||||||
let modRowPos = sysTrayMod.mapToItem(sysIcons, modPos.x, modPos.y);
|
|
||||||
let child = closestRowChild(sysIcons, modRowPos.x);
|
|
||||||
if (child) {
|
|
||||||
if (child.objectName === "audio" && Config.bar.popouts.audio)
|
|
||||||
return {
|
|
||||||
id: "audio",
|
|
||||||
item: child
|
|
||||||
};
|
|
||||||
if (child.objectName === "microphone" && Config.bar.popouts.audio)
|
|
||||||
return {
|
|
||||||
id: "audio",
|
|
||||||
item: child
|
|
||||||
};
|
|
||||||
if (child.objectName === "upower" && Config.bar.popouts.upower)
|
|
||||||
return {
|
|
||||||
id: "upower",
|
|
||||||
item: child
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let trayPos = mapToItem(sysTray, localX, localY);
|
|
||||||
if (Config.bar.tray.showOnHover && sysTray.contains(Qt.point(trayPos.x, trayPos.y))) {
|
|
||||||
let trayRowPos = sysTray.mapToItem(sysRow, trayPos.x, trayPos.y);
|
|
||||||
let child = sysRow.childAt(trayRowPos.x, trayRowPos.y);
|
|
||||||
if (child && child.hasOwnProperty("ind")) {
|
|
||||||
return {
|
|
||||||
id: `traymenu${child.ind}`,
|
|
||||||
item: child
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
columnSpacing: Tokens.padding.small
|
|
||||||
columns: horizontal ? -1 : 1
|
|
||||||
height: horizontal ? shortSize : size
|
|
||||||
rowSpacing: Tokens.padding.small
|
|
||||||
width: horizontal ? size : shortSize
|
|
||||||
|
|
||||||
CustomClippingRect {
|
|
||||||
id: sysTray
|
|
||||||
|
|
||||||
Layout.fillHeight: true
|
|
||||||
bottomRightRadius: Tokens.rounding.smallest / 2
|
|
||||||
color: Colors.tPalette.m3surfaceContainer
|
|
||||||
implicitWidth: sysRow.width + Tokens.padding.small * 2
|
|
||||||
radius: Tokens.rounding.full
|
|
||||||
topRightRadius: Tokens.rounding.smallest / 2
|
|
||||||
|
|
||||||
GridLayout {
|
|
||||||
id: sysRow
|
|
||||||
|
|
||||||
anchors.bottom: root.horizontal ? undefined : parent.bottom
|
|
||||||
anchors.centerIn: parent
|
|
||||||
anchors.horizontalCenter: root.horizontal ? parent.horizontalCenter : undefined
|
|
||||||
anchors.left: root.horizontal ? undefined : parent.left
|
|
||||||
anchors.right: root.horizontal ? undefined : parent.right
|
|
||||||
anchors.verticalCenter: root.horizontal ? parent.verticalCenter : undefined
|
|
||||||
columnSpacing: Tokens.spacing.small / 2
|
|
||||||
columns: root.horizontal ? -1 : 1
|
|
||||||
rowSpacing: Tokens.spacing.small / 2
|
|
||||||
|
|
||||||
Repeater {
|
|
||||||
id: repeater
|
|
||||||
|
|
||||||
model: SystemTray.items
|
|
||||||
|
|
||||||
TrayItem {
|
|
||||||
id: trayItem
|
|
||||||
|
|
||||||
required property int index
|
|
||||||
required property SystemTrayItem modelData
|
|
||||||
|
|
||||||
implicitHeight: 34
|
|
||||||
implicitWidth: 34
|
|
||||||
ind: index
|
|
||||||
item: modelData
|
|
||||||
loader: root.loader
|
|
||||||
popouts: root.popouts
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
CustomClippingRect {
|
|
||||||
id: sysTrayMod
|
|
||||||
|
|
||||||
Layout.fillHeight: root.horizontal
|
|
||||||
Layout.fillWidth: !root.horizontal
|
|
||||||
bottomLeftRadius: Tokens.rounding.smallest / 2
|
|
||||||
color: Colors.tPalette.m3surfaceContainer
|
|
||||||
implicitHeight: root.horizontal ? sysIcons.implicitHeight : sysIcons.implicitHeight + Tokens.padding.smaller + Tokens.padding.normal
|
|
||||||
implicitWidth: root.horizontal ? sysIcons.implicitWidth + Tokens.padding.smaller + Tokens.padding.normal : sysIcons.implicitWidth
|
|
||||||
radius: Tokens.rounding.full
|
|
||||||
topLeftRadius: Tokens.rounding.smallest / 2
|
|
||||||
|
|
||||||
StatusIcons {
|
|
||||||
id: sysIcons
|
|
||||||
|
|
||||||
anchors.fill: parent
|
|
||||||
anchors.leftMargin: Tokens.padding.smaller
|
|
||||||
anchors.rightMargin: Tokens.padding.normal
|
|
||||||
horizontal: root.horizontal
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,86 +0,0 @@
|
|||||||
import Quickshell
|
|
||||||
import Quickshell.Hyprland
|
|
||||||
import Quickshell.Wayland
|
|
||||||
import QtQuick
|
|
||||||
import QtQuick.Layouts
|
|
||||||
import ZShell.Config
|
|
||||||
import qs.Components
|
|
||||||
import qs.Modules
|
|
||||||
import qs.Helpers
|
|
||||||
import qs.Services
|
|
||||||
|
|
||||||
Item {
|
|
||||||
id: root
|
|
||||||
|
|
||||||
required property ShellScreen screen
|
|
||||||
required property Item wrapper
|
|
||||||
|
|
||||||
implicitHeight: layout.implicitHeight + 16
|
|
||||||
implicitWidth: layout.implicitWidth + 16
|
|
||||||
|
|
||||||
GridLayout {
|
|
||||||
id: layout
|
|
||||||
|
|
||||||
anchors.centerIn: parent
|
|
||||||
columnSpacing: 8
|
|
||||||
rowSpacing: 8
|
|
||||||
|
|
||||||
Repeater {
|
|
||||||
model: Hypr.workspaces
|
|
||||||
|
|
||||||
CustomRect {
|
|
||||||
id: workspacePreview
|
|
||||||
|
|
||||||
required property HyprlandWorkspace modelData
|
|
||||||
|
|
||||||
Layout.preferredHeight: 180 + 10
|
|
||||||
Layout.preferredWidth: 320 + 10
|
|
||||||
border.color: "white"
|
|
||||||
border.width: 1
|
|
||||||
radius: Tokens.rounding.smallest
|
|
||||||
|
|
||||||
Repeater {
|
|
||||||
model: workspacePreview.modelData.toplevels
|
|
||||||
|
|
||||||
Item {
|
|
||||||
id: preview
|
|
||||||
|
|
||||||
property rect appPosition: {
|
|
||||||
let {
|
|
||||||
at: [cx, cy],
|
|
||||||
size: [cw, ch]
|
|
||||||
} = modelData.lastIpcObject;
|
|
||||||
|
|
||||||
cx -= modelData.monitor.x;
|
|
||||||
cy -= modelData.monitor.y;
|
|
||||||
|
|
||||||
return Qt.rect((cx / 8), (cy / 8), (cw / 8), (ch / 8));
|
|
||||||
}
|
|
||||||
required property HyprlandToplevel modelData
|
|
||||||
|
|
||||||
anchors.fill: parent
|
|
||||||
anchors.margins: 5
|
|
||||||
|
|
||||||
CustomRect {
|
|
||||||
border.color: Colors.tPalette.m3outline
|
|
||||||
border.width: 1
|
|
||||||
implicitHeight: preview.appPosition.height
|
|
||||||
implicitWidth: preview.appPosition.width
|
|
||||||
radius: Tokens.rounding.smallest / 2
|
|
||||||
x: preview.appPosition.x
|
|
||||||
y: preview.appPosition.y - 3.4
|
|
||||||
|
|
||||||
ScreencopyView {
|
|
||||||
id: previewCopy
|
|
||||||
|
|
||||||
anchors.fill: parent
|
|
||||||
captureSource: preview.modelData.wayland
|
|
||||||
live: true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user