mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2026-01-29 09:01:54 +08:00
terminal window
This commit is contained in:
@@ -205,6 +205,10 @@
|
||||
<hr>
|
||||
<button disabled id="wol-wakeup-button">• Wake-on-LAN server</button>
|
||||
</div>
|
||||
<div class="buttons feature-disabled" id="webterm">
|
||||
<hr>
|
||||
<button data-force-hide-menu id="show-webterm-button">• 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">×</button>
|
||||
<button class="window-button-maximize">☐</button>
|
||||
<!-- Терминал глючит из-за зажимаемой клавиши ESC для выхода-->
|
||||
<!-- button(class="window-button-full-screen") ⤢-->
|
||||
</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>
|
||||
|
||||
@@ -66,3 +66,6 @@ li(class="right")
|
||||
div(id="wol" class="buttons feature-disabled")
|
||||
hr
|
||||
button(disabled id="wol-wakeup-button") • Wake-on-LAN server
|
||||
div(id="webterm" class="buttons feature-disabled")
|
||||
hr
|
||||
button(data-force-hide-menu id="show-webterm-button") • Show terminal
|
||||
|
||||
8
web/kvm/window-webterm.pug
Normal file
8
web/kvm/window-webterm.pug
Normal 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") ×
|
||||
button(class="window-button-maximize") ☐
|
||||
// Терминал глючит из-за зажимаемой клавиши ESC для выхода
|
||||
// button(class="window-button-full-screen") ⤢
|
||||
iframe(id="webterm-iframe" src="" style="width: 100%; height: 100%")
|
||||
@@ -1,3 +1,4 @@
|
||||
include window-stream.pug
|
||||
include window-keyboard.pug
|
||||
include window-about.pug
|
||||
include window-webterm.pug
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user