Repository navigation
Ostinato: icons come from iconkit - #67
Merged
Merged
Conversation
…h for LVGL and pygraphics
Contributor
Author
|
Ran the desktop app on Windows (CPython 3.14.6, four engines as processes) from this branch: the window opens and every icon draws in the transport, the pattern editor and the instrument panel, in its normal and checked colours. The only tracebacks in the log are BrokenPipeError from the engine and mixer processes when the window was force-closed after the screenshot. |
appkit's Home and apps still import iconkit the same way, but the package now lives in PyDevices/pydevices at packages/iconkit (omnipython-iconkit), beside pdwidgets and palettes, so that apps/lib stays the one omnipython-applibs package and pdwidgets and appkit can both depend on one small package. Removed here: lib/iconkit, its generator and contact-sheet tools, its tests and its icons page; appkit's manifest no longer includes it. The appkit tests find iconkit at packages/iconkit/lib in the pydevices checkout PYDEVICES_LIB belongs to (or ICONKIT_LIB). The index check raises with the fix when iconkit isn't importable. The README, appkit README, how-it-works and app.json icon docs link to the package's README and icons page. Ran: the appkit index and script tests on CPython against the new location, including a new one for the missing-iconkit message; Home and appkit import on unix MicroPython with iconkit taken from packages/iconkit/lib.
…tton's colours The icon fonts and their loader are gone. Icons iconkit's shared 24 and 48 px sets lack are in app/ui/_icons_<size>.py, made by scripts/make_icons.py at 18, 24, 36 and 48 px (the sizes Material's PNGs come in). The page and the desktop app load iconkit from the shared lib/. Tests cover every icon at every size and what the page loads; the page ran in Chromium with the icons in normal, checked and hovered states.
The page server, the boot list, the desktop app, the Windows staging script and the tests look for packages/iconkit/lib in the pydevices checkout (beside this repo, at PYDEVICES_LIB's checkout, or ICONKIT_LIB) and stop with how to fix it when it isn't there. Ran the tests, the page in Chromium and the Windows desktop app with the icons drawn.
iconkit moved to the pydevices repo, and Ostinato's tests stop with a message when they can't find it. The job now checks pydevices out and points ICONKIT_LIB at packages/iconkit/lib. Ran the tests locally with ICONKIT_LIB set: 11 pass.
…on check appkit's manifest.py no longer assumes iconkit sits beside it. It freezes iconkit from the folder iconkit= names (pydevices' packages/iconkit, or <tree>/iconkit in an omnipython-lib tree), else from $PYDEVICES_LIBRARY, and with apps= it puts that source on the host's import path while the index checks each app's icon. With neither it stops and says to pass iconkit= or set PYDEVICES_LIBRARY, so a build never freezes a Home that cannot import. Ran: the manifest tests under MicroPython's own manifest reader in an isolated interpreter (they fail on the previous manifest with the host ImportError and pass now, including the two missing-iconkit messages), and a unix MicroPython build that freezes appkit with apps= (Home, Clock, Weather) from an omnipython-lib tree.
bdbarnett
force-pushed
the
ostinato-iconkit
branch
from
November 12, 2026 04:27
b809940 to
69e7709
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ostinato's buttons now show iconkit icons: crisp alpha-mask images, tinted to match the button's text colour in its normal, hovered and checked states. The four icon font files and their build script are gone, so there is less to download and nothing to load before the buttons draw.
Icons that iconkit's shared sets lack live in
app/ui/_icons_<size>.py, rebuilt withscripts/make_icons.py. Material's PNGs come in 18, 24, 36 and 48 px, so Ostinato's sizes are those, where they were 20, 24, 32 and 48; the choice of size by window scale works as before. A missing icon or size raises an error that names it.I served the page and ran it in Chromium at 1920x1080: transport, song view, pattern editor and inspector look the same as before, including the armed-record red and the orange Ostinato menu arrow. Ostinato's tests pass. The Windows desktop app loads iconkit the same way but I haven't run it.