Toyph is an Android Glyph Toy for Nothing phones. It reads
app/src/main/assets/toy-config.json and renders glyphs, scrolling text,
effects, transitions, and filters on the 13x13 Glyph Matrix.
If this is your first time here, follow this order:
- Edit
toy-config.json - Reuse or create glyphs
- Reuse or create a font
- Add effects and filters
- Install the app on your phone
Toyph decides what to show from this file:
app/src/main/assets/toy-config.json
This is the actual toy-config.json currently checked into the repository:
{
"version": "1.0.0",
"defaultTransition": {
"type": "fade",
"durationMs": 1000,
"frameIntervalMs": 50
},
"sequence": [
{ "type": "glyph", "path": "glyphs/mandalorian.json", "brightness": 0.5, "displayDurationMs": 10000 },
{ "type": "scrolling_text", "text": "This is the way", "font": "fonts/auraboo.json", "brightness": 0.5, "frameIntervalMs": 50 },
{ "type": "glyph", "path": "glyphs/rebel.json", "brightness": 0.5, "displayDurationMs": 10000 }
],
"effects": [
{ "type": "TRIPLE_SCANLINE", "frameIntervalMs": 50, "trailingIntervalMs": 3000 },
{ "type": "GLITCH_TEAR", "frameIntervalMs": 80, "trailingIntervalMs": 3000 }
],
"filters": [
{ "type": "pip_boy", "value": 0.8 }
]
}What each part means:
sequence= ordered list of items shown on screen. Each item has a requiredtypeand supports an optionaltransitionoverride.glyphitem parameters:type(required): must be"glyph"path(required): glyph JSON path underassets, for exampleglyphs/rebel.jsonbrightness(optional):0.0..1.0, default1.0displayDurationMs(optional): milliseconds to keep the glyph on screen, default5000transition(optional): same object shape asdefaultTransition
scrolling_textitem parameters:type(required): must be"scrolling_text"text(required): text to renderfont(required): font JSON path underassets, for examplefonts/auraboo.jsonbrightness(optional):0.0..1.0, default1.0frameIntervalMs(optional): milliseconds per scroll frame, default80(lower = faster)transition(optional): same object shape asdefaultTransition
defaultTransition= fallback transition for sequence item changes.- Parameters:
type(fadeornone),durationMs(default1000),frameIntervalMs(default50, clamped to at least30)
- Parameters:
effects= optional animated overlay list.- Each effect uses:
type(required),frameIntervalMs(required, clamped to at least30),trailingIntervalMs(optional rest delay, default0)
- Each effect uses:
filters= optional final visual look list.- Available filter parameters:
brightness: requiresvaluein0.0..1.0dead_pixels: requirespixelsas[[row, col], ...](zero-based)blur: no extra parameterspip_boy: optionalvaluein0.0..1.0(default0.8)
- Available filter parameters:
If sequence, effects, or filters is missing from the file, Toyph treats
that section as an empty list.
Fastest first edit: keep the bundled glyphs and font, change only the text, effects, or filters, then install the app.
As it is released for before May the 4th, the vibes are with droids we are looking for.
Use one of the glyph JSON files already in the repo, for example:
glyphs/mandalorian.jsonglyphs/rebel.json
- Open the web editor: https://antonvidishchev.github.io/nothing-toyph-notifications/
- Draw your 13x13 glyph
- Export it as JSON
- Save the file into:
app/src/main/assets/glyphs/ - Reference it in
toy-config.json:
{
"type": "glyph",
"path": "glyphs/myglyph.json",
"brightness": 1.0,
"displayDurationMs": 10000
}Use one of the fonts already in the repo:
fonts/auraboo.jsonfonts/default.json
The bundled Auraboo source font in tools/Auraboo.otf comes from the
AurekFonts Auraboo archive.
Upstream credits it to Nick Tierce, and the upstream readme.txt says:
"This font is Free for All Personal and Commercial Uses."
- Install Python if you do not already have it
- Install Pillow:
python -m pip install Pillow- Convert a
.ttfor.otffont into Toyph JSON:
python tools/font-to-glyph.py --input tools/Auraboo.otf --output app/src/main/assets/fonts/myfont.json --name myfont --char-height 11 --top-margin 1 --bottom-margin 1 --spacing 1- Reference the generated font in
toy-config.json:
{
"type": "scrolling_text",
"text": "HELLO GLYPH",
"font": "fonts/myfont.json",
"brightness": 1.0,
"frameIntervalMs": 80
}Important: charHeight + topMargin + bottomMargin should add up to 13
so the text fits the 13-row display.
If you want more font-tool options, see tools/README.md.
You can keep these arrays empty, but the easiest nice-looking setup is to add one effect and one filter.
| Type | What it does |
|---|---|
SCANLINE |
Single bright row sweep |
TRIPLE_SCANLINE |
Three-row sweep |
CRT_SHIMMER |
Alternating CRT-like shimmer |
PHOSPHOR_TRAIL |
Sweeping bright trail |
GLITCH_TEAR |
Short horizontal glitch movement |
| Type | What it does |
|---|---|
brightness |
Global brightness multiplier |
dead_pixels |
Turns specific pixels off |
blur |
Soft blur |
pip_boy |
Retro green-style look |
Example:
"effects": [
{ "type": "TRIPLE_SCANLINE", "frameIntervalMs": 50, "trailingIntervalMs": 3000 }
],
"filters": [
{ "type": "pip_boy", "value": 0.8 }
]You do not need to add a real Nothing API key just to try Toyph locally.
This repository already uses Nothing's documented debug value test.
If you do not have Android Studio yet, start here:
Use the official guide:
On most phones that means:
- Open Settings
- Open About phone
- Tap Build number seven times
- Go back to Developer options
- Turn on USB debugging
git clone https://github.com/<your-user>/toyph.git
cd toyphOpen the toyph folder and let Android Studio finish loading and syncing.
If Android Studio asks to install SDK components or accept Gradle settings, accept those prompts.
- Unlock the phone
- Connect it with a USB cable
- Accept the Allow USB debugging prompt if it appears
From the repository root, run:
# Windows
gradlew.bat installDebug
# macOS / Linux
./gradlew installDebugNothing's Glyph developer docs say you can enable debug access with:
adb shell settings put global nt_glyph_interface_debug_enable 1This debug mode automatically turns off after 48 hours.
On the phone, open:
Settings -> Glyph Interface -> Flip to Glyph -> Always-on Glyph Toy
Then choose Toyph from the list.
After you edit toy-config.json, glyphs, fonts, or code, run installDebug
again to update the app on the phone.
If you install Toyph again with the same app ID, Android replaces the old one. To keep multiple Toyph variants on the phone at once, each build needs:
- a different Android app ID
- a different visible toy name
Edit app/build.gradle.kts and change:
applicationId = "com.toyph.app"to something unique, for example:
applicationId = "com.toyph.app.mando"Edit app/src/main/res/values/strings.xml and change:
<string name="toy_name">Toyph</string>to something unique, for example:
<string name="toy_name">Toyph Mando</string>You can also change toy_summary in the same file if you want the entry in the
Glyph Toy list to be easier to tell apart.
Then build and install again. Repeat with a new app ID and name for each extra Toyph variant.
| Requirement | Notes |
|---|---|
| Android Studio or JDK 17 | Android Studio is the easiest setup path |
| Nothing Phone (4a) Pro | Current target hardware |
| USB cable | Needed to install from your computer |
| Real Nothing API key | Not required for local debug because this repo already uses test |
| Python 3.8+ | Needed only for font generation tools |
| Pillow | Needed only for tools/font-to-glyph.py |
app/
libs/
glyph-matrix-sdk-2.0.aar
src/main/
AndroidManifest.xml
assets/
fonts/
glyphs/
toy-config.json
java/com/toyph/app/
GlyphToyService.kt
ToyConfig.kt
effects/
filters/
pipeline/
sequence/
transitions/
util/
res/
tools/
font-to-glyph.py
generate-test-font.py
- Every frame is a
13 x 13matrix flattened toIntArray(169) - Frame intervals must stay at or above
30ms - Emulators do not support the GlyphMatrix SDK, so visual verification requires a physical device
See CONTRIBUTING.md for contribution guidance for effects, filters, glyph assets, docs, and pipeline changes.
Toyph is released under the MIT License.
- Copyright (c) 2026 Anton Vidishchev
- See LICENSE for the full license text
- The bundled
Auraboofont source intools/Auraboo.otfis attributed to Nick Tierce via the AurekFonts Auraboo archive. According to the upstreamAuraboo/readme.txt, the font is "Free for All Personal and Commercial Uses." - The bundled GlyphMatrix SDK AAR remains subject to Nothing Technology's own license terms
