Quattro bar: public per-screen visibility override API for plugins #6722
SamCod3
started this conversation in
Suggestions
Replies: 1 comment
|
This API would enable a useful laptop + external monitor workflow: autohide the bar only on the integrated laptop display while leaving it permanently visible on the external monitor. My setup is Omarchy 4.0.0-1 with two Hyprland outputs:
The current global Helps with OLED screens burn in too |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Motivation
Quattro supports
serviceandbar-widgetplugins, but the stock bar currentlyowns visibility through the single global
bar-offstate. A plugin that wantsto implement policies such as per-workspace visibility, presentation mode or
custom autohide has no supported way to ask the stock bar to hide one screen.
Today such a plugin must either mutate internal properties such as
barHiddenor
PanelWindow.visible, or continually translate its policy into the globalbar-offflag. Both approaches couple the plugin to implementation details andbecome fragile across startup, output reconstruction and suspend/resume.
Suggested extension point
Could the stock bar expose a small, documented, per-screen visibility override
API for service plugins? The exact names are not important, but conceptually:
This could live directly on the public bar interface or behind a stable
shellwrapper that forwards to the active bar.
Suggested semantics:
hidden: trueadds that owner's hide request;hidden: falseremoves it.bar-offstate remains authoritative and unchanged.bar-offis set or any owner has ahide request for that screen.
Bar.qmlremains the sole owner of margins, exclusion mode, parking and thePanelWindowlifecycle.BarPanelinstances automatically inherit thecurrent effective state through a normal binding.
The policy and any persistence would remain the responsibility of the plugin.
For example, a plugin could observe the workspace displayed on each monitor,
persist its own
workspace -> hiddenmap, and update this API without touchingbar internals or the global marker.
Why per-screen rather than global
The stock bar already creates one
BarPanelper screen. A global API would notsupport multi-monitor policies: two screens can simultaneously display
workspaces whose desired states differ. Passing the output name keeps the API
narrow without exposing
BarPanelobjects to plugins.Compatibility
bar-offandomarchy-toggle-barretain their current global behavior.properties.
Minimal acceptance cases
bar-offstill hides every bar regardless of plugin requests.BarPanelpreserves the effective override.This would provide a general extension point rather than implementing any one
policy in Omarchy itself.
All reactions