Раньше я использовал полноэкранные консоли (которые открывались с помощью Ctrl kbd> + Alt kbd> + F1 kbd> ... F6 kbd>) активно и пришел к мысли, что я хотел бы попытаться украсить его «обоями» своего рода (довольно темными и однообразными, конечно, чтобы это не уменьшило читабельность), возможно, это могло бы выглядеть и чувствую себя хорошо (или нет, но мне нужно попробовать). Было бы еще лучше, если бы я мог установить разные картинки в качестве фона для другой консоли (одна для Ctrl kbd> + Alt kbd> + F1 kbd>, другая для Ctrl kbd> + Alt kbd> + F2 kbd> и т. д.).
Тот факт, что консоли имеют гораздо более высокое разрешение, чем режим с простым текстом, предполагает, что для них используется полноценный графический режим, и все возможно. Но как?
Я вполне уверен, что драйверу консоли Linux не встроили эту способность, однако существует названное приложение fbterm
который может сделать это. Чтобы заставить фоновые изображения работать, Вам также будет нужна утилита, которая может отобразить изображение на кадровом буфере такой как fbi
:
sudo apt-get install fbterm fbi
fbterm
на самом деле не читает или отображает фоновые изображения самостоятельно, это ожидает, что некоторая другая программа настроит фоновое изображение на экране, прежде чем это запустится. Существуют инструкции в fbterm
страница справочника о том, как сделать это использование fbv
, абсолютно устаревшая и неподдерживаемая утилита я не мог даже добраться для компиляции в современной системе Ubuntu. fbi
намного более чистая и более хорошая программа просмотра изображений для кадрового буфера, но к сожалению не имеет "набора им и выходит" из функциональности более простого fbv
, и таким образом вмешивается в fbterm
при попытке использовать его непосредственно. Однако я смог придумать альтернативу, которая работает:
Во-первых, необходимо будет использовать fbi
и cat
для отображения изображения, Вы хотите и затем выводите его к "файлу изображения" формата .raw кадрового буфера. Как корень, в консоли кадрового буфера, выполненной:
( sleep 1; cat /dev/fb0 > nifty-background.fbimg ) & fbi -t 2 -1 --noverbose -a nifty-background.png
(Это отобразит изображение в течение нескольких секунд и затем выйдет, сохранив результат в файле nifty-background.fbimg
. Замена nifty-background.fbimg
и nifty-background.png
с любыми именами файлов Вы желаете, конечно.)
Первая часть команды ожидает в течение 1 секунды прежде catting содержание кадрового буфера в файл. В то же время, вторая часть (после и) запуски fbi
отобразить изображение на кадровом буфере, так, чтобы, когда команда кошки находит время для выполнения (1 секунду спустя), было изображение там для дампа. Причина они находятся в том порядке, состоит в том, потому что я нашел это fbi
имел проблемы, если это не работало на переднем плане, что означает, что это должна быть последняя команда в списке.
С тех пор, каждый раз, когда Вы хотите работать fbterm
, можно запустить его как так (можно хотеть создать немного сценария обертки):
export FBTERM_BACKGROUND_IMAGE=1
cat nifty-background.fbimg > /dev/fb0; fbterm
Я могу отличить реальный текстовый режим от его графической эмуляции.
…, который является одним из путей, которыми соблюдающее могло отличить реальный BSOD в Windows от действий шутки экранная заставка BSOD, которая сделала раунды приблизительно одно десятилетие назад. Дисплей символов блочной графики с помощью аппаратных средств адаптера дисплея в графическом режиме тонко отличался от символов, сгенерированных аппаратными средствами адаптера дисплея в текстовом режиме.
Да, адаптер дисплея находится в графическом режиме. Это был этот путь к некоторым в то время как, теперь. Это всегда был этот путь в системах без аппаратных средств адаптера дисплея ПК. В первые годы Linux на совместимых устройствах ПК консоль имела бы аппаратные средства адаптера дисплея в текстовом режиме. Но это использование бесшумно не разрушило к в значительной степени ничему. Поддержка Unicode большинства пользователей в наше время требует большего набора глифа, чем аппаратные средства текстового режима имеют. Встроенное микропрограммное обеспечение машины (конечно), использует графический режим для экранов-заставок (с симпатичными изображениями и логотипами компании), как делает загрузчик Linux и системную инициализацию.
Существует программа эмулятора терминала, встроенная в ядро Linux. Это разделено на уровни сверх кадрового буфера и входной подсистемы события, которая это использует внутренние интерфейсы ядра для доступа. Это представляет себя системам прикладного режима как серия устройств виртуального терминала ядра, /dev/tty1
и т.д.
Эта программа справедливо ограничена по сравнению с эмуляторами терминала, которые выполняют outwith ядро Linux как обычные программы приложений. Это только эмулирует ограниченное подмножество функциональности реального терминала, и это испытывает недостаток в дополнительных функциях последних эмуляторов терминала.
Это - те, на которых необходимо обратиться для этого. Можно быть знакомы с эмуляторами терминала, которые используют X для их ввода/вывода, такого как xterm, lxterminal, консоль гнома, консоль, eterm, wterm, и остальные. Менее известный те, которые используют устройство (устройства) кадрового буфера и входные устройства события для их ввода/вывода. обеспечение виртуальных терминалов пространства пользователя:
console-terminal-emulator
и console-fb-realizer
, и Некоторые последние могут сделать то, что Вы хотите.
fbterm может быть настроен для использования то независимо от того, что находится в кадровом буфере при запуске как фоновое изображение, например. Таким образом, все, что нужно сделать, использовать одну из нескольких других утилит для отображения изображений непосредственно к кадровому буферу Linux deviceto, настраивает фоновое изображение прежде, чем выполнить fbterm. Существуют несколько таких инструментов, включая:
fbvis и ФБР очищают экран в выходе и требуют сверток, которые объяснены более подробно в ответе Foogod. dfbg, тем не менее, не моется после себя, делая это более подходящим для этой конкретной задачи.
Хотя ответ Foogod не работал на меня, он действительно приводил меня в правильное направление путем предоставления половины решения (а именно, считывая данные кадрового буфера, в то время как fbi
показывает изображение на экране TTY). Поэтому я наградил его ответ щедростью.
Рев является сценарием, который помогает запуститься fbterm
с частичным путем для обработки изображений как единственный параметр командной строки
Использование
Сценарий должен быть сохранен в каталоге, который перечислен в Вашем $PATH
переменная. Предпочтительно это должно быть в Вашем персональном $HOME/bin
папка. Обратитесь к тому, Как добавить каталог к ПУТИ? на объяснении, как добавить Ваше персональное 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: https://askubuntu.com/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" ] ||
часть.
VBoxManage getextradata "xyz_default_1487255766394_70950" "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled"
приводит кValue: 1
– Robert 20 February 2017 в 20:32