179 lines
5.2 KiB
QML
179 lines
5.2 KiB
QML
import QtQuick
|
|
import QtQuick.Controls
|
|
import QtQuick.Layouts
|
|
import Quickshell
|
|
import Quickshell.Wayland
|
|
import qs.Constants
|
|
import qs.Modules.Misc
|
|
import qs.Services
|
|
|
|
Scope {
|
|
id: rootScope
|
|
|
|
property var shell
|
|
property string namespace: "quickshell-corners"
|
|
property int topMargin: 45
|
|
property int cornerHeight: 20
|
|
property real cornerSize: 1
|
|
property real opacity: Niri.noFocus ? 0 : 1
|
|
|
|
Item {
|
|
id: cornersRootItem
|
|
|
|
anchors.fill: parent
|
|
|
|
Variants {
|
|
model: Quickshell.screens
|
|
|
|
Item {
|
|
property var modelData
|
|
|
|
PanelWindow {
|
|
id: fakeBar
|
|
|
|
anchors.top: true
|
|
anchors.left: true
|
|
anchors.right: true
|
|
color: "transparent"
|
|
screen: modelData
|
|
WlrLayershell.exclusionMode: ExclusionMode.Ignore
|
|
visible: true
|
|
WlrLayershell.layer: WlrLayer.Background
|
|
aboveWindows: false
|
|
WlrLayershell.namespace: namespace
|
|
implicitHeight: topMargin
|
|
|
|
Rectangle {
|
|
anchors.fill: parent
|
|
color: Colors.base
|
|
opacity: rootScope.opacity
|
|
}
|
|
|
|
}
|
|
|
|
PanelWindow {
|
|
id: topLeftPanel
|
|
|
|
anchors.top: true
|
|
anchors.left: true
|
|
color: "transparent"
|
|
screen: modelData
|
|
margins.top: topMargin
|
|
WlrLayershell.exclusionMode: ExclusionMode.Ignore
|
|
visible: true
|
|
WlrLayershell.layer: WlrLayer.Background
|
|
aboveWindows: false
|
|
WlrLayershell.namespace: namespace
|
|
implicitHeight: cornerHeight
|
|
|
|
Corner {
|
|
id: topLeftCorner
|
|
|
|
position: "bottomleft"
|
|
size: rootScope.cornerSize
|
|
offsetX: -32
|
|
offsetY: 0
|
|
anchors.top: parent.top
|
|
opacity: rootScope.opacity
|
|
}
|
|
|
|
}
|
|
|
|
PanelWindow {
|
|
id: topRightPanel
|
|
|
|
anchors.top: true
|
|
anchors.right: true
|
|
color: "transparent"
|
|
screen: modelData
|
|
margins.top: topMargin
|
|
WlrLayershell.exclusionMode: ExclusionMode.Ignore
|
|
visible: true
|
|
WlrLayershell.layer: WlrLayer.Background
|
|
aboveWindows: false
|
|
WlrLayershell.namespace: namespace
|
|
implicitHeight: cornerHeight
|
|
|
|
Corner {
|
|
id: topRightCorner
|
|
|
|
position: "bottomright"
|
|
size: rootScope.cornerSize
|
|
offsetX: 32
|
|
offsetY: 0
|
|
anchors.top: parent.top
|
|
opacity: rootScope.opacity
|
|
}
|
|
|
|
}
|
|
|
|
PanelWindow {
|
|
id: bottomLeftPanel
|
|
|
|
anchors.bottom: true
|
|
anchors.left: true
|
|
color: "transparent"
|
|
screen: modelData
|
|
WlrLayershell.exclusionMode: ExclusionMode.Ignore
|
|
visible: true
|
|
WlrLayershell.layer: WlrLayer.Background
|
|
aboveWindows: false
|
|
WlrLayershell.namespace: namespace
|
|
implicitHeight: cornerHeight
|
|
|
|
Corner {
|
|
id: bottomLeftCorner
|
|
|
|
position: "topleft"
|
|
size: rootScope.cornerSize
|
|
offsetX: -32
|
|
offsetY: 0
|
|
anchors.top: parent.top
|
|
opacity: rootScope.opacity
|
|
}
|
|
|
|
}
|
|
|
|
PanelWindow {
|
|
id: bottomRightPanel
|
|
|
|
anchors.bottom: true
|
|
anchors.right: true
|
|
color: "transparent"
|
|
screen: modelData
|
|
WlrLayershell.exclusionMode: ExclusionMode.Ignore
|
|
visible: true
|
|
WlrLayershell.layer: WlrLayer.Background
|
|
aboveWindows: false
|
|
WlrLayershell.namespace: namespace
|
|
implicitHeight: cornerHeight
|
|
|
|
Corner {
|
|
id: bottomRightCorner
|
|
|
|
position: "topright"
|
|
size: rootScope.cornerSize
|
|
offsetX: 32
|
|
offsetY: 0
|
|
anchors.top: parent.top
|
|
opacity: rootScope.opacity
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
Behavior on opacity {
|
|
NumberAnimation {
|
|
duration: 1000
|
|
easing.type: Easing.InOutCubic
|
|
}
|
|
|
|
}
|
|
|
|
}
|