Behalten Sie den Desktop-Hintergrund der TTY-Bootmeldungen in X

526
sheß

Während des Bootens sehe ich die üblichen Meldungen auf TTY. Nach dem Start von X legt xfce & xfdesktop eine durchgehende Farbe als Hintergrund fest.

Ich verwende den Hintergrund nicht, ich habe keine Symbole auf meinem Desktop. Es würde cool aussehen, wenn die Boot-Nachrichten auch nach dem Start von X dort verbleiben würden. Gibt es einen Weg, das zu erreichen?

1
Sollte das Hintergrund-Update durchgeführt werden, da mehr Nachrichten generiert werden? dsstorefile1 vor 5 Jahren 1
Das wäre cool. Aber wenn es eine einfache Antwort ohne gibt, dann nein. sheß vor 5 Jahren 0
Es stellt sich heraus, dass beide Wege ziemlich einfach sind. dsstorefile1 vor 5 Jahren 1

3 Antworten auf die Frage

1
Marcelo Roberto Jimenez

Der folgende Befehl aktualisiert das Abbild im Stammfenster alle 5 Sekunden mit einem Abbild des virtuellen Terminaltextinhalts:

$ sudo watch -n 5 myscript.sh 

Wo ist myscript.sh:

#! /bin/bash  # Dump vt1 console to a file setterm -dump 1 --file ~/screen.dump  # Get the screen resolution, e.g. 1920x1080 (there may be an easier way, but...) RESOLUTION=xdpyinfo | grep dimensions | cut -d : -f 2 | cut -d p -f 1 | tr -d [:space:]  # Convert the text file to a png image convert -size $RESOLUTION xc:black -font "FreeMono" -pointsize 12 -fill white -annotate +15+15 "@screen.dump" ~/screen.png  # Send it to the root window xli -onroot -quiet -fillscreen ~/screen.png 
Das ist schon ziemlich cool. Leider erstellt soffice die PNG im Hochformat (oder was auch immer die Standardeinstellung ist). Ein Nachteil ist auch, dass sich das Layout im Vergleich zu dem während des Startvorgangs (Farben, aber auch Abstand usw.) ändert. sheß vor 5 Jahren 0
Ok, ich habe die Antwort geändert, um "convert" zu verwenden, damit Sie die Auflösung des Bildschirms angeben können. Um die Farben zu erhalten, muss ich ein bisschen mehr darüber nachdenken. Marcelo Roberto Jimenez vor 5 Jahren 1
1
dsstorefile1

Ich werde zwei Möglichkeiten bieten, um eine Annäherung der Bootmeldungen als Desktophintergrund zu erstellen, eine dynamische und eine statische.

Beide Methoden setzen voraus, dass systemd installiert ist und Lesezugriff auf die Systemprotokolle über journalctl. journalctlDurch die Mitgliedschaft in der Gruppe systemd-journal können minimale Privilegien für die Ausführung bereitgestellt werden, z. B. usermod -aG systemd-journal YOUR_USERNAMEgefolgt von einem Abmelden und Anmelden.


Dynamischer Bootprotokollhintergrund

Die Grundidee besteht darin, ein undekoriertes Terminal in der untersten Fensterschicht auszuführen, um Protokollinhalte anzuzeigen. Für einfache Fenstermanager wie Fluxbox kann dies erreicht werden, indem die Stapelreihenfolge eines klebrigen maximierten Terminals auf "Desktop" gesetzt und ausgeführt wird journalctl ..., wobei optional die Konfiguration über die Starthaken des Fenstermanagers automatisiert wird.

Wenn Sie jedoch ein Fenster in Xfce maximieren, bleibt der vertikale Bereich des Desktops hinter dem Dock frei, sodass der Benutzer die Geometrie des Terminals manuell ermitteln muss, die für die Abdeckung des gesamten Bildschirms erforderlich ist. Dies wird hauptsächlich durch die Schriftart bestimmt Einstellungen und Bildschirmauflösung. Ein guter Weg, um eine Annäherung zu erhalten, ist zu laufen

xfce4-terminal --fullscreen --hide-menubar --hide-borders --hide-toolbar --hide-scrollbar 

und prüfen, wofür das Terminal entschieden hat:

$ echo $COLUMNS 102 $ echo $LINES 40 # maybe subtract one to compensate for the height of the taskbar 

Das folgende Hilfsskript, das nicht für die manuelle Ausführung gedacht ist (siehe den xfce4-terminal ...Befehl unten), wird dann verwendet, um ein Terminal mit dem Titel "Journalterm" als klebrig festzulegen. Wird in der Taskleiste und im Anwendungsumschalter unter den anderen Fenstern weggelassen. und ausführen journalctl ...:

#!/bin/bash  xdotool search --name journalterm; # wmctrl focus bug? for i in below skip_ sticky; do wmctrl -v -r journalterm -b add,$i; # comment out -v for quiet done  tput civis; # hide the terminal cursor  [JOURNALCTL_CMD] 

wo [JOURNALCTL_CMD]soll mit ersetzt werden

exec journalctl --lines=all --follow 

oder

journalctl --lines=all --follow --no-hostname -oshort-unix \ |stdbuf -i0 -oL -eL cut -d\ -f1 --complement \ |grep --line-buffered -F 'systemd[1]' \ |sed -uE "s/systemd\[1\]:/\[ `printf '\033[00;32m'`OK`printf '\033[00m'` \]/g" 

Ersteres journalctl ...gibt einfach die Systemprotokolle aus

Systemprotokolle als Hintergrund

Letzteres ahmt die systemd-Ausgabe während der letzten Schritte des Systemstarts nach und überspringt möglicherweise einige Meldungen, die während des eigentlichen Startvorgangs angezeigt wurden, der Einfachheit halber.

Systemd-Ausgabe als Hintergrund

stdbufEntfernt die Pufferung von cut, while grepund verfügt sedüber eigene systemeigene Parameter, mit denen erzwingt, dass neue Ausgaben von systemd auf dem Terminal angezeigt werden, sobald sie bereit sind.

Der Befehl zum Ausführen des obigen Skripts sollte dann wie folgt lauten [C]und [L]mit den zuvor ermittelten Spalten- und Zeilenzahlen ersetzt werden:

xfce4-terminal -T journalterm --geometry=[C]x[L] --hide-menubar --hide-borders --hide-toolbar --hide-scrollbar --execute /path/to/the/above/script 

Dieser kann beim Anmelden automatisch gestartet werden, indem in Session und Startup> Application Autostart ein Eintrag hinzugefügt wird, der die obige Zeile ausführt.


Statischer Bootprotokollhintergrund

Statischer systemd-Ausgabehintergrund

Das folgende Skript generiert eine PNG der neuesten Meldungen von systemd:

#!/bin/bash  exec xfce4-terminal --fullscreen --hide-menubar --hide-scrollbar --execute \ bash -c \ "tput civis; PS1=; \ journalctl --no-hostname -oshort-unix \ |cut -d\ -f1 --complement \ |grep -F 'systemd[1]' \ |sed -E \"s/systemd\[1\]:/\[ `printf '\033[00;32m'`OK`printf '\033[00m'` \]/g\" \ |head -c-1; \ read -t1; import -window root systemd-`date +%s`.png"; 

Beachten Sie, dass das PNG durch das Erstellen eines Screenshots eines Vollbild-Terminals erzeugt wird. Daher wird die Interaktion mit dem System während dieses Vorgangs nicht empfohlen, obwohl die Verzögerung durch read ..schnellere Systeme verringert werden kann, um die Wartezeit zu verringern. Wie beim obigen xfce4-terminal ...Befehl kann dieses Skript von Xfce automatisch ausgeführt werden, um bei jedem Login ein neues statisches Abbild der systemd-Meldungen zu erzeugen, falls dies gewünscht wird. Xfce wird feststellen, wenn sich die Datei mit dem Desktop-Hintergrund geändert hat, und das Hintergrundbild wird entsprechend aktualisiert. Es kann daher importje nach Anwendungsfall nützlich sein, die Datei in jedes Mal in dieselbe Datei zu schreiben.

Das obige Skript erfordert nur ein Terminal, das weiß, wie man im Vollbildmodus ein Skript ausführt. Zum Beispiel kann die exec xfce4-terminal ...Zeile durch ersetzt werden xterm -fullscreen -e \und das Skript wird weiterhin wie erwartet ausgeführt.

Beeindruckend. Tolle Ideen! Hier ein kleiner Vorschlag: Wäre es irgendwie möglich, den Bildschirm an einem früheren Zeitpunkt während des Bootvorgangs zu starten, das Backgrouund-Fullscreen-Terminal auf diese Bildschirmsitzung zuzugreifen und es somit tatsächlich interaktiv zu haben? sheß vor 5 Jahren 1
Vielen Dank! Ich bin nicht sicher, was Sie mit interaktiv meinen, aber Scrollback im Hintergrund-Terminal sollte nur auf das beschränkt sein, was `xfce4-terminal` liefert. FWIW öffnet neue Registerkarten über Strg-Umschalt-t. dsstorefile1 vor 5 Jahren 0
Mit interaktiv verhält es sich tatsächlich wie das, was Sie sehen, wenn Sie crtl + alt + f2 / f1 verwenden, dh sich einloggen können usw sheß vor 5 Jahren 0
Sie könnten den exec aus `[JOURNALCTL_CMD]` entfernen und danach '& exec bash' hinzufügen, um das Hintergrund-Terminal interaktiv zu machen. Ich kann mir jedoch keine einfache Möglichkeit vorstellen, z Terminal. dsstorefile1 vor 5 Jahren 0
Oh, jetzt will ich das nicht. Ich möchte einfach nur das aussehen und haben, was Sie sehen, wenn Sie gehen, indem Sie [alt] + [ctrl] + [f2] drücken, ohne einen x-Server oder ähnliches zu starten. Sie können sich lediglich über die Konsole anmelden sheß vor 5 Jahren 0
Aha. Es gibt [conspy] (https://packages.debian.org/sid/admin/conspy) für den Zugriff auf VTs, es sind jedoch erhöhte Berechtigungen erforderlich. dsstorefile1 vor 5 Jahren 0
0
Nordlys Jeger

Eine Antwort könnte darin bestehen, eine VM zu erstellen und beim Booten dieser VM einen Screenshot davon zu erstellen. Setze diesen Screenshot als Hintergrundbild.

Ja, aber etwas unpraktisch sheß vor 5 Jahren 1