plugin: rust-side modules + theme services with serde-typed config
This commit is contained in:
parent
a86e90e927
commit
f34f3f2f4e
95 changed files with 2477 additions and 1011 deletions
|
|
@ -7,6 +7,7 @@ import "." as D
|
|||
import "../services" as S
|
||||
import "../applets" as C
|
||||
import "../modules" as M
|
||||
import NovaStats as NS
|
||||
|
||||
PanelWindow {
|
||||
id: root
|
||||
|
|
@ -25,11 +26,10 @@ PanelWindow {
|
|||
anchors.bottom: true
|
||||
|
||||
// Counteract the bar's exclusive zone so the dock extends to the top of the screen
|
||||
margins.top: -S.Theme.barHeight
|
||||
margins.top: -NS.ThemeService.barHeight
|
||||
|
||||
readonly property int _dockWidth: S.Modules.dock.width ?? 300
|
||||
readonly property var _applets: S.Modules.dock.applets ?? {}
|
||||
readonly property color _accent: S.Theme.base0C
|
||||
readonly property int _dockWidth: NS.ModulesService.dockWidth ?? 300
|
||||
readonly property color _accent: NS.ThemeService.base0C
|
||||
|
||||
implicitWidth: _dockWidth
|
||||
|
||||
|
|
@ -55,14 +55,14 @@ PanelWindow {
|
|||
if (S.DockState.open) {
|
||||
root._winVisible = true;
|
||||
_hideAnim.stop();
|
||||
if (S.Theme.reducedMotion) {
|
||||
if (S.ThemeUtil.reducedMotion) {
|
||||
root._slideX = 0;
|
||||
} else {
|
||||
_showAnim.start();
|
||||
}
|
||||
} else {
|
||||
_showAnim.stop();
|
||||
if (S.Theme.reducedMotion) {
|
||||
if (S.ThemeUtil.reducedMotion) {
|
||||
root._slideX = root._dockWidth;
|
||||
root._winVisible = false;
|
||||
} else {
|
||||
|
|
@ -113,8 +113,8 @@ PanelWindow {
|
|||
Rectangle {
|
||||
id: _bg
|
||||
anchors.fill: parent
|
||||
color: S.Theme.base00
|
||||
opacity: S.DockState.mode === "pinned" ? 1.0 : Math.max(S.Theme.barOpacity, 0.85)
|
||||
color: NS.ThemeService.base00
|
||||
opacity: S.DockState.mode === "pinned" ? 1.0 : Math.max(NS.ThemeService.barOpacity, 0.85)
|
||||
|
||||
transform: Translate {
|
||||
x: root._slideX
|
||||
|
|
@ -128,7 +128,7 @@ PanelWindow {
|
|||
anchors.top: parent.top
|
||||
anchors.bottom: parent.bottom
|
||||
width: 1
|
||||
color: S.Theme.base09
|
||||
color: NS.ThemeService.base09
|
||||
opacity: _bg.opacity
|
||||
|
||||
transform: Translate {
|
||||
|
|
@ -142,7 +142,7 @@ PanelWindow {
|
|||
anchors.top: parent.top
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
height: S.Theme.barHeight
|
||||
height: NS.ThemeService.barHeight
|
||||
visible: S.DockState.mode === "pinned"
|
||||
|
||||
transform: Translate {
|
||||
|
|
@ -151,7 +151,7 @@ PanelWindow {
|
|||
|
||||
Rectangle {
|
||||
anchors.fill: parent
|
||||
color: S.Theme.base00
|
||||
color: NS.ThemeService.base00
|
||||
}
|
||||
|
||||
// Bottom border - gradient matching bar style (base0C to base09, but just the right end)
|
||||
|
|
@ -160,7 +160,7 @@ PanelWindow {
|
|||
anchors.right: parent.right
|
||||
anchors.bottom: parent.bottom
|
||||
height: 1
|
||||
color: S.Theme.base09
|
||||
color: NS.ThemeService.base09
|
||||
}
|
||||
|
||||
// Dock toggle
|
||||
|
|
@ -185,7 +185,7 @@ PanelWindow {
|
|||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.leftMargin: S.Theme.groupSpacing + 1
|
||||
anchors.leftMargin: NS.ThemeService.groupSpacing + 1
|
||||
contentHeight: _column.height
|
||||
clip: true
|
||||
boundsBehavior: Flickable.StopAtBounds
|
||||
|
|
@ -205,7 +205,7 @@ PanelWindow {
|
|||
|
||||
// Clock
|
||||
D.DockCard {
|
||||
visible: root._applets.clock ?? true
|
||||
visible: NS.ModulesService.dockAppletClock
|
||||
icon: "\uF017"
|
||||
title: "Clock"
|
||||
accentColor: root._accent
|
||||
|
|
@ -221,7 +221,7 @@ PanelWindow {
|
|||
// CPU
|
||||
D.DockCard {
|
||||
id: _cpuCard
|
||||
visible: root._applets.cpu ?? true
|
||||
visible: NS.ModulesService.dockAppletCpu
|
||||
icon: "\uF2DB"
|
||||
title: "CPU"
|
||||
accentColor: root._accent
|
||||
|
|
@ -237,7 +237,7 @@ PanelWindow {
|
|||
|
||||
// GPU
|
||||
D.DockCard {
|
||||
visible: (root._applets.gpu ?? true) && S.SystemStats.gpuAvailable
|
||||
visible: (NS.ModulesService.dockAppletGpu) && S.SystemStats.gpuAvailable
|
||||
icon: "\uEB4C"
|
||||
title: "GPU"
|
||||
accentColor: root._accent
|
||||
|
|
@ -253,7 +253,7 @@ PanelWindow {
|
|||
// Memory
|
||||
D.DockCard {
|
||||
id: _memCard
|
||||
visible: root._applets.memory ?? true
|
||||
visible: NS.ModulesService.dockAppletMemory
|
||||
icon: "\uEFC5"
|
||||
title: "Memory"
|
||||
accentColor: root._accent
|
||||
|
|
@ -275,7 +275,7 @@ PanelWindow {
|
|||
|
||||
// Temperature
|
||||
D.DockCard {
|
||||
visible: root._applets.temperature ?? true
|
||||
visible: NS.ModulesService.dockAppletTemperature
|
||||
icon: "\uF2C9"
|
||||
title: "Temperature"
|
||||
accentColor: root._accent
|
||||
|
|
@ -284,19 +284,19 @@ PanelWindow {
|
|||
C.TemperatureApplet {
|
||||
width: parent.width
|
||||
temp: S.SystemStats.tempCelsius
|
||||
warm: S.Modules.temperature.warm || 80
|
||||
hot: S.Modules.temperature.hot || 90
|
||||
warm: NS.ModulesService.temperatureWarm || 80
|
||||
hot: NS.ModulesService.temperatureHot || 90
|
||||
history: S.SystemStats.tempHistory
|
||||
devices: S.SystemStats.tempDevices
|
||||
accentColor: root._accent
|
||||
deviceFilter: S.Modules.temperature.device || ""
|
||||
deviceFilter: NS.ModulesService.temperatureDevice || ""
|
||||
active: parent.expanded
|
||||
}
|
||||
}
|
||||
|
||||
// Disk
|
||||
D.DockCard {
|
||||
visible: root._applets.disk ?? true
|
||||
visible: NS.ModulesService.dockAppletDisk
|
||||
icon: "\uF0C9"
|
||||
title: "Disk"
|
||||
accentColor: root._accent
|
||||
|
|
@ -311,7 +311,7 @@ PanelWindow {
|
|||
|
||||
// Battery
|
||||
D.DockCard {
|
||||
visible: (root._applets.battery ?? true) && S.BatteryService.available
|
||||
visible: (NS.ModulesService.dockAppletBattery) && S.BatteryService.available
|
||||
icon: "\uDB80\uDC84"
|
||||
title: "Battery"
|
||||
accentColor: root._accent
|
||||
|
|
@ -326,7 +326,7 @@ PanelWindow {
|
|||
|
||||
// Network
|
||||
D.DockCard {
|
||||
visible: root._applets.network ?? true
|
||||
visible: NS.ModulesService.dockAppletNetwork
|
||||
icon: "\uF1EB"
|
||||
title: "Network"
|
||||
accentColor: root._accent
|
||||
|
|
@ -341,7 +341,7 @@ PanelWindow {
|
|||
|
||||
// Bluetooth
|
||||
D.DockCard {
|
||||
visible: (root._applets.bluetooth ?? true) && S.BluetoothService.state !== "unavailable"
|
||||
visible: (NS.ModulesService.dockAppletBluetooth) && S.BluetoothService.state !== "unavailable"
|
||||
icon: "\uF294"
|
||||
title: "Bluetooth"
|
||||
accentColor: root._accent
|
||||
|
|
@ -356,7 +356,7 @@ PanelWindow {
|
|||
|
||||
// Volume
|
||||
D.DockCard {
|
||||
visible: root._applets.volume ?? true
|
||||
visible: NS.ModulesService.dockAppletVolume
|
||||
icon: "\uF028"
|
||||
title: "Sound"
|
||||
accentColor: root._accent
|
||||
|
|
@ -370,7 +370,7 @@ PanelWindow {
|
|||
|
||||
// Backlight
|
||||
D.DockCard {
|
||||
visible: (root._applets.backlight ?? true) && S.BacklightService.available
|
||||
visible: (NS.ModulesService.dockAppletBacklight) && S.BacklightService.available
|
||||
icon: "\uF185"
|
||||
title: "Brightness"
|
||||
accentColor: root._accent
|
||||
|
|
@ -386,7 +386,7 @@ PanelWindow {
|
|||
|
||||
// Weather
|
||||
D.DockCard {
|
||||
visible: (root._applets.weather ?? true) && S.WeatherService.available
|
||||
visible: (NS.ModulesService.dockAppletWeather) && S.WeatherService.available
|
||||
icon: S.WeatherService.icon
|
||||
title: "Weather"
|
||||
accentColor: root._accent
|
||||
|
|
@ -400,7 +400,7 @@ PanelWindow {
|
|||
|
||||
// Now Playing
|
||||
D.DockCard {
|
||||
visible: (root._applets.mpris ?? true) && S.MprisService.player !== null
|
||||
visible: (NS.ModulesService.dockAppletMpris) && S.MprisService.player !== null
|
||||
icon: "\uF04B"
|
||||
title: "Now Playing"
|
||||
accentColor: root._accent
|
||||
|
|
@ -414,7 +414,7 @@ PanelWindow {
|
|||
|
||||
// Notifications
|
||||
D.DockCard {
|
||||
visible: root._applets.notifications ?? true
|
||||
visible: NS.ModulesService.dockAppletNotifications
|
||||
icon: "\uDB80\uDC9C"
|
||||
title: "Notifications"
|
||||
accentColor: root._accent
|
||||
|
|
@ -429,7 +429,7 @@ PanelWindow {
|
|||
|
||||
// Power
|
||||
D.DockCard {
|
||||
visible: root._applets.power ?? true
|
||||
visible: NS.ModulesService.dockAppletPower
|
||||
icon: "\uF011"
|
||||
title: "Power"
|
||||
accentColor: root._accent
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
import QtQuick
|
||||
import "../services" as S
|
||||
import NovaStats as NS
|
||||
|
||||
// Collapsible card for the applet dock.
|
||||
// Set icon, title, and place applet content as children.
|
||||
|
|
@ -9,20 +10,20 @@ Rectangle {
|
|||
property string icon: ""
|
||||
property string title: ""
|
||||
property bool expanded: false
|
||||
property color accentColor: S.Theme.base0C
|
||||
property color accentColor: NS.ThemeService.base0C
|
||||
|
||||
default property alias content: _contentColumn.children
|
||||
|
||||
width: parent?.width ?? 300
|
||||
height: _header.height + (_contentColumn.visible ? _contentColumn.height : 0)
|
||||
radius: S.Theme.radius + 2
|
||||
color: Qt.rgba(S.Theme.base01.r, S.Theme.base01.g, S.Theme.base01.b, 0.7)
|
||||
border.color: Qt.rgba(S.Theme.base03.r, S.Theme.base03.g, S.Theme.base03.b, 0.3)
|
||||
radius: NS.ThemeService.radius + 2
|
||||
color: Qt.rgba(NS.ThemeService.base01.r, NS.ThemeService.base01.g, NS.ThemeService.base01.b, 0.7)
|
||||
border.color: Qt.rgba(NS.ThemeService.base03.r, NS.ThemeService.base03.g, NS.ThemeService.base03.b, 0.3)
|
||||
border.width: 1
|
||||
clip: true
|
||||
|
||||
Behavior on height {
|
||||
enabled: !S.Theme.reducedMotion
|
||||
enabled: !S.ThemeUtil.reducedMotion
|
||||
NumberAnimation {
|
||||
duration: 150
|
||||
easing.type: Easing.OutCubic
|
||||
|
|
@ -41,8 +42,8 @@ Rectangle {
|
|||
anchors.verticalCenter: parent.verticalCenter
|
||||
text: root.icon
|
||||
color: root.accentColor
|
||||
font.pixelSize: S.Theme.fontSize
|
||||
font.family: S.Theme.iconFontFamily
|
||||
font.pixelSize: NS.ThemeService.fontSize
|
||||
font.family: NS.ThemeService.iconFontFamily
|
||||
}
|
||||
|
||||
Text {
|
||||
|
|
@ -50,10 +51,10 @@ Rectangle {
|
|||
anchors.leftMargin: 30
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
text: root.title
|
||||
color: S.Theme.base05
|
||||
font.pixelSize: S.Theme.fontSize - 1
|
||||
color: NS.ThemeService.base05
|
||||
font.pixelSize: NS.ThemeService.fontSize - 1
|
||||
font.bold: true
|
||||
font.family: S.Theme.fontFamily
|
||||
font.family: NS.ThemeService.fontFamily
|
||||
}
|
||||
|
||||
Text {
|
||||
|
|
@ -61,9 +62,9 @@ Rectangle {
|
|||
anchors.rightMargin: 10
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
text: root.expanded ? "\uF078" : "\uF054"
|
||||
color: S.Theme.base04
|
||||
font.pixelSize: S.Theme.fontSize - 2
|
||||
font.family: S.Theme.iconFontFamily
|
||||
color: NS.ThemeService.base04
|
||||
font.pixelSize: NS.ThemeService.fontSize - 2
|
||||
font.family: NS.ThemeService.iconFontFamily
|
||||
|
||||
Behavior on text {
|
||||
enabled: false
|
||||
|
|
@ -84,7 +85,7 @@ Rectangle {
|
|||
anchors.right: parent.right
|
||||
anchors.bottom: parent.bottom
|
||||
height: 1
|
||||
color: S.Theme.base03
|
||||
color: NS.ThemeService.base03
|
||||
opacity: root.expanded ? 0.5 : 0
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue