feat: add AUR source package (limux) alongside limux-bin#50
Open
antonbarchukov wants to merge 81 commits into
Open
feat: add AUR source package (limux) alongside limux-bin#50antonbarchukov wants to merge 81 commits into
antonbarchukov wants to merge 81 commits into
Conversation
ci: add AUR publish workflow
Remove GTK SearchBar key capture from terminal and browser panes, and route terminal IME preedit/commit state through Ghostty so dead-key composition no longer opens find or loses input. Co-authored-by: Codex <noreply@openai.com>
fix: handle localhost URLs in browser pane Co-authored-by: Codex <noreply@openai.com>
…-open-browser-here Add browser action to terminal context menu
Co-authored-by: Codex <noreply@openai.com>
Introduce a modal settings window with General and Keybindings pages instead of restoring settings as a pane tab. Add app settings persistence for: - GTK color scheme - Ghostty color scheme - hover-to-focus terminal behavior Apply appearance changes live through libadwaita, keep Ghostty surfaces in sync with the selected scheme, and watch system theme changes through the portal/GSettings when the user chooses the system option. Refresh the pane, sidebar, and keybind editor styling to use theme-aware colors so the UI follows the selected appearance consistently. Also handle Ghostty config reload actions through the FFI bindings and make terminal hover-focus read from the current app config at runtime.
… to None instead of forcing light mode, so Ghostty’s “System” setting can fall back to the resolved GTK/libadwaita theme instead of getting pinned to light. In rust/limux-host-linux/src/app_config.rs:160, settings saves now refuse to overwrite malformed existing JSON, preserve unrelated top-level keys, and write atomically through a temp file + rename rather than writing in place.
… longer does a blocking portal read on the UI thread. Limux now boots using local GSettings state first, then creates the portal proxy asynchronously and reads org.freedesktop.appearance with a bounded timeout in rust/limux-host-linux/src/ window.rs:1588. Portal change signals also stop doing synchronous re-reads. The settings persistence path in rust/limux-host-linux/src/app_config.rs:161 now returns real save errors instead of only printing them, and malformed settings.json is recovered by backing it up and rewriting a fresh valid config in rust/limux-host-linux/src/app_config.rs:190. I also changed the settings callback flow in rust/limux-host-linux/src/settings_editor.rs:50, rust/limux- host-linux/src/pane.rs:157, and rust/limux-host-linux/src/window.rs:2845 so a failed save shows an alert and rolls the live config/theme back.
…s dark in rust/limux-host-linux/src/
app_config.rs. Specifically, when settings.json does not exist yet, Limux now creates:
"appearance": {
"color_scheme": "dark",
"ghostty_color_scheme": "dark"
}
Co-authored-by: Codex <noreply@openai.com>
Appearance settings
Replaces surgical widget reparenting with Ghostty-style atomic tree rebuild. The old code detached and reattached GLArea widgets on the same tick, which breaks GTK4's GL context lifecycle. New architecture: - SplitNode data model is the source of truth for split layout - SplitTreeContainer manages async rebuild: tear down old widget tree, then rebuild from the data model on the next idle tick - The one-tick separation between unrealize and realize prevents the GLArea breakage that caused the freeze - Scrollback is fully preserved across split/close operations Removes ~215 lines of surgical reparenting code from window.rs, replaced by data model mutations that delegate to the container.
Replaces the light background app icon with a dark variant (#1E1E2E background) while preserving and slightly brightening the blue gradient chevron. All sizes regenerated from 512px source.
Dark mode app icon
Co-authored-by: Codex <noreply@openai.com>
Replace pane reparenting with atomic split tree rebuild
Co-authored-by: Codex <noreply@openai.com>
Add a size check to package.sh that catches unoptimized libghostty builds before they get shipped. A Debug build is ~89MB vs ~30MB for ReleaseFast, and causes ~7x slower terminal IO throughput.
Instead of trusting whatever zig-out/ contains, package.sh now runs the zig build itself with -Doptimize=ReleaseFast. This prevents accidentally shipping a Debug build, which causes ~7x slower IO.
Keep the coalesced idle wakeup path from main, retain explicit GLArea renders, and redraw on remap so hidden terminals refresh when shown again. Co-authored-by: Codex <noreply@openai.com>
Fail fast when Zig or the Ghostty submodule is missing, and document the new package.sh build flow in the README.\n\nCo-authored-by: Codex <noreply@openai.com>
Fix: reject Debug builds of libghostty in packaging
* Fix 10+ second freeze on pane split/close Replaces surgical widget reparenting with Ghostty-style atomic tree rebuild. The old code detached and reattached GLArea widgets on the same tick, which breaks GTK4's GL context lifecycle. New architecture: - SplitNode data model is the source of truth for split layout - SplitTreeContainer manages async rebuild: tear down old widget tree, then rebuild from the data model on the next idle tick - The one-tick separation between unrealize and realize prevents the GLArea breakage that caused the freeze - Scrollback is fully preserved across split/close operations Removes ~215 lines of surgical reparenting code from window.rs, replaced by data model mutations that delegate to the container. * Wire control socket to GTK UI Connects the existing limux-control Unix socket server to the GTK window, enabling programmatic workspace management from external tools (limux-cli, scripts, editor integrations). New control_bridge module starts a socket listener in a background thread and dispatches commands to the GTK main loop via polling. Supported commands: workspace.create, workspace.list, workspace.rename, workspace.activate, workspace.close, surface.send_text. Also adds TerminalHandle::send_text() for injecting text into terminal surfaces, and pane::first_terminal_handle() for resolving the active terminal in a workspace. * Update app icon to dark mode variant Replaces the light background app icon with a dark variant (#1E1E2E background) while preserving and slightly brightening the blue gradient chevron. All sizes regenerated from 512px source. * Fix wrapped workspace root pane resolution Co-authored-by: Codex <noreply@openai.com> * host: coalesce ghostty wakeup idles Co-authored-by: Codex <noreply@openai.com> * Reject Debug builds of libghostty in packaging script Add a size check to package.sh that catches unoptimized libghostty builds before they get shipped. A Debug build is ~89MB vs ~30MB for ReleaseFast, and causes ~7x slower terminal IO throughput. * Build libghostty with ReleaseFast automatically in package.sh Instead of trusting whatever zig-out/ contains, package.sh now runs the zig build itself with -Doptimize=ReleaseFast. This prevents accidentally shipping a Debug build, which causes ~7x slower IO. * host: reconcile render throttling with main Keep the coalesced idle wakeup path from main, retain explicit GLArea renders, and redraw on remap so hidden terminals refresh when shown again. Co-authored-by: Codex <noreply@openai.com> * Clarify packaging prerequisites Fail fast when Zig or the Ghostty submodule is missing, and document the new package.sh build flow in the README.\n\nCo-authored-by: Codex <noreply@openai.com> * host: wire control socket into GTK UI Align the GTK host bridge with the current control protocol, remove the CLI fallback that would double-run workspace commands, and dispatch control commands onto the GLib main context directly. Co-authored-by: Codex <noreply@openai.com> * host: drop unused control helper Remove the stale pane helper pulled in from the original PR branch so the host bridge stays warning-free under stricter checks. Co-authored-by: Codex <noreply@openai.com> --------- Co-authored-by: am.will <42459108+am-will@users.noreply.github.com> Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Bump workspace version to 0.1.11 for the rebuilt release artifacts. Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
- Add PKGBUILD-source.template that builds from source on user's machine - Add validation jobs that gate AUR publishing: - validate-src: full zig+cargo build in Arch container - validate-bin: tarball content verification - Both AUR packages conflict with each other to prevent dual-install Closes am-will#5
- Fix webkit2gtk-6.0 -> webkitgtk-6.0 (wrong Arch package name) - Add ghostty as makedepend and use /usr/share/ghostty for resources instead of ghostty/zig-out/share which doesn't exist with -Dapp-runtime=none - Deduplicate version extraction into a shared resolve-version job - Pass SHA256 via job outputs instead of downloading tarball twice - Guard publish jobs with repository check to skip cleanly on forks - Replace manual retry loop with curl --retry
The source-built binary was missing gladLoaderLoadGLContext symbols that libghostty.so needs at runtime. Cargo's --gc-sections discards them since nothing in Rust references them directly. Fix: build glad as a shared library from Ghostty's vendored source, install it alongside libghostty.so, and patch the binary with patchelf to load it. Also adds missing debug package conflicts between limux and limux-bin.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #42 #47 (#5)
Hold on merging this please, untested, I'm on macOS away from PC, can't fully test until later tonight.