mirror of
https://github.com/belsabbagh/dotfiles.git
synced 2026-04-11 17:47:09 +00:00
quickshell and hyprland additions
This commit is contained in:
@@ -0,0 +1,110 @@
|
||||
import Qt5Compat.GraphicalEffects
|
||||
import QtQuick
|
||||
import QtQuick.Controls
|
||||
import QtQuick.Layouts
|
||||
import Quickshell
|
||||
import Quickshell.Io
|
||||
import qs.modules.functions
|
||||
import qs.modules.interface.notifications
|
||||
import qs.services
|
||||
import qs.config
|
||||
import qs.modules.components
|
||||
|
||||
StyledRect {
|
||||
id: root
|
||||
|
||||
Layout.fillWidth: true
|
||||
radius: Metrics.radius("normal")
|
||||
color: Appearance.colors.colLayer1
|
||||
property bool dndActive: Config.runtime.notifications.doNotDisturb
|
||||
|
||||
function toggleDnd() {
|
||||
Config.updateKey("notifications.doNotDisturb", !dndActive);
|
||||
}
|
||||
|
||||
StyledButton {
|
||||
id: clearButton
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.right: parent.right
|
||||
anchors.bottomMargin: Metrics.margin(10)
|
||||
anchors.rightMargin: Metrics.margin(10)
|
||||
icon: "clear_all"
|
||||
text: "Clear"
|
||||
implicitHeight: 40
|
||||
implicitWidth: 100
|
||||
secondary: true
|
||||
|
||||
onClicked: {
|
||||
for (let i = 0; i < NotifServer.history.length; i++) {
|
||||
let n = NotifServer.history[i];
|
||||
if (n?.notification) n.notification.dismiss();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
StyledButton {
|
||||
id: silentButton
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.right: parent.right
|
||||
anchors.bottomMargin: Metrics.margin(10)
|
||||
anchors.rightMargin: clearButton.implicitWidth + Metrics.margin(15)
|
||||
text: "Silent"
|
||||
icon: "do_not_disturb_on"
|
||||
implicitHeight: 40
|
||||
implicitWidth: 100
|
||||
secondary: true
|
||||
checkable: true
|
||||
checked: Config.runtime.notifications.doNotDisturb
|
||||
|
||||
onClicked: {
|
||||
toggleDnd()
|
||||
}
|
||||
}
|
||||
|
||||
StyledText {
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.left: parent.left
|
||||
anchors.bottomMargin: Metrics.margin(15)
|
||||
anchors.leftMargin: Metrics.margin(15)
|
||||
text: NotifServer.history.length + " Notifications"
|
||||
|
||||
}
|
||||
|
||||
StyledText {
|
||||
anchors.centerIn: parent
|
||||
text: "No notifications"
|
||||
visible: NotifServer.history.length < 1
|
||||
font.pixelSize: Metrics.fontSize("huge")
|
||||
}
|
||||
|
||||
ListView {
|
||||
id: notifList
|
||||
anchors.top: parent.top
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.bottom: clearButton.top
|
||||
anchors.margins: Metrics.margin(10)
|
||||
|
||||
clip: true
|
||||
spacing: Metrics.spacing(8)
|
||||
boundsBehavior: Flickable.StopAtBounds
|
||||
ScrollBar.vertical: ScrollBar { }
|
||||
|
||||
model: Config.runtime.notifications.enabled
|
||||
? NotifServer.history
|
||||
: []
|
||||
|
||||
delegate: NotificationChild {
|
||||
width: notifList.width
|
||||
title: model.summary
|
||||
body: model.body
|
||||
image: model.image || model.appIcon
|
||||
rawNotif: model
|
||||
buttons: model.actions.map((action) => ({
|
||||
"label": action.text,
|
||||
"onClick": () => action.invoke()
|
||||
}))
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user