2009-09-06 5 views
5

Я хочу создать диспетчер окон на любом из этих языков (желательно рубиновый). Я честно понятия не имею, с чего начать, за исключением того, что мне понадобится какой-то модуль X для загрузки. Поэтому, если кто-нибудь подскажет, было бы здорово, если бы вы могли указать мне в правильном направлении. Спасибо(Ruby || Python) оконный менеджер

ответ

6

XCB, следующий gen API для X использует формат XML для определения X-протоколов и создает определенные языковые привязки со сценарием. Это похоже на концепцию SWIG, за исключением того, что вместо описания C API они описывают X-протоколы.

В настоящее время привязки существуют для C и Python. Порт Ruby теоретически был бы только вопросом написания переводчика с языка определения протокола XML на Ruby. Сгенерированный код Ruby может либо обернуть C API, либо реализовать протокол проводки в чистом Ruby (я рекомендую последний).

API, очевидно, имеет некоторые неотъемлемые преимущества перед устаревшим Xlib, связанным с блокировкой ввода-вывода. Он также имеет порт Windows, как ни странно.

http://xcb.freedesktop.org/

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

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

2

Вы просмотрели http://ruby-xlib-wrap.sourceforge.net/. Кажется, это обеспечивает привязки Ruby для XLib.

Возможно, вам захочется поэкспериментировать с использованием XWindows, прежде чем пытаться написать диспетчер окон.

Почему бы не начать с рабочего стола, чтобы вы могли получить некоторый опыт.

0

не Ruby, или Python, но эти оконные менеджеры также написаны на холодных языках: awesome (Lua) и XMonad (Haskell). Возможно, вы сможете заглянуть внутрь своих внутренних дел и посмотреть, как они работают.

2

Примечание:

1) Удивительный не написано в Lua, это написано в C. Он использует Lua как интерфейс сценариев/конфигурации.

2) Qtile и Samurai-X - два wm, написанные на питоне.

3) Тонкий - это wm, который использует рубин в качестве языка сценариев.

Qtile и тонкие оба являются менеджерами оконной панели.

+0

тонкий написан на языке C, он просто использует Ruby в качестве языка сценариев. – unexist

Смежные вопросы