Meskipun jawaban Foogod tidak bekerja untuk saya, itu memang membawa saya ke arah yang benar, dengan memberikan setengah dari solusi (yaitu, membaca data framebuffer, sambil fbi
menunjukkan gambar pada layar TTY). Karena itu saya telah memberikan jawabannya sebagai hadiah.
Di bawah ini adalah skrip yang membuatnya mudah diluncurkan fbterm
dengan jalur parsial ke gambar sebagai argumen baris perintah tunggal
Pemakaian
Script harus disimpan dalam direktori yang tercantum dalam $PATH
variabel Anda . Lebih disukai itu harus di $HOME/bin
folder pribadi Anda . Lihat Cara menambahkan direktori ke PATH? penjelasan cara menambahkan pribadi Anda bin
untuk $PATH
, tetapi menciptakan direktori yang disebut bin
dalam direktori rumah Anda cukup untuk menambahkannya ke PATH
pada re-login.
Skrip juga harus memiliki izin yang dapat dieksekusi; Anda dapat mengaturnya dengan chmod +x /path/to/script.sh
.
Akhirnya, harus dijalankan dengan sudo
, untuk memungkinkan akses root untuk membaca dan menulis /dev/fb0
.
Sumber Skrip
Juga tersedia di repositori Github saya.
#!/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
informasi tambahan
Ternyata pengguna tidak perlu menggunakan sudo
; /dev/fb0
milik video
grup, jadi pengguna bisa menambahkan diri mereka ke grup itu menggunakan
sudo usermod -a -G video $USER
Dengan demikian, pemeriksaan untuk root dalam skrip di atas menjadi usang, khususnya [ "$(whoami)" != "root" ] ||
bagian.