Облазил уже весь инет - ни одного руководства по написанию WM. Смотрел исходники имеющихся программ, но по голому коду не смог разобраться, а имеющиеся там комментарии очень скудны.
Хотелось бы знать, где копать, что-то вроде конкретного руководства:
1. Каким образом один Х клиент (WM), может управлять окнами других программ,
2. Как добавлять к чужим окнам свои украшения и кнопки,
3. Как сделать копию окна запущенной программы (не еще один экземпляр программы в новом окне, но окно-копию имеющегося, запущенной программы),
4. Как вообще потом зарегистрировать новый WM в системе именно как оконный менеджер и загружаться с него.
Просмотренная мной документация по Xlib говорит только о взаимодействии окон новых программ с уже имеющимся менеджером окон, а не о управлении окнами других программ как своими собственными, на правах оконного менеджера.
Поставил перед собой такую задачу в образовательных целях, хочу знать как это работает и как это сделать самому.
Как написать свой оконный менеджер для X11?
Попробуй посмотреть исходники DWM.
1. Каким образом один Х клиент (WM), может управлять окнами других программ,
WM разьве является X клиентом?
4. Как вообще потом зарегистрировать новый WM в системе именно как оконный менеджер и загружаться с него.
Просто запустить бинарник при вырубленном WM.
WM разьве является X клиентом?
Да, такой же клиент как и другие Х программы, по крайней мере из документации по Иксам выходит именно так. Это просто одна из программ, задачей которой является управление всеми окнами, а все графические программы являются клиентскими программами по отношению к Х серверу.
стесняюсь спросить: вы man X читали? по ссылкам ходили?
стесняюсь спросить: вы man X читали? по ссылкам ходили?
Нет man Xorg`а не читал, но ведь я не по стандартному Х протоколу хочу писать - уже давно существует библиотека Xlib, но я нигде не видел руководства по Xlib, где бы говорилось как написать Оконный менеджер, в основном только все о взаимодействии с ним (чтобы обойти его и самому управлять окном своей программы), мне же нужно, чтобы сам WM распоряжался всеми окнами.
Просмотрел исходники DWM - там действительно, как то еще можно разобраться. Там создается структура "Window", в которой все новые окна, помещаются в стек, а от туда, структурой "Client", они организовываются специальными командами (из библиотеки Xlib) для задания им новых параметров (координат и размеров). Это насколько я понял по исходникам.
Попробую разобраться с имеющимся материалом, если получится - напишу руководство. Думаю написание WM лучшее средство, чтобы выучить Xlib, потому, что для других прикладных программ используют библиотеки более верхнего уровня (GDM, QT, Tk, wxWidgets и другие, кому какие нравятся).
Если кто-то владеет опытом написания Менеджера окон или может предложить конкретные примеры по указанным, в головном посте, пунктам, пишите, с удовольствием посмотрим. Думаю эта тема интересна пользователям. Видел на других форумах подобные темы (открытые не мной), которые остались без ответов.
Эх, погорячился я :rolleyes:
Действительно в man`е X много полезной информации, а также в манах команд Xlib.
man`е X много полезной информации
алсо, посмотрите SEE ALSO ;)
Попробую разобраться с имеющимся материалом, если получится - напишу руководство. Думаю написание WM лучшее средство, чтобы выучить Xlib
было-бы просто чудесно!
алсо, посмотрите SEE ALSO ;)
!
Что это? :o
речь идет о man-страницах... в конце которых всегда пишется "SEE ALSO", что значит "СМОТРИТЕ ТАК ЖЕ".... т.е. список тем имеющих отношение к этой...
Понял, сасибо! wink
Просмотренная мной документация по Xlib говорит только о взаимодействии окон новых программ с уже имеющимся менеджером окон, а не о управлении окнами других программ как своими собственными, на правах оконного менеджера.
Исходные коды. Если нужно что-то конкретное, то всегда можно спросить в рассылке или IRC у разработчиков/майнтейнеров.
Но для начала попробуйте понять как работают уже написанные оконные менеждеры. Возмите что-то простое и поиграйтесь с этим.
Например fluxbox:
mkdir hacking
cd hacking
git clone git://git.fluxbox.org/fluxbox.git fluxbox
cd fluxbox
du -sh src/
2.6M src/Думаю, что два с половиной метра исходников переработать будет возможно.
p.s.
Блин, аж самому интересно стало wink
Но для начала попробуйте понять как работают уже написанные оконные менеждеры. Возмите что-то простое и поиграйтесь с этим.
Например fluxbox:
в слаке и качать ничего не надо.
в слаке и качать ничего не надо.
Не знал, что у ТС слака
[quote=drBatty]в слаке и качать ничего не надо.
Не знал, что у ТС слака[/quote]
я не знаю что там у ТС. Это совет: для кодера проще всего именно Slackware, ибо там есть все необходимые инструменты и исходные тексты. А также мануалы. В отличие от других дистров, для которых не только придётся ещё что-то искать и качать, но ещё и сопрягать найденное с дистром.