Aus dem Quadrat links in beiden Leisten wird eine Pixelbiene von der Seite: braune Streifen, schwarze Beine, Fluegel mit Kerbe. Sie steht in genau einem Raster (tools/biene.py, 16x16 Zeichen); daraus entstehen SVG, PNG und eine Fassung aus Schriftzeichen. SVG statt PNG in den Leisten: Die HoneyBar laeuft in fremden Apps, und ob ein <img> dort laedt, entscheidet deren CSP. Markup kann niemand blockieren. Im System-Fenster und ueber dem Startlauf steht die Biene aus Schriftzeichen — beides sind Textflaechen, ein Bild darin waere ein Fremdkoerper. Das Wappen liegt an drei Stellen (Datei, Modul, HoneyBar-Zeile), weil die Leiste nichts nachladen kann. TestWappenIstUeberallDasselbe haelt sie gleich.
36 lines
1.5 KiB
JavaScript
36 lines
1.5 KiB
JavaScript
import { escapeHtml, state } from "../core.js";
|
|
import { BIENE_ASCII } from "../biene.js";
|
|
import { widgetAnmelden } from "./rahmen.js";
|
|
|
|
/* ── Systemzustand ─────────────────────────────────────────────────────────
|
|
*
|
|
* Nur im Terminal-Modus ein Widget. Auf dem Schreibtisch gibt es dieselben
|
|
* Zahlen als Fenster über das Startmenü — ein Schild, das dauerhaft „modus:
|
|
* desktop" behauptet, während man im Desktop-Modus steht, sagt niemandem etwas.
|
|
*
|
|
* Die Biene steht hier **aus Schriftzeichen**, nicht als Bild: Das Fenster
|
|
* besteht aus lauter Textzeilen, und ein Bild darin wäre ein Fremdkörper — wie
|
|
* ein Foto in einer Tabelle. Als Text gehört sie dazu, und das Ganze wird zu
|
|
* dem, was man bei so einem Fenster ohnehin im Kopf hat: einem neofetch.
|
|
*/
|
|
export function statsHtml() {
|
|
const up = Object.values(state.probes).filter((s) => s === "up").length;
|
|
const rows = [
|
|
["apps", `${state.cfg.apps.length}`],
|
|
["erreichbar", `${up}/${state.cfg.apps.length}`],
|
|
["modus", state.settings.mode],
|
|
["röhre", state.settings.phosphor],
|
|
["version", `v${state.cfg.version}`],
|
|
];
|
|
return `<dl class="statlist">${rows
|
|
.map(([k, v]) => `<dt>${k}</dt><dd>${escapeHtml(v)}</dd>`)
|
|
.join("")}</dl>`;
|
|
}
|
|
|
|
widgetAnmelden({
|
|
id: "system",
|
|
titel: "system",
|
|
wo: ["terminal"],
|
|
inhalt: () => `<pre class="biene-text">${BIENE_ASCII}</pre>${statsHtml()}`,
|
|
});
|