You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
limux-cli exposes a rich set of control methods (pane.list, browser.open_split, browser.navigate, browser.snapshot, browser.click, browser.fill, screenshots, cookies, storage, tabs, etc.) and limux-core/src/lib.rs has a Dispatcher that handles all of them. But the GTK host's control_bridge.rs only registers workspace.* + surface.send_text, so calling any other method against the running daemon returns -32601: unknown method.
The limux-coreDispatcher operates on an in-memory ControlState that's never connected to the real GTK widgets, so swapping it in as-is wouldn't drive WebKit either. This needs a GTK-facing implementation.
Same gap exists on am-will/main — never been wired upstream. Related: #21.
Scope
Wire the following against real GTK state (workspace → pane tree → tab → webkit6 WebView / ghostty terminal):
Need a surface_id → {WebView | TerminalHandle} registry (update on tab create/close)
JS-based methods (snapshot, click, fill, get.text, etc.) need webkit6::WebView::evaluate_javascript callback bridged to the control command's mpsc::Sender via the GTK main context
browser.screenshot uses WebView::snapshot (async, bridge the same way)
Keep error codes aligned with what limux-core/src/lib.rs already uses (-32004 not_found, -32602 invalid_params, etc.)
Plan
Implement on mvbmir/dev first so it ships in daily-driver builds
Problem
limux-cliexposes a rich set of control methods (pane.list,browser.open_split,browser.navigate,browser.snapshot,browser.click,browser.fill, screenshots, cookies, storage, tabs, etc.) andlimux-core/src/lib.rshas aDispatcherthat handles all of them. But the GTK host'scontrol_bridge.rsonly registersworkspace.*+surface.send_text, so calling any other method against the running daemon returns-32601: unknown method.The
limux-coreDispatcheroperates on an in-memoryControlStatethat's never connected to the real GTK widgets, so swapping it in as-is wouldn't drive WebKit either. This needs a GTK-facing implementation.Same gap exists on
am-will/main— never been wired upstream. Related: #21.Scope
Wire the following against real GTK state (workspace → pane tree → tab → webkit6 WebView / ghostty terminal):
Panes/surfaces
pane.list,pane.surfaces,pane.focus,pane.create,pane.resize,pane.swap,pane.break,pane.join,pane.lastsurface.list,surface.current,surface.create,surface.focus,surface.close,surface.read_text,surface.send_key,surface.clear_history,surface.actiontab.actionBrowser
browser.open_split,browser.navigate,browser.url.get,browser.back,browser.forward,browser.reload,browser.focus,browser.screenshotbrowser.snapshot(accessibility tree via JS),browser.click,browser.fill,browser.wait,browser.highlight,browser.frame,browser.scroll,browser.scroll_into_view,browser.hover,browser.dblclick,browser.press,browser.type,browser.check/uncheck/selectbrowser.get.{text,value,title,html,attr,count,box,styles},browser.evalbrowser.cookies.{get,set,clear},browser.storage.{get,set,clear},browser.state.{save,load}browser.tab.{list,new,switch,close},browser.addscript,browser.addinitscript,browser.addstyle,browser.console.{list,clear},browser.errors.{list,clear}Implementation notes
surface_id → {WebView | TerminalHandle}registry (update on tab create/close)snapshot,click,fill,get.text, etc.) needwebkit6::WebView::evaluate_javascriptcallback bridged to the control command'smpsc::Sendervia the GTK main contextbrowser.screenshotusesWebView::snapshot(async, bridge the same way)limux-core/src/lib.rsalready uses (-32004not_found,-32602invalid_params, etc.)Plan
mvbmir/devfirst so it ships in daily-driver buildsam-will/mainam-will/main(for Limux browser control commands aren't hooked up upstream #21)