Repository navigation
Replies: 1 comment 3 replies
|
splitting this into the two things you're really asking, because my answer differs on each. the agtermCore hoists: yes, I want these. Pulling the palette catalog, control dispatch, custom-command matching, keymap loading, the switcher model and the rest out of the app and down into the host-free core is a real improvement for macOS on its own: that logic is inline in the app today, so it can only be exercised by running the whole thing under Xcode, and moving it into the core makes it pure and unit-testable in isolation. Nothing to do with Linux, it's just better structure. I'd take them as small, self-standing PRs, one coherent module (or a few closely related ones) per PR, each carrying its unit tests and repointing the macOS side onto the new core module in the same PR. That last part is the important one: the risky bit isn't the extraction, it's rewiring the Linux frontend: no, and this is a scope call, not a knock on the work. Desktop Linux is too exotic for me to take on as a solo maintainer. It's a second full UI, larger than the shared core itself, on a toolchain I don't work in (GTK4/libadwaita, C-interop, its own packaging, a separate libghostty build and CI), all of which I'd have to review and then own for good. Most of what makes agterm what it is lives in the native layer that doesn't port anyway: the so: bring the core hoists as reviewable PRs and I'll happily review them, they help macOS either way. The Linux app I'd rather you keep as your own fork. Glad it exists, it's just not something I can maintain here. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
UPDATE - Linux port repository https://github.com/melonamin/agterm-linux
I've built a working Linux port of agterm and would like to know if you'd want it upstream. Asking before opening a PR, since onboarding a second platform is your call.
It's a native GTK4/libadwaita app (agterm-linux/) on the same upstream libghostty (pinned), Swift 6 strict concurrency.
The approach
Not a rewrite, and not a parallel Linux codebase. It sits on the existing host-free agtermCore and mirrors the macOS app's structure: thin UI, shared controller logic. All in pure Swift.
Rather than duplicating logic on the Linux side, I pushed it down into agtermCore as host-free, unit-tested modules - ~20 hoists: ControlDispatcher, PaletteCatalog, CustomCommandEngine, KeymapStore, SessionSwitcherModel, OverlayCapture, and others. The GTK layer is thin glue on top, same as the macOS UI.
Rough split:
agtermCore stays free of GTK/AppKit/GhosttyKit, so the macOS build is untouched.
What it means for the macOS side
Net positive even if you never ship Linux: the hoisted modules let macOS drop several inline copies (control dispatch, palette catalog, custom-command matching, keymap loading) and share one tested implementation.
The ask
Would you want this upstream? If yes, what form fits best? I can split it into reviewable PRs: the agtermCore hoists first (they stand alone and help macOS), then the Linux target.
Here is the PR in my fork
All reactions