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 unique
Usage
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 personnelles bin
à $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.
#!/bin/bash
# Author : Serg Kolo
# Date: Dec 5, 2015
# Description: Script to render image and set it as background
# in conjunction with fbterm
# Depends: fbterm,fbi, awk
# Written for: /ubuntu//q/701874/295286
function printUsage
{
echo "<<< Script to set background image in TTY console"
echo "<<< Written by Serg Kolo, Dec 5 , 2015"
echo "<<< Usage: scriptName.sh /path/to/image"
echo "<<< Must be ran with root privileges, in TTY only"
echo "exiting"
}
# check if we're root, if there's at least one ARG, and it is a TTY
if [ "$(whoami)" != "root" ] || [ "$#" -eq 0 ] || [ "$( tty | awk '{gsub(/[[:digit:]]/,""); gsub(/\/dev\//,"");print}' )" != "tty" ] ;then
printUsage
exit 1
fi
# read the full path of the image
IMAGE="$( readlink -f "$@" )"
# Launch fbi with whatever image was supplied as command line arg
# then take out whatever is the data in framebuffer;
# Store that data to /tmp folder
( sleep 1; cat /dev/fb0 > /tmp/BACKGROUND.fbimg ; sleep 1; pkill fbi ) & fbi -t 2 -1 --noverbose -a "$IMAGE"
# This portion is really optional; you can comment it out
# if you choose so
echo "LAUNCH FBTERM ?(y/n)"
read ANSWER
if [ "$ANSWER" != "y" ] ; then
echo exiting
exit 1
fi
# The man page states that fbterm takes screenshot of
# what is currently in framebuffer and sets it as background
# if FBTERM_BACKGROUND_IMAGE is set to 1
# Therefore the trick is to send the framebuffer data captured
# in the last step (which will display the image on screen)
# and then launch fbterm. Note, that I send output from the command
# send to background in order to avoid the extra text displayed on
# screen. That way we have clear image in framebuffer, without
# the shell text, when we launch fbterm
export FBTERM_BACKGROUND_IMAGE=1
clear
( cat /tmp/BACKGROUND.fbimg > /dev/fb0 &) > /dev/null; sleep 0.25; fbterm
information additionnelle
Il s'avère que l'utilisateur n'a pas nécessairement besoin d'utiliser sudo
; /dev/fb0
appartient au video
groupe, donc les utilisateurs peuvent simplement s’ajouter à ce groupe en utilisant
sudo usermod -a -G video $USER
Ainsi, les vérifications de racine dans le script ci-dessus deviennent obsolètes, en particulier [ "$(whoami)" != "root" ] ||
partie.