J'utilisais activement les consoles plein écran (celles ouvertes avec Ctrl+ Alt+ F1... F6) et j'ai eu l'idée que j'aimerais essayer de la décorer avec un "papier peint" en quelque sorte (plutôt sombre et monotone bien sûr afin que cela ne diminue pas la lisibilité), peut-être que cela pourrait sembler agréable (ou non, mais je dois essayer). Ce serait encore mieux si je pouvais définir différentes images comme arrière-plan de console différente (une pour Ctrl+ Alt+ F1, une autre pour Ctrl+ Alt+, F2etc.).
Le fait que les consoles aient une résolution beaucoup plus élevée que le mode texte pur fournit suggère que le mode graphique à part entière est utilisé pour elles et que tout est possible. Mais comment?
tty
virtual-console
Ivan
la source
la source
framebuffer
périphérique, mais avec cet écran est occupé par la sortie d'un programme, commefbi
. ATS en soi est toujours un appareil texte uniquementRéponses:
Je suis à peu près sûr que le pilote de console Linux n'a pas cette capacité intégrée, mais il existe une application appelée
fbterm
qui peut le faire. Afin de faire fonctionner les images d'arrière-plan, vous aurez également besoin d'un utilitaire qui peut afficher une image sur le framebuffer tel quefbi
:fbterm
ne lit pas ou n'affiche pas les images d'arrière-plan lui-même, il attend qu'un autre programme configure l'image d'arrière-plan sur l'écran avant de commencer. Il y a des instructions dans lafbterm
page de manuel sur la façon de le faire en utilisantfbv
, un utilitaire absolument obsolète et non pris en charge que je n'ai même pas pu compiler sur un système Ubuntu moderne.fbi
est une visionneuse d'images beaucoup plus propre et plus agréable pour le framebuffer, mais n'a malheureusement pas la fonctionnalité "set it and exit" du plus simplefbv
, et interfère donc avecfbterm
si vous essayez de l'utiliser directement. Cependant, j'ai pu trouver une alternative qui fonctionne:Tout d'abord, vous devrez utiliser
fbi
etcat
afficher l'image souhaitée, puis la vider dans un fichier image "format brut de framebuffer". En tant que root, dans une console framebuffer, exécutez:(Cela affichera l'image pendant quelques secondes, puis quittera, après avoir enregistré le résultat dans le fichier
nifty-background.fbimg
. Remplaceznifty-background.fbimg
etnifty-background.png
avec les noms de fichiers que vous souhaitez, bien sûr.)La première partie de la commande attend 1 seconde avant d'attribuer le contenu du framebuffer à un fichier. En même temps, la deuxième partie (après le &) se lance
fbi
pour afficher l'image sur le framebuffer, de sorte que lorsque la commande cat se met à s'exécuter (1 seconde plus tard), il y a une image à vider. La raison pour laquelle ils sont dans cet ordre est parce que j'ai trouvé qu'il yfbi
avait des problèmes s'il ne s'exécutait pas au premier plan, ce qui signifie que ce doit être la dernière commande de la liste.A partir de là, chaque fois que vous voulez l'exécuter
fbterm
, vous pouvez le démarrer comme ça (vous voudrez peut-être créer un petit script wrapper):la source
… Qui est l'un des moyens par lesquels l'observateur pourrait distinguer un vrai BSOD sur Windows des actions de l'économiseur d'écran BSOD qui a fait le tour il y a une dizaine d'années. L'affichage des caractères graphiques de bloc à l'aide du matériel de la carte graphique en mode graphique était subtilement différent des caractères générés par le matériel de la carte graphique en mode texte.
Oui, la carte graphique est en mode graphique. Il en est ainsi depuis un certain temps maintenant. Il en a toujours été ainsi sur les systèmes sans matériel de carte graphique pour PC. Dans les premières années de Linux, sur PC compatible, la console disposait du matériel de la carte graphique en mode texte. Mais cette utilisation s'est discrètement érodée en presque rien. La prise en charge Unicode pour la plupart des utilisateurs nécessite aujourd'hui un ensemble de glyphes plus important que le matériel en mode texte. Le firmware de la machine (bien sûr) utilise le mode graphique pour les écrans de démarrage (avec de jolies images et logos d'entreprise), tout comme le chargeur Linux et l'initialisation du système.
Il existe un programme d'émulation de terminal intégré au noyau Linux. Il est superposé au framebuffer et au sous-système d'événement d'entrée, auquel il utilise les interfaces internes du noyau pour accéder. Il se présente aux systèmes en mode application comme une série de terminaux virtuels du noyau ,
/dev/tty1
etc.Ce programme est assez limité par rapport aux émulateurs de terminaux qui fonctionnent avec le noyau Linux, en tant que programmes d'applications ordinaires. Il n'émule qu'un sous-ensemble limité des fonctionnalités d'un terminal réel et il lui manque les fonctionnalités supplémentaires de ces derniers émulateurs de terminal.
Ce sont ceux que vous devez rechercher pour cela. Vous connaissez peut-être les émulateurs de terminaux qui utilisent X pour leurs entrées / sorties, tels que xterm, lxterminal, gnome-console, konsole, eterm, wterm et le reste. Moins connus sont ceux qui utilisent le (s) dispositif (s) framebuffer et les dispositifs d'événement d'entrée pour leur entrée / sortie. fournir des terminaux virtuels dans l'espace utilisateur :
console-terminal-emulator
etconsole-fb-realizer
, etCertains de ces derniers peuvent faire ce que vous voulez.
fbterm peut être configuré pour utiliser tout ce qui se trouve dans le framebuffer au démarrage comme image d'arrière-plan, par exemple. Donc, tout ce que l'on doit faire est d'utiliser l'un des nombreux autres utilitaires pour afficher des images directement sur un périphérique Linux framebuffer pour configurer une image d'arrière-plan avant d'exécuter fbterm. Il existe plusieurs outils de ce type, notamment:
fbvis et fbi effacent l'écran à la sortie et nécessitent les circonvolutions qui sont expliquées plus en détail dans la réponse de Foogod. dfbg, cependant, ne nettoie pas après lui-même, ce qui le rend plus adapté à cette tâche particulière.
Lectures complémentaires
la source
Bien que la réponse de Foogod n'ait pas fonctionné pour moi, elle m'a conduit dans la bonne direction, en fournissant la moitié de la solution (à savoir la lecture des données du tampon de trame, tout en
fbi
affichant une image sur l'écran TTY). J'ai donc accordé sa réponse à sa réponse.Ci-dessous est un script qui facilite le lancement
fbterm
avec un chemin partiel vers l'image en tant qu'argument de ligne de commande uniqueUsage
Le script doit être enregistré dans un répertoire répertorié dans votre
$PATH
variable. De préférence, il doit être dans votre$HOME/bin
dossier personnel . Reportez-vous à Comment ajouter un répertoire au CHEMIN? sur l' explication comment ajouter vos données personnellesbin
à$PATH
, mais la création d' un répertoire appelébin
dans votre répertoire personnel est suffisant pour l' ajouter àPATH
le re-connexion.Le script doit également avoir une autorisation exécutable; vous pouvez le régler avec
chmod +x /path/to/script.sh
.Enfin, il doit être exécuté avec
sudo
, pour permettre un accès root pour la lecture et l'écriture/dev/fb0
.Source de script
Également disponible sur mon référentiel Github.
information additionnelle
Il s'avère que l'utilisateur n'a pas nécessairement besoin d'utiliser
sudo
;/dev/fb0
appartient auvideo
groupe, donc les utilisateurs peuvent simplement s’ajouter à ce groupe en utilisantAinsi, les vérifications de racine dans le script ci-dessus deviennent obsolètes, en particulier
[ "$(whoami)" != "root" ] ||
partie.la source