mirror of
https://github.com/belsabbagh/dotfiles.git
synced 2026-04-11 09:36:46 +00:00
301 lines
11 KiB
QML
301 lines
11 KiB
QML
import QtQuick
|
|
import QtQuick.Layouts
|
|
import Quickshell
|
|
import Quickshell.Io
|
|
import QtQuick.Controls
|
|
import Quickshell.Widgets
|
|
import qs.config
|
|
import qs.modules.components
|
|
import qs.services
|
|
|
|
ContentMenu {
|
|
property string barKey: "bar"
|
|
title: "Bar"
|
|
description: "Adjust the bar's look."
|
|
|
|
ContentCard {
|
|
id: monitorSelectorCard
|
|
|
|
StyledText {
|
|
text: "Monitor Bar Configuration"
|
|
font.pixelSize: Metrics.fontSize(20)
|
|
font.bold: true
|
|
}
|
|
|
|
StyledText {
|
|
text: (Config.runtime.monitors?.[monitorSelector.model[monitorSelector.currentIndex]]?.bar)
|
|
? "This monitor has its own bar configuration."
|
|
: "This monitor currently uses the global bar."
|
|
wrapMode: Text.WordWrap
|
|
}
|
|
|
|
RowLayout {
|
|
spacing: Metrics.spacing("normal")
|
|
|
|
StyledDropDown {
|
|
id: monitorSelector
|
|
Layout.preferredWidth: 220
|
|
model: Xrandr.monitors.map(m => m.name)
|
|
currentIndex: 0
|
|
onCurrentIndexChanged: monitorSelectorCard.updateMonitorProperties()
|
|
}
|
|
|
|
Item { Layout.fillWidth: true }
|
|
|
|
StyledButton {
|
|
id: createButton
|
|
icon: "add"
|
|
text: "Override Bar: (" + monitorSelector.model[monitorSelector.currentIndex] + ")"
|
|
Layout.preferredWidth: 280
|
|
onClicked: {
|
|
const monitorName = monitorSelector.model[monitorSelector.currentIndex]
|
|
if (!monitorName) return
|
|
if (!Config.runtime.monitors) Config.runtime.monitors = {}
|
|
if (!Config.runtime.monitors[monitorName])
|
|
Config.runtime.monitors[monitorName] = {}
|
|
|
|
const defaultBar = {
|
|
density: 50,
|
|
enabled: true,
|
|
floating: false,
|
|
gothCorners: true,
|
|
margins: 16,
|
|
merged: false,
|
|
modules: {
|
|
height: 34,
|
|
paddingColor: "#1f1f1f",
|
|
radius: 17,
|
|
statusIcons: {
|
|
bluetoothStatusEnabled: true,
|
|
enabled: true,
|
|
networkStatusEnabled: true
|
|
},
|
|
systemUsage: {
|
|
cpuStatsEnabled: true,
|
|
enabled: true,
|
|
memoryStatsEnabled: true,
|
|
tempStatsEnabled: true
|
|
},
|
|
workspaces: {
|
|
enabled: true,
|
|
showAppIcons: true,
|
|
showJapaneseNumbers: false,
|
|
workspaceIndicators: 8
|
|
}
|
|
},
|
|
position: "top",
|
|
radius: 23
|
|
}
|
|
|
|
Config.updateKey("monitors." + monitorName + ".bar", defaultBar)
|
|
monitorSelectorCard.updateMonitorProperties()
|
|
}
|
|
}
|
|
|
|
StyledButton {
|
|
id: deleteButton
|
|
icon: "delete"
|
|
text: "Use Global Bar: (" + monitorSelector.model[monitorSelector.currentIndex] + ")"
|
|
secondary: true
|
|
Layout.preferredWidth: 280
|
|
onClicked: {
|
|
const monitorName = monitorSelector.model[monitorSelector.currentIndex]
|
|
if (!monitorName) return
|
|
Config.updateKey("monitors." + monitorName + ".bar", undefined)
|
|
monitorSelectorCard.updateMonitorProperties()
|
|
}
|
|
}
|
|
}
|
|
|
|
function updateMonitorProperties() {
|
|
const monitorName = monitorSelector.model[monitorSelector.currentIndex]
|
|
const monitorBar = Config.runtime.monitors?.[monitorName]?.bar
|
|
barKey = monitorBar ? "monitors." + monitorName + ".bar" : "bar"
|
|
|
|
createButton.enabled = !monitorBar
|
|
deleteButton.enabled = !!monitorBar
|
|
|
|
monitorSelector.model = Xrandr.monitors.map(m => m.name)
|
|
monitorSelector.currentIndex = Xrandr.monitors.findIndex(m => m.name === monitorName)
|
|
}
|
|
}
|
|
|
|
ContentCard {
|
|
StyledText {
|
|
text: "Bar"
|
|
font.pixelSize: Metrics.fontSize(20)
|
|
font.bold: true
|
|
}
|
|
|
|
ColumnLayout {
|
|
StyledText {
|
|
text: "Position"
|
|
font.pixelSize: Metrics.fontSize(16)
|
|
}
|
|
|
|
RowLayout {
|
|
spacing: Metrics.spacing(8)
|
|
Repeater {
|
|
model: ["Top", "Bottom", "Left", "Right"]
|
|
delegate: StyledButton {
|
|
property string pos: modelData.toLowerCase()
|
|
text: modelData
|
|
Layout.fillWidth: true
|
|
checked: ConfigResolver.bar(monitorSelector.model[monitorSelector.currentIndex]).position === pos
|
|
topLeftRadius: Metrics.radius("normal")
|
|
topRightRadius: Metrics.radius("normal")
|
|
bottomLeftRadius: Metrics.radius("normal")
|
|
bottomRightRadius: Metrics.radius("normal")
|
|
onClicked: Config.updateKey(barKey + ".position", pos)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
StyledSwitchOption {
|
|
title: "Enabled"
|
|
description: "Toggle the bar visibility on/off"
|
|
prefField: barKey + ".enabled"
|
|
}
|
|
StyledSwitchOption {
|
|
title: "Floating Bar"
|
|
description: "Make the bar float above other windows instead of being part of the desktop"
|
|
prefField: barKey + ".floating"
|
|
}
|
|
StyledSwitchOption {
|
|
title: "Goth Corners"
|
|
description: "Apply gothic-style corner cutouts to the bar"
|
|
prefField: barKey + ".gothCorners"
|
|
}
|
|
StyledSwitchOption {
|
|
title: "Merged Layout"
|
|
description: "Merge all modules into a single continuous layout"
|
|
prefField: barKey + ".merged"
|
|
}
|
|
}
|
|
|
|
ContentCard {
|
|
StyledText {
|
|
text: "Bar Rounding & Size"
|
|
font.pixelSize: Metrics.fontSize(20)
|
|
font.bold: true
|
|
}
|
|
|
|
NumberStepper {
|
|
label: "Bar Density"
|
|
prefField: barKey + ".density"
|
|
description: "Modify the bar's density"
|
|
minimum: 40
|
|
maximum: 128
|
|
}
|
|
NumberStepper {
|
|
label: "Bar Radius"
|
|
prefField: barKey + ".radius"
|
|
description: "Modify the bar's radius"
|
|
minimum: 10
|
|
maximum: 128
|
|
}
|
|
NumberStepper {
|
|
label: "Module Container Radius"
|
|
prefField: barKey + ".modules.radius"
|
|
description: "Modify the bar's module.radius"
|
|
minimum: 10
|
|
maximum: 128
|
|
}
|
|
NumberStepper {
|
|
label: "Module Height"
|
|
prefField: barKey + ".modules.height"
|
|
description: "Modify the bar's module.height"
|
|
minimum: 10
|
|
maximum: 128
|
|
}
|
|
NumberStepper {
|
|
label: "Workspace Indicators"
|
|
prefField: barKey + ".modules.workspaces.workspaceIndicators"
|
|
description: "Adjust how many workspace indicators to show."
|
|
minimum: 1
|
|
maximum: 10
|
|
}
|
|
}
|
|
|
|
ContentCard {
|
|
StyledText {
|
|
text: "Bar Modules"
|
|
font.pixelSize: Metrics.fontSize(20)
|
|
font.bold: true
|
|
}
|
|
|
|
StyledText {
|
|
text: "Workspaces"
|
|
font.pixelSize: Metrics.fontSize(18)
|
|
font.bold: true
|
|
}
|
|
StyledSwitchOption {
|
|
title: "Enabled"
|
|
description: "Show workspace indicator module"
|
|
prefField: barKey + ".modules.workspaces.enabled"
|
|
}
|
|
StyledSwitchOption {
|
|
title: "Show App Icons"
|
|
description: "Display application icons in workspace indicators"
|
|
prefField: barKey + ".modules.workspaces.showAppIcons"
|
|
enabled: !barKey.modules.workspaces.showJapaneseNumbers && Compositor.require("hyprland")
|
|
opacity: !barKey.modules.workspaces.showJapaneseNumbers && Compositor.require("hyprland") ? 1 : 0.8
|
|
}
|
|
StyledSwitchOption {
|
|
title: "Show Japanese Numbers"
|
|
description: "Use Japanese-style numbers instead of standard numerals"
|
|
prefField: barKey + ".modules.workspaces.showJapaneseNumbers"
|
|
enabled: !barKey.modules.workspaces.showAppIcons
|
|
opacity: !barKey.modules.workspaces.showAppIcons ? 1 : 0.8
|
|
}
|
|
|
|
StyledText {
|
|
text: "Status Icons"
|
|
font.pixelSize: Metrics.fontSize(18)
|
|
font.bold: true
|
|
}
|
|
StyledSwitchOption {
|
|
title: "Enabled"
|
|
description: "Show status icons module (wifi, bluetooth)"
|
|
prefField: barKey + ".modules.statusIcons.enabled"
|
|
}
|
|
StyledSwitchOption {
|
|
title: "Show Wifi Status"
|
|
description: "Display wifi connection status and signal strength"
|
|
prefField: barKey + ".modules.statusIcons.networkStatusEnabled"
|
|
}
|
|
StyledSwitchOption {
|
|
title: "Show Bluetooth Status"
|
|
description: "Display bluetooth connection status"
|
|
prefField: barKey + ".modules.statusIcons.bluetoothStatusEnabled"
|
|
}
|
|
|
|
StyledText {
|
|
text: "System Stats"
|
|
font.pixelSize: Metrics.fontSize(18)
|
|
font.bold: true
|
|
}
|
|
StyledSwitchOption {
|
|
title: "Enabled"
|
|
description: "Show system resource monitoring module"
|
|
prefField: barKey + ".modules.systemUsage.enabled"
|
|
}
|
|
StyledSwitchOption {
|
|
title: "Show Cpu Usage Stats"
|
|
description: "Display CPU usage percentage and load"
|
|
prefField: barKey + ".modules.systemUsage.cpuStatsEnabled"
|
|
}
|
|
StyledSwitchOption {
|
|
title: "Show Memory Usage Stats"
|
|
description: "Display RAM usage and available memory"
|
|
prefField: barKey + ".modules.systemUsage.memoryStatsEnabled"
|
|
}
|
|
StyledSwitchOption {
|
|
title: "Show Cpu Temperature Stats"
|
|
description: "Display CPU temperature readings"
|
|
prefField: barKey + ".modules.systemUsage.tempStatsEnabled"
|
|
}
|
|
}
|
|
}
|