Вопрос

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

Это было полезно?

Решение

XCB, API следующего поколения для X, использует формат XML для определения протоколов X и генерирует привязки к определенному языку с помощью сценария.По своей концепции он похож на SWIG, за исключением того, что вместо описания API C он описывает протоколы 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/

Другие советы

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

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

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

Примечание:

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

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

3) Subtle — это wm, использующий Ruby в качестве языка сценариев.

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

Не Ruby или Python, но эти оконные менеджеры тоже написаны на крутых языках: потрясающий (Луа) и XМонад (Хаскелл).Возможно, вы сможете заглянуть внутрь их внутренностей и увидеть, как они работают.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top