Before sharing, test the installed copy in the desktop application. Valid JSON and a successful preview do not check every window, font or operating system.
Package contents
Section titled “Package contents”A standalone color theme needs theme.jsonc. Include stylesheets and every resource referenced by the manifest or CSS. An icon theme needs its wrapper, icon document and every declared image and font, including those in unused definitions. Retain bundled file licenses.
| Example | What it demonstrates |
|---|---|
| Graphite Notes | Minimal adaptive theme and overrides |
| Reading Room | Editor, syntax and terminal in both modes |
| Graphite Grid | Background image, CSS and a plugin token |
| Plain file icons | Minimal SVG icon set |
| Workspace file icons | Folders, extensions, language and filenames |
| Plain interface icons | Font, control IDs and built-in fallbacks |
These themes need no compilation. Download entire folders from the documentation repository, keep their structure and use Import folder. The CSS guide’s font example requires your own font file; it is not an additional ready-made package.
Desktop verification procedure
Section titled “Desktop verification procedure”- Import the folder as a fresh local copy. Check its category and choose Use theme.
- For an adaptive theme, check Light, Dark and System. Change the system mode. For a fixed theme, confirm that the app retains the forced mode.
- Open a source file, make a small edit and keep a terminal running. Change the theme. Check contents, undo and the ongoing terminal session.
- Inspect main and Settings windows, focused and unfocused selections, keyboard focus, menus, a modal, the file tree and long tab names.
- Edit a theme draft and choose Preview. Confirm preview locality, Cancel preview, saving and discarding unsaved changes.
- For icons, check missing definitions, open and closed folders, filenames and fonts. For CSS, check all images and fonts after restarting.
- Edit an installed file externally. Check reloading and Refresh. Avoid editing the same document in two places at once.
- Restart Lomi and confirm the saved selection. Repeat on every operating system you intend to claim as supported.
Controlled failures
Section titled “Controlled failures”On a separate test copy, add an unknown field or invalid color: the editor should report an error and retain the draft. Then temporarily rename a required asset: application should fail and retain the last working appearance. Restore the file afterwards.
For a save conflict, open a draft, change the same installed file outside Lomi and try saving the draft. The expected result is refusal to overwrite a newer revision. Copy the draft before reloading; the app does not automatically merge both versions.
Distribution options
Section titled “Distribution options”| Recipient | Deliver | Installation |
|---|---|---|
| Lomi user | Entire native theme folder | Settings > Themes > Import folder, then Use theme |
| VS Code user | File created by Export to VS Code | Extensions: Install from VSIX, then select the appropriate theme type |
| Plugin package user | Theme in contributes.themes and package assets |
Import the plugin package, then select the theme in Themes |
If sharing a native folder as ZIP, the recipient extracts it first. A native ZIP is not a VSIX import. VSIX export does not publish to the Marketplace.
Include a short README with the name, supported appearances, category selection instructions, font requirements, licenses and operating systems actually tested. State known limitations, such as CSS layouts not transferring to VS Code.
Include a theme in a plugin
Section titled “Include a theme in a plugin”In the plugin manifest, contributes.themes declares entries with id and path pointing to the theme directory. Include that directory in the build configuration’s assets. See plugin declarations for the format and complete example, and packaging for package contents.
That theme belongs to an immutable package revision; users choose Duplicate to customize it. Before removing the plugin, switch every active theme it owns to another selection.
Sources: ThemesPage.tsx, ThemeEditor.tsx, themes.rs.