Skip to content

feat : add per-monitor shell positions#163

Open
ROOCKY-dev wants to merge 2 commits into
Axenide:mainfrom
ROOCKY-dev:issue-162-per-monitor-positions
Open

feat : add per-monitor shell positions#163
ROOCKY-dev wants to merge 2 commits into
Axenide:mainfrom
ROOCKY-dev:issue-162-per-monitor-positions

Conversation

@ROOCKY-dev
Copy link
Copy Markdown

Summary

  • add optional screenPositions maps for bar, notch, and dock config
  • resolve bar/notch/dock positions per monitor with global position fallback
  • expose per-monitor position overrides in the Ambxst settings window

Details

This closes #162 and extends the same per-monitor positioning model to notch and dock. Existing configs keep working because each module still uses its global position when a monitor has no override.

Dock collision avoidance remains per-monitor: the configured dock edge is treated as the requested position, and the effective dock edge can still move to avoid bar/notch overlap.

Validation

  • node --test
  • git diff --check
  • live-tested in Hyprland with eDP-1 and DP-3
  • temporary pinned reservation check confirmed eDP-1 top bar/bottom dock and DP-3 bottom bar/left dock
  • opened Ambxst settings through IPC and confirmed no new ShellPanel errors

@ROOCKY-dev ROOCKY-dev changed the title [codex] add per-monitor shell positions featsure : add per-monitor shell positions May 2, 2026
@ROOCKY-dev ROOCKY-dev marked this pull request as ready for review May 3, 2026 04:15
Copilot AI review requested due to automatic review settings May 3, 2026 04:15
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds per-monitor shell positioning support across bar, notch, and dock to close #162, while keeping global position as the fallback for screens without an override. The change threads screen-aware position resolution through the config layer, shell widgets, and the settings UI.

Changes:

  • Added screenPositions config support plus shared helpers to resolve bar/notch/dock positions per screen.
  • Updated shell, frame, desktop, overview, notch, and dock components to consume per-screen positions instead of only global values.
  • Extended the settings UI and search index to edit/discover per-monitor position overrides, and added focused tests for config validation/resolution.

Reviewed changes

Copilot reviewed 23 out of 23 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
tests/config-screen-positions.test.mjs Adds unit tests for config validation and per-screen position lookup.
modules/widgets/overview/ScrollingOverview.qml Uses per-screen bar position in scrolling overview layout.
modules/widgets/overview/Overview.qml Uses per-screen bar position in overview layout.
modules/widgets/defaultview/DefaultView.qml Resolves notch position per screen and passes screen name downstream.
modules/widgets/defaultview/CompactPlayer.qml Uses screen-aware bar position for the player popup.
modules/widgets/dashboard/controls/ShellPanel.qml Adds per-monitor position editors for bar/notch/dock settings.
modules/widgets/dashboard/controls/SettingsIndex.qml Indexes the new settings entries for search.
modules/shell/UnifiedShellPanel.qml Applies a small fullscreen null-safety fix and uses effective dock position in sidebar margins.
modules/notch/NotchContent.qml Resolves bar/notch positions per screen and passes notch position into the notch component.
modules/notch/Notch.qml Makes notch position externally settable for per-screen placement.
modules/globals/GlobalStates.qml Tracks screenPositions in shell settings snapshots/change detection.
modules/frame/ScreenFrameContent.qml Uses per-screen bar/notch positions for frame restoration logic.
modules/frame/ScreenFrame.qml Uses per-screen bar position for frame reservations.
modules/dock/DockContent.qml Resolves requested/effective dock position per screen with per-screen bar/notch inputs.
modules/desktop/Desktop.qml Uses per-screen bar position to reserve desktop icon space.
modules/bar/IntegratedDock.qml Uses per-screen dock position inside integrated bar mode.
modules/bar/BarContent.qml Resolves per-screen bar/notch/dock positions for bar behavior and integrated dock placement.
config/defaults/notch.js Adds default screenPositions for notch config.
config/defaults/dock.js Adds default screenPositions for dock config.
config/defaults/bar.js Adds default screenPositions for bar config.
config/ScreenPositions.js Introduces shared per-screen position resolution helper.
config/ConfigValidator.js Preserves arbitrary monitor keys inside screenPositions.
config/Config.qml Wires new config fields and exposes per-screen position helper functions.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread modules/widgets/defaultview/CompactPlayer.qml Outdated
Comment thread config/Config.qml
Comment on lines +3272 to +3273
function dockPositionForScreen(screenName) {
return ScreenPositions.positionForScreen(dock, screenName, "bottom", shellEdgePositions);
fix : suggested from copilot

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@ROOCKY-dev ROOCKY-dev changed the title featsure : add per-monitor shell positions feat : add per-monitor shell positions May 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Feature: Per-monitor bar position support

2 participants