Auto-focus terminal on page load
- Try to focus xterm textarea after initialization - Retry with delays (100ms, 500ms, 1s) as terminal loads async - Re-focus when window regains focus (tab switching)
This commit is contained in:
@@ -945,6 +945,34 @@ class LocalServer:
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id=\"terminal\" class=\"textual-terminal\" data-session-websocket-url=\"{ws_url}\" data-font-size=\"16\"></div>
|
<div id=\"terminal\" class=\"textual-terminal\" data-session-websocket-url=\"{ws_url}\" data-font-size=\"16\"></div>
|
||||||
|
<script>
|
||||||
|
// Try to focus the terminal after it initializes
|
||||||
|
(function() {{
|
||||||
|
function focusTerminal() {{
|
||||||
|
// xterm.js creates a textarea for input
|
||||||
|
const textarea = document.querySelector('.xterm-helper-textarea');
|
||||||
|
if (textarea) {{
|
||||||
|
textarea.focus();
|
||||||
|
return true;
|
||||||
|
}}
|
||||||
|
// Also try focusing the terminal container
|
||||||
|
const term = document.querySelector('.xterm');
|
||||||
|
if (term) {{
|
||||||
|
term.focus();
|
||||||
|
return true;
|
||||||
|
}}
|
||||||
|
return false;
|
||||||
|
}}
|
||||||
|
// Try immediately and with delays as terminal initializes async
|
||||||
|
if (!focusTerminal()) {{
|
||||||
|
setTimeout(focusTerminal, 100);
|
||||||
|
setTimeout(focusTerminal, 500);
|
||||||
|
setTimeout(focusTerminal, 1000);
|
||||||
|
}}
|
||||||
|
// Also focus on window focus (when switching tabs back)
|
||||||
|
window.addEventListener('focus', focusTerminal);
|
||||||
|
}})();
|
||||||
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>"""
|
</html>"""
|
||||||
return web.Response(text=html_content, content_type="text/html")
|
return web.Response(text=html_content, content_type="text/html")
|
||||||
|
|||||||
Reference in New Issue
Block a user