Formatting

This commit is contained in:
quadbyte 2025-08-13 08:05:29 -04:00
parent c49e59220a
commit a57f2f5d68
8 changed files with 132 additions and 130 deletions

View file

@ -7,7 +7,7 @@ import qs.Widgets
NLoader { NLoader {
active: Workspaces.isNiri active: Workspaces.isNiri
Component.onCompleted: { Component.onCompleted: {
if (Workspaces.isNiri) { if (Workspaces.isNiri) {
console.log("[Overview] Loading Overview component (Niri detected)") console.log("[Overview] Loading Overview component (Niri detected)")
@ -15,55 +15,55 @@ NLoader {
console.log("[Overview] Skipping Overview component (Niri not detected)") console.log("[Overview] Skipping Overview component (Niri not detected)")
} }
} }
sourceComponent: Variants { sourceComponent: Variants {
model: Quickshell.screens model: Quickshell.screens
delegate: PanelWindow { delegate: PanelWindow {
required property ShellScreen modelData required property ShellScreen modelData
property string wallpaperSource: Wallpapers.currentWallpaper !== "" property string wallpaperSource: Wallpapers.currentWallpaper !== ""
&& !Settings.data.wallpaper.swww.enabled ? Wallpapers.currentWallpaper : "" && !Settings.data.wallpaper.swww.enabled ? Wallpapers.currentWallpaper : ""
visible: wallpaperSource !== "" && !Settings.data.wallpaper.swww.enabled visible: wallpaperSource !== "" && !Settings.data.wallpaper.swww.enabled
color: "transparent" color: "transparent"
screen: modelData screen: modelData
WlrLayershell.layer: WlrLayer.Background WlrLayershell.layer: WlrLayer.Background
WlrLayershell.exclusionMode: ExclusionMode.Ignore WlrLayershell.exclusionMode: ExclusionMode.Ignore
WlrLayershell.namespace: "quickshell-overview" WlrLayershell.namespace: "quickshell-overview"
anchors { anchors {
top: true top: true
bottom: true bottom: true
right: true right: true
left: true left: true
}
Image {
id: bgImage
anchors.fill: parent
fillMode: Image.PreserveAspectCrop
source: wallpaperSource
cache: true
smooth: true
mipmap: false
visible: wallpaperSource !== ""
}
MultiEffect {
id: overviewBgBlur
anchors.fill: parent
source: bgImage
blurEnabled: true
blur: 0.48
blurMax: 128
}
Rectangle {
anchors.fill: parent
color: Qt.rgba(Colors.backgroundPrimary.r, Colors.backgroundPrimary.g, Colors.backgroundPrimary.b, 0.5)
}
} }
Image {
id: bgImage
anchors.fill: parent
fillMode: Image.PreserveAspectCrop
source: wallpaperSource
cache: true
smooth: true
mipmap: false
visible: wallpaperSource !== ""
}
MultiEffect {
id: overviewBgBlur
anchors.fill: parent
source: bgImage
blurEnabled: true
blur: 0.48
blurMax: 128
}
Rectangle {
anchors.fill: parent
color: Qt.rgba(Colors.backgroundPrimary.r, Colors.backgroundPrimary.g, Colors.backgroundPrimary.b, 0.5)
}
}
} }
} }

View file

@ -58,7 +58,6 @@ Variants {
// anchors.verticalCenter: parent.verticalCenter // anchors.verticalCenter: parent.verticalCenter
// font.weight: Style.fontWeightBold // font.weight: Style.fontWeightBold
// } // }
SystemMonitor {} SystemMonitor {}
} }

View file

@ -26,4 +26,4 @@ NIconButton {
NotificationHistoryPanel { NotificationHistoryPanel {
id: notificationHistoryPanelLoader id: notificationHistoryPanelLoader
} }
} }

View file

@ -159,4 +159,4 @@ NLoader {
} }
} }
} }
} }

View file

@ -88,14 +88,14 @@ ColumnLayout {
} }
} }
NToggle { NToggle {
id: allowOverdrive id: allowOverdrive
label: "Allow Volume Overdrive" label: "Allow Volume Overdrive"
description: "Enable volume levels above 100% (up to 200%)" description: "Enable volume levels above 100% (up to 200%)"
value: Settings.data.audio ? Settings.data.audio.volumeOverdrive : false value: Settings.data.audio ? Settings.data.audio.volumeOverdrive : false
onToggled: function (checked) { onToggled: function (checked) {
Settings.data.audio.volumeOverdrive = checked Settings.data.audio.volumeOverdrive = checked
// If overdrive is disabled and current volume is above 100%, cap it // If overdrive is disabled and current volume is above 100%, cap it
if (!checked && Audio.volume > 1.0) { if (!checked && Audio.volume > 1.0) {
Audio.volumeSet(1.0) Audio.volumeSet(1.0)
@ -140,58 +140,56 @@ ColumnLayout {
font.weight: Style.fontWeightBold font.weight: Style.fontWeightBold
color: Colors.textPrimary color: Colors.textPrimary
Layout.bottomMargin: Style.marginSmall * scaling Layout.bottomMargin: Style.marginSmall * scaling
}
// Output Device
NComboBox {
id: outputDeviceCombo
label: "Output Device"
description: "Default audio output device"
optionsKeys: outputDeviceKeys
optionsLabels: outputDeviceLabels
currentKey: Audio.sink ? Audio.sink.id.toString() : ""
onSelected: function (key) {
// Find the node by ID and set it as preferred
for (let i = 0; i < Pipewire.nodes.count; i++) {
let node = Pipewire.nodes.get(i)
if (node.id.toString() === key && node.isSink) {
Pipewire.preferredDefaultAudioSink = node
break
}
}
}
}
// Input Device
NComboBox {
id: inputDeviceCombo
label: "Input Device"
description: "Default audio input device"
optionsKeys: inputDeviceKeys
optionsLabels: inputDeviceLabels
currentKey: Audio.source ? Audio.source.id.toString() : ""
onSelected: function (key) {
// Find the node by ID and set it as preferred
for (let i = 0; i < Pipewire.nodes.count; i++) {
let node = Pipewire.nodes.get(i)
if (node.id.toString() === key && !node.isSink) {
Pipewire.preferredDefaultAudioSource = node
break
}
}
}
}
}
// Divider
NDivider {
Layout.fillWidth: true
Layout.topMargin: Style.marginLarge * scaling
Layout.bottomMargin: Style.marginMedium * scaling
} }
// Output Device
NComboBox {
id: outputDeviceCombo
label: "Output Device"
description: "Default audio output device"
optionsKeys: outputDeviceKeys
optionsLabels: outputDeviceLabels
currentKey: Audio.sink ? Audio.sink.id.toString() : ""
onSelected: function (key) {
// Find the node by ID and set it as preferred
for (var i = 0; i < Pipewire.nodes.count; i++) {
let node = Pipewire.nodes.get(i)
if (node.id.toString() === key && node.isSink) {
Pipewire.preferredDefaultAudioSink = node
break
}
}
}
}
// Input Device
NComboBox {
id: inputDeviceCombo
label: "Input Device"
description: "Default audio input device"
optionsKeys: inputDeviceKeys
optionsLabels: inputDeviceLabels
currentKey: Audio.source ? Audio.source.id.toString() : ""
onSelected: function (key) {
// Find the node by ID and set it as preferred
for (var i = 0; i < Pipewire.nodes.count; i++) {
let node = Pipewire.nodes.get(i)
if (node.id.toString() === key && !node.isSink) {
Pipewire.preferredDefaultAudioSource = node
break
}
}
}
}
}
// Divider
NDivider {
Layout.fillWidth: true
Layout.topMargin: Style.marginLarge * scaling
Layout.bottomMargin: Style.marginMedium * scaling
}
// Audio Visualizer Category // Audio Visualizer Category
ColumnLayout { ColumnLayout {
spacing: Style.marginSmall * scaling spacing: Style.marginSmall * scaling
@ -298,11 +296,11 @@ ColumnLayout {
outputDeviceCombo.optionsKeys = outputDeviceKeys outputDeviceCombo.optionsKeys = outputDeviceKeys
outputDeviceCombo.optionsLabels = outputDeviceLabels outputDeviceCombo.optionsLabels = outputDeviceLabels
} }
if (inputDeviceCombo) { if (inputDeviceCombo) {
inputDeviceCombo.optionsKeys = inputDeviceKeys inputDeviceCombo.optionsKeys = inputDeviceKeys
inputDeviceCombo.optionsLabels = inputDeviceLabels inputDeviceCombo.optionsLabels = inputDeviceLabels
} }
} }
} }
} }

View file

@ -39,8 +39,6 @@ ColumnLayout {
color: Colors.textPrimary color: Colors.textPrimary
Layout.bottomMargin: Style.marginSmall * scaling Layout.bottomMargin: Style.marginSmall * scaling
} }
} }
} }
} }

View file

@ -57,7 +57,8 @@ QtObject {
property int maxHistory: 100 property int maxHistory: 100
// Cached history file path // Cached history file path
property string historyFile: Quickshell.env("NOCTALIA_NOTIF_HISTORY_FILE") || (Settings.cacheDir + "notifications.json") property string historyFile: Quickshell.env("NOCTALIA_NOTIF_HISTORY_FILE")
|| (Settings.cacheDir + "notifications.json")
// Persisted storage for history // Persisted storage for history
property FileView historyFileView: FileView { property FileView historyFileView: FileView {
@ -130,12 +131,12 @@ QtObject {
// Add a simplified copy into persistent history // Add a simplified copy into persistent history
function addToHistory(notification) { function addToHistory(notification) {
historyModel.insert(0, { historyModel.insert(0, {
"summary": notification.summary, "summary": notification.summary,
"body": notification.body, "body": notification.body,
"appName": notification.appName, "appName": notification.appName,
"urgency": notification.urgency, "urgency": notification.urgency,
"timestamp": new Date() "timestamp": new Date()
}) })
while (historyModel.count > maxHistory) { while (historyModel.count > maxHistory) {
historyModel.remove(historyModel.count - 1) historyModel.remove(historyModel.count - 1)
} }
@ -155,12 +156,12 @@ QtObject {
for (var i = 0; i < items.length; i++) { for (var i = 0; i < items.length; i++) {
const it = items[i] const it = items[i]
historyModel.append({ historyModel.append({
"summary": it.summary || "", "summary": it.summary || "",
"body": it.body || "", "body": it.body || "",
"appName": it.appName || "", "appName": it.appName || "",
"urgency": it.urgency, "urgency": it.urgency,
"timestamp": it.timestamp ? new Date(it.timestamp) : new Date() "timestamp": it.timestamp ? new Date(it.timestamp) : new Date()
}) })
} }
} catch (e) { } catch (e) {
console.error("[Notifications] Failed to load history:", e) console.error("[Notifications] Failed to load history:", e)
@ -174,11 +175,11 @@ QtObject {
for (var i = 0; i < historyModel.count; i++) { for (var i = 0; i < historyModel.count; i++) {
const n = historyModel.get(i) const n = historyModel.get(i)
arr.push({ arr.push({
summary: n.summary, "summary": n.summary,
body: n.body, "body": n.body,
appName: n.appName, "appName": n.appName,
urgency: n.urgency, "urgency": n.urgency,
timestamp: (n.timestamp instanceof Date) ? n.timestamp.getTime() : n.timestamp "timestamp": (n.timestamp instanceof Date) ? n.timestamp.getTime() : n.timestamp
}) })
} }
historyAdapter.history = arr historyAdapter.history = arr

View file

@ -193,8 +193,14 @@ Singleton {
Connections { Connections {
target: adapter.wallpaper target: adapter.wallpaper
function onIsRandomChanged() { Wallpapers.toggleRandomWallpaper() } function onIsRandomChanged() {
function onRandomIntervalChanged() { Wallpapers.restartRandomWallpaperTimer() } Wallpapers.toggleRandomWallpaper()
function onDirectoryChanged() { Wallpapers.loadWallpapers() } }
function onRandomIntervalChanged() {
Wallpapers.restartRandomWallpaperTimer()
}
function onDirectoryChanged() {
Wallpapers.loadWallpapers()
}
} }
} }