我已经使用 D 编程语言的 gtkD 绑定编写了一些 GTK 程序,这些程序原本是控制台应用程序,但能够在屏幕上显示绘图并将它们保存到文件中。我想在我只有基于控制台的 SSH 访问的机器上运行这些,这意味着这些图不会显示在屏幕上,但仍会写入文件。
当我调用 Main.init() 时,我得到一个 Gtk-WARNING **: cannot open display,如预期的那样。当我改为调用 Main.initCheck() 并忽略错误时,我只是在稍后的执行中遇到更多与缺少屏幕相关的错误。
是否有一些简单的方法可以让我的程序忽略没有可用屏幕的事实,将其所有的屏幕绘制到某个虚拟设备(相当于 /dev/null 的图形)并仍然实际绘制到 Pixmaps 和 Pixbufs(对于将绘图保存到文件)并运行应用程序的非基于 GUI 的部分?
编辑:如果应用程序启动一个窗口并在事件循环上阻塞,理想的做法是立即关闭窗口(或首先无法成功打开它)并继续运行基于非 GUI 的部分的程序。如果这是不可能的,我可以通过确保不启动任何窗口来解决它。
此外,Pixbufs 和 Pixmaps 似乎在没有屏幕的情况下无法工作。我尝试绘制到 Pixmap,从中创建一个 Pixbuf,然后在调用 Main.checkInit() 并忽略错误或没有 init 语句之后将结果保存到文件中,无论哪种方式 GTK 都会抱怨缺少屏幕。