mirror of
https://github.com/belsabbagh/dotfiles.git
synced 2026-04-11 17:47:09 +00:00
97 lines
2.8 KiB
QML
97 lines
2.8 KiB
QML
pragma ComponentBehavior: Bound
|
|
|
|
import qs.components
|
|
import qs.services
|
|
import qs.config
|
|
import Quickshell
|
|
import Quickshell.Wayland
|
|
import Quickshell.Hyprland
|
|
import QtQuick
|
|
import QtQuick.Layouts
|
|
|
|
Item {
|
|
id: root
|
|
|
|
required property ShellScreen screen
|
|
required property HyprlandToplevel client
|
|
|
|
Layout.preferredWidth: preview.implicitWidth + Appearance.padding.large * 2
|
|
Layout.fillHeight: true
|
|
|
|
StyledClippingRect {
|
|
id: preview
|
|
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
anchors.top: parent.top
|
|
anchors.bottom: label.top
|
|
anchors.topMargin: Appearance.padding.large
|
|
anchors.bottomMargin: Appearance.spacing.normal
|
|
|
|
implicitWidth: view.implicitWidth
|
|
|
|
color: Colours.tPalette.m3surfaceContainer
|
|
radius: Appearance.rounding.small
|
|
|
|
Loader {
|
|
anchors.centerIn: parent
|
|
active: !root.client
|
|
|
|
sourceComponent: ColumnLayout {
|
|
spacing: 0
|
|
|
|
MaterialIcon {
|
|
Layout.alignment: Qt.AlignHCenter
|
|
text: "web_asset_off"
|
|
color: Colours.palette.m3outline
|
|
font.pointSize: Appearance.font.size.extraLarge * 3
|
|
}
|
|
|
|
StyledText {
|
|
Layout.alignment: Qt.AlignHCenter
|
|
text: qsTr("No active client")
|
|
color: Colours.palette.m3outline
|
|
font.pointSize: Appearance.font.size.extraLarge
|
|
font.weight: 500
|
|
}
|
|
|
|
StyledText {
|
|
Layout.alignment: Qt.AlignHCenter
|
|
text: qsTr("Try switching to a window")
|
|
color: Colours.palette.m3outline
|
|
font.pointSize: Appearance.font.size.large
|
|
}
|
|
}
|
|
}
|
|
|
|
ScreencopyView {
|
|
id: view
|
|
|
|
anchors.centerIn: parent
|
|
|
|
captureSource: root.client?.wayland ?? null
|
|
live: true
|
|
|
|
constraintSize.width: root.client ? parent.height * Math.min(root.screen.width / root.screen.height, root.client?.lastIpcObject.size[0] / root.client?.lastIpcObject.size[1]) : parent.height
|
|
constraintSize.height: parent.height
|
|
}
|
|
}
|
|
|
|
StyledText {
|
|
id: label
|
|
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
anchors.bottom: parent.bottom
|
|
anchors.bottomMargin: Appearance.padding.large
|
|
|
|
animate: true
|
|
text: {
|
|
const client = root.client;
|
|
if (!client)
|
|
return qsTr("No active client");
|
|
|
|
const mon = client.monitor;
|
|
return qsTr("%1 on monitor %2 at %3, %4").arg(client.title).arg(mon.name).arg(client.lastIpcObject.at[0]).arg(client.lastIpcObject.at[1]);
|
|
}
|
|
}
|
|
}
|