Как я могу настроить полноэкранный фон консоли (TTY)?

Раньше я использовал полноэкранные консоли (которые открывались с помощью Ctrl + Alt + F1 ... F6 ) активно и пришел к мысли, что я хотел бы попытаться украсить его «обоями» своего рода (довольно темными и однообразными, конечно, чтобы это не уменьшило читабельность), возможно, это могло бы выглядеть и чувствую себя хорошо (или нет, но мне нужно попробовать). Было бы еще лучше, если бы я мог установить разные картинки в качестве фона для другой консоли (одна для Ctrl + Alt + F1 , другая для Ctrl + Alt + F2 и т. д.).

Тот факт, что консоли имеют гораздо более высокое разрешение, чем режим с простым текстом, предполагает, что для них используется полноценный графический режим, и все возможно. Но как?

17
задан 2 December 2015 в 21:31

3 ответа

Я вполне уверен, что драйверу консоли 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
12
ответ дан 3 December 2015 в 07:31
  • 1
    Настройки времени не являются персистентными, хотя I' ve установил правильную настройку: VBoxManage getextradata "xyz_default_1487255766394_70950" "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" приводит к Value: 1 – Robert 20 February 2017 в 20:32

Я могу отличить реальный текстовый режим от его графической эмуляции.

…, который является одним из путей, которыми соблюдающее могло отличить реальный BSOD в Windows от действий шутки экранная заставка BSOD, которая сделала раунды приблизительно одно десятилетие назад. Дисплей символов блочной графики с помощью аппаратных средств адаптера дисплея в графическом режиме тонко отличался от символов, сгенерированных аппаратными средствами адаптера дисплея в текстовом режиме.

Да, адаптер дисплея находится в графическом режиме. Это был этот путь к некоторым в то время как, теперь. Это всегда был этот путь в системах без аппаратных средств адаптера дисплея ПК. В первые годы Linux на совместимых устройствах ПК консоль имела бы аппаратные средства адаптера дисплея в текстовом режиме. Но это использование бесшумно не разрушило к в значительной степени ничему. Поддержка Unicode большинства пользователей в наше время требует большего набора глифа, чем аппаратные средства текстового режима имеют. Встроенное микропрограммное обеспечение машины (конечно), использует графический режим для экранов-заставок (с симпатичными изображениями и логотипами компании), как делает загрузчик Linux и системную инициализацию.

Существует программа эмулятора терминала, встроенная в ядро Linux. Это разделено на уровни сверх кадрового буфера и входной подсистемы события, которая это использует внутренние интерфейсы ядра для доступа. Это представляет себя системам прикладного режима как серия устройств виртуального терминала ядра, /dev/tty1 и т.д.

Эта программа справедливо ограничена по сравнению с эмуляторами терминала, которые выполняют outwith ядро Linux как обычные программы приложений. Это только эмулирует ограниченное подмножество функциональности реального терминала, и это испытывает недостаток в дополнительных функциях последних эмуляторов терминала.

Это - те, на которых необходимо обратиться для этого. Можно быть знакомы с эмуляторами терминала, которые используют X для их ввода/вывода, такого как xterm, lxterminal, консоль гнома, консоль, eterm, wterm, и остальные. Менее известный те, которые используют устройство (устройства) кадрового буфера и входные устройства события для их ввода/вывода. обеспечение виртуальных терминалов пространства пользователя:

Некоторые последние могут сделать то, что Вы хотите.

fbterm может быть настроен для использования то независимо от того, что находится в кадровом буфере при запуске как фоновое изображение, например. Таким образом, все, что нужно сделать, использовать одну из нескольких других утилит для отображения изображений непосредственно к кадровому буферу Linux deviceto, настраивает фоновое изображение прежде, чем выполнить fbterm. Существуют несколько таких инструментов, включая:

fbvis и ФБР очищают экран в выходе и требуют сверток, которые объяснены более подробно в ответе Foogod. dfbg, тем не менее, не моется после себя, делая это более подходящим для этой конкретной задачи.

Дальнейшее чтение

7
ответ дан 3 December 2015 в 07:31
  • 1
    @Robert Это, кажется, по всей вероятности больше ошибка в рамках приложения VirtualBox, а не в операционной системе Ubuntu... так, необходимо связаться с разработчиками VirtualBox - или попросить решение на форумах VirtualBox.:) – cl-netbox 21 February 2017 в 01:41

Хотя ответ 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" ] || часть.

4
ответ дан 3 December 2015 в 07:31
  • 1
    Есть ли какой-либо модуль безопасности как SELinux или что-то активное в Ubuntu по умолчанию? Это могло, возможно, привести к проблемам, изменяющим часовой пояс? – Robert 24 February 2017 в 01:57

Другие вопросы по тегам:

Похожие вопросы: