যদিও ফুগডের উত্তর আমার পক্ষে কার্যকর হয়নি তবে এটি অর্ধেক সমাধান সরবরাহ করে (যথা, fbi
টিটিওয়াই স্ক্রিনে একটি চিত্র দেখানোর সময় ফ্রেমবফার ডেটা পড়ার মাধ্যমে) আমাকে সঠিক দিকে নিয়ে গেছে । অতএব আমি তার উত্তর অনুগ্রহ দিয়েছি।
বেলো হ'ল একটি স্ক্রিপ্ট যা fbterm
একক কমান্ড লাইন আর্গুমেন্ট হিসাবে চিত্রের আংশিক পথ দিয়ে লঞ্চ করা সহজ করে
ব্যবহার
স্ক্রিপ্ট অবশ্যই আপনার $PATH
ভেরিয়েবলের তালিকাভুক্ত ডিরেক্টরিতে সংরক্ষণ করতে হবে । সাধারণত এটি আপনার ব্যক্তিগত $HOME/bin
ফোল্ডারে থাকতে হবে । পড়ুন কিভাবে পথে একটি ডিরেক্টরি যোগ করতে চান? আপনার ব্যক্তিগত যোগ করার জন্য কিভাবে ব্যাখ্যা উপর bin
থেকে $PATH
, কিন্তু একটি ডিরেক্টরি নামক তৈরি bin
আপনার home ডিরেক্টরিতে এটি যোগ করতে যথেষ্ট PATH
পুনরায় প্রবেশ করুন।
স্ক্রিপ্টের অবশ্যই সম্পাদনযোগ্য অনুমতি থাকতে হবে; আপনি এটি দিয়ে সেট করতে পারেন chmod +x /path/to/script.sh
।
অবশেষে, এটি অবশ্যই sudo
পড়তে হবে এবং এতে লেখার জন্য রুট অ্যাক্সেসের অনুমতি দিতে হবে /dev/fb0
।
স্ক্রিপ্ট উত্স
এছাড়াও উপলব্ধ আমার গিটহাব সংগ্রহস্থল।
#!/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" ] ||
অংশ।