Foogod의 대답은 나에게 효과가 없었지만 솔루션의 절반을 제공하여 올바른 방향으로 이끌었습니다 (즉, fbi
TTY 화면에 이미지를 표시 하면서 프레임 버퍼 데이터 읽기 ). 따라서 나는 그의 답변에 현상금을 수여했습니다.
Bellow는 fbterm
단일 명령 줄 인수로 이미지의 부분 경로를 사용하여 쉽게 시작할 수있는 스크립트입니다.
용법
스크립트는 $PATH
변수에 나열된 디렉토리에 저장해야합니다 . 가급적 개인 $HOME/bin
폴더 에 있어야 합니다. PATH에 디렉토리를 추가하는 방법을 참조하십시오 . 개인 정보 bin
를 에 추가하는 방법에 대한 설명이 $PATH
있지만 bin
홈 디렉토리에서 호출 된 디렉토리를 작성하면 PATH
다시 로그인 할 때 추가 할 수 있습니다.
스크립트에는 실행 권한이 있어야합니다. 로 설정할 수 있습니다 chmod +x /path/to/script.sh
.
마지막으로 sudo
에 읽고 쓰는 루트 액세스를 허용하려면을 (를) 사용하여 실행해야합니다 /dev/fb0
.
스크립트 소스
내 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
추가 정보
사용자가 반드시 사용할 필요는 없습니다 sudo
. 그룹에 /dev/fb0
속하므로 video
사용자는 다음을 사용하여 해당 그룹에 자신을 추가 할 수 있습니다.
sudo usermod -a -G video $USER
따라서 위 스크립트에서 루트 검사는 더 이상 사용되지 않습니다 [ "$(whoami)" != "root" ] ||
.