我用来fbi
显示一些图像。fbi
有一些键盘控件,如+
、-
、Page Up
、Page Down
等来控制图像。
我不想使用键盘,而是想通过 SSH 将这些控制命令发送到fbi
.
我已经尝试过以下方法:
mkfifo /tmp/mycmd
fbi /myfolder/*.jpg < /tmp/mycmd &
这样做后,fbi
无法启动。我尝试发送一些命令,例如echo . > /tmp/mycmd
,但它没有启动;并给出以下错误:
using "DejaVu Sans Mono-16", pixelsize=16.67 file=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono.ttf
ioctl VT_GETSTATE: Inappropriate ioctl for device (not a linux console?)
问题是什么?
如何fbi
通过 SSH 发送命令!?
答案1
要显示图像,fbi
需要访问 TTY。所以,你需要使用-T 1
:
fbi -d /dev/fb0 -T 1 zxcv.png
如果得到access /dev/tty1: Permission denied
,您可以使用 运行该命令sudo
。
不幸的是我不知道有什么方法可以向它发送命令。我尝试使用蒂耶乔发送东西/dev/tty1
,但它导致fbi
崩溃。你的fifo
方法好像也不起作用。
答案2
我也遇到了这个问题。我改成虚拟终端1,它起作用了:
# Change to virtual terminal 1
chvt 1
# Make a dummy image with ImageMagick if you need one
magick -size 640x480 xc:red image.jpg
# Display on framebuffer
fbi -d /dev/fb0 -T 1 image.jpg
如果您遇到问题,您可以检查是否/dev/fb0
确实是您的帧缓冲区以及您是否具有写入权限:
cat /dev/random > /dev/fb0
如果您的屏幕被随机颜色的像素覆盖,您可以推断出/dev/fb0
确实是您的帧缓冲区。
如果你得到一个“没有权限”错误,请重试:
sudo cat /dev/random > /dev/fb0
如果有效,请更改权限,/dev/fb0
例如:
sudo chmod 666 /dev/fb0
或者,您可以启动提升的 bash shell、更改权限并一次性显示所有内容:
sudo bash -c "chvt 1; fbi -T 1 -d /dev/fb0 image.jpg"
否则你什么也得不到,在这种情况下你需要问比我更聪明的人——有很多东西!
答案3
尝试使用-d /dev/fb0
带有 的选项fbi
。
默认情况下,fbi
通过查看正在使用的虚拟控制台设备来查找应该使用的帧缓冲区设备。显然,它会为此目的查看其标准输入。当您从 FIFO 重定向其标准输入时,它会获得非控制台设备并且无法继续。明确指定要使用的帧缓冲区设备可能会有所帮助。
您甚至可能会发现,只要您拥有使用帧缓冲区设备的必要权限,您甚至不需要 FIFO:fbi -d /dev/fb0 /myfolder/*.jpg
如果适合您的目的,只需通过 SSH 连接启动即可。