bar: add config option to disable on selected screens (#920)

* modules/drawers: Added a bar config option to disable the bar on selected screens

Extended the visualizer on screens that the bar is hidden

* modules/drawers: surrounded barwrapper with a loader

* fix/modules/drawers: fix a null reference

missed to fix a reference to bar object to barLoader.item

* modules/drawers: added regex support

also reverted the barLoader, added a disabled property to BarLoader
instead

* fix: module/drawers: applied requested changes
This commit is contained in:
Bora Gülerman 2025-11-26 07:45:49 +03:00 committed by GitHub
parent 11282f6abe
commit 24b313497f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 21 additions and 2 deletions

View file

@ -400,6 +400,7 @@ default, you must create it manually.
} }
] ]
}, },
"excludedScreens": [""],
"activeWindow": { "activeWindow": {
"inverted": false "inverted": false
} }

View file

@ -12,6 +12,7 @@ JsonObject {
property Status status: Status {} property Status status: Status {}
property Clock clock: Clock {} property Clock clock: Clock {}
property Sizes sizes: Sizes {} property Sizes sizes: Sizes {}
property list<string> excludedScreens: []
property list<var> entries: [ property list<var> entries: [
{ {

View file

@ -12,11 +12,12 @@ Item {
required property ShellScreen screen required property ShellScreen screen
required property PersistentProperties visibilities required property PersistentProperties visibilities
required property BarPopouts.Wrapper popouts required property BarPopouts.Wrapper popouts
required property bool disabled
readonly property int padding: Math.max(Appearance.padding.smaller, Config.border.thickness) readonly property int padding: Math.max(Appearance.padding.smaller, Config.border.thickness)
readonly property int contentWidth: Config.bar.sizes.innerWidth + padding * 2 readonly property int contentWidth: Config.bar.sizes.innerWidth + padding * 2
readonly property int exclusiveZone: Config.bar.persistent || visibilities.bar ? contentWidth : Config.border.thickness readonly property int exclusiveZone: !disabled && (Config.bar.persistent || visibilities.bar) ? contentWidth : Config.border.thickness
readonly property bool shouldBeVisible: Config.bar.persistent || visibilities.bar || isHovered readonly property bool shouldBeVisible: !disabled && (Config.bar.persistent || visibilities.bar || isHovered)
property bool isHovered property bool isHovered
function closeTray(): void { function closeTray(): void {

View file

@ -18,6 +18,20 @@ Variants {
id: scope id: scope
required property ShellScreen modelData required property ShellScreen modelData
readonly property bool barDisabled: {
const regexChecker = /^\^.*\$$/;
for (const filter of Config.bar.excludedScreens) {
// If filter is a regex
if (regexChecker.test(filter)) {
if ((new RegExp(filter)).test(modelData.name))
return true;
} else {
if (filter === modelData.name)
return true;
}
}
return false;
}
Exclusions { Exclusions {
screen: scope.modelData screen: scope.modelData
@ -169,6 +183,8 @@ Variants {
visibilities: visibilities visibilities: visibilities
popouts: panels.popouts popouts: panels.popouts
disabled: scope.barDisabled
Component.onCompleted: Visibilities.bars.set(scope.modelData, this) Component.onCompleted: Visibilities.bars.set(scope.modelData, this)
} }
} }