【问题标题】:Current stable xlib wrapper for ruby?当前用于 ruby​​ 的稳定 xlib 包装器?
【发布时间】:2011-10-25 03:48:57
【问题描述】:

我的项目有简单的要求:

  1. 获取现有 xorg 应用程序窗口的内容
    (做一些ocr)
  2. 在现有应用的窗口上绘制一些东西(覆盖)

要求 2 不是那么重要,我可以满足于将窗口复制到我自己的。

我花了一上午的时间在有限且过时的项目上浪费时间:

hornet's eye (couldn't find how to reference an existing window)
matju's RubyX11 (wanted ruby 1.7)
moriq's ruby-xlib (unsigned int for int errors during compile)
xlib-wrap (more type errors)

所以除了将 c 与 xlib 或 xcb 一起使用之外,是否有一个不错的当前和稳定的库或语言可以用于快速开发?任何语言都可以,但我更喜欢 ruby​​。

【问题讨论】:

  • 我迅速看着大黄蜂的眼睛。这看起来是一个很有前途的项目。如果它可以做你需要的事情,也许你可以编写自己的简单 Ruby 扩展来使用 C + Ruby C API 来抓取一个窗口。应该不会太难,然后你可以把它喂给大黄蜂进行剩下的处理。
  • 您可能也想看看使用 FFI。如果您只需要操作几个函数/结构,那么设置绑定既快速又容易。
  • @Casper:好的,我用谷歌搜索找到了rubyinside.com/…。我想是时候学会这个了。
  • 嘿..FFI。不知道那个。很好的发现。你也可以检查一下。它使您不必编写 C 代码来与外部库交互。
  • 看起来我已经设置好了。谢谢。

标签: ruby x11 xlib xorg


【解决方案1】:

最后我选择了qt4-qtruby

require 'Qt4'
app = Qt::Application.new(ARGV)
p = Qt::Pixmap.grabWindow(0x182183b) #param is xlib id from xwininfo 

我使用的构建脚本:

sudo apt-get install qt-sdk libsmokeqt4-dev
cmake \
-DRUBY_EXECUTABLE=`which ruby` \
-DRUBY_INCLUDE_PATH=$MY_RUBY_HOME \
&& make && make install

【讨论】:

  • 教师徽章...不幸的是,grabWindow 发生了内存泄漏。我用 xwd(和一个 ramdisk)解决了这个问题。
【解决方案2】:

我开始为 subset of Xlib 编写一个包装器。我包了不少。您可能想查看 C 代码和 Ruby 示例并对其进行修改以使其按您的意愿行事。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-22
    • 1970-01-01
    • 2019-06-15
    • 2013-07-31
    • 1970-01-01
    • 1970-01-01
    • 2013-04-10
    相关资源
    最近更新 更多