52 lines
1.6 KiB
QML
52 lines
1.6 KiB
QML
import QtQuick
|
|
import QtQuick.Layouts
|
|
import Quickshell
|
|
import qs.Commons
|
|
import qs.Services
|
|
import qs.Widgets
|
|
|
|
NIconButton {
|
|
id: root
|
|
|
|
// Widget properties passed from Bar.qml
|
|
property var screen
|
|
property real scaling: 1.0
|
|
|
|
property string barSection: ""
|
|
property int sectionWidgetIndex: -1
|
|
property int sectionWidgetsCount: 0
|
|
|
|
// Get user settings from Settings data
|
|
property var widgetSettings: {
|
|
var section = barSection.replace("Section", "").toLowerCase()
|
|
if (section && sectionWidgetIndex >= 0) {
|
|
var widgets = Settings.data.bar.widgets[section]
|
|
if (widgets && sectionWidgetIndex < widgets.length) {
|
|
return widgets[sectionWidgetIndex]
|
|
}
|
|
}
|
|
return {}
|
|
}
|
|
|
|
// Use settings or defaults from BarWidgetRegistry
|
|
property string userIcon: widgetSettings.icon || BarWidgetRegistry.widgetMetadata["CustomButton"].icon
|
|
property string userExecute: widgetSettings.execute || BarWidgetRegistry.widgetMetadata["CustomButton"].execute
|
|
|
|
icon: userIcon
|
|
tooltipText: userExecute ? `Execute: ${userExecute}` : "Custom Button - Configure in settings"
|
|
opacity: userExecute ? Style.opacityFull : Style.opacityMedium
|
|
|
|
onClicked: {
|
|
if (userExecute) {
|
|
// Execute the user's command
|
|
Quickshell.execDetached(userExecute.split(" "))
|
|
Logger.log("CustomButton", `Executing command: ${userExecute}`)
|
|
} else {
|
|
Logger.warn("CustomButton", "No command configured for this button")
|
|
}
|
|
}
|
|
|
|
Component.onCompleted: {
|
|
Logger.log("CustomButton", `Initialized with icon: ${userIcon}, command: ${userExecute}`)
|
|
}
|
|
}
|