在没有桌面环境的情况下显示大文本(在图形模式下?)

在没有桌面环境的情况下显示大文本(在图形模式下?)

前提:

在汽车门自动化场景中,我正在构建一个守护进程,我认为它可以在 Ubuntu 无头服务器中运行。

      linux headless host
    +----------------------+
    |                      |
    |                      |
    |                      |
    |   +--------------+   |
    |   | graphic card |   |
    +---+------+-------+---+
               | HDMI
               |
               |
+--------------v---------------+
|                              |
| Please contact the operator. |
| Push the emergency button    |
|                              |
|                              |
|                              |
|                              |
+------------------------------+
     high resolution screen

目标:

守护程序必须在屏幕上显示一些简单的文本。基本上我只需要在标准输出上编写文本行,但使用可配置的大尺寸字体和几何形状,就像我可以在桌面环境上使用 gnome 终端一样。重点是我会避免仅仅为了解决问题而安装桌面环境。

终端示例中的大文本

clear && echo "Please contact operator"在屏幕截图中,它在 gnome 终端上显示了具有不同字体大小设置的命令。

顺便说一句,要求大字体的原因是卡车司机将在距计算机显示器 1/2 米的距离处阅读显示的文本。

笔记:

  • 我探索的一种方法是设置 TTY 字符设置(在 GRUB 级别)。不幸的是,这似乎不是一个好的选择,因为字体设置非常有限。

  • 阅读Linux 没有图形操作系统但有图形资源,也许帧缓冲模式可以是一个选择?

问题:

如何在无头计算机上显示大的正面文本(因此以图形模式)?

答案1

我回答自己只是为了分享我发现的 3 个解决方案,从最差到最好的恕我直言:

  1. 使用类似toilet或的程序figlet
clear && printf "push the\nemergency\nbutton" | toilet -t --font=mono12

                               ▄▄                            ▄▄
                               ██                    ██      ██
 ██▄███▄   ██    ██  ▄▄█████▄  ██▄████▄            ███████   ██▄████▄   ▄████▄
 ██▀  ▀██  ██    ██  ██▄▄▄▄ ▀  ██▀   ██              ██      ██▀   ██  ██▄▄▄▄██
 ██    ██  ██    ██   ▀▀▀▀██▄  ██    ██              ██      ██    ██  ██▀▀▀▀▀▀
 ███▄▄██▀  ██▄▄▄███  █▄▄▄▄▄██  ██    ██              ██▄▄▄   ██    ██  ▀██▄▄▄▄█
 ██ ▀▀▀     ▀▀▀▀ ▀▀   ▀▀▀▀▀▀   ▀▀    ▀▀               ▀▀▀▀   ▀▀    ▀▀    ▀▀▀▀▀
 ██




  ▄████▄   ████▄██▄   ▄████▄    ██▄████   ▄███▄██   ▄████▄   ██▄████▄   ▄█████▄  ▀██  ███
 ██▄▄▄▄██  ██ ██ ██  ██▄▄▄▄██   ██▀      ██▀  ▀██  ██▄▄▄▄██  ██▀   ██  ██▀    ▀   ██▄ ██
 ██▀▀▀▀▀▀  ██ ██ ██  ██▀▀▀▀▀▀   ██       ██    ██  ██▀▀▀▀▀▀  ██    ██  ██          ████▀
 ▀██▄▄▄▄█  ██ ██ ██  ▀██▄▄▄▄█   ██       ▀██▄▄███  ▀██▄▄▄▄█  ██    ██  ▀██▄▄▄▄█     ███
   ▀▀▀▀▀   ▀▀ ▀▀ ▀▀    ▀▀▀▀▀    ▀▀        ▄▀▀▀ ██    ▀▀▀▀▀   ▀▀    ▀▀    ▀▀▀▀▀      ██
                                          ▀████▀▀                                 ███


 ▄▄
 ██                    ██        ██
 ██▄███▄   ██    ██  ███████   ███████    ▄████▄   ██▄████▄
 ██▀  ▀██  ██    ██    ██        ██      ██▀  ▀██  ██▀   ██
 ██    ██  ██    ██    ██        ██      ██    ██  ██    ██
 ███▄▄██▀  ██▄▄▄███    ██▄▄▄     ██▄▄▄   ▀██▄▄██▀  ██    ██
 ▀▀ ▀▀▀     ▀▀▀▀ ▀▀     ▀▀▀▀      ▀▀▀▀     ▀▀▀▀    ▀▀    ▀▀


  1. 在帧缓冲区上可视化图像

如果文本是“静态”(固定),解决方案是在帧缓冲区上显示位图(包含所需文本的图像)。

一个古老但不错的实用程序是fbi

$ sudo apt install fbi

因此,拥有图像:fullscreen_text_image.PNG全屏位图(例如 PNG 格式),下面是显示图像 5 秒的命令(技巧):

sudo fbi --noverbose --timeout 5 --once fullscreen_text_image.PNG

  1. 帧缓冲终端仿真

fbterm是一个旧的帧缓冲终端仿真程序。一个很好的功能是您可以选择很多选项,例如您可以有非常大的字体大小:

sudo apt install fbterm

# run the terminal emulation on the framebuffer
fbterm --font-size=300

# remove prompt
PS1=''

# remove cursor
setterm --cursor off

# other settings (e.g. change background color)
# setterm --background red

# font change
# setfont /usr/share/consolefonts/Uni3-Terminus32x16.psf.gz

如图所示运行 fbterm,可以有一个“正常”的标准输出,但具有很高的图形质量的非常大的文本!看图片:

在此输入图像描述

相关内容