plugin: rust-side modules + theme services with serde-typed config

This commit is contained in:
Damocles 2026-05-04 22:58:12 +02:00
parent a86e90e927
commit f34f3f2f4e
95 changed files with 2477 additions and 1011 deletions

View file

@ -4,6 +4,7 @@ import Quickshell.Wayland
import Quickshell.Services.Notifications
import "." as M
import "../services" as S
import NovaStats as NS
PanelWindow {
id: root
@ -32,7 +33,7 @@ PanelWindow {
property var _knownIds: ({})
Repeater {
model: S.NotifService.popups.slice(0, S.Modules.notifications.maxPopups || 4)
model: S.NotifService.popups.slice(0, NS.ModulesService.notificationsMaxPopups || 4)
delegate: Item {
id: popupItem
@ -66,7 +67,7 @@ PanelWindow {
_heightScale = 1;
} else {
popupCol._knownIds[modelData.id] = true;
if (S.Theme.reducedMotion) {
if (S.ThemeUtil.reducedMotion) {
opacity = 1;
x = 0;
_heightScale = 1;
@ -86,7 +87,7 @@ PanelWindow {
}
Behavior on y {
enabled: popupItem._entered && !S.Theme.reducedMotion
enabled: popupItem._entered && !S.ThemeUtil.reducedMotion
NumberAnimation {
duration: 200
easing.type: Easing.OutCubic
@ -127,7 +128,7 @@ PanelWindow {
popupItem.modelData.beginDismiss();
_fullDismiss = !!full;
slideIn.stop();
if (S.Theme.reducedMotion) {
if (S.ThemeUtil.reducedMotion) {
full ? S.NotifService.dismiss(modelData.id) : S.NotifService.dismissPopup(modelData.id);
} else {
slideOut.start();