Skip to content

Default theme: readable text at every screen size - #356

Merged
kloptops merged 2 commits into
PortsMaster:mainfrom
kloptops:default-theme-sizes
Oct 21, 2026
Merged

kloptops merged 2 commits into
PortsMaster:mainfrom
kloptops:default-theme-sizes

Conversation

@kloptops

Copy link
Copy Markdown
Member

Text sizes in the default theme were set by aspect ratio only. So 960x720 and 1024x768 got 640x480's sizes, and 1920x1080 got 1280x720's, about 60% of what they needed. Text now scales with the screen's height: there's a font-scale per resolution, after the aspect-ratio ones, which stay for other screens.

Layout

  • The ports and themes lists placed their info and description in pixels from the top of their pane. On bigger screens the text overlapped, and a fourth info line (two runtimes, for example) overlapped at 640x480 too. They're now fractions of the pane, made from each aspect ratio's own size, with room for four info lines.
  • The 16:9 and 1920x1152 info and description sizes, which made them smaller than the rest of the screen, are gone.
  • Port info has bigger text, and it scrolls when it doesn't fit.
  • The options list is wider, so "Experimental Ports: Disabled" fits.

Disclaimer and startup warning: this built-in section (the piracy disclaimer and the unsupported-system warning, the same in every theme) had no sizes for 720x480, 960x720, 1024x768 or 1280x800. Those got the unscaled size; at 1280x800 the text filled barely a third of the box. They're filled in now, between their neighbours' sizes.

Runtime manager: it showed {runtime_info.name} and the like until the selection moved. Its first update_selection() only ran when there were no runtimes. It now runs whenever something is selected, and test_gui_commands.py checks it.

Testing: every screen checked at 12 resolutions with the theme preview server (on beta, same theme.json). The full suite passes on Python 3.7 and 3.11.

kloptops and others added 2 commits October 21, 2026 22:56
Text sizes were set by aspect ratio only, so 960x720 and 1024x768 got
640x480's sizes and 1920x1080 got 1280x720's: about 60% of the size
they needed. Text now scales with the screen's height (font-scale per
resolution, after the aspect ratio ones, which stay for other screens).

- The ports and themes lists' info and description were placed in pixels
  from the top of their pane, so on bigger screens the text overlapped
  (and a fourth info line, eg two runtimes, overlapped at 640x480 too).
  They're now fractions of the pane, made from each aspect ratio's own
  size, with room for four info lines.
- The 16:9 and 1920x1152 info / description sizes that shrank them below
  the rest of the screen are gone.
- Port info: bigger text, scrolling when it doesn't fit.
- Options: a wider list, so "Experimental Ports: Disabled" fits.

Checked every screen at 12 resolutions with tools/theme_server.

The runtime manager showed "{runtime_info.name}" and the like until the
selection moved: its first update_selection() only ran when there were
no runtimes (d378e03 turned it off to avoid a crash with nothing
selected). It now runs whenever something is selected.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NxABmR1rUUgi4iicVLZchY
The built-in disclaimer section (the piracy disclaimer and the
unsupported-system warning, the same in every theme) scales its text per
resolution, but had no entry for 720x480, 960x720, 1024x768 or 1280x800:
those got the unscaled size (1280x800's barely a third of the box), or
whatever the theme's own #base said. They're filled in, between their
neighbours' sizes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NxABmR1rUUgi4iicVLZchY
@kloptops
kloptops merged commit ccea6b7 into PortsMaster:main Oct 21, 2026
4 checks passed
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