Skip to content

fix(host): restore terminal links and window controls - #146

Draft
gmanvelian wants to merge 1 commit into
am-will:mainfrom
gmanvelian:agent/terminal-links-window-controls
Draft

fix(host): restore terminal links and window controls#146
gmanvelian wants to merge 1 commit into
am-will:mainfrom
gmanvelian:agent/terminal-links-window-controls

Conversation

@gmanvelian

Copy link
Copy Markdown

What changed

  • Restore reliable terminal link activation with Ctrl+primary-click and a context-menu Open Link action.
  • Let registered system handlers receive link schemes, including application and local-file links, to match Ghostty's behavior.
  • Always render the Limux libadwaita header and guarantee minimize, maximize, and application-close controls.
  • Add a linked implementation handoff at docs/session-logs/2026-08-10-terminal-links-and-window-controls.md.

Why

Terminal links could become inert when a user Ghostty configuration did not define an open_url binding. Separately, on Wayland compositors that advertise zxdg_decoration_manager_v1 (notably KWin/Plasma), Limux suppressed its header even though libadwaita had already selected client-side decorations, leaving no window controls.

Validation

  • cargo fmt --check
  • LD_LIBRARY_PATH=ghostty/zig-out/lib cargo test -p limux-host-linux (227 passed)
  • cargo clippy -p limux-host-linux -- -D warnings
  • cargo build --release -p limux-host-linux --bin limux

}
}

fn open_url_in_external_browser(url: &str) {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would it make sense to keep the existing http/https/mailto allow-list here, or add an explicit confirmation for other schemes? Terminal output can control OSC 8 links, so this now sends file://, GVFS, and custom application schemes straight to GIO/xdg-open. Is that a concern?

let header = if provides_decorations {
None
} else {
// Always render the header bar. `adw::ApplicationWindow` installs its own

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could we rebase this on current main and preserve KWin server-side decoration path? main now requests server-side decorations after present(), while this block always forces client-side decorations and currently conflicts with that code. Is losing that KWin behavior a concern?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants