5

我想用这两种语言(最好是 ruby​​)制作一个窗口管理器。老实说,我不知道从哪里开始,除了我需要加载某种 X 模块。因此,如果有人有线索,如果您能指出我正确的方向,那就太好了。谢谢

4

4 回答 4

6

XCB 是 X 的下一代 API,它使用 XML 格式来定义 X 协议并使用脚本生成特定的语言绑定。它在概念上与 SWIG 相似,只是它不是描述 C API,而是描述 X 协议。

目前,存在 C 和 Python 的绑定。理论上,Ruby 移植只需编写一个从 XML 协议定义语言到 Ruby 的翻译器。生成的 Ruby 代码可以包装 C API 或在纯 Ruby 中实现有线协议(我推荐后者)。

与阻塞 I/O 相关的传统 Xlib 相比,该 API 显然具有一些固有的优势。奇怪的是,它还有一个 Windows 端口。

http://xcb.freedesktop.org/

http://xcb.freedesktop.org//XcbPythonBinding/

http://xcb.freedesktop.org//win32port/

于 2009-09-11T23:27:03.530 回答
2

你看过http://ruby-xlib-wrap.sourceforge.net/吗?这似乎为 XLib 提供了 Ruby 绑定。

在尝试编写窗口管理器之前,您可能想尝试使用 XWindows。

为什么不从桌面开始,这样你就可以获得一些经验。

于 2009-09-06T21:43:15.750 回答
2

笔记:

1) Awesome 不是用 lua 写的,它是用 C 写的。它使用 Lua 作为脚本/配置接口。

2) Qtile 和 Samurai-X 是两个用 python 编写的 wm。

3) Subtle 是一个使用 ruby​​ 作为脚本语言的 wm。

Qtile 和 Subtle 都是平铺窗口管理器。

于 2009-11-25T05:22:14.630 回答
0

不是 Ruby 或 Python,但这些窗口管理器也是用很酷的语言编写的:awesome (Lua) 和XMonad (Haskell)。也许你可以窥探它们的内部结构,看看它们是如何工作的。

于 2009-09-12T00:00:36.143 回答