我正在使用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?)有什么问题吗?
如何通过SSH向fbi发送命令!?
发布于 2018-05-17 01:11:31
要显示图像,fbi需要访问TTY。因此,您需要使用-T 1:
fbi -d /dev/fb0 -T 1 zxcv.png
如果获得access /dev/tty1: Permission denied,则可以使用sudo运行该命令。
不幸的是,我不知道向它发送命令的任何方法。我尝试使用第二回波将东西发送给/dev/tty1,但它导致了fbi崩溃。您的fifo方法似乎也不起作用。
发布于 2018-01-13 15:11:58
尝试将-d /dev/fb0选项与fbi一起使用。
默认情况下,fbi通过查看它要在哪个虚拟控制台设备上使用来找到它应该使用的框架缓冲区设备。显然,它考虑的标准输入为此目的。当您从FIFO重定向它的标准输入时,它会得到一个非控制台设备,并且不能继续。指定要显式使用的框架缓冲区设备可能会有所帮助。
您甚至可能会发现,只要您拥有使用框架缓冲设备所需的权限,甚至不需要FIFO:只要通过SSH连接启动fbi -d /dev/fb0 /myfolder/*.jpg就可以了,如果它适合您的目的。
发布于 2022-10-09 15:36:01
这件事我也有麻烦。我换到了虚拟终端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"否则你什么也得不到,在这种情况下,你需要问一个比我聪明的人
https://unix.stackexchange.com/questions/416785
复制相似问题