Раньше я активно использовал полноэкранные консоли (те, которые открываются с помощью Ctrl+ Alt+ F1... F6) и пришел к мысли, что я хотел бы попытаться украсить их «обоями» своего рода (довольно темными и однообразными, конечно, так что это не уменьшит читабельность), возможно, это могло бы выглядеть и чувствовать себя хорошо (или нет, но мне нужно попробовать). Было бы еще лучше, если бы я мог установить разные картинки в качестве фона для другой консоли (одну для Ctrl+ Alt+ F1, другую для Ctrl+ Alt+ и F2т. Д.).
Тот факт, что консоли имеют гораздо более высокое разрешение, чем в режиме чистого текста, говорит о том, что для них используется полноценный графический режим, и все возможно. Но как?
tty
virtual-console
Иван
источник
источник
framebuffer
устройство, но при этом экран занят выводом какой-то программы, напримерfbi
. TTY сам по себе остается текстовым устройствомОтветы:
Я почти уверен, что драйвер консоли Linux не имеет этой встроенной возможности, однако есть приложение,
fbterm
которое может это сделать. Для работы фоновых изображений вам также понадобится утилита, которая может отображать изображение в буфере кадров, напримерfbi
:fbterm
фактически не читает и не отображает фоновые изображения, он ожидает, что какая-то другая программа установит фоновое изображение на экране перед его запуском. Наfbterm
странице руководства есть инструкции о том, как это сделать, используяfbv
абсолютно устаревшую и неподдерживаемую утилиту, которую я даже не смог собрать в современной системе Ubuntu.fbi
является намного более чистым и приятным средством просмотра изображений для кадрового буфера, но, к сожалению, не имеет функциональности «установить и выйти» из более простогоfbv
и, таким образом, мешает,fbterm
если вы пытаетесь использовать его напрямую. Тем не менее, я смог придумать альтернативу, которая работает:Во-первых, вам нужно будет использовать
fbi
иcat
для отображения нужного вам изображения, а затем вывести его в файл изображения «framebuffer raw format». От имени пользователя root в консоли фреймбуфера запустите:(Это будет отображать изображение в течение нескольких секунд, а затем завершится, сохранив результат в файле
nifty-background.fbimg
. Заменитеnifty-background.fbimg
иnifty-background.png
на любые имена файлов, которые вы хотите, конечно.)Первая часть команды ждет 1 секунду, прежде чем загружать содержимое кадрового буфера в файл. В то же время запускается вторая часть (после &)
fbi
для отображения изображения в кадровом буфере, так что когда команда cat приступает к выполнению (1 секунда спустя), появляется изображение, которое нужно выгрузить. Причина в том, что они в таком порядке, потому что я обнаружил, что уfbi
них были проблемы, если он не работал на переднем плане, что означает, что это должна быть последняя команда в списке.С этого момента, когда вы захотите запустить
fbterm
, вы можете запустить его так (вы можете создать небольшой скрипт-обертку):источник
... что является одним из способов, с помощью которых наблюдатель мог бы отличить настоящий BSOD на Windows от действий заставки-шутки BSOD, которые делались примерно десять лет назад. Отображение блочных графических символов с использованием аппаратного обеспечения адаптера дисплея в графическом режиме несколько отличалось от символов, сгенерированных аппаратным обеспечением адаптера дисплея в текстовом режиме.
Да, адаптер дисплея находится в графическом режиме. Так было уже довольно давно. Так было всегда в системах без аппаратного адаптера дисплея. В первые годы существования Linux на ПК-совместимых устройствах консоль имела аппаратный адаптер дисплея в текстовом режиме. Но это использование незаметно испортилось. Поддержка Unicode для большинства пользователей в настоящее время требует большего набора глифов, чем аппаратное обеспечение текстового режима. Прошивка машины (конечно) использует графический режим для заставок (с красивыми картинками и логотипами компании), как и загрузчик Linux и инициализация системы.
В ядро Linux встроена программа-эмулятор терминала. Он расположен поверх фрейм-буфера и подсистемы входных событий, для доступа к которым он использует внутренние интерфейсы ядра. Он представляется системам в режиме приложений как серия виртуальных терминальных устройств ядра
/dev/tty1
и т. Д.Эта программа довольно ограничена по сравнению с эмуляторами терминала, которые работают с ядром Linux, как обычные прикладные программы. Он только эмулирует ограниченное подмножество функциональности реального терминала, и ему не хватает дополнительных функций последних эмуляторов терминала.
Это те, которые вам нужно искать для этого. Возможно, вы знакомы с эмуляторами терминала, которые используют X для своего ввода / вывода, такими как xterm, lxterminal, gnome-console, konsole, eterm, wterm и другие. Менее известны те, которые используют устройства кадрового буфера и устройства событий ввода для их ввода / вывода. предоставление виртуальных терминалов в пользовательском пространстве :
console-terminal-emulator
иconsole-fb-realizer
, иНекоторые из этих последних могут делать то, что вы хотите.
fbterm может быть настроен на использование того, что находится в кадровом буфере при запуске, в качестве фонового изображения, например. Поэтому все, что нужно сделать, - это использовать одну из нескольких других утилит для отображения изображений непосредственно на устройстве кадрового буфера Linux, чтобы настроить фоновое изображение перед запуском fbterm. Есть несколько таких инструментов, в том числе:
fbvis и fbi очищают экран при выходе и требуют сверток, которые более подробно объясняются в ответе Фугода. dfbg, однако, не убирает за собой, что делает его более подходящим для этой конкретной задачи.
дальнейшее чтение
источник
Хотя ответ Foogod не сработал для меня, он привел меня в правильном направлении, предоставив половину решения (а именно, чтение данных кадрового буфера, в то время
fbi
как показ изображения на экране TTY). Поэтому я наградил его ответ щедротой.Ниже приведен скрипт, который облегчает запуск
fbterm
с частичным путем к изображению в виде единого аргумента командной строки.использование
Скрипт должен быть сохранен в каталоге, который указан в вашей
$PATH
переменной. Желательно, чтобы он был в вашей личной$HOME/bin
папке. Обратитесь к разделу Как добавить каталог в PATH? объяснение того, как добавить свой личныйbin
профиль$PATH
, но создания каталога, называемогоbin
в вашем домашнем каталоге, достаточно, чтобы добавить егоPATH
при повторном входе в систему.Сценарий также должен иметь разрешение на выполнение; Вы можете установить его с помощью
chmod +x /path/to/script.sh
.Наконец, он должен быть запущен с
sudo
, чтобы разрешить корневой доступ для чтения и записи/dev/fb0
.Источник скрипта
Также доступно в моем репозитории Github.
Дополнительная информация
Оказывается, что пользователю не обязательно использовать
sudo
;/dev/fb0
принадлежитvideo
группе, поэтому пользователи могут просто добавить себя в эту группу, используяТаким образом, проверки на наличие root в приведенном выше сценарии устаревают, в частности
[ "$(whoami)" != "root" ] ||
часть.источник