diff --git a/quickshell/Components/NotificationSystem/NotificationActions.qml b/quickshell/Components/NotificationSystem/NotificationActions.qml deleted file mode 100644 index ddaba845..00000000 --- a/quickshell/Components/NotificationSystem/NotificationActions.qml +++ /dev/null @@ -1,53 +0,0 @@ -import Quickshell -import Quickshell.Widgets -import Quickshell.Io -import QtQuick -import QtQuick.Layouts -import QtQuick.Controls -import "root:/DataSources" -import "root:/Helpers" -import Quickshell.Services.Notifications - - -RowLayout { - required property Notification modelData_ - - Layout.minimumHeight: 0 - Layout.preferredHeight: modelData_.actions.length > 0 ? 30 : 0 - visible: modelData_.actions.length > 0 - spacing: 5 - Repeater { - model: modelData_.actions - - delegate: Item { - required property NotificationAction modelData - - width: 100 - height: 30 - - Rectangle { - anchors.fill: parent - color: Stylix.base00 - radius: 5 - - Text { - text: modelData.text - color: Stylix.base05 - anchors.centerIn: parent - font.pixelSize: 12 - - anchors { - left: parent.left - leftMargin: 10 - verticalCenter: parent.verticalCenter - } - } - - MouseArea { - anchors.fill: parent - onClicked: modelData.invoke() - } - } - } - } -} diff --git a/quickshell/Components/NotificationSystem/NotificationDisplay.qml b/quickshell/Components/NotificationSystem/NotificationDisplay.qml deleted file mode 100644 index f0cc0dae..00000000 --- a/quickshell/Components/NotificationSystem/NotificationDisplay.qml +++ /dev/null @@ -1,81 +0,0 @@ -import Quickshell -import Quickshell.Widgets -import Quickshell.Io -import QtQuick -import QtQuick.Layouts -import QtQuick.Controls -import "root:/DataSources" -import "root:/Helpers" -import Quickshell.Services.Notifications - -Item { - id: root - Layout.alignment: Qt.AlignVCenter; - implicitWidth: 30 - implicitHeight: parent.height - Rectangle { - anchors.centerIn: parent - id: rootContainer - color: "transparent" - width: 60 - height: 30 - radius: 50 - RowLayout { - spacing: 5 - anchors.centerIn: parent - Text { - verticalAlignment: Text.AlignVCenter - id: rootIcon - text: "" - color: Stylix.base05 - } - Text { - verticalAlignment: Text.AlignVCenter - id: count - text: "" - font.bold: true - color: Stylix.base05 - } - } - } - function updateDisplay() { - if (Notifications.list.length > 0) { - rootContainer.color = Stylix.base08 - rootIcon.color = Stylix.base00 - count.color = Stylix.base00 - count.text = Notifications.list.length - rootContainer.width = 60 - root.implicitWidth = 60 - count.visible = true - } else { - rootContainer.width = 30 - root.implicitWidth = 30 - rootContainer.color = "transparent" - rootIcon.color = Stylix.base05 - count.color = Stylix.base05 - count.visible = false - } - } - Timer { - interval: 1000 - running: true - repeat: true - onTriggered: root.updateDisplay() - } - MouseArea { - id: ma - anchors.fill: parent - hoverEnabled: true - - onClicked: function(mouseEvent) { - var m = root.QsWindow.mapFromItem(ma, ma.width/2.0, ma.height/2.0); - var offset = notificationLoader.item.width / 2.0; - notificationLoader.item.clicky = m.x - offset; - notificationLoader.item.visible = !notificationLoader.item.visible - } - } - - NotificationWindow { - id: notificationLoader - } -} diff --git a/quickshell/Components/NotificationSystem/NotificationHeader.qml b/quickshell/Components/NotificationSystem/NotificationHeader.qml deleted file mode 100644 index aaf0c503..00000000 --- a/quickshell/Components/NotificationSystem/NotificationHeader.qml +++ /dev/null @@ -1,67 +0,0 @@ -import Quickshell -import Quickshell.Widgets -import Quickshell.Io -import QtQuick -import QtQuick.Layouts -import QtQuick.Controls -import "root:/DataSources" -import "root:/Helpers" -import Quickshell.Services.Notifications - - -RowLayout { - required property Notification modelData_ - IconImage { - function getIcon() { - if (modelData_.appIcon != "") { - return Quickshell.iconPath(modelData_.appIcon.replace("file://", "")) - } else { - return ThemeIcons.iconForAppId(modelData_.appName) - } - } - width: 24 - height: 24 - visible: source != "" - source: getIcon() - } - Text { - font.bold: true - elide: Text.ElideRight - text: modelData_.summary - color: Stylix.base05 - } - Text { - id: dismiss - text: "󱏩" - color: Stylix.base08 - font.pixelSize: 16 - - ToolTip { - id: dismissTooltip - visible: false - delay: 500 - timeout: 1000 - text: "Dismiss notification" - } - - HoverHandler { - id: dismissHover - onHoveredChanged: { - dismissTooltip.visible = hovered - } - } - - Layout.topMargin: 5 - Layout.rightMargin: 10 - - MouseArea { - anchors.fill: parent - onClicked: { - modelData_.dismiss(); - if (Notifications.list.length <= 0) { - popup.visible = false; - } - } - } - } -} diff --git a/quickshell/Components/NotificationSystem/NotificationImage.qml b/quickshell/Components/NotificationSystem/NotificationImage.qml deleted file mode 100644 index 64e03b9b..00000000 --- a/quickshell/Components/NotificationSystem/NotificationImage.qml +++ /dev/null @@ -1,25 +0,0 @@ -import Quickshell -import Quickshell.Widgets -import Quickshell.Io -import QtQuick -import QtQuick.Layouts -import QtQuick.Controls -import "root:/DataSources" -import "root:/Helpers" -import Quickshell.Services.Notifications - - -ClippingWrapperRectangle { - required property string image - radius: 5 - Layout.preferredWidth: visible ? 80 : 0 - Layout.preferredHeight: visible ? parent.height : 0 - visible: image != "" - color: Stylix.base00 - Image { - fillMode: Image.PreserveAspectFit - Layout.preferredWidth: 80 - Layout.preferredHeight: parent.height - source: image.replace("file://", "") - } -} diff --git a/quickshell/Components/NotificationSystem/NotificationItem.qml b/quickshell/Components/NotificationSystem/NotificationItem.qml deleted file mode 100644 index 614c5a1e..00000000 --- a/quickshell/Components/NotificationSystem/NotificationItem.qml +++ /dev/null @@ -1,76 +0,0 @@ -import Quickshell -import Quickshell.Widgets -import Quickshell.Io -import QtQuick -import QtQuick.Layouts -import QtQuick.Controls -import "root:/DataSources" -import "root:/Helpers" -import Quickshell.Services.Notifications - -Item { - required property Notification modelData - - function calculateHeight() { - if (modelData.actions.length > 0) { - return 150 - } else if (modelData.image != "") { - return 100 - } else { - return 60 - } - } - - function calculateBodyHeight() { - if (modelData.image != "" || modelData.actions.length > 0) { - return 40 - } else { - return 20 - } - } - - height: calculateHeight() - width: 450 - - Rectangle { - id: indivNotif - color: Stylix.base02 - radius: 5 - anchors { - fill: parent - leftMargin: 5 - rightMargin: 5 - } - RowLayout { - anchors { - fill: parent - } - NotificationImage { - image: modelData.image - } - ColumnLayout { - Layout.alignment: Qt.AlignVCenter - Layout.leftMargin: 5 - Layout.rightMargin: 5 - Layout.fillWidth: true - NotificationHeader { - modelData_: modelData - } - Text { - font.pointSize: 10 - wrapMode: Text.WordWrap - Layout.fillWidth: true - Layout.preferredWidth: modelData.image != "" ? indivNotif.width - 80 : indivNotif.width - Layout.maximumHeight: calculateBodyHeight() - Layout.maximumWidth: indivNotif.width - elide: Text.ElideRight - text: modelData.body - color: Stylix.base05 - } - NotificationActions { - modelData_: modelData - } - } - } - } -} diff --git a/quickshell/Components/NotificationSystem/NotificationWindow.qml b/quickshell/Components/NotificationSystem/NotificationWindow.qml deleted file mode 100644 index 07d46417..00000000 --- a/quickshell/Components/NotificationSystem/NotificationWindow.qml +++ /dev/null @@ -1,58 +0,0 @@ -import Quickshell -import Quickshell.Widgets -import Quickshell.Io -import QtQuick -import QtQuick.Layouts -import QtQuick.Controls -import "root:/DataSources" -import "root:/Helpers" -import Quickshell.Services.Notifications - -LazyLoader { - id: notificationLoader - - loading: true - - PopupWindow { - property real clicky - id: wrapperPopup - visible: false - anchor.window: root.QsWindow.window - anchor.rect.y: parentWindow?.height ?? 0 - anchor.rect.x: clicky - color: "transparent" - - implicitWidth: 450 - implicitHeight: 600 - - Rectangle { - anchors.fill: parent - color: Stylix.base01 - bottomLeftRadius: 5 - bottomRightRadius: 5 - ColumnLayout { - anchors.fill: parent - NotificationWindowHeader { - Layout.topMargin: 5 - Layout.bottomMargin: 5 - } - ClippingRectangle { - color: "transparent" - Layout.alignment: Qt.AlignBottom - Layout.preferredWidth: parent.width - Layout.preferredHeight: parent.height - 34 - ListView { - cacheBuffer: 30 - anchors.fill: parent - id: notificationList - model: Notifications.list - spacing: 10 - ScrollBar.vertical: ScrollBar {} - - delegate: NotificationItem {} - } - } - } - } - } -} diff --git a/quickshell/Components/NotificationSystem/NotificationWindowHeader.qml b/quickshell/Components/NotificationSystem/NotificationWindowHeader.qml deleted file mode 100644 index 3e002bb0..00000000 --- a/quickshell/Components/NotificationSystem/NotificationWindowHeader.qml +++ /dev/null @@ -1,54 +0,0 @@ -import Quickshell -import Quickshell.Widgets -import Quickshell.Io -import QtQuick -import QtQuick.Layouts -import QtQuick.Controls -import "root:/DataSources" -import "root:/Helpers" -import Quickshell.Services.Notifications - -RowLayout { - Layout.alignment: Qt.AlignHCenter - spacing: 10 - Text { - font.bold: true - Layout.preferredHeight: 26 - Layout.alignment: Qt.AlignVCenter - verticalAlignment: Text.AlignVCenter - text: "Notifications" - color: Stylix.base05 - font.pixelSize: 16 - } - Text { - Layout.preferredHeight: 26 - Layout.alignment: Qt.AlignVCenter - verticalAlignment: Text.AlignBottom - id: clear - text: "󱏧" - color: Stylix.base08 - font.pixelSize: 16 - ToolTip { - id: clearTooltip - visible: false - delay: 500 - timeout: 1000 - text: "Clear notifications" - } - MouseArea { - anchors.fill: parent - onClicked: { - if (Notifications.list.length >= 0) { - Notifications.clear() - root.updateDisplay() - } - } - } - HoverHandler { - id: clearHover - onHoveredChanged: { - clearTooltip.visible = hovered - } - } - } -} diff --git a/quickshell/Components/SystemTrayButton.qml b/quickshell/Components/SystemTrayButton.qml index e8bd517b..82a189fe 100644 --- a/quickshell/Components/SystemTrayButton.qml +++ b/quickshell/Components/SystemTrayButton.qml @@ -12,11 +12,14 @@ Item { width: parent.width height: 30 + property real text_point_size: 12 + property real length: width / text_point_size + Rectangle { anchors { fill: parent - leftMargin: 5 - rightMargin: 5 + leftMargin: 10 + rightMargin: 10 } color: Stylix.base01 @@ -30,7 +33,7 @@ Item { horizontalAlignment: Text.AlignHCenter text: modelData?.text ?? "" color: Stylix.base05 - font.pointSize: 12 + font.pointSize: text_point_size elide: Text.ElideRight } diff --git a/quickshell/Components/SystemTrayWrapper.qml b/quickshell/Components/SystemTrayWrapper.qml index f5f78a83..3fa6801b 100644 --- a/quickshell/Components/SystemTrayWrapper.qml +++ b/quickshell/Components/SystemTrayWrapper.qml @@ -8,11 +8,10 @@ Item { Layout.alignment: Qt.AlignVCenter; implicitWidth: 25 implicitHeight: parent.height - property list textStates: ["", ""] Text { id: texty anchors.centerIn: parent - text: textStates[0] + text: "" color: Stylix.base05 } MouseArea { @@ -24,9 +23,7 @@ Item { var m = root.QsWindow.mapFromItem(ma, ma.width/2.0, ma.height/2.0); var offset = wrapperPopup.width / 2.0; wrapperPopup.clicky = m.x - offset; - wrapperPopup.visible = !wrapperPopup.visible; - - texty.text = root.textStates[wrapperPopup.visible ? 1 : 0]; + wrapperPopup.visible = !wrapperPopup.visible } } PopupWindow { @@ -35,14 +32,11 @@ Item { anchor.window: root.QsWindow.window anchor.rect.y: parentWindow.height anchor.rect.x: clicky - implicitWidth: systray.width + 10 - implicitHeight: systray.height + 10 - color: "transparent" + width: systray.width + 10 + height: systray.height + 10 Rectangle { anchors.fill: parent color: Stylix.base01 - bottomLeftRadius: 5 - bottomRightRadius: 5 SystemTray { id: systray } diff --git a/quickshell/DataSources/Notifications.qml b/quickshell/DataSources/Notifications.qml deleted file mode 100644 index e8507ad2..00000000 --- a/quickshell/DataSources/Notifications.qml +++ /dev/null @@ -1,39 +0,0 @@ -pragma Singleton - -import Quickshell -import Quickshell.Io -import Quickshell.Services.Notifications - -Singleton { - id: root - - NotificationServer { - id: notificationServer - imageSupported: true - bodySupported: true - bodyMarkupSupported: false - bodyImagesSupported: false - actionsSupported: true - onNotification: (notification) => { - notification.tracked = true; - root.notification(notification); - } - } - function clear(): void { - for (const notification of notificationServer.trackedNotifications.values) { - notification.tracked = false; - } - list.length = 0; - } - - // TODO: use signal - property list list: notificationServer.trackedNotifications.values.filter(notification => notification.tracked).reverse() - signal notification(Notification notification) - - IpcHandler { - target: "notifications" - function clear() { - root.clear() - } - } -} diff --git a/quickshell/Modules/Bar.qml b/quickshell/Modules/Bar.qml index c7a10577..74cfd7eb 100644 --- a/quickshell/Modules/Bar.qml +++ b/quickshell/Modules/Bar.qml @@ -5,7 +5,6 @@ import QtQuick.Layouts import QtQuick.Controls import "root:/DataSources" import "root:/Components" -import "root:/Components/NotificationSystem" Scope { id: root @@ -73,7 +72,6 @@ Scope { SystemTrayWrapper {} Clock {} - NotificationDisplay {} DistroIcon {} } }