diff --git a/.qtcreator/project.json b/.qtcreator/project.json
new file mode 100644
index 0000000..6bdef87
--- /dev/null
+++ b/.qtcreator/project.json
@@ -0,0 +1,6 @@
+{
+ "$schema": "https://download.qt.io/official_releases/qtcreator/latest/installer_source/jsonschemas/project.json",
+ "files.exclude": [
+ ".qtcreator/project.json.user"
+ ]
+}
diff --git a/.qtcreator/project.json.user b/.qtcreator/project.json.user
new file mode 100644
index 0000000..2b37cc7
--- /dev/null
+++ b/.qtcreator/project.json.user
@@ -0,0 +1,204 @@
+
+
+
+
+
+ EnvironmentId
+ {ec8acdf5-a16b-4fc5-819b-8b986eb013bb}
+
+
+ ProjectExplorer.Project.ActiveTarget
+ 0
+
+
+ ProjectExplorer.Project.EditorSettings
+
+ true
+ true
+ true
+
+ Cpp
+
+ CppGlobal
+
+
+
+ QmlJS
+
+ QmlJSGlobal
+
+
+ 2
+ UTF-8
+ false
+ 4
+ false
+ 0
+ 80
+ true
+ true
+ 1
+ 0
+ false
+ true
+ false
+ 2
+ true
+ true
+ 0
+ 8
+ true
+ false
+ 1
+ true
+ true
+ true
+ *.md, *.MD, Makefile
+ false
+ true
+ true
+
+
+
+ ProjectExplorer.Project.PluginSettings
+
+
+ true
+ false
+ true
+ true
+ true
+ true
+
+ false
+
+
+ 0
+ true
+
+ true
+ true
+ Builtin.DefaultTidyAndClazy
+ 10
+ true
+
+
+
+ true
+
+ 0
+
+
+
+ ProjectExplorer.Project.Target.0
+
+ Desktop
+ true
+ Desktop
+ Desktop
+ {6f820de3-bb35-4a43-a7c9-dfd1617a8619}
+ 0
+ 0
+ 0
+
+ /home/zach/GitProjects/z-bar-qt/build
+
+ 0
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+ 0
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Default
+ WorkspaceProject.BuildConfiguration
+ 0
+ 0
+
+
+ 0
+ Deploy
+ Deploy
+ ProjectExplorer.BuildSteps.Deploy
+
+ 1
+
+ false
+ ProjectExplorer.DefaultDeployConfiguration
+
+ 1
+
+ true
+ true
+ 0
+ true
+
+ 2
+
+ false
+ -e cpu-cycles --call-graph dwarf,4096 -F 250
+
+ ProjectExplorer.CustomExecutableRunConfiguration
+
+ false
+
+ true
+ true
+ %{RunConfig:Executable:Path}
+
+ 1
+
+ 1
+
+
+ 0
+ Deploy
+ Deploy
+ ProjectExplorer.BuildSteps.Deploy
+
+ 1
+
+ false
+ ProjectExplorer.DefaultDeployConfiguration
+
+ 1
+
+ true
+ true
+ 0
+ true
+
+ 2
+
+ false
+ -e cpu-cycles --call-graph dwarf,4096 -F 250
+
+ ProjectExplorer.CustomExecutableRunConfiguration
+
+ false
+
+ true
+ true
+ %{RunConfig:Executable:Path}
+
+ 1
+
+
+
+ ProjectExplorer.Project.TargetCount
+ 1
+
+
+ Version
+ 22
+
+
diff --git a/Daemons/NotifServer.qml b/Daemons/NotifServer.qml
index df0bb19..0e6a5ff 100644
--- a/Daemons/NotifServer.qml
+++ b/Daemons/NotifServer.qml
@@ -10,6 +10,7 @@ import ZShell
import qs.Modules
import qs.Helpers
import qs.Paths
+import qs.Config
Singleton {
id: root
@@ -103,7 +104,8 @@ Singleton {
}
GlobalShortcut {
- name: "clearNotifs"
+ name: "clearnotifs"
+ appid: "zshell-notif"
description: "Clear all notifications"
onPressed: {
for (const notif of root.list.slice())
diff --git a/Modules/NotifGroupRepeater.qml b/Modules/NotifGroupRepeater.qml
deleted file mode 100644
index 5138786..0000000
--- a/Modules/NotifGroupRepeater.qml
+++ /dev/null
@@ -1,248 +0,0 @@
-import Quickshell
-import Quickshell.Widgets
-import QtQuick
-import QtQuick.Layouts
-import qs.Config
-import qs.Daemons
-import qs.Helpers
-
-Repeater {
- id: groupListView
- model: ScriptModel {
- id: groupModel
- values: groupColumn.isExpanded || groupColumn.shouldShow ? groupColumn.notifications : groupColumn.notifications.slice( 0, 1 )
- }
- Rectangle {
- id: groupHeader
- required property int index
- required property NotifServer.Notif modelData
- property alias notifHeight: groupHeader.height
-
- property bool previewHidden: !groupColumn.shouldShow && index > 0
-
- width: parent.width
- height: contentColumn.height + 15
- color: Config.useDynamicColors ? DynamicColors.tPalette.m3surfaceContainer : Config.baseBgColor
- border.color: "#555555"
- border.width: Config.useDynamicColors ? 0 : 1
- radius: 8
- opacity: previewHidden ? 0 : 1
- scale: previewHidden ? 0.7 : 1.0
-
- Component.onCompleted: {
- modelData.lock(this);
- }
- Component.onDestruction: modelData.unlock(this);
-
- MouseArea {
- anchors.fill: parent
- onClicked: {
- if ( groupColumn.isExpanded || groupColumn.notifications.length === 1 ) {
- if ( groupHeader.modelData.actions.length === 1 ) {
- groupHeader.modelData.actions[0].invoke();
- }
- } else {
- groupColumn.isExpanded = true;
- }
- }
- }
-
- ParallelAnimation {
- id: collapseAnim
- running: groupColumn.collapseAnimRunning
-
- Anim {
- target: groupHeader
- property: "opacity"
- duration: 100
- from: 1
- to: index > 0 ? 0 : 1.0
- }
- Anim {
- target: groupHeader
- property: "scale"
- duration: 100
- from: 1
- to: index > 0 ? 0.7 : 1.0
- }
- onFinished: {
- groupColumn.isExpanded = false;
- groupColumn.shouldShow = false;
- groupColumn.collapseAnimRunning = false;
- }
- }
-
- ParallelAnimation {
- running: groupHeader.modelData.closed
- onFinished: groupHeader.modelData.unlock(groupHeader)
-
- Anim {
- target: groupHeader
- property: "opacity"
- to: 0
- }
- Anim {
- target: groupHeader
- property: "x"
- to: groupHeader.x >= 0 ? groupHeader.width : -groupHeader.width
- }
- }
-
- Behavior on opacity {
- Anim {}
- }
-
- Behavior on scale {
- Anim {}
- }
-
- Behavior on x {
- Anim {
- duration: MaterialEasing.expressiveDefaultSpatialTime
- easing.bezierCurve: MaterialEasing.expressiveDefaultSpatial
- }
- }
-
- Behavior on y {
- Anim {
- duration: MaterialEasing.expressiveDefaultSpatialTime
- easing.bezierCurve: MaterialEasing.expressiveDefaultSpatial
- }
- }
-
- Column {
- id: contentColumn
- anchors.top: parent.top
- anchors.left: parent.left
- anchors.right: parent.right
- anchors.leftMargin: 10
- anchors.rightMargin: 10
- anchors.topMargin: 5
- spacing: 10
- RowLayout {
- id: infoRow
- width: parent.width
- spacing: 10
-
- property color textColor: Config.useDynamicColors ? DynamicColors.palette.m3secondaryFixed : "#FFFFFF"
-
- IconImage {
- source: groupHeader.modelData.image === "" ? Qt.resolvedUrl(groupHeader.modelData.appIcon) : Qt.resolvedUrl(groupHeader.modelData.image)
- Layout.preferredWidth: 48
- Layout.preferredHeight: 48
- Layout.alignment: Qt.AlignTop | Qt.AlignLeft
- Layout.topMargin: 5
- visible: source !== ""
- }
-
- ColumnLayout {
- Layout.fillWidth: true
- Layout.fillHeight: true
-
- TextRender {
- text: groupHeader.modelData.summary
- color: infoRow.textColor
- font.bold: true
- font.pointSize: 16
- elide: Text.ElideRight
- Layout.fillWidth: true
- Layout.alignment: Qt.AlignTop
- }
-
- TextRender {
- text: groupHeader.modelData.body
- color: infoRow.textColor
- font.pointSize: 12
- elide: Text.ElideRight
- textFormat: Text.MarkdownText
- wrapMode: Text.WordWrap
- maximumLineCount: 5
- linkColor: Config.accentColor.accents.primaryAlt
-
- onLinkActivated: link => {
- Quickshell.execDetached(["app2unit", "-O", "--", link]);
- }
-
- Layout.fillWidth: true
- Layout.fillHeight: true
- }
- }
-
- TextRender {
- text: groupHeader.modelData.timeStr
- font.pointSize: 10
- color: infoRow.textColor
- Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
- }
- }
-
- RowLayout {
- id: actionRow
- property NotifServer.Notif notif: groupHeader.modelData
- spacing: 2
- visible: groupHeader.modelData.actions.length > 1 ? true : false
- height: 30
- width: parent.width
-
- Repeater {
- model: [ ...actionRow.notif.actions ]
- Rectangle {
- id: actionButton
- Layout.fillWidth: true
- Layout.preferredHeight: 30
- required property var modelData
- required property int index
-
- property color btnColor: Config.useDynamicColors ? ( actionButton.index === 0 ? DynamicColors.palette.m3primary : DynamicColors.palette.m3secondary ) : Config.accentColor.accents.primary
- property color textColor: Config.useDynamicColors ? ( actionButton.index === 0 ? DynamicColors.palette.m3onPrimaryFixed : DynamicColors.palette.m3onSecondaryFixed ) : "white"
-
- color: buttonArea.containsMouse ? DynamicColors.layer(btnColor, 0) : btnColor
- radius: 4
- TextRender {
- anchors.centerIn: parent
- text: actionButton.modelData.text
- color: actionButton.textColor
- font.pointSize: 12
- }
- MouseArea {
- id: buttonArea
- anchors.fill: parent
- hoverEnabled: true
- cursorShape: Qt.PointingHandCursor
- onClicked: {
- console.log( groupHeader.modelData.actions );
- actionButton.modelData.invoke();
- }
- }
- }
- }
- }
- }
- Rectangle {
- anchors.right: parent.right
- anchors.top: parent.top
- anchors.rightMargin: 6
- anchors.topMargin: 6
- width: 18
- height: 18
- color: closeArea.containsMouse ? "#FF6077" : "transparent"
- radius: 9
-
- TextRender {
- anchors.centerIn: parent
- text: "✕"
- color: closeArea.containsMouse ? "white" : "#888888"
- font.pointSize: 12
- }
-
- MouseArea {
- id: closeArea
- anchors.fill: parent
- hoverEnabled: true
- onClicked: {
- groupColumn.isExpanded ? groupHeader.modelData.close() : groupColumn.closeAll();
- }
- }
- }
- }
-}
diff --git a/Modules/NotifServerOld.qml b/Modules/NotifServerOld.qml
deleted file mode 100644
index 381fcf8..0000000
--- a/Modules/NotifServerOld.qml
+++ /dev/null
@@ -1,52 +0,0 @@
-pragma ComponentBehavior: Bound
-
-import Quickshell
-import Quickshell.Services.Notifications
-import QtQuick
-import qs.Modules
-
-Scope {
- id: root
- property list notifIds: []
- property list notifications;
- // NotificationServer {
- // id: notificationServer
- // imageSupported: true
- // actionsSupported: true
- // persistenceSupported: true
- // bodyImagesSupported: true
- // bodySupported: true
- // onNotification: notification => {
- // notification.tracked = true;
- // notification.receivedTime = Date.now();
- // root.notifIds.push(notification.id);
- // const notif = notificationComponent.createObject(root, { notif: notification, visible: !notificationCenter.doNotDisturb });
- // root.notifications.push(notif);
- // }
- // }
-
- Connections {
- target: NotifServer.server
- function onNotification() {
- notificationComponent.createObject( root, { notif: NotifServer.list[0] });
- }
- }
-
- Component {
- id: notificationComponent
- TrackedNotification {
- centerX: notificationCenter.posX
- notifIndex: root.notifIds
- notifList: root.notifications
- onNotifDestroy: {
- root.notifications.shift();
- root.notifIds.shift();
- }
- }
- }
-
- NotificationCenter {
- id: notificationCenter
- notifications: notificationServer.trackedNotifications.values
- }
-}
diff --git a/Modules/NotificationCenter.qml b/Modules/NotificationCenter.qml
deleted file mode 100644
index 0e153fd..0000000
--- a/Modules/NotificationCenter.qml
+++ /dev/null
@@ -1,180 +0,0 @@
-import Quickshell
-import Quickshell.Hyprland
-import Quickshell.Io
-import Quickshell.Wayland
-import QtQuick.Layouts
-import QtQuick.Controls.FluentWinUI3
-import QtQuick.Effects
-import QtQuick
-import qs.Config
-import qs.Helpers
-import qs.Daemons
-import qs.Effects
-
-Scope {
- Variants {
- model: Quickshell.screens
-
- PanelWindow {
- id: root
- color: "transparent"
- anchors {
- top: true
- right: true
- left: true
- bottom: true
- }
-
- WlrLayershell.namespace: "ZShell-Notifs"
- WlrLayershell.layer: WlrLayer.Overlay
- WlrLayershell.keyboardFocus: WlrKeyboardFocus.OnDemand
- property bool centerShown: false
- property alias posX: backgroundRect.x
- visible: false
-
- mask: Region { item: backgroundRect }
-
- GlobalShortcut {
- appid: "zshell-nc"
- name: "toggle-nc"
- onPressed: {
- root.centerShown = !root.centerShown;
- }
- }
-
- onVisibleChanged: {
- if ( root.visible ) {
- showAnimation.start();
- }
- }
-
- onCenterShownChanged: {
- if ( !root.centerShown ) {
- closeAnimation.start();
- closeTimer.start();
- } else if ( Hypr.getActiveScreen() === root.screen ) {
- root.visible = true;
- }
- }
-
- Keys.onPressed: {
- if ( event.key === Qt.Key_Escape ) {
- root.centerShown = false;
- event.accepted = true;
- }
- }
-
- Timer {
- id: closeTimer
- interval: 300
- onTriggered: {
- root.visible = false;
- }
- }
-
- NumberAnimation {
- id: showAnimation
- target: backgroundRect
- property: "x"
- to: Math.round(root.screen.width - backgroundRect.implicitWidth - 10)
- from: root.screen.width
- duration: MaterialEasing.expressiveEffectsTime
- easing.bezierCurve: MaterialEasing.expressiveEffects
- onStopped: {
- focusGrab.active = true;
- }
- }
-
- NumberAnimation {
- id: closeAnimation
- target: backgroundRect
- property: "x"
- from: root.screen.width - backgroundRect.implicitWidth - 10
- to: root.screen.width
- duration: MaterialEasing.expressiveEffectsTime
- easing.bezierCurve: MaterialEasing.expressiveEffects
- }
-
- HyprlandFocusGrab {
- id: focusGrab
- active: false
- windows: [ root ]
- onCleared: {
- root.centerShown = false;
- }
- }
-
- TrackedNotification {
- centerShown: root.centerShown
- screen: root.screen
- }
-
- ShadowRect {
- anchors.fill: backgroundRect
- radius: backgroundRect.radius
- }
-
- Rectangle {
- id: backgroundRect
- y: 10
- x: Screen.width
- z: 1
-
- property color backgroundColor: Config.useDynamicColors ? DynamicColors.tPalette.m3surface : Config.baseBgColor
-
- implicitWidth: 400
- implicitHeight: root.height - 20
- color: backgroundColor
- radius: 8
- border.color: "#555555"
- border.width: Config.useDynamicColors ? 0 : 1
- ColumnLayout {
- anchors.fill: parent
- anchors.margins: 10
- spacing: 10
-
- NotificationCenterHeader { }
-
- Rectangle {
- color: "#333333"
- Layout.preferredHeight: Config.useDynamicColors ? 0 : 1
- Layout.fillWidth: true
- }
-
- Flickable {
- Layout.fillWidth: true
- Layout.fillHeight: true
- pixelAligned: true
- contentHeight: notificationColumn.implicitHeight
- clip: true
-
- Column {
- id: notificationColumn
- width: parent.width
- spacing: 10
-
- add: Transition {
- NumberAnimation {
- properties: "x";
- duration: 300;
- easing.type: Easing.OutCubic
- }
- }
-
- move: Transition {
- NumberAnimation {
- properties: "x";
- duration: 200;
- easing.type: Easing.OutCubic
- }
- }
-
- GroupListView { }
-
- }
- }
- }
- }
- }
- }
-}
diff --git a/Modules/NotificationCenterHeader.qml b/Modules/NotificationCenterHeader.qml
deleted file mode 100644
index d89261a..0000000
--- a/Modules/NotificationCenterHeader.qml
+++ /dev/null
@@ -1,64 +0,0 @@
-import Quickshell
-import Quickshell.Widgets
-import QtQuick
-import QtQuick.Layouts
-import QtQuick.Controls.FluentWinUI3
-import qs.Daemons
-import qs.Config
-
-RowLayout {
- id: root
-
- property color textColor: Config.useDynamicColors ? DynamicColors.palette.m3onSurface : "white"
-
- Layout.fillWidth: true
-
- Switch {
- id: dndSwitch
- Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
- Layout.fillWidth: true
- text: "Do Not Disturb"
- focus: false
- activeFocusOnTab: false
- focusPolicy: Qt.NoFocus
- onCheckedChanged: {
- NotifServer.dnd = dndSwitch.checked;
- }
- }
-
- RowLayout {
- Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
-
- Text {
- Layout.alignment: Qt.AlignVCenter | Qt.AlignRight
- text: "Clear all"
- color: root.textColor
- }
-
- Rectangle {
- Layout.alignment: Qt.AlignVCenter | Qt.AlignRight
- Layout.preferredWidth: 30
- Layout.preferredHeight: 30
- color: clearArea.containsMouse ? "#15FFFFFF" : "transparent"
- radius: 4
-
- Text {
- anchors.centerIn: parent
- text: "\ue0b8"
- font.family: "Material Symbols Rounded"
- font.pointSize: 18
- color: root.textColor
- }
-
- MouseArea {
- id: clearArea
- anchors.fill: parent
- hoverEnabled: true
- onClicked: {
- for ( const n of NotifServer.list.filter( n => !n.closed ))
- n.close();
- }
- }
- }
- }
-}
diff --git a/Modules/Notifications/Notification.qml b/Modules/Notifications/Notification.qml
index e6963a2..d950dcb 100644
--- a/Modules/Notifications/Notification.qml
+++ b/Modules/Notifications/Notification.qml
@@ -4,6 +4,7 @@ import qs.Components
import qs.Config
import qs.Modules
import qs.Daemons
+import qs.Helpers
import Quickshell
import Quickshell.Widgets
import Quickshell.Services.Notifications
@@ -20,7 +21,7 @@ CustomRect {
property bool expanded: Config.notifs.openExpanded
color: root.modelData.urgency === NotificationUrgency.Critical ? DynamicColors.palette.m3secondaryContainer : DynamicColors.tPalette.m3surfaceContainer
- radius: Appearance.rounding.normal
+ radius: 8
implicitWidth: Config.notifs.sizes.width
implicitHeight: inner.implicitHeight
@@ -113,6 +114,7 @@ CustomRect {
width: Config.notifs.sizes.image
height: Config.notifs.sizes.image
visible: root.hasImage || root.hasAppIcon
+ asynchronous: true
sourceComponent: ClippingRectangle {
radius: 1000
@@ -138,6 +140,7 @@ CustomRect {
anchors.verticalCenter: root.hasImage ? undefined : image.verticalCenter
anchors.right: root.hasImage ? image.right : undefined
anchors.bottom: root.hasImage ? image.bottom : undefined
+ asynchronous: true
sourceComponent: CustomRect {
radius: 1000
@@ -151,6 +154,7 @@ CustomRect {
active: root.hasAppIcon
anchors.centerIn: parent
+ asynchronous: true
width: Math.round(parent.width * 0.6)
height: Math.round(parent.width * 0.6)
@@ -167,6 +171,7 @@ CustomRect {
anchors.centerIn: parent
anchors.horizontalCenterOffset: -18 * 0.02
anchors.verticalCenterOffset: 18 * 0.02
+ asynchronous: true
sourceComponent: MaterialIcon {
text: Icons.getNotifIcon(root.modelData.summary, root.modelData.urgency)
diff --git a/Modules/Notifications/Sidebar/Notif.qml b/Modules/Notifications/Sidebar/Notif.qml
index 6033e3c..f4b64ee 100644
--- a/Modules/Notifications/Sidebar/Notif.qml
+++ b/Modules/Notifications/Sidebar/Notif.qml
@@ -129,7 +129,7 @@ CustomRect {
Layout.fillWidth: true
textFormat: Text.MarkdownText
- text: root.modelData.body.replace(/(.)\n(?!\n)/g, "$1\n\n") || qsTr("No body here! :/")
+ text: root.modelData.body.replace(/(.)\n(?!\n)/g, "$1\n\n") || qsTr("No body given")
color: root.modelData.urgency === "critical" ? DynamicColors.palette.m3secondary : DynamicColors.palette.m3onSurface
wrapMode: Text.WordWrap
diff --git a/Modules/Notifications/Sidebar/NotifActionList.qml b/Modules/Notifications/Sidebar/NotifActionList.qml
index 9df80f0..fcfcff6 100644
--- a/Modules/Notifications/Sidebar/NotifActionList.qml
+++ b/Modules/Notifications/Sidebar/NotifActionList.qml
@@ -17,71 +17,6 @@ Item {
Layout.fillWidth: true
implicitHeight: flickable.contentHeight
- layer.enabled: true
- layer.smooth: true
- layer.effect: OpacityMask {
- maskSource: gradientMask
- }
-
- Item {
- id: gradientMask
-
- anchors.fill: parent
- layer.enabled: true
- visible: false
-
- Rectangle {
- anchors.fill: parent
-
- gradient: Gradient {
- orientation: Gradient.Horizontal
-
- GradientStop {
- position: 0
- color: Qt.rgba(0, 0, 0, 0)
- }
- GradientStop {
- position: 0.1
- color: Qt.rgba(0, 0, 0, 1)
- }
- GradientStop {
- position: 0.9
- color: Qt.rgba(0, 0, 0, 1)
- }
- GradientStop {
- position: 1
- color: Qt.rgba(0, 0, 0, 0)
- }
- }
- }
-
- Rectangle {
- anchors.top: parent.top
- anchors.bottom: parent.bottom
- anchors.left: parent.left
-
- implicitWidth: parent.width / 2
- opacity: flickable.contentX > 0 ? 0 : 1
-
- Behavior on opacity {
- Anim {}
- }
- }
-
- Rectangle {
- anchors.top: parent.top
- anchors.bottom: parent.bottom
- anchors.right: parent.right
-
- implicitWidth: parent.width / 2
- opacity: flickable.contentX < flickable.contentWidth - parent.width ? 0 : 1
-
- Behavior on opacity {
- Anim {}
- }
- }
- }
-
CustomFlickable {
id: flickable
@@ -113,8 +48,8 @@ Item {
Layout.fillWidth: true
Layout.fillHeight: true
- implicitWidth: actionInner.implicitWidth + 10 * 2
- implicitHeight: actionInner.implicitHeight + 10 * 2
+ implicitWidth: actionInner.implicitWidth + 5 * 2
+ implicitHeight: actionInner.implicitHeight + 5 * 2
Layout.preferredWidth: implicitWidth + (actionStateLayer.pressed ? 18 : 0)
radius: actionStateLayer.pressed ? 6 / 2 : 6
@@ -123,7 +58,7 @@ Item {
Timer {
id: copyTimer
- interval: 3000
+ interval: 1000
onTriggered: actionInner.item.text = "content_copy"
}
diff --git a/Modules/Notifications/Sidebar/NotifDock.qml b/Modules/Notifications/Sidebar/NotifDock.qml
index 5d5b798..a97d4f5 100644
--- a/Modules/Notifications/Sidebar/NotifDock.qml
+++ b/Modules/Notifications/Sidebar/NotifDock.qml
@@ -91,13 +91,6 @@ Item {
sourceComponent: ColumnLayout {
spacing: 20
- Image {
- asynchronous: true
- source: Qt.resolvedUrl(`${Quickshell.shellDir}/assets/dino.png`)
- fillMode: Image.PreserveAspectFit
- sourceSize.width: clipRect.width * 0.8
- }
-
CustomText {
Layout.alignment: Qt.AlignHCenter
text: qsTr("No Notifications")
diff --git a/Modules/Notifications/Sidebar/NotifDockList.qml b/Modules/Notifications/Sidebar/NotifDockList.qml
index 8252806..4c4d884 100644
--- a/Modules/Notifications/Sidebar/NotifDockList.qml
+++ b/Modules/Notifications/Sidebar/NotifDockList.qml
@@ -35,7 +35,6 @@ Item {
map.set(n.appName, null);
for (const n of NotifServer.list)
map.set(n.appName, null);
- console.log(map.keys())
return [...map.keys()];
}
onValuesChanged: root.flagChanged()
@@ -52,8 +51,9 @@ Item {
property int startY
function closeAll(): void {
- for (const n of NotifServer.notClosed.filter(n => n.appName === modelData))
+ for (const n of NotifServer.notClosed.filter(n => n.appName === modelData)) {
n.close();
+ }
}
y: {
diff --git a/assets/shaders/opacitymask.frag.qsb b/assets/shaders/opacitymask.frag.qsb
new file mode 100644
index 0000000..4aedc35
Binary files /dev/null and b/assets/shaders/opacitymask.frag.qsb differ