Files
HoneyOS/web/js/widgets/system.js
T
marc 3f8b98b869 Eine Biene als Wappen, an allen vier Stellen
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.
2026-09-02 10:21:03 +02:00

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()}`,
});