Repository navigation
Conversation
Themes can already change colours, the wallpaper, the dock and the columns, but every tile still draws the app's icon or banner, and the shelf still shows the app's name in the launcher's own font. This adds the missing piece for a look that reads as a terminal: the text is the interface. Six keys, all read from a theme's config.json only, each off by default, so a launcher nobody themed is unchanged: - terminal_text: every tile is one line of monospace text over black, its name left-aligned inside the same box, with "> " in front of the focused row. The tile keeps its size and its box, so the grid, the dock and the tests around them keep their numbers; only what is drawn inside a row changes. - terminal_prompt: the dock title read as a shell prompt, two lines, a blinking block cursor behind the name and "└─# " in front of it as it types. - terminal_typing: with it, the name types itself out one character at a time. With reduced_motion, either way, nothing is scheduled at all. - terminal_host, terminal_path: the host and directory the context line names. - terminal_color: the colour of all of it, tiles, prompt, clock, date, greeting and focus ring. Phosphor red by default when any other terminal_* key is on. The colour, the marker and the cursor live in TerminalPrompt, a pure class with its tests; AppAdapter gains one branch that draws a row; MainActivity tints the header and moves the accent to the glass. The monospace face is fonts.xml pointing the five font_* strings at the system family, with values-vi left as it is (Gathin23#833), so a theme cannot ship a font the launcher does not have. The shelf's two TextViews change order, so the context line sits above the command line; this also puts the cinematic shelf's "Last opened" line above the app name, for everyone, terminal theme or not. Tested on an Indurama Google TV 4K (KTC hongkong, MediaTek m7632, Google TV 14, SDK 34), 325 JUnit, the release APK at 530,865 B, and every screenshot in docs/switches is from that TV.
|
maintainer-bot review · this one needs a maintainer decision Thanks for the PR! Couldn't review this one automatically; it goes to the maintainer. Checks
Reviewed by maintainer-bot · runs on 0G Private Computer |
This was referenced Nov 9, 2026
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.
A theme that reads as a Linux terminal: the text is the interface. Every app is one line of monospace text, the dock title is a shell prompt of two lines, and the whole screen is phosphor red on pure black.
What it adds
Six keys, read from a theme's
config.jsononly, each off by default, so a launcher nobody themes is unchanged:terminal_text>in front of the focused row. No icon, no bannerterminal_prompt└─#in front of it as it typesterminal_typingterminal_host,terminal_path┌─(root@hacker-kali)-[/home/]terminal_color#FF3B30, phosphor red, when any otherterminal_*key is onThe colour, the
>marker and the cursor live inTerminalPrompt, a pure class covered by its own tests.AppAdaptergains one branch that draws a row.MainActivitytints the header and moves the accent onto the glass.Two things worth calling out, because they reach beyond the theme:
fonts.xmlpointing the fivefont_*strings at the systemmonospacefamily. There is no theme key for typography (the fonts are resources, resolved at inflate time), so a theme cannot ship a font, and the whole launcher becomes mono rather than just this look.values-viis untouched (Outfit is missing 96 Vietnamese letters, so vi strings render in mixed fonts #833), as its own comment says it must be.activity_main.xmlswaps the shelf's two TextViews, so the context line sits above the command line. That also puts the cinematic shelf's "Last opened" line above the app name for every theme, terminal or not. Accepted as part of the look, not left silent.Why the tiles do not change size
terminal_textdraws inside the tile box it already has: no banner, no icon, the label moved into the card and left-aligned. The tile keeps its 180x101 dp box, sotileWidthPx,TITLE_ROOM_DPand thereforeTileFitTest,GridNavigationTestandDockSlotsTestare untouched.The shelf's focus code also does not zoom or lift a text row: with
reduced_motionor not, a row just lights up and the>moves, so there is nothing scheduled on the weak-GPU path.The theme
themes/terminal-hacker/is the look above, generic: no pinned dock, no personal apps, no pictures, black only. Count bumped 28 → 29 in the seven front pages that state it.Verified
./gradlew test— 325 JUnit, 0 failuresassembleRelease— 530,865 B, under CI's 589,824 Bpython3 -m unittest discover -s tests— 3191 tests, 0 failures (was 12 failures on my working branch before this)docs/switches/and the theme'sscreenshot.jpgcome from that TVTwo notes for review
clock_formatis a documented theme key, butConfig.javareads it throughCLOCK_FORMAT_KEYrather than the literal, sotest_shipped_config_keys_are_read.pycannot see the read and treats any theme that sets it as a dropped key. I left the code alone and left the key out of this theme rather than widen the PR; the read is real, only its shape hides it. Worth a separate look.terminal_hostandterminal_pathshare one screenshot withterminal_colorfor now, because the TV was captured running a personal config that names the host. They should be re-shot from this generic theme (the defaulthacker-kali) before merging; I will do it as soon as the TV is back on.