如何在分割视图窗口中显示 BASH X 终端和图形?

如何在分割视图窗口中显示 BASH X 终端和图形?

我使用 BASH 脚本创建了一个简单的教育工具,该工具在 X 终端中运行。它会显示一个提示,用户可以在其中输入选择,如 Bash 初学者指南中所述捕获用户输入,并且先前输入的内容会被推到屏幕上。

 __________________________
|________________________X_|
| ...                    |^|
|       30               | |
|     x 10               | |
|    ------              | |
| >                      |=|
|________________________|v|

有时,我需要在此文本输入区域附近显示一些图形,这些图形在用户键入时可见。我尝试了各种解决方案:

  • 使用txt2img来自libcasa.这会将终端窗口内的图形显示为彩色 ASCII 艺术,但复杂的图形不容易识别。
  • 用于eog显示图片。这会在另一个窗口中显示图片,但要求用户在继续使用终端之前按“q”或退出图形窗口。

有没有办法呈现一个分割视图窗口,将 BASH 终端的脚本放在一个窗格中,将高质量图形放在另一个窗格中,并且可以通过 BASH 脚本进行更新?这可能看起来像这样:

 __________________________
|________________________X_|
|                          |
|           (PNG)          |
|                          |
|==========================|
| ...                    |^|
| How many apples        | |
| do you see in the      | |
| picture?               | |
| >                      |=|
|________________________|v|

答案1

部分答案:

您需要的是一个图像查看器程序,可以显示图像而无需抓取键盘焦点。然后你可以杀死它并重新运行它。 (在后台启动它,并且$!将是PID)。或者它可以从管道读取要显示的文件列表,或者更好的是,从管道读取“立即显示此文件”之类的命令,您可以将其作为 shell 的文件描述符之一打开。

(我认为这就是这个问答的目的:后台进程管道输入。扩展它以创建一个新的 FD 作为 fd 42,以便您可以写入管道可能echo foo >&42会起作用。或者也许您需要coproc为此使用。)

我环顾四周,但没有发现任何图像查看器可以选择不抓住焦点。可以添加标志来请求现有图像查看器的代码,并编译它的自定义版本。

相关内容