Title: [Feature]: Live system-theme sync on Linux (read colors from a well-known file, like Omarchy's ~/.config/omarchy/current)
Problem
Custom themes currently only get into T3 Code via Settings → Appearance → Import Theme, which opens a native file picker and copies the selected VS Code-style theme JSON into app storage. That's fine for a one-off theme, but it breaks any workflow where colors are generated dynamically — e.g. matugen deriving a Material You palette from the current wallpaper and regenerating it on every wallpaper change. Each regeneration currently requires manually reopening the file picker and re-selecting the same file.
Prior art
The t3code-omarchy fork already solved this for Omarchy specifically (see #2175, section F2 "Omarchy System Theme Projection"):
- Desktop theme discovery reads Omarchy state from
~/.config/omarchy/current.
- Theme source becomes
omarchy when that state is available.
- Web theme variables project the accent/foreground/background/selection/terminal colors from that file into the UI live.
- Missing state degrades safely (falls back to the normal theme source).
Omarchy's ~/.config/omarchy/current is itself just the output of a matugen-style generator, so this is effectively "watch a file matugen (or any wallpaper-colors tool) writes, and live-apply it" — not Omarchy-specific plumbing.
Request
Add an equivalent, generalized mechanism upstream (not tied to Omarchy specifically):
- Watch a configurable file path (e.g.
~/.config/t3code/theme.json or similar) for a small color-token JSON.
- When present and valid, treat it as a live theme source and re-apply on file change — no restart, no manual re-import.
- Missing/invalid file falls back to the current built-in/custom theme behavior, same as the fork's degrade-safely approach.
This would let any external tool (matugen, pywal, wpgtk, Omarchy itself, a custom script) drive T3 Code's theme the same way they already drive terminals, window managers, and other apps, without needing app-specific integration code or a fork.
Alternative / smaller ask
If a generic file-watch mechanism is too much scope, even exposing the Import Theme action via a CLI flag or IPC/deep-link (t3code://import-theme?path=...) would let external tools trigger re-import programmatically instead of requiring a manual click-through each time.
Title: [Feature]: Live system-theme sync on Linux (read colors from a well-known file, like Omarchy's
~/.config/omarchy/current)Problem
Custom themes currently only get into T3 Code via Settings → Appearance → Import Theme, which opens a native file picker and copies the selected VS Code-style theme JSON into app storage. That's fine for a one-off theme, but it breaks any workflow where colors are generated dynamically — e.g. matugen deriving a Material You palette from the current wallpaper and regenerating it on every wallpaper change. Each regeneration currently requires manually reopening the file picker and re-selecting the same file.
Prior art
The
t3code-omarchyfork already solved this for Omarchy specifically (see #2175, section F2 "Omarchy System Theme Projection"):~/.config/omarchy/current.omarchywhen that state is available.Omarchy's
~/.config/omarchy/currentis itself just the output of a matugen-style generator, so this is effectively "watch a file matugen (or any wallpaper-colors tool) writes, and live-apply it" — not Omarchy-specific plumbing.Request
Add an equivalent, generalized mechanism upstream (not tied to Omarchy specifically):
~/.config/t3code/theme.jsonor similar) for a small color-token JSON.This would let any external tool (matugen, pywal, wpgtk, Omarchy itself, a custom script) drive T3 Code's theme the same way they already drive terminals, window managers, and other apps, without needing app-specific integration code or a fork.
Alternative / smaller ask
If a generic file-watch mechanism is too much scope, even exposing the Import Theme action via a CLI flag or IPC/deep-link (
t3code://import-theme?path=...) would let external tools trigger re-import programmatically instead of requiring a manual click-through each time.