我的问题是什么?
是否可以在命令行中导出 gnuradio-companion 流程图的屏幕截图? 命令
grcc
提供了将 .grc
流程图文件编译为 python 文件的功能。但它不提供将图形导出为屏幕截图的功能,这在您使用 gnuradio-companion GUI 时是可能的(使用 Ctrl-P
)。
我需要这个做什么?
我目前正在使用一堆
.grc
流程图,并将它们存储在 gitlab 中。我想建立某种管道,生成这些 grc 文件的屏幕截图,以便与我合作的人可以查看 gnuradio 流程图,而无需安装 gnuradio。因此,为此,我需要具备使用某种脚本从命令行生成屏幕截图的能力。
查看 gnuradio 源代码this是我找到的唯一对屏幕捕获的引用,即使我找到可以生成屏幕捕获的代码,我也不知道如何使用它来创建一个仅生成一个独立的脚本屏幕截图。
好的,现在对我有用的解决方案是使用虚拟 X 服务器(带有 Xvfb)并手动执行导出功能。脚本看起来像这样:
#!/bin/bash
if [ -z "$1" ];
then
echo "Usage: $1 [flowgraph .grc file]"
echo "This script outputs an output.png file"
exit 1
fi
DISPLAY=:2
echo "Starting Xvfb instance on display $DISPLAY"
Xvfb $DISPLAY &
echo "Starting GRC..."
gnuradio-companion $1 2>&1 1>/dev/null &
sleep 2
xdotool key ctrl+p
xdotool key ctrl+a
xdotool key BackSpace
xdotool type output.png
xdotool key Return
echo "Saving Screenshot..."
sleep 2
echo "Killing GRC..."
killall gnuradio-companion
echo "Killing Xvfb..."
killall Xvfb
脚本的输出称为
output.png
并将放置在当前目录中。这是一个相当老套的解决方案,但目前我没有想到更好的解决方案。