(Ruby || Python) оконный менеджер
-
21-09-2019 - |
Вопрос
Я хочу создать оконный менеджер на любом из этих языков (предпочтительно Ruby).Честно говоря, я понятия не имею, с чего начать, кроме того, что мне понадобится какой-то X-модуль для загрузки.Так что, если у кого-то есть подсказки, было бы здорово, если бы вы указали мне правильное направление.Спасибо
Решение
XCB, API следующего поколения для X, использует формат XML для определения протоколов X и генерирует привязки к определенному языку с помощью сценария.По своей концепции он похож на SWIG, за исключением того, что вместо описания API C он описывает протоколы X.
В настоящее время существуют привязки для C и Python.Теоретически порт Ruby будет заключаться всего лишь в написании транслятора с языка определения протокола XML на Ruby.Сгенерированный код Ruby может либо обернуть C API, либо реализовать проводной протокол на чистом Ruby (я рекомендую последнее).
API, по-видимому, имеет некоторые преимущества перед устаревшей Xlib, связанные с блокировкой ввода-вывода.Как ни странно, у него также есть порт для Windows.
Другие советы
Вы посмотрели 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Монад (Хаскелл).Возможно, вы сможете заглянуть внутрь их внутренностей и увидеть, как они работают.