blob: d66f548862a8258ca4961b09aac593043b99aca3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
pragma ComponentBehavior: Bound
import "root:/widgets"
import "root:/services"
import "root:/config"
import Quickshell
import Quickshell.Wayland
import Quickshell.Hyprland
import QtQuick
Variants {
model: Quickshell.screens
Scope {
id: scope
required property ShellScreen modelData
Exclusions {
screen: scope.modelData
}
StyledWindow {
id: win
screen: scope.modelData
name: "drawers"
exclusionMode: ExclusionMode.Ignore
keyboardFocus: visibilities.launcher || visibilities.session ? WlrKeyboardFocus.OnDemand : WlrKeyboardFocus.None
mask: Region {
x: BorderConfig.thickness
y: BorderConfig.thickness
width: win.width - BorderConfig.thickness * 2
height: win.height - BorderConfig.thickness * 2
intersection: Intersection.Xor
regions: regions.instances
}
anchors.top: true
anchors.bottom: true
anchors.left: true
anchors.right: true
margins.left: Visibilities.bars[screen]?.implicitWidth ?? 0
Variants {
id: regions
model: panels.children
Region {
required property Item modelData
x: modelData.x
y: modelData.y
width: modelData.width
height: modelData.height
intersection: Intersection.Subtract
}
}
HyprlandFocusGrab {
active: visibilities.launcher || visibilities.session
windows: [win]
onCleared: {
visibilities.launcher = false;
visibilities.session = false;
}
}
StyledRect {
anchors.fill: parent
opacity: visibilities.session ? 0.5 : 0
color: Colours.palette.m3scrim
Behavior on opacity {
NumberAnimation {
duration: Appearance.anim.durations.normal
easing.type: Easing.BezierSpline
easing.bezierCurve: Appearance.anim.curves.standard
}
}
}
Item {
id: background
anchors.fill: parent
visible: false
Border {}
Backgrounds {
panels: panels
}
}
LayerShadow {
source: background
}
PersistentProperties {
id: visibilities
property bool osd
property bool notifications: Notifs.popups.length > 0
property bool session
property bool launcher
property bool dashboard
Component.onCompleted: Visibilities.screens[scope.modelData] = this
}
Interactions {
screen: scope.modelData
visibilities: visibilities
panels: panels
Panels {
id: panels
screen: scope.modelData
visibilities: visibilities
}
}
}
}
}
|