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:
GitHub Copilot
2026-01-24 11:45:07 +00:00
parent bd477c1b3c
commit be2f18c8ba
+28
View File
@@ -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")