Skip to content

Shell: persist display scale and gather off-screen windows - #36

Open
brkosebay wants to merge 26 commits into
OrchardLinux:mainfrom
brkosebay:j71t/display-scale
Open

brkosebay wants to merge 26 commits into
OrchardLinux:mainfrom
brkosebay:j71t/display-scale

Conversation

@brkosebay

@brkosebay brkosebay commented Nov 8, 2026 •

Copy link
Copy Markdown
Contributor

Part 4 of 14 of the iPad 5 (J71t) series in this repository; merge after #35.

Problem

A chosen display scale was lost at the next login, and after a scale or rotation change windows could end up off screen.

Change

Add omarchy-display-scale and a Display panel picker, restore the saved scale at login, and gather windows on screen with Super+Shift+G.

Testing

  • Hardware: iPad 5 Wi-Fi (J71t). Hands-on testing on 2026-11-11 with an integrated build of this series, made before the final failure-path fixes, covered display scaling.
  • 2026-11-12: no further hardware test of this change beyond the above.
  • Host: the Linux test suite passes at this branch's head (with Orchard at the top of its series).

Dependencies

Depends on #35.

This branch is stacked on the PRs it depends on and carries their commits; the change of this PR is its last commit, "Shell: persist display scale and gather off-screen windows".

This update keeps the branch's earlier history: it merges the current base into the branch and adds the reworked change as a new commit on top.

🤖 Generated with Claude Code

@brkosebay brkosebay changed the title shell: display scale picker and window recovery on labwc shell: display scale picker and gather-windows shortcut Nov 8, 2026
@brkosebay
brkosebay marked this pull request as ready for review November 8, 2026 15:51
jerricky26 pushed a commit to jerricky26/omarchy-a that referenced this pull request Nov 10, 2026
Rework of this PR to the kernel structure: the AOP is now an in-kernel
driver (orchard PR OrchardLinux#36) whose accelerometer is a standard IIO device, so
the desktop uses iio-sensor-proxy like GNOME and KDE do.

- desktop/configuration/rotate-output: follows iio-sensor-proxy's
  accelerometer orientation (monitor-sensor) and turns the panel with
  wlr-randr; touch follows the output through labwc's <touch
  mapToOutput>, so no calibration matrix needs rewriting. The rotation
  lock (~/.config/omarchy/rotation-lock) keeps Dalton's idea.
- iio-sensor-proxy in the root's packages; the labwc session starts the
  listener.
- The DMA-backed daemon, its firmware launcher, units and tests go: the
  kernel loads the firmware and starts the AOP.

Still open: the panel's output name for <touch mapToOutput> (eDP-1 on
the iPad 5; to confirm on the J71b), and a device test once the
accelerometer's IIO driver lands.
jerricky26 pushed a commit to jerricky26/omarchy-a that referenced this pull request Nov 10, 2026
…onnected

Tested on the J71b with the in-kernel AOP accelerometer (orchard PR OrchardLinux#36)
and iio-sensor-proxy 3.9: the image is upright in all four orientations
and touch lands where the finger is.

- rotate-output applies an orientation once it has held for half a
  second, so turning past one orientation to the next rotates once
  (Dalton's controller debounced too).
- touch-output, run by login-session before labwc, maps each touchscreen
  to the connected panel for the session: the panel's DRM connector names
  its output (Unknown-1 on the J71b with simpledrm, eDP-1 on the iPad 5
  with ADBE), and named <touch> entries take precedence over the default
  in ~/.config/labwc/rc.xml. Nothing board-specific in the rootfs.
- The listener's tests need bash 4+ (fractional read -t), as on the
  device, and skip with a reason on older shells.

Known limit: landscape is slow on boards whose display has no hardware
rotation yet (simpledrm): labwc then rotates every frame in software.
Bring this branch onto current main. The merge keeps the other side's
tree; the next commit carries the reworked version of this branch's
change.
Bring this branch onto current main and the series it depends on. The
merge keeps the other side's tree; the next commit carries the reworked
version of this branch's change.
Bring this branch onto current main and the series it depends on. The
merge keeps the other side's tree; the next commit carries the reworked
version of this branch's change.
Bring this branch onto current main and the series it depends on. The
merge keeps the other side's tree; the next commit carries the reworked
version of this branch's change.
Automatic rotation could not be overridden: there was no manual rotation
or lock in the menu.

Add omarchy-rotate with rotate and lock commands, menu entries for them,
and the release root wiring.

Assisted-by: LLM
The tablet had no lock on cover close, no dim before idle lock, and
suspend was offered even when the kernel could not complete it.

Lock on cover close, dim before the idle lock, disable hibernation, and
gate suspend on ipadlinux-suspend-ready, the kernel's readiness report.
Documented in docs/power-and-lock.md.

Assisted-by: LLM
The panel kept a fixed brightness; there was no automatic brightness
from the ambient-light sensor.

Add an optional, off-by-default automatic brightness daemon (generic IIO
lux or iio-sensor-proxy, no board calibration), a toggle in the Display
panel and its CLI.

Assisted-by: LLM
A chosen display scale was lost at the next login, and after a scale or
rotation change windows could end up off screen.

Add omarchy-display-scale and a Display panel picker, restore the saved
scale at login, and gather windows on screen with Super+Shift+G.

Assisted-by: LLM
Bring this branch onto current main, which now has the Smart Cover lock
and wake in omarchy-powerd.
Bring this branch onto current main, which reads the Smart Cover in
omarchy-powerd: closing it is a lock, opening it a wake. That replaces
this branch's cover-close and cover-suspend socket requests and their
test. A sleep after a cover lock goes through the same suspend
readiness check as Power and idle, which the merged test now covers.
Bring this branch onto current main and the series it depends on.
Bring this branch onto current main and the series it depends on.
An earlier wording pass on this branch turned "owner" into
"maintainer" in lines that come from main: powerd is the one owner of
the screen, the lock request and sleep, and the shutdown menu test
quotes that. Restore main's wording in the state model doc, the
powerd comment and the test.

Assisted-by: LLM
Bring this branch onto current main and the series it depends on.
Bring this branch onto current main and the series it depends on.
The sensor test's note on a hands-on check named no person but read as
a maintainer's report; call it a hands-on test. The tablet sensor
notes call the power daemon the sole owner of screen-off and sleep, as
the power state model does.

Assisted-by: LLM
Bring this branch onto current main and the series it depends on.
Orchard main now gives every installed system the Mac current
identity (0x1014) on its own, and nothing reads
/etc/orchard/mac-usb-current any more, so the notes on opting in with
that flag describe a switch that no longer exists.

Assisted-by: LLM
ipadlinux-suspend-ready first asked Orchard's device-feature helper
whether the board's feature table marked suspend as working. Orchard
does not ship that table: feature states describe a board, they do not
switch behaviour. Without the helper every sleep request was refused.

Decide from the kernel's own admission query on every board instead.
/sys/power/suspend_ready answers "ready" or names the first driver or
precheck that would refuse; a kernel without the query cannot show
that a suspend would be admitted, so sleep stays refused there, as do
an unreadable or malformed answer. The helper no longer reads the
board identity. Powerd, the session menu and systemd's direct suspend
guard keep calling the same helper.

Assisted-by: LLM
Bring this branch onto current main and the series it depends on.
Bring this branch onto current main and the series it depends on.
@brkosebay brkosebay changed the title shell: display scale picker and gather-windows shortcut Shell: persist display scale and gather off-screen windows Nov 13, 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.

1 participant