[HN Gopher] Show HN: Horizon - GPU-accelerated infinite-canvas t...
___________________________________________________________________
Show HN: Horizon - GPU-accelerated infinite-canvas terminal in Rust
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.
Author : petersunde
Score : 37 points
Date : 2026-03-17 18:14 UTC (4 hours ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| tekacs wrote:
| This is fun! I switched to https://github.com/manaflow-ai/cmux
| for a while, but had to switch back to Ghostty due to its
| unreliability, high memory and CPU usage and a bunch of bugs.
|
| This 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)
| petersunde wrote:
| Thanks for trying it! I totally forgot about multiple screens
| because I use multiple workspaces on an 8K screen.
|
| Splitting across multiple screens shouldn't be too difficult
| since Horizon already supports multiple sessions. I'll try to
| get it working tomorrow :)
| cadamsdotcom wrote:
| Maybe I'm old but this sounds like MDI (multiple-document
| interface) of the late 90s.
|
| 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!
| bigfishrunning wrote:
| I think MDI style interfaces went out of fashion because there
| were a lot of programs that implemented an entire window
| manager and then only really needed one window. This added a
| ton of complexity that wasn't needed most of the time, because
| window management is really a job for a _different_ program.
| cadamsdotcom wrote:
| You're getting it ;)
| fritzo wrote:
| I was hoping this would be an infinite length terminal view, like
| the opening backstory in Star Wars
| ms_menardi wrote:
| This is great! Two things I noticed immediately:
|
| 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.
| petersunde wrote:
| Thanks for letting me know about the settings/minimap overlap,
| I'll fix that. And yes, zoom is on the list! I'll implement it
| tomorrow. Just wanted to get the core working first without
| hogging the CPU.
| cedws wrote:
| Spatial memory is really underutilised in computing.
|
| 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
| tekacs wrote:
| libghostty already powers quite a few alternate terminals:
|
| https://github.com/Uzaaft/awesome-libghostty
|
| This project uses alacritty-terminal, so it's also very much
| 'not from scratch', just using a Rust library to that effect.
| petersunde wrote:
| libghostty looks really promising! I went with Alacritty as the
| terminal backend because its core is written in pure rust.
| sakopov wrote:
| Will there be any built releases available?
| petersunde wrote:
| Yes, though it's still early days. You can install it from
| crates.io with cargo install horizon-ui or grab a prebuilt
| binary from
| https://github.com/peters/horizon/releases/tag/untagged-0e65...
|
| Each commit to main also produces downloadable unsigned
| binaries in the GitHub Actions tab.
| jauntywundrkind wrote:
| Feels very Niri like, in a positive way. Niri's "scrollable"
| interface always has room to the right & down!
|
| 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.
| hokkos wrote:
| The last thing I want is the figma experience for my terminal
___________________________________________________________________
(page generated 2026-03-17 23:00 UTC)