Skip to content

Round screens: the shell's Home button and Home's own layout fall outside the circle #50

Closed

Description

@bdbarnett

On a 240x240 round panel (Waveshare RP2040-Touch-LCD-1.28, GC9A01), two parts of the app screens are cut off by the edge of the circle.

The shell's Home button. appkit.Shell puts its Home button on lv.layer_top(), aligned to the top right at (-8, 8). On a round screen that corner is outside the circle, so about half the button, the "Home" label included, can't be seen, and the part that can is hard to hit. Every app shows it, so the fix belongs in the shell, not in each app. One way is to put it at the top centre, or inset it to the circle's chord at its height, whenever the driver reports a round panel. System decides that from a round attribute on the driver, or from a driver class name starting with GC9A01.

Home at 240 px round. The header's "Home" title loses its first letter at the left edge, and the settings gear is cut at the right. The app tile's corners fall outside the circle, and the header is light while the rest is dark, because appkit.run() doesn't apply the dark theme. The tile shows only the app's icon, at about a quarter of the tile's width.

To reproduce, boot appkit.run() with the Home and System apps on a round 240x240 board, and look at Home, then at any app with the Home button showing.

System lays itself out inside the circle in apps#48. These two are what's still outside it.

Activity

  1. bdbarnett commented on Nov 10, 2026

    @bdbarnett
    ContributorAuthor

    Fixed in #51.

    On a round panel, appkit.shell.is_round() is true when the board's driver says the panel is round, or when it's a GC9A01. There the shell's Home button is a 40 px round button on the top-right diagonal, inside the circle. Home now puts its pages and tabs in the square inside the circle, two apps by two, with the gear as a pill centred above them. The title is dropped there.

    Checked on the Waveshare RP2040-Touch-LCD-1.28 with images rebuilt from the frames sent to the panel, plus a walk of every object's coordinates: everything on Home and System lies inside the circle. The Home button reaches 115 px from the centre, and the corners of the tab bar 115 px. Headless renders of Home at 720x720 and 800x480 match main pixel for pixel.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions