diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..dfbea23 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.qmlls.ini diff --git a/.qmlformat.ini b/.qmlformat.ini new file mode 100644 index 0000000..4be9332 --- /dev/null +++ b/.qmlformat.ini @@ -0,0 +1,2 @@ +[General] +IndentWidth=2 diff --git a/Modules/Bar/Widgets/Workspace.qml b/Modules/Bar/Widgets/Workspace.qml index 9c216fb..24f2439 100644 --- a/Modules/Bar/Widgets/Workspace.qml +++ b/Modules/Bar/Widgets/Workspace.qml @@ -32,6 +32,8 @@ Item { } readonly property string labelMode: (widgetSettings.labelMode !== undefined) ? widgetSettings.labelMode : widgetMetadata.labelMode + readonly property bool hideUnoccupied: (widgetSettings.hideUnoccupied !== undefined) ? widgetSettings.hideUnoccupied : widgetMetadata.hideUnoccupied + onHideUnoccupiedChanged: refreshWorkspaces() property bool isDestroying: false property bool hovered: false @@ -90,6 +92,9 @@ Item { for (var i = 0; i < WorkspaceService.workspaces.count; i++) { const ws = WorkspaceService.workspaces.get(i) if (ws.output.toLowerCase() === screen.name.toLowerCase()) { + if (hideUnoccupied && !ws.isOccupied && !ws.isFocused) { + continue + } localWorkspaces.append(ws) } } @@ -196,8 +201,6 @@ Item { return Color.mOnError if (model.isActive || model.isOccupied) return Color.mOnSecondary - if (model.isUrgent) - return Color.mOnError return Color.mOnSurface } @@ -213,8 +216,6 @@ Item { return Color.mError if (model.isActive || model.isOccupied) return Color.mSecondary - if (model.isUrgent) - return Color.mError return Color.mOutline } diff --git a/Modules/SettingsPanel/Bar/WidgetSettings/WorkspaceSettings.qml b/Modules/SettingsPanel/Bar/WidgetSettings/WorkspaceSettings.qml index 1e44dae..14effa2 100644 --- a/Modules/SettingsPanel/Bar/WidgetSettings/WorkspaceSettings.qml +++ b/Modules/SettingsPanel/Bar/WidgetSettings/WorkspaceSettings.qml @@ -14,9 +14,10 @@ ColumnLayout { property var widgetMetadata: null function saveSettings() { - var settings = Object.assign({}, widgetData || {}) - settings.labelMode = labelModeCombo.currentKey - return settings + var settings = Object.assign({}, widgetData || {}); + settings.labelMode = labelModeCombo.currentKey; + settings.hideUnoccupied = hideUnoccupiedToggle.checked; + return settings; } NComboBox { @@ -41,4 +42,12 @@ ColumnLayout { onSelected: key => labelModeCombo.currentKey = key minimumWidth: 200 * scaling } + + NToggle { + id: hideUnoccupiedToggle + label: "Hide unoccupied" + description: "Don't display workspaces without windows." + checked: widgetData.hideUnoccupied + onToggled: checked => hideUnoccupiedToggle.checked = checked + } } diff --git a/Services/BarWidgetRegistry.qml b/Services/BarWidgetRegistry.qml index a1a61bc..aef36b8 100644 --- a/Services/BarWidgetRegistry.qml +++ b/Services/BarWidgetRegistry.qml @@ -87,7 +87,8 @@ Singleton { }, "Workspace": { "allowUserSettings": true, - "labelMode": "index" + "labelMode": "index", + "hideUnoccupied": false }, "MediaMini": { "allowUserSettings": true,