terminal window

This commit is contained in:
Devaev Maxim
2021-04-17 15:41:05 +03:00
parent 3a2ffcfd5c
commit be012fd38d
10 changed files with 63 additions and 11 deletions

View File

@@ -205,6 +205,10 @@
<hr>
<button disabled id="wol-wakeup-button">&bull; Wake-on-LAN server</button>
</div>
<div class="buttons feature-disabled" id="webterm">
<hr>
<button data-force-hide-menu id="show-webterm-button">&bull; Show terminal</button>
</div>
</div>
</li>
<li class="right feature-disabled" id="atx-dropdown"><a class="menu-button" href="#"><img class="led-gray" data-dont-hide-menu id="atx-power-led" src="/share/svg/led-atx-power.svg"><img class="led-gray" data-dont-hide-menu id="atx-hdd-led" src="/share/svg/led-atx-hdd.svg">ATX</a>
@@ -1744,6 +1748,16 @@
</p>
</div>
</div>
<div class="window window-resizable" id="webterm-window" data-show-by-button="show-webterm-button" style="width: 640px; height: 480px">
<div class="window-header">
<div class="window-grab">Terminal</div>
<button class="window-button-close">&times;</button>
<button class="window-button-maximize">&#9744;</button>
<!-- Терминал глючит из-за зажимаемой клавиши ESC для выхода-->
<!-- button(class="window-button-full-screen") &#10530;-->
</div>
<iframe id="webterm-iframe" src="" style="width: 100%; height: 100%"></iframe>
</div>
<ul class="footer">
<li class="footer-left" id="kvmd-meta-server-host"></li>
<li class="footer-right"><a target="_blank" href="https://pikvm.org">Pi-KVM Project</a></li>

View File

@@ -66,3 +66,6 @@ li(class="right")
div(id="wol" class="buttons feature-disabled")
hr
button(disabled id="wol-wakeup-button") &bull; Wake-on-LAN server
div(id="webterm" class="buttons feature-disabled")
hr
button(data-force-hide-menu id="show-webterm-button") &bull; Show terminal

View File

@@ -0,0 +1,8 @@
div(id="webterm-window" class="window window-resizable" data-show-by-button="show-webterm-button" style="width: 640px; height: 480px")
div(class="window-header")
div(class="window-grab") Terminal
button(class="window-button-close") &times;
button(class="window-button-maximize") &#9744;
// Терминал глючит из-за зажимаемой клавиши ESC для выхода
// button(class="window-button-full-screen") &#10530;
iframe(id="webterm-iframe" src="" style="width: 100%; height: 100%")

View File

@@ -1,3 +1,4 @@
include window-stream.pug
include window-keyboard.pug
include window-about.pug
include window-webterm.pug

View File

@@ -80,7 +80,7 @@ function __loadKvmdInfo() {
}
for (let app of apps) {
if (app.enabled) {
if (app.enabled || app.started) {
$("apps").innerHTML += __makeApp(null, app.path, app.icon, app.name);
}
}

View File

@@ -107,6 +107,26 @@ export function Session() {
}
};
var __setExtras = function(state) {
let show_hook = null;
let close_hook = null;
let has_webterm = (state.webterm && state.webterm.started);
if (has_webterm) {
let path = "/" + state.webterm.path;
show_hook = function() {
tools.info("Terminal opened: ", path);
$("webterm-iframe").src = path;
};
close_hook = function() {
tools.info("Terminal closed");
$("webterm-iframe").src = "";
};
}
tools.featureSetEnabled($("webterm"), has_webterm);
$("webterm-window").show_hook = show_hook;
$("webterm-window").close_hook = close_hook;
};
var __formatTemp = function(temp) {
let pairs = [];
for (let field of Object.keys(temp).sort()) {
@@ -218,6 +238,7 @@ export function Session() {
case "info_meta_state": __setAboutInfoMeta(data.event); break;
case "info_hw_state": __setAboutInfoHw(data.event); break;
case "info_system_state": __setAboutInfoSystem(data.event); break;
case "info_extras_state": __setExtras(data.event); break;
case "wol_state": __wol.setState(data.event); break;
case "gpio_model_state": __gpio.setModel(data.event); break;
case "gpio_state": __gpio.setState(data.event); break;

View File

@@ -263,6 +263,9 @@ function __WindowManager() {
el_window.focus();
el_window.blur();
el_window.style.visibility = "hidden";
if (el_window.close_hook) {
el_window.close_hook();
}
};
var __toggleMenu = function(el_a) {