@kahliburke Let me know if you’d rather have this feedback as an issue, but going through the demos, it seems like pixel graphics are not working in WezTerm, despite WezTerm’s supposed support for both Kitty and Sixel graphics (in addition to the iTerm protocol, which I use most of the time)
BTW, thanks for adding the light themes. They look good! I might want a bit more contrast (actually black foreground text instead of gray), but that’s something to play around with at some point…
julia> using Pkg
julia> Pkg.activate("demos/TachikomaDemos")
Activating new project at `C:\Users\me\demos\TachikomaDemos`
julia> Pkg.instantiate()
No Changes to `C:\Users\me\demos\TachikomaDemos\Project.toml`
No Changes to `C:\Users\me\demos\TachikomaDemos\Manifest.toml`
julia> using TachikomaDemos
ERROR: ArgumentError: Package TachikomaDemos not found in current path.
- Run `import Pkg; Pkg.add("TachikomaDemos")` to install the TachikomaDemos package.
I don’t understand how the existing instructions can work without setting a
working directory containing demos/TachikomaDemos. Looking at the source
tree for Tachikoma it appears that there is a demos directory containing a TachikomaDemos directory with the sources for that package. Maybe the
instructions would work if you start from the install location for Tachikoma?
If I cd to .julia/packages/Tachikoma/...../demos/TachikomaDemos/ then
the commands work and I am able to run launcher() and all the demos including
the Life one which now has more pixels and equal aspect ratios in the display x,y.
Nice!
I don’t have any ideas on how to have the demos more integrated with the
module. You could register a module for the demos as one approach.
Those looked like they were potentially just unicode block drawing characters (you’re going to have to look at these at full size, not the scaled-down display in Discourse), but I think that it’s just the actual image data that’s limited here. When I make my terminal smaller, it looks like
If I force the kitty protocol with export TACHIKOMA_GFX=kitty, neither demo shows any image data. Maybe because, as it turns out WezTerm only supports that protocol partially. It also doesn’t work inside tmux, but then, I don’t think I ever really tried to get Sixel working inside tmux, and probably could spend more time on that. It does work over SSH!
I tried out the kitty-protocol too, inside the actual Kitty terminal emulator. The animation performance in full-screen is much better. Not surprising, since Sixel has a reputation for being low-performance. I don’t know if adding support for the iTerm Inline Images Protocol, which WezTerm also supports (and which I use routinely and have working insidetmux), would be an option that would provide better performance
Hi everyone! Tachikoma.jl v2.0.1 is out with a bunch of fixes and improvements since the v2.0 launch.
Highlights:
Frame timing is back to rock-solid — restored deadline-based frame pacer that locks precisely to target FPS (60, 120, 240, whatever you throw at it). The v2.0 Timer+Channel mechanism introduced ~2ms jitter per frame; this release fixes it with cooperative sleep() that also keeps sixel rendering flicker-free.
Full Unicode grapheme support — zero-width combining marks (ṅ, n̈), CJK wide characters (你好), and precomposed glyphs now render correctly across all widgets: Paragraph, Table, TabBar, StatusBar, and the terminal emulator. Thanks to @ronisbr for the core Cell/Buffer work.
New WidgetScroll widget — wrap any widget in a scrollable 2D viewport with click-drag panning, scroll wheel, keyboard navigation, and scrollbars. Great for dashboards larger than your terminal. Also by @ronisbr.
Launcher overhaul — demos are now organized in a collapsible TreeView by category (Visual, Widgets, Data, Input, System, Test) with full mouse support.
Performance — lazy pixel framebuffer clear saves ~5MB/frame memset when you’re not using sixel graphics; ASCII fast path skips grapheme segmentation for normal text.
Windows resize fix — terminal size detection now works correctly after stdout redirect. Thanks @davidanthoff.
Hi everyone! Tachikoma.jl v2.1.0 is out with a bunch of fixes and improvements since the v2.0 launch.
Highlights:
Frame timing is back to rock-solid — restored deadline-based frame pacer that locks precisely to target FPS (60, 120, 240, whatever you throw at it). The v2.0 Timer+Channel mechanism introduced ~2ms jitter per frame; this release fixes it with cooperative sleep() that also keeps sixel rendering flicker-free.
Full Unicode grapheme support — zero-width combining marks (ṅ, n̈), CJK wide characters (你好), and precomposed glyphs now render correctly across all widgets: Paragraph, Table, TabBar, StatusBar, and the terminal emulator. Thanks to @ronisbr for the core Cell/Buffer work.
New WidgetScroll widget — wrap any widget in a scrollable 2D viewport with click-drag panning, scroll wheel, keyboard navigation, and scrollbars. Great for dashboards larger than your terminal. Also by @ronisbr.
Launcher overhaul — demos are now organized in a collapsible TreeView by category (Visual, Widgets, Data, Input, System, Test) with full mouse support.
Performance — lazy pixel framebuffer clear saves ~5MB/frame memset when you’re not using sixel graphics; ASCII fast path skips grapheme segmentation for normal text.
Windows resize fix — terminal size detection now works correctly after stdout redirect. Thanks @davidanthoff.
It feels like one day I’m going to come back here and Tachikoma.jl will be competing with emacs for number of features and extensibility. Great work!
Looking forward to setting up some skills for building interactive ML training dashboards with Tachikoma. That’s my new favorite thing to do, just build a dedicated interface for visualization per project / experimental workflow.
Made a dashboard for our training data sidecar with Kaimon.jl in around an hour, including the planning session. Now I get to see it go brrrr in style Apparently agents can actually look at the rendered output and use that as feedback for improvement You don’t need any fancy computer/browser use or VLM capabilities.
● Bash(julia --project=. -e '
using Tachikoma…)
⎿ ====== ENCODED ======
╭─ campfire-dashboard ─────────────────────────────────────────────────────────────────────────────╮
│localhost:12345 │
… +60 lines (ctrl+o to expand)
⎿ (timeout 1m)
⎿ Allowed by auto mode classifier
● All four views render correctly with proper sparklines and tables. Now testing the CLI help path quickly.
A quick update on Tachikoma.jl: We’re up to release 2.3.5 and this patch release brings some love for Windows users. Support for Windows has lagged behind due to lack of support for certain modern terminal features which come naturally in POSIX operating systems.
However, we’re making efforts to prevent you wanting to defenestrate Tachikoma! Notably, 2.3.5 fixes and improves issues with app resizing and terminal window size detection, gets mouse support working at least in some terminal apps I’ve tried, and fixes some keyboard issues too.
Some downstream projects like Kaimon.jl will get new releases to incorporate this patch, so Windows functionality should improve for those as well.
FYI: Sixel.jl now detects and passes tests for sixel functionality
in recent windows terminal with sixel support (1.24.xxx works for me)
on win11 with julia 1.10.11.
Tachikoma (2.3.5) does not detect that sixel works here. I was
able to force the use by setting ENV["TACHIKOMA_GFX"] = "sixel"
and the TachikomaDemos in the launcher() now show sixels!
Thanks for the test and reporting on this. Not sure if the detection will work properly, but we could try to get that working. Curious if you could test on any other terminals like WezTerm or the winghostty port?
Sixel.ij still fails to detect the capability and run when I run julia 1.10.11 from a recent mintty terminal on win11 so
I’m not sure why it is working with the Windows Terminal.
Maybe there is some special code…