Show HN: Horizon – GPU-accelerated infinite-canvas terminal in Rust (github.com)
Tabs, splits, and tmux work fine until you have several projects open with logs, tests, and long-running shells. I kept rebuilding context instead of resuming work. Horizon puts shells on an infinite canvas. You can arrange them into workspaces and reopen later with layout, scrollback, and history intact.
Built in 3 days with Claude/Codex, dogfooding the workflow as I went. Feedback and contributions welcome.
21 comments
[ 4.0 ms ] story [ 49.0 ms ] threadThis makes a lot of sense, but... it'd be great to allow pulling out of a canvas into a second canvas for those of us with multiple screens (you at least end up needing one window per screen).
In general it feels like... more structure rather than less feels like it'd be the smoothest experience. I'll play with your Ctrl+K shortcut and see if it ends up feeling like I can get everywhere that I need quickly.
But... nice work!
Note for jj users like me: you need to `git lfs pull` if you want to `cargo run --release`!
Update: No luck creating any 'shell' workspaces (it looks like you use GNU-only flags to script) – I'll push a fix once I find it.
Also: the AGENTS.md is wrong JFYI - it points to portable-pty, when this is using alacritty_terminal's tty (on rustix-openpty)
Went the way of the dodo probably because it’s hard for non power users to grok.
But this is a power user tool - seeems like a fit!
the settings window overlaps with the minimap.
I think it'd be neat if you could zoom? The reason I'd use this over a tiling window manager is to fit more terminals on a screen at once. I think if there was a capability like the Strategic Zoom in Supreme Commander (video: https://www.youtube.com/watch?v=9hJY7exr9KU) it would be much easier to manage many terminals at once, and take advantage of the infinite canvas.
When libghostty[0] releases maybe you could use that so you don't have to build everything from scratch.
[0]: https://mitchellh.com/writing/libghostty-is-coming
One of the Niri tools I built for myself is to let me insert a new row up top, to expand up. Thats afaik not super easy in base Niri, constraints the spatial growth some.
I'm pretty close to having some persistence of terminal windows, tmux, etc in Niri, with some tools to dump current state nicely. Doing an actual restore operation would be a good thing to build towards.
And then I’d like my window manager to be infinitely scrollable like a canvas with like 3 fingers on my touchpad. Do any exist like that?
I played with egui before, I really enjoyed it, but I remember I stumbled across some issues had to use dioxus instead.
I looked for a general infinite canvas window manager and discovered InfiniteGlass[1]. I wasn't able to install it though, even on Ubuntu Mate 18.04, which the installation instructions are supposed to be tested for.
I've switched to KDE recently, using its default terminal, and I feel like I can't miss things like opening the file browser from the terminal or vice versa anymore, so now what I really want is an infinite canvas desktop environment.
[1]: https://redhog.github.io/InfiniteGlass/