This is the repo for ProxiTalk OS. ProxiTalk is a custom operating system designed for the ProxiTalk "platform", which is a handheld communication and gaming device.
Browse, favorite, and launch every installed experience on the device.
Flagship TTS communicator for typing and speaking phrases fast.
Toggle app visibility and tweak how entries appear in the launcher.
Pick which engines are active, adjust voices, and tune speech defaults.
Scan for nearby networks and connect directly from the device.
Soft-restart the runtime when you need a quick clean slate.
Chat with The Garden forums directly from your ProxiTalk handheld.
Minimalist browser tailored to the 128x64 screen for quick lookups.
Proof-of-concept monthly calendar for jotting down upcoming events.
Displays current time/date and offers simple timer capability.
Lightweight editor with syntax highlighting and basic file tools.
Browse monochrome previews of locally stored images.
Check the public repo for updates and sync apps/overlays in place.
4-track, 16-step music tracker with synthesised tones.
Drop in an MP4 and play it back on the ProxiTalk display.
Retro raycasting FPS demo lovingly inspired by DOOM.
Drop-block puzzle classic adapted to the 1-bit panel.
A life countdown overlay that displays approximate seconds remaining for you to live. Can be turned off in app settings if you want less existential dread.
Configure screen brightness, speaker volume, and more without leaving the app you're in.
ProxiTalk/
├── core_os/ # Runtime (entry points, backends, packages, apps_runtime)
├── apps/ # core_os's own apps (launcher, proxi, ...) — what's actually running
├── old_apps/ # Legacy v1 apps, kept for reference while porting the rest into apps/
├── config/ # Shared configuration files
├── tts/ # TTS engine binaries and voice models
├── assets/ # Fonts and emulator icons (do not modify)
└── files/ # User files: images, videos, etc.
The runtime is
core_os/plus the repo-rootapps/tree — see wiki/Development - Core OS Architecture.md for the current app/backend API.old_apps/is the old v1 tree, left in place only as reference material for porting the remaining apps intoapps/; it is not run by anything anymore.
core_os/ owns its own path config per backend now — core_os/backends/emulator_windows/config/paths.py (Windows) and core_os/backends/device_pi/config/paths.py (Raspberry Pi) — rather than reading the root config/paths.py / config/emulator/paths.py below. Those root files are legacy, kept only because the reference-only apps//overlays/ trees still import them.
When setting up a new install, update the relevant file for your platform. The key paths to set are:
| Variable | What it points to |
|---|---|
PIPER_BIN |
Path to the piper or piper.exe binary |
MODEL_PATH |
Default Piper .onnx voice model |
VOICEVOX_BIN |
Path to the VoiceVox executable (if using VoiceVox) |
VOICEVOX_HOST / VOICEVOX_PORT |
VoiceVox server address (default localhost:50021) |
OPENJTALK_HTSVOICE_DIR |
Folder containing OpenJTalk .htsvoice files |
CACHE_DIR |
Where Piper caches synthesised audio |
FILES_DIR |
Where user files (images, video) are stored |
The other paths (APPS_DIR, OVERLAY_DIR, ICON_DIR, FONT_PATH, etc.) should follow naturally from your repo root and typically don't need manual edits.
tts/
├── piper/ # Piper binary + .onnx voice models
└── openjtalk/ # OpenJTalk .htsvoice files
Drop additional Piper .onnx model files into tts/piper/ to make them available in TTS Settings. VoiceVox is an external application that must be installed and running separately.
Generated automatically on first run. You can edit it directly or use the in-app settings screens. Key fields:
| Field | Default | Description |
|---|---|---|
tts_engine |
"piper" |
Active TTS engine: "piper", "voicevox", or "openjtalk" |
disabled_tts_engines |
[] |
Engines to hide even if installed |
piper_model |
null |
Override the default Piper model path |
voicevox_speaker_id |
2 |
VoiceVox speaker/character ID |
auto_sleep_minutes |
5 |
Minutes of inactivity before the display sleeps (0 disables) |
pinned_apps |
[] |
Apps pinned to the top of the launcher |
hidden_apps |
[] |
Apps hidden from the launcher |
disabled_overlays |
[] |
Overlays that should not run |
keyboard_device_path |
null |
Override the keyboard input device path (Linux; e.g. /dev/input/event0) |
debug_piper_wav |
false |
Write .wav files alongside cached .raw audio for debugging |
A Python dict that corrects TTS mispronunciations. Add entries as needed:
word_map = {
'pidge': 'piddge', # key: what you type, value: what the TTS pronounces
}Plain text file with one word per line, used by the Proxi communicator for autocomplete suggestions. A separate config/autocomplete_words_japanese.txt is used when Japanese input is active. Edit either file to add or remove suggestions.
Required if you use the Discourse Chat app. The file is excluded from git — create or edit it with your forum credentials:
USERNAME=your@email.com
PASSWORD=yourpassword
EMAIL=your@email.com
SESSION_TOKEN= # optional, leave blank
CHAT_URL=https://your-forum.discourse.group/chat/c/channel-name/IDThe gallery, video player, and other apps read from this folder. Drop images (.png, .jpg, .gif) and videos (.mp4) here to make them available in those apps.
- Python 3.7+
- PIL (Pillow) for image processing
- pygame (for Windows emulation)
- keyboard (for Windows input handling)
# Windows
python core_os/entry_emulator_windows.py [--dev]
# Raspberry Pi (over SSH)
python3 core_os/entry_device.py [--dev]On Windows, this will start the emulated display. On the Pi, it runs on actual hardware.
Two optional assets live in the repo root:
startup.wav– plays once through the speaker stack or emulator when the OS boots.startup.gif– 128×64 (or smaller) monochrome animation that displays while the audio runs.
If you delete either file, that portion of the startup sequence is skipped (no errors are raised). Provide your own versions by dropping replacements with the same filenames in the repo root. Animated GIF frames are automatically centered and dithered, so you can work in grayscale and let the runtime handle the 1‑bit conversion.
See wiki/Development - Core OS Architecture.md for the current app structure, metadata.json format, and the full package API (display_gfx, ui, tts, audio, input, images, animation, leds, sleep, language, storage, apps_registry). The tutorial that used to live here (interfaces.AppBase, context["app_manager"], context["drawing"], the F1 debug overlay walkthrough) described the old v1 runtime, which has been removed — that API no longer exists in the running system.