Создание [закрытого] менеджера окон

Относительно Надежности

у меня нет ничего работающего на облачном сервисе, но я хотел бы решить проблему надежности.

я уверен, что у команды Amazon есть намного больше опыта и ресурсов, доступных для выполнения мощного веб-сайта, чем я. Они снизились в течение нескольких часов на прошлой неделе, но я полагаю, что в целом их время работы будет лучше, чем если бы Вы или я имели бы самостоятельно с нашим текущим уровнем опыта и ресурсов.

45
задан asveikau 28 November 2009 в 02:13
поделиться

4 ответа

Одним из важных решений является то, как вы собираетесь взаимодействовать с X-сервером. Вы можете использовать привязки Xlib для выбранного языка или привязки более высокого уровня XCB . (Если вы ненормальный , вы можете открыть сокет для X-сервера напрямую.)

Чтобы узнать, как должен себя вести оконный менеджер, есть два документа, которые определяют соглашения и политики: EWMH и ICCCM 1 . Соответствие этим требованиям означает, что ваш оконный менеджер будет вести себя хорошо в GNOME, KDE, XFCE и любой другой среде рабочего стола, которая приходит вместе, хотя просто игнорировать их, безусловно, легче с первой попытки.

Оконный менеджер не обязательно должен быть огромным , сложный клубок C. Успешные оконные менеджеры были написаны на языках высокого уровня, таких как Lisp, Haskell и Python, и даже некоторые из них на C остались небольшими и удобочитаемыми. XMonad , написанный на Haskell, довольно долго оставался менее 1000 строк. StumpWM (Common Lisp) и DWM (C) оба весьма минималистичны. Вы могли бы прочитать их исходный код, чтобы получить некоторое вдохновение относительно того, как разработать WM.


1 Элайджа Ньюрен написал:

НЕ ИДТИ И ЧИТАЙТЕ ЭТИ ВЕЩИ. ОНИ ДЕЙСТВИТЕЛЬНО, ДЕЙСТВИТЕЛЬНО СКУЧНЫЕ. Если вы это сделаете, вы, вероятно, в конечном итоге выспитесь, вместо того, чтобы взламывать Metacity. ; -)

Если вдуматься, в документации Metacity есть что сказать о том, как он взаимодействует с окнами и какие расширенные свойства он поддерживает.

Haskell, Python и даже некоторые на C остались маленькими и удобочитаемыми. XMonad , написанный на Haskell, довольно долго оставался менее 1000 строк. StumpWM (Common Lisp) и DWM (C) оба весьма минималистичны. Вы могли бы прочитать их исходный код, чтобы получить некоторое вдохновение относительно того, как разработать WM.


1 Элайджа Ньюрен написал:

НЕ ИДТИ И ЧИТАЙТЕ ЭТИ ВЕЩИ. ОНИ ДЕЙСТВИТЕЛЬНО, ДЕЙСТВИТЕЛЬНО СКУЧНЫЕ. Если вы это сделаете, вы, вероятно, в конечном итоге выспитесь, вместо того, чтобы взламывать Metacity. ; -)

Если вдуматься, в документации Metacity есть что сказать о том, как он взаимодействует с окнами и какие расширенные свойства он поддерживает.

Haskell, Python и даже некоторые на C остались маленькими и удобочитаемыми. XMonad , написанный на Haskell, довольно долго оставался менее 1000 строк. StumpWM (Common Lisp) и DWM (C) оба весьма минималистичны. Вы могли бы прочитать их исходный код, чтобы получить некоторое вдохновение относительно того, как разработать WM.


1 Элайджа Ньюрен написал:

НЕ ИДТИ И ЧИТАЙТЕ ЭТИ ВЕЩИ. ОНИ ДЕЙСТВИТЕЛЬНО, ДЕЙСТВИТЕЛЬНО СКУЧНЫЕ. Если вы это сделаете, вы, вероятно, в конечном итоге выспитесь, вместо того, чтобы взламывать Metacity. ; -)

Если вдуматься, в документации Metacity есть что сказать о том, как он взаимодействует с окнами и какие расширенные свойства он поддерживает.

написано на Haskell, довольно долго оставалось меньше 1000 строк. StumpWM (Common Lisp) и DWM (C) оба весьма минималистичны. Вы могли бы прочитать их исходный код, чтобы получить некоторое вдохновение относительно того, как разработать WM.


1 Элайджа Ньюрен написал:

НЕ ИДТИ И ЧИТАЙТЕ ЭТИ ВЕЩИ. ОНИ ДЕЙСТВИТЕЛЬНО, ДЕЙСТВИТЕЛЬНО СКУЧНЫЕ. Если вы это сделаете, вы, вероятно, в конечном итоге выспитесь, вместо того, чтобы взламывать Metacity. ; -)

Если вдуматься, в документации Metacity есть что сказать о том, как он взаимодействует с окнами и какие расширенные свойства он поддерживает.

написано на Haskell, довольно долго оставалось меньше 1000 строк. StumpWM (Common Lisp) и DWM (C) оба весьма минималистичны. Вы могли бы прочитать их исходный код, чтобы получить некоторое вдохновение относительно того, как разработать WM.


1 Элайджа Ньюрен написал:

НЕ ИДТИ И ЧИТАЙТЕ ЭТИ ВЕЩИ. ОНИ ДЕЙСТВИТЕЛЬНО, ДЕЙСТВИТЕЛЬНО СКУЧНЫЕ. Если вы это сделаете, вы, вероятно, в конечном итоге выспитесь, вместо того, чтобы взламывать Metacity. ; -)

Если вдуматься, в документации Metacity есть что сказать о том, как он взаимодействует с окнами и какие расширенные свойства он поддерживает.

Вы могли бы прочитать их исходный код, чтобы получить некоторое вдохновение относительно того, как разработать WM.


1 Элайджа Ньюрен написал:

НЕ ИДТИ И ЧИТАЙТЕ ЭТИ ВЕЩИ. ОНИ ДЕЙСТВИТЕЛЬНО, ДЕЙСТВИТЕЛЬНО СКУЧНЫЕ. Если вы это сделаете, вы, вероятно, в конечном итоге выспитесь, вместо того, чтобы взламывать Metacity. ; -)

Если вдуматься, в документации Metacity есть что сказать о том, как он взаимодействует с окнами и какие расширенные свойства он поддерживает.

Вы могли бы прочитать их исходный код, чтобы получить некоторое вдохновение относительно того, как разработать WM.


1 Элайджа Ньюрен написал:

НЕ ИДТИ И ЧИТАЙТЕ ЭТИ ВЕЩИ. ОНИ ДЕЙСТВИТЕЛЬНО, ДЕЙСТВИТЕЛЬНО СКУЧНЫЕ. Если вы это сделаете, вы, вероятно, в конечном итоге выспитесь, вместо того, чтобы взламывать Metacity. ; -)

Если вдуматься, в документации Metacity есть что сказать о том, как он взаимодействует с окнами и какие расширенные свойства он поддерживает.

64
ответ дан 26 November 2019 в 20:59
поделиться

tinywm на языке C может оказаться полезным для начала работы.

28
ответ дан 26 November 2019 в 20:59
поделиться

Хотя технически возможен другой язык и набор библиотек, я думаю, что лучшим выбором языка будет C, а также библиотеки Xlib или XCB. Большинство оконных менеджеров для X используют это, и здесь уже есть большой импульс и зрелость для этих конкретных библиотек.

Некоторые документы, представляющие интерес:

  • Руководство Xlib - необходимо прочитать для низкоуровневого программирования X.

    1229] ICCCM - соглашения и интерфейсы для связи между X-приложениями и оконным менеджером.

  • XCB - замена Xlib 21 века. Это немного более низкий уровень, и он принимает меньше решений за вас, чем Xlib. Насколько я понял, результатом является потенциально лучшая производительность из-за большего потенциала асинхронности, но я должен предупредить, что никогда не работал с этим.
12
ответ дан 26 November 2019 в 20:59
поделиться
  • Какой язык лучше всего для этого?

    Какой язык вам удобнее всего. Существует множество примеров успешных оконных менеджеров на разных языках. Qtile и xmonad - хорошие примеры, написанные на Python и Haskell соответственно.

  • Где взять ресурсы для обучения?

    Я бы посмотрел на некоторые из существующих окон менеджеры. Их очень много, поэтому по крайней мере некоторые из них должны иметь читаемый код. Вот Исчерпывающий список оконных менеджеров для Unix .

8
ответ дан 26 November 2019 в 20:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: