Merge branch 'main' of github.com:noctalia-dev/noctalia-shell

This commit is contained in:
ItsLemmy
2025-10-13 09:13:20 -04:00
13 changed files with 118 additions and 58 deletions
+5 -3
View File
@@ -30,7 +30,7 @@ Item {
return {}
}
readonly property bool hasActiveWindow: CompositorService.getFocusedWindowTitle() !== ""
readonly property bool hasFocusedWindow: CompositorService.getFocusedWindow() !== null
readonly property string windowTitle: CompositorService.getFocusedWindowTitle() || "No active window"
readonly property string fallbackIcon: "user-desktop"
@@ -38,14 +38,16 @@ Item {
// Widget settings - matching MediaMini pattern
readonly property bool showIcon: (widgetSettings.showIcon !== undefined) ? widgetSettings.showIcon : widgetMetadata.showIcon
readonly property bool autoHide: (widgetSettings.autoHide !== undefined) ? widgetSettings.autoHide : widgetMetadata.autoHide
readonly property string hideMode: (widgetSettings.hideMode !== undefined) ? widgetSettings.hideMode : widgetMetadata.hideMode
readonly property string scrollingMode: (widgetSettings.scrollingMode !== undefined) ? widgetSettings.scrollingMode : (widgetMetadata.scrollingMode !== undefined ? widgetMetadata.scrollingMode : "hover")
readonly property int widgetWidth: (widgetSettings.width !== undefined) ? widgetSettings.width : Math.max(widgetMetadata.width, screen.width * 0.06)
implicitHeight: visible ? ((barPosition === "left" || barPosition === "right") ? calculatedVerticalHeight() : Style.barHeight) : 0
implicitWidth: visible ? ((barPosition === "left" || barPosition === "right") ? Math.round(Style.baseWidgetSize * 0.8) : (widgetWidth)) : 0
opacity: !autoHide || hasActiveWindow ? 1.0 : 0
// "visible": Always Visible, "hidden": Hide When Empty, "transparent": Transparent When Empty
visible: hideMode !== "hidden" || hasFocusedWindow
opacity: hideMode !== "transparent" || hasFocusedWindow ? 1.0 : 0
Behavior on opacity {
NumberAnimation {
duration: Style.animationNormal
+5 -3
View File
@@ -32,7 +32,7 @@ Item {
readonly property string barPosition: Settings.data.bar.position
readonly property bool compact: (Settings.data.bar.density === "compact") || (Settings.data.bar.density === "mini")
readonly property bool autoHide: (widgetSettings.autoHide !== undefined) ? widgetSettings.autoHide : widgetMetadata.autoHide
readonly property string hideMode: (widgetSettings.hideMode !== undefined) ? widgetSettings.hideMode : "hidden" // "visible", "hidden", "transparent"
readonly property bool showAlbumArt: (widgetSettings.showAlbumArt !== undefined) ? widgetSettings.showAlbumArt : widgetMetadata.showAlbumArt
readonly property bool showVisualizer: (widgetSettings.showVisualizer !== undefined) ? widgetSettings.showVisualizer : widgetMetadata.showVisualizer
readonly property string visualizerType: (widgetSettings.visualizerType !== undefined && widgetSettings.visualizerType !== "") ? widgetSettings.visualizerType : widgetMetadata.visualizerType
@@ -41,7 +41,7 @@ Item {
// Fixed width - no expansion
readonly property real widgetWidth: Math.max(145, screen.width * 0.06)
readonly property bool hasActivePlayer: MediaService.currentPlayer !== null && getTitle() !== ""
readonly property bool hasActivePlayer: MediaService.currentPlayer !== null
readonly property string placeholderText: I18n.tr("bar.widget-settings.media-mini.no-active-player")
readonly property string tooltipText: {
@@ -62,7 +62,9 @@ Item {
implicitHeight: visible ? ((barPosition === "left" || barPosition === "right") ? calculatedVerticalHeight() : Style.barHeight) : 0
implicitWidth: visible ? ((barPosition === "left" || barPosition === "right") ? Math.round(Style.baseWidgetSize * 0.8) : (widgetWidth)) : 0
opacity: !autoHide || hasActivePlayer || (!hasActivePlayer && !autoHide) ? 1.0 : 0
// "visible": Always Visible, "hidden": Hide When Empty, "transparent": Transparent When Empty
visible: hideMode !== "hidden" || hasActivePlayer
opacity: hideMode !== "transparent" || hasActivePlayer ? 1.0 : 0
Behavior on opacity {
NumberAnimation {
duration: Style.animationNormal
@@ -15,14 +15,20 @@ ColumnLayout {
// Local state
property bool valueShowIcon: widgetData.showIcon !== undefined ? widgetData.showIcon : widgetMetadata.showIcon
property bool valueAutoHide: widgetData.autoHide !== undefined ? widgetData.autoHide : widgetMetadata.autoHide
property string valueHideMode: "hidden" // Default to 'Hide When Empty'
property string valueScrollingMode: widgetData.scrollingMode || widgetMetadata.scrollingMode
property int valueWidth: widgetData.width !== undefined ? widgetData.width : widgetMetadata.width
property bool valueColorizeIcons: widgetData.colorizeIcons !== undefined ? widgetData.colorizeIcons : widgetMetadata.colorizeIcons
Component.onCompleted: {
if (widgetData && widgetData.hideMode !== undefined) {
valueHideMode = widgetData.hideMode
}
}
function saveSettings() {
var settings = Object.assign({}, widgetData || {})
settings.autoHide = valueAutoHide
settings.hideMode = valueHideMode
settings.showIcon = valueShowIcon
settings.scrollingMode = valueScrollingMode
settings.width = parseInt(widthInput.text) || widgetMetadata.width
@@ -30,12 +36,24 @@ ColumnLayout {
return settings
}
NToggle {
NComboBox {
Layout.fillWidth: true
label: I18n.tr("bar.widget-settings.active-window.auto-hide.label")
description: I18n.tr("bar.widget-settings.active-window.auto-hide.description")
checked: root.valueAutoHide
onToggled: checked => root.valueAutoHide = checked
label: I18n.tr("bar.widget-settings.active-window.hide-mode.label")
description: I18n.tr("bar.widget-settings.active-window.hide-mode.description")
model: [
{
"key": "visible",
"name": I18n.tr("options.hide-modes.visible")
}, {
"key": "hidden",
"name": I18n.tr("options.hide-modes.hidden")
}, {
"key": "transparent",
"name": I18n.tr("options.hide-modes.transparent")
}
]
currentKey: root.valueHideMode
onSelected: key => root.valueHideMode = key
}
NToggle {
@@ -14,15 +14,21 @@ ColumnLayout {
property var widgetMetadata: null
// Local state
property bool valueAutoHide: widgetData.autoHide !== undefined ? widgetData.autoHide : widgetMetadata.autoHide
property string valueHideMode: "hidden" // Default to 'Hide When Empty'
property bool valueShowAlbumArt: widgetData.showAlbumArt !== undefined ? widgetData.showAlbumArt : widgetMetadata.showAlbumArt
property bool valueShowVisualizer: widgetData.showVisualizer !== undefined ? widgetData.showVisualizer : widgetMetadata.showVisualizer
property string valueVisualizerType: widgetData.visualizerType || widgetMetadata.visualizerType
property string valueScrollingMode: widgetData.scrollingMode || widgetMetadata.scrollingMode
Component.onCompleted: {
if (widgetData && widgetData.hideMode !== undefined) {
valueHideMode = widgetData.hideMode
}
}
function saveSettings() {
var settings = Object.assign({}, widgetData || {})
settings.autoHide = valueAutoHide
settings.hideMode = valueHideMode
settings.showAlbumArt = valueShowAlbumArt
settings.showVisualizer = valueShowVisualizer
settings.visualizerType = valueVisualizerType
@@ -30,12 +36,24 @@ ColumnLayout {
return settings
}
NToggle {
NComboBox {
Layout.fillWidth: true
label: I18n.tr("bar.widget-settings.media-mini.auto-hide.label")
description: I18n.tr("bar.widget-settings.media-mini.auto-hide.description")
checked: root.valueAutoHide
onToggled: checked => root.valueAutoHide = checked
label: I18n.tr("bar.widget-settings.media-mini.hide-mode.label")
description: I18n.tr("bar.widget-settings.media-mini.hide-mode.description")
model: [
{
"key": "visible",
"name": I18n.tr("options.hide-modes.visible")
}, {
"key": "hidden",
"name": I18n.tr("options.hide-modes.hidden")
}, {
"key": "transparent",
"name": I18n.tr("options.hide-modes.transparent")
}
]
currentKey: root.valueHideMode
onSelected: key => root.valueHideMode = key
}
NToggle {