logoalt Hacker News

Show HN: Godot and Rust based multiplexer (terminal panes and more)

65 pointsby 1nv1ntoday at 4:03 PM36 commentsview on HN

I wanted to share my side-project: gPTY. Started off as an idea to combine Godot and Rust in a project (two stacks I wanted to use more to learn more). The base inspiration was tmux - simply allow spawning multiple PTYs and then let the user grid/tile them how they see fit.

But since we have the Godot game engine at our disposal, we can do some more interesting things, like add an FPS counter, and then subsequently also let people set their preferred FPS (the idea being the potential lower power draw if someone's running it on a laptop on battery power vs someone running it on a desktop with high/native FPS). In its current state, with me using Oh-my-Pi a lot, it's evolving into a terminal workspace that can be used for orchestrating autonomous AI agents by way of dogfooding (or you know, just run herdr inside of gPTY - it's the better orchestrator and just good software - I found it after starting this project, and now I'm finding myself using it a lot).

Also, we're not limited to just terminals. Since we have Godot, we have basically a 2D (and potentially a 3D) canvas to play with. We can already full-screen the app for "zen" mode, no taskbar, no distractions. TUI die-hards can have their media or other apps entirely in terminal panes.

There has been some ground-work on getting Markdowns displayed properly done and I want to work on some kind of Wiki framework for local knowledge-management next, then create more types of panes (think native audio/video on a media pane, that sits alongside your terminal pane), and some simple 2D games (like snake) to prototype. More details are on the ROADMAP.

What's not easy (and probably won't happen) is a browser. Having done a couple of (small) projects using Electron already, the temptation to ditch Godot/Rust (learning curve) did come up (and also the ecosystem, the ease with which I could pull components and use web technologies - development velocity would definitely be higher there). But on the flipside, given all of the available LLM and AI support that we are privileged to have today, I figured the velocity should be comparable depending on how much I leaned on those. And lean I did.

Godot/Rust seemed the better call to me and my intent anyway - going with the 'it's not just the end but the journey that matters' philosophy. So yes, there has been heavy use of LLMs & AI to generate a lot of the code. But I do review and steer actively, not relying solely on vibes, and there's a few bits here & there that have been human authored.

There are definitely a lot of polish and QoL items that need to land to make the end user experience better, but in the meantime, let me know your thoughts and/or concerns!

Repository: https://github.com/godot-pty/gpty

Docs/Blog: https://godot-pty.github.io/gpty/


Comments

rcr-antitoday at 5:34 PM

If you squint, Godot has a cross platform hardware accelerated GUI. The editor is itself, in a sense, a Godot app and has builds for VR Headsets, Android, web apps, all the usual platforms. The extension api works pretty good too for Rust, and Rust itself has a fantastic cross platform and WASM story. It might be cursed, but it can get complicated stuff out the door and in anyone's hands fast.

edit: they also recently created libgodot, which flips the model. Your application owns and controls whatever components you want to pull from Godot. Being open source and relatively legible of a code base you could presumably strip out a lot you don't need.

nitinreddy88today at 4:17 PM

A project without screenshots - I dont know how they expect us to understand unless we read everything

show 1 reply
sebastianconcpttoday at 6:08 PM

Can you add a "why?" / "why now?" section? Don't be another project that is a bunch of how that is leaving out to explain why it exists or exemplify what classes of problems it unlocks solutions for (applicability).

show 1 reply
icaritotoday at 5:28 PM

Love to see Godot used creatively beyond games! The terminal is for sure an area that can see innovation, why not!

railkatoday at 6:18 PM

I tried different terminals and multiplexers for agent development: tty7, Warp, Herdr... Now my favorite is tty7. It does exactly what i wanted from a modern terminal, what Warp should have become.

password4321today at 6:16 PM

Fyne.io in Go also doesn't want to support a browser, but that is a great way to expand mindshare (similar to implementing a solid data grid in a UI toolkit).

submaintoday at 5:04 PM

The documentation is really hard to read. It's full of claudisms and verbosity. I highly recommend you to do a human review on the whole thing.

bob1029today at 4:39 PM

While I appreciate the creativity around using a game engine for non gaming applications, this does not seem like a particularly good fit.

If most of your problem is 2d window/text stuff, the web browser is probably the best foundation to work with. UI and hud functionality in COTS game engines is light years behind what chromium and friends can do today.

show 1 reply
tancoptoday at 5:04 PM

Godot is a pretty monolithic engine and I don't know if you can really compile it down to a reasonable size for non game use cases. The scripting language is pretty slow and I remember coding in C++ was painful even after 4.0. I think you're better off with Raylib, Bevy or plain SDL.

show 2 replies
alanningtoday at 4:39 PM

Is the intended use to improve automation by agents during verification? To make it easier to drive Godot apps during e2e tests, for example?

show 1 reply
deractoday at 4:34 PM

lmao how is this on the front page at the 2 spot? People upvoting based on seeing buzzwords I assume? It's cool that small projects can get recognition here but this is not useful software

show 3 replies
colechristensentoday at 6:35 PM

I've done a lot of things reusing/modifying the internals of alacritty [1] to put terminals in things. TeX in the terminal [2], a terminal in minecraft [3], Alacritty in Godot [4], and not pictured, alacritty in a swift plugin for macos/ios/ipados all at various levels of completion.

1. https://alacritty.org/

2. https://blog.fangorn.io/tex-in-terminal

3. https://anvil.fangorn.io/fangorn/huorn-minecraft

4. https://blog.fangorn.io/alacritty-in-godot

evrimoztamurtoday at 4:24 PM

This is such a cursed combination... I really don't understand what you get from Godot that benefits you for building a TTY "multiplexer."

Wildly vibe-coded to the extent that it's more misguided than Doom on a pregnancy test...

Also looking at OP's notes here, there doesn't even seem to be a need for this to exist, "FPS counter" ..? Perhaps, I don't know, fake terminals on a spaceship or something. Yueash...

show 5 replies
w2tdnrla911today at 7:47 PM

[dead]

markaiustoday at 4:36 PM

I'll be honest with you: I'm not going to use what you have made. I don't mean that offensively, it's just not what I want to use for my workflow. Keep making tools you enjoy using though. That's the spirit of the computer.

That said, for your browser problem, what if you embed the browser inside of godot? Chromium embedded framework does this. I was able to get this to work for me to see Chrome inside of my godot exported projects. https://github.com/dsh0416/godot-cef I believe this is only for desktop exports though, no html5/mobile builds.

Only downside is you have to use Chromium ;)

* putting a quick note in here-- godot-cef is not my project

show 1 reply