summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/drawers/Backgrounds.qml8
-rw-r--r--modules/drawers/Drawers.qml2
-rw-r--r--modules/drawers/Panels.qml12
-rw-r--r--modules/notifications/Background.qml93
-rw-r--r--modules/notifications/Notifications.qml74
-rw-r--r--modules/notifications/Wrapper.qml54
-rw-r--r--modules/osd/Osd.qml142
7 files changed, 86 insertions, 299 deletions
diff --git a/modules/drawers/Backgrounds.qml b/modules/drawers/Backgrounds.qml
index 70fd48f..94d8dee 100644
--- a/modules/drawers/Backgrounds.qml
+++ b/modules/drawers/Backgrounds.qml
@@ -1,6 +1,7 @@
import "root:/services"
import "root:/config"
import "root:/modules/osd" as Osd
+import "root:/modules/notifications" as Notifications
import Quickshell
import QtQuick
import QtQuick.Shapes
@@ -21,4 +22,11 @@ Shape {
startX: root.width
startY: (root.height - panels.osd.height) / 2
}
+
+ Notifications.Background {
+ wrapper: panels.notifications
+
+ startX: root.width
+ startY: 0
+ }
}
diff --git a/modules/drawers/Drawers.qml b/modules/drawers/Drawers.qml
index 35129ce..fe70b8c 100644
--- a/modules/drawers/Drawers.qml
+++ b/modules/drawers/Drawers.qml
@@ -75,7 +75,7 @@ Variants {
property bool launcher
property bool osd
- property bool notifs
+ property bool notifications: Notifs.popups.length > 0
property bool session
}
diff --git a/modules/drawers/Panels.qml b/modules/drawers/Panels.qml
index 06b4a09..645af21 100644
--- a/modules/drawers/Panels.qml
+++ b/modules/drawers/Panels.qml
@@ -1,5 +1,6 @@
import "root:/config"
import "root:/modules/osd" as Osd
+import "root:/modules/notifications" as Notifications
import Quickshell
import QtQuick
@@ -10,6 +11,7 @@ Item {
required property PersistentProperties visibilities
readonly property Osd.Wrapper osd: osd
+ readonly property Notifications.Wrapper notifications: notifications
anchors.fill: parent
anchors.margins: BorderConfig.thickness
@@ -23,4 +25,14 @@ Item {
anchors.verticalCenter: parent.verticalCenter
anchors.right: parent.right
}
+
+ Notifications.Wrapper {
+ id: notifications
+
+ screen: root.screen
+ visibility: visibilities.notifications
+
+ anchors.top: parent.top
+ anchors.right: parent.right
+ }
}
diff --git a/modules/notifications/Background.qml b/modules/notifications/Background.qml
index a0ed11e..9e66697 100644
--- a/modules/notifications/Background.qml
+++ b/modules/notifications/Background.qml
@@ -3,63 +3,54 @@ import "root:/config"
import QtQuick
import QtQuick.Shapes
-Shape {
+ShapePath {
id: root
- required property real wrapperWidth
- required property real wrapperHeight
+ required property Wrapper wrapper
readonly property real rounding: BorderConfig.rounding
- readonly property bool flatten: wrapperHeight < rounding * 2
- readonly property real roundingY: flatten ? wrapperHeight / 2 : rounding
+ readonly property bool flatten: wrapper.height < rounding * 2
+ readonly property real roundingY: flatten ? wrapper.height / 2 : rounding
- preferredRendererType: Shape.CurveRenderer
- opacity: Colours.transparency.enabled ? Colours.transparency.base : 1
+ strokeWidth: -1
+ fillColor: BorderConfig.colour
- ShapePath {
- strokeWidth: -1
- fillColor: BorderConfig.colour
-
- startX: root.wrapperWidth
-
- PathLine {}
- PathArc {
- relativeX: root.rounding
- relativeY: root.roundingY
- radiusX: root.rounding
- radiusY: Math.min(root.rounding, root.wrapperHeight)
- }
- PathLine {
- relativeX: 0
- y: root.flatten ? root.roundingY : root.wrapperHeight - root.rounding
- }
- PathArc {
- relativeX: root.rounding
- relativeY: root.roundingY
- radiusX: root.rounding
- radiusY: Math.min(root.rounding, root.wrapperHeight)
- direction: PathArc.Counterclockwise
- }
- PathLine {
- x: root.wrapperWidth - root.rounding - 1
- relativeY: 0
- }
- PathArc {
- relativeX: root.rounding
- relativeY: root.rounding
- radiusX: root.rounding
- radiusY: root.rounding
- }
- PathLine {
- relativeX: 1
- relativeY: 0
- }
+ PathLine {
+ relativeX: -root.wrapper.width
+ relativeY: 0
+ }
+ PathArc {
+ relativeX: root.rounding
+ relativeY: root.roundingY
+ radiusX: root.rounding
+ radiusY: Math.min(root.rounding, root.wrapper.height)
+ }
+ PathLine {
+ relativeX: 0
+ relativeY: root.wrapper.height - root.roundingY * 2
+ }
+ PathArc {
+ relativeX: root.rounding
+ relativeY: root.roundingY
+ radiusX: root.rounding
+ radiusY: Math.min(root.rounding, root.wrapper.height)
+ direction: PathArc.Counterclockwise
+ }
+ PathLine {
+ relativeX: root.wrapper.height > 0 ? root.wrapper.width - root.rounding * 3 : root.wrapper.width
+ relativeY: 0
+ }
+ PathArc {
+ relativeX: root.rounding
+ relativeY: root.rounding
+ radiusX: root.rounding
+ radiusY: root.rounding
+ }
- Behavior on fillColor {
- ColorAnimation {
- duration: Appearance.anim.durations.normal
- easing.type: Easing.BezierSpline
- easing.bezierCurve: Appearance.anim.curves.standard
- }
+ Behavior on fillColor {
+ ColorAnimation {
+ duration: Appearance.anim.durations.normal
+ easing.type: Easing.BezierSpline
+ easing.bezierCurve: Appearance.anim.curves.standard
}
}
}
diff --git a/modules/notifications/Notifications.qml b/modules/notifications/Notifications.qml
deleted file mode 100644
index 52f2a7f..0000000
--- a/modules/notifications/Notifications.qml
+++ /dev/null
@@ -1,74 +0,0 @@
-import "root:/widgets"
-import "root:/services"
-import "root:/config"
-import Quickshell
-import Quickshell.Wayland
-import QtQuick
-
-Variants {
- model: Quickshell.screens
-
- Scope {
- id: root
-
- required property ShellScreen modelData
- property bool osdVisible: Notifs.popups.length > 0
-
- LazyLoader {
- loading: true
-
- StyledWindow {
- id: win
-
- screen: root.modelData
- name: "notifications"
- visible: wrapper.shouldBeVisible
- exclusionMode: ExclusionMode.Normal
-
- mask: Region {
- item: wrapper
- }
-
- anchors.top: true
- anchors.bottom: true
- anchors.left: true
- anchors.right: true
-
- width: wrapper.width
- height: wrapper.height
-
- Background {
- id: bg
-
- visible: false
-
- anchors.top: parent.top
- anchors.right: parent.right
-
- wrapperWidth: wrapper.width
- wrapperHeight: Math.min(wrapper.height, content.height)
- }
-
- LayerShadow {
- source: bg
- }
-
- Wrapper {
- id: wrapper
-
- anchors.top: parent.top
- anchors.right: parent.right
-
- implicitWidth: content.width + bg.rounding
-
- osdVisible: root.osdVisible
- contentHeight: content.height
-
- Content {
- id: content
- }
- }
- }
- }
- }
-}
diff --git a/modules/notifications/Wrapper.qml b/modules/notifications/Wrapper.qml
index a98ab4b..e333560 100644
--- a/modules/notifications/Wrapper.qml
+++ b/modules/notifications/Wrapper.qml
@@ -1,23 +1,23 @@
import "root:/config"
+import Quickshell
import QtQuick
Item {
id: root
- required property bool osdVisible
- required property real contentHeight
- property bool shouldBeVisible
+ required property ShellScreen screen
+ required property bool visibility
visible: height > 0
- height: 0
+ implicitHeight: 0
+ implicitWidth: content.width + BorderConfig.rounding
states: State {
name: "visible"
- when: root.osdVisible
+ when: root.visibility
PropertyChanges {
- root.height: contentHeight
- root.shouldBeVisible: true
+ root.implicitHeight: content.height
}
}
@@ -26,37 +26,29 @@ Item {
from: ""
to: "visible"
- SequentialAnimation {
- PropertyAction {
- target: root
- property: "shouldBeVisible"
- }
- NumberAnimation {
- target: root
- property: "height"
- duration: Appearance.anim.durations.large
- easing.type: Easing.BezierSpline
- easing.bezierCurve: Appearance.anim.curves.emphasizedDecel
- }
+ NumberAnimation {
+ target: root
+ property: "implicitHeight"
+ duration: Appearance.anim.durations.large
+ easing.type: Easing.BezierSpline
+ easing.bezierCurve: Appearance.anim.curves.emphasizedDecel
}
},
Transition {
from: "visible"
to: ""
- SequentialAnimation {
- NumberAnimation {
- target: root
- property: "height"
- duration: Appearance.anim.durations.normal
- easing.type: Easing.BezierSpline
- easing.bezierCurve: Appearance.anim.curves.standard
- }
- PropertyAction {
- target: root
- property: "shouldBeVisible"
- }
+ NumberAnimation {
+ target: root
+ property: "implicitHeight"
+ duration: Appearance.anim.durations.normal
+ easing.type: Easing.BezierSpline
+ easing.bezierCurve: Appearance.anim.curves.standard
}
}
]
+
+ Content {
+ id: content
+ }
}
diff --git a/modules/osd/Osd.qml b/modules/osd/Osd.qml
deleted file mode 100644
index 7774bab..0000000
--- a/modules/osd/Osd.qml
+++ /dev/null
@@ -1,142 +0,0 @@
-import "root:/widgets"
-import "root:/services"
-import "root:/config"
-import Quickshell
-import QtQuick
-
-Variants {
- model: Quickshell.screens
-
- Scope {
- id: root
-
- required property ShellScreen modelData
- readonly property Brightness.Monitor monitor: Brightness.getMonitorForScreen(modelData)
- property int winHeight
- property bool osdVisible
- property bool hovered
-
- function show(): void {
- root.osdVisible = true;
- timer.restart();
- }
-
- Connections {
- target: Audio
-
- function onMutedChanged(): void {
- root.show();
- }
-
- function onVolumeChanged(): void {
- root.show();
- }
- }
-
- Connections {
- target: root.monitor
-
- function onBrightnessChanged(): void {
- root.show();
- }
- }
-
- Timer {
- id: timer
-
- interval: OsdConfig.hideDelay
- onTriggered: {
- if (!root.hovered)
- root.osdVisible = false;
- }
- }
-
- Connections {
- target: Drawers
-
- function onPosChanged(screen: ShellScreen, x: int, y: int): void {
- if (screen === root.modelData && x > screen.width - BorderConfig.thickness && y > (screen.height - root.winHeight) / 2 && y < (screen.height + root.winHeight) / 2)
- root.show();
- }
- }
-
- LazyLoader {
- loading: true
-
- StyledWindow {
- id: win
-
- screen: root.modelData
- name: "osd"
- visible: wrapper.shouldBeVisible
-
- mask: Region {
- item: wrapper
- }
-
- anchors.left: true
- anchors.right: true
- height: wrapper.height
-
- Component.onCompleted: root.winHeight = height
-
- Item {
- anchors.verticalCenter: parent.verticalCenter
- anchors.right: parent.right
- anchors.rightMargin: Drawers.rightExclusion
-
- clip: true
- visible: width > 0
- implicitWidth: wrapper.width
- implicitHeight: wrapper.height
-
- Background {
- id: bg
-
- visible: false
-
- anchors.verticalCenter: parent.verticalCenter
- anchors.right: parent.right
-
- wrapperWidth: Math.min(wrapper.width, content.width)
- wrapperHeight: wrapper.height
- }
-
- LayerShadow {
- source: bg
- }
-
- Wrapper {
- id: wrapper
-
- anchors.verticalCenter: parent.verticalCenter
- anchors.right: parent.right
-
- implicitHeight: content.height + bg.rounding * 2
-
- osdVisible: root.osdVisible
- contentWidth: content.width
-
- Content {
- id: content
-
- monitor: root.monitor
- }
- }
-
- HoverHandler {
- id: hoverHandler
-
- onHoveredChanged: {
- root.hovered = hovered;
- if (hovered)
- timer.stop();
- else
- root.osdVisible = false;
- }
- }
- }
- }
- }
- }
-}