The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Представлен RubyWM, оконный менеджер, написанный целиком на Ruby, opennews (??), 23-Янв-24, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


120. "Представлен RubyWM, оконный менеджер, написанный целиком на ..."  +/
Сообщение от Аноним (116), 24-Янв-24, 08:25 
Подробности будут?
Ответить | Правка | К родителю #64 | Наверх | Cообщить модератору

122. "Представлен RubyWM, оконный менеджер, написанный целиком на ..."  +/
Сообщение от zhmylove (ok), 24-Янв-24, 08:36 
> Подробности будут?

Будут, когда я опубликую статью о korgwm.

Если кратко: он сложнее для небольших проектов -- требует написать ещё композитор, у него хуже документация и в нём криво работает webrtc screen sharing -- как минимум, в дефолтном дебиане с гномом. Кто-то мне говорил, что после недели танцев с бубнами смог завести, но это too much. А ещё я не знаю, как они этого добились, но когда в одном и том же хроме пытаешься в конфлюенсе двигать страницы по иерархии, в вяленом даже не видно, куда страница встанет, там что-то не так с рендерингом этого плавающего окошка -- в иксах всё отлично.

Для всех этих недостатков нет ни одного достоинства, которое реально было бы в его пользу.

Пресловутый скейлинг и всё, что связано с этим лично я на глаз не различаю с иксами. Изоляция приложений на десктопе вообще никому не нужна. Какие там ещё киллерфичи...

Ответить | Правка | Наверх | Cообщить модератору

124. "Представлен RubyWM, оконный менеджер, написанный целиком на ..."  +/
Сообщение от n00by (ok), 24-Янв-24, 08:49 
> он сложнее для небольших проектов -- требует написать ещё композитор

Зачем нужен в клиенте Wayland композитор?

> у него хуже документация

Хуже чего? Вот этого?

The window hierarchy

TODO

Last edited Sat 29 Mar 2014 03:59:04 PM UTC

https://xcb.freedesktop.org/tutorial/

Ответить | Правка | Наверх | Cообщить модератору

126. "Представлен RubyWM, оконный менеджер, написанный целиком на ..."  +/
Сообщение от Аноним (116), 24-Янв-24, 08:54 
По ощущениям автор говорил о написании в целом, для дистра, а не для клиента... не?
Ответить | Правка | Наверх | Cообщить модератору

129. "Представлен RubyWM, оконный менеджер, написанный целиком на ..."  –1 +/
Сообщение от n00by (ok), 24-Янв-24, 08:57 
"Для дистра" ничего не пишут, а берут готовое, собирают и упаковывают в пакетики.
Ответить | Правка | Наверх | Cообщить модератору

128. "Представлен RubyWM, оконный менеджер, написанный целиком на ..."  +/
Сообщение от zhmylove (ok), 24-Янв-24, 08:57 
>> он сложнее для небольших проектов -- требует написать ещё композитор
> Зачем нужен в клиенте Wayland композитор?

Затем, что это не простой клиент, а оконный менеджер.

> https://xcb.freedesktop.org/tutorial/

У xcb да, тоже смешная дока, но там комменты в коде есть и у меня почему-то не возникло проблем написать вм на xcb.

С вяленым труднее -- попробуй сам.
Или хотя бы почитай чужие исходники.

Ответить | Правка | К родителю #124 | Наверх | Cообщить модератору

130. "Представлен RubyWM, оконный менеджер, написанный целиком на ..."  +/
Сообщение от n00by (ok), 24-Янв-24, 08:58 
> С вяленым труднее -- попробуй сам.

Как раз я и попробовал.

> Или хотя бы почитай чужие исходники.

Не нашёл в твоём профиле ссылки на твои исходники.

Ответить | Правка | Наверх | Cообщить модератору

131. "Представлен RubyWM, оконный менеджер, написанный целиком на ..."  +/
Сообщение от zhmylove (ok), 24-Янв-24, 09:00 
>> С вяленым труднее -- попробуй сам.
> Как раз я и попробовал.

Скинь ссылку на твой вм, я тоже почитаю.

>> Или хотя бы почитай чужие исходники.
> Не нашёл в твоём профиле ссылки на твои исходники.

https://github.com/zhmylove/korgwm

А вот интерфейс к xcb, тоже моего авторства:

https://github.com/zhmylove/X11-XCB

Его Миша держал, автор i3, но там ничего не было и мы с ним договорились, что я забираю, чтобы добавить вм-специфичную функциональность

Ответить | Правка | Наверх | Cообщить модератору

134. "Представлен RubyWM, оконный менеджер, написанный целиком на ..."  +/
Сообщение от n00by (ok), 24-Янв-24, 09:26 
>>> С вяленым труднее -- попробуй сам.
>> Как раз я и попробовал.
> Скинь ссылку на твой вм, я тоже почитаю.

Кажется, я понял. Априори постулируется, что каждый пишет "ВМ", и на этом основании строятся некие выводы.

На практике подавляющее большинство пишет "приложения", то есть клиентов. При этом клиентов xcb надо ещё поискать (навскидку: Qt, mpv и, поскольку не вспоминается еще что-то, мой https://opennet.ru/53778-game). Остальные используют прослойки типа Qt или QTK+ (до сих пор обёртка надо Xlib).

>>> Или хотя бы почитай чужие исходники.
>> Не нашёл в твоём профиле ссылки на твои исходники.
> https://github.com/zhmylove/korgwm

Спасибо, очень здорово видеть, что Perl жив и на нём пишут такие крутые штуки, как WM. Однако, если говорить о сложности, то для одной только инициализации Vulkan до состояния "чёрный квадрат" надобно 1000 строк на Си. С OLG последних версий не существенно меньше, как уверяют знатоки.

Если автору для себя не требуются все эти красивости, это одно. Если же говорить о графической оболочке, соответствующую запросам публики - то оказывается, что при отсутствии полноценной поддержки современного оборудования сравнивается незначительная часть кода.

Ответить | Правка | Наверх | Cообщить модератору

140. "Представлен RubyWM, оконный менеджер, написанный целиком на ..."  +/
Сообщение от Аноним (19), 24-Янв-24, 13:16 
> Кажется, я понял. Априори постулируется, что каждый пишет "ВМ", и на этом основании строятся некие выводы.

Не, ты кажется не понял. Вот смотри:
* Новость про оконный менеджер.
* Ветка начинается с поста "Представлен новый оконный менеджер, и .. сразу на Иксах. Вэйланда нет."
* zhmylove написал в про сложность написания оконного менеджера для Вейленда, по сравнению с Иксами.

И тут ты такой приходишь и делаешь вид, что речь идёт про GUI-приложения, а не про оконные менеджеры. Да ещё и передёргиваешь, что априори что-то там постулируется.

Ответить | Правка | Наверх | Cообщить модератору

146. "Представлен RubyWM, оконный менеджер, написанный целиком на ..."  +/
Сообщение от n00by (ok), 24-Янв-24, 17:44 
Ну да, сначала я не понял, потому что оконный менеджер для Wayland - это нонсенс (в смысле "не имеет смысла", а не как почему-то принято понимать). А потом понял, о чём и сообщил. И я надеюсь, автор уточнит в статье, что речь именно об оконных менеджерах, т.е. случаях редких, иначе эксперты начитаются и будут обобщать на всё.
Ответить | Правка | Наверх | Cообщить модератору

137. "Представлен RubyWM, оконный менеджер, написанный целиком на ..."  +/
Сообщение от n00by (ok), 24-Янв-24, 11:28 
> А вот интерфейс к xcb, тоже моего авторства:
> https://github.com/zhmylove/X11-XCB
> Его Миша держал, автор i3, но там ничего не было и мы
> с ним договорились, что я забираю, чтобы добавить вм-специфичную функциональность

По этому поводу изначально у меня возник вопрос, почему именно XCB, а Xlib. XCB создавали, что бы уйти от блокирующих вызовов. То есть что бы гипотетически возможно было создать некий КА, который бы в цикле отправлял пачкой запросы, а на следующей итерации обрабатывал ответы, если они есть. Но живых вариантов такого я не нашёл. Xlib проще, потому её и используют поныне.

Глянул исходники, например вот это по сути дублирование кода из существующей реализации Xlib:


sub _screens_from_root {
    my $self = shift;
    my $cookie = $self->get_geometry($self->get_root_window());
    my $geom = $self->get_geometry_reply($cookie->{sequence});
    return [ X11::XCB::Screen->new(rect => X11::XCB::Rect->new($geom)) ];
}

т.е. наружу (для клиентов библиотеки) выставлена своеобразная реализация Xlib на Perl.
Ответить | Правка | К родителю #131 | Наверх | Cообщить модератору

141. "Представлен RubyWM, оконный менеджер, написанный целиком на ..."  +/
Сообщение от zhmylove (ok), 24-Янв-24, 13:18 

> т.е. наружу (для клиентов библиотеки) выставлена своеобразная реализация Xlib на Perl.

Синхронность это не единственный недостаток Xlib. Самая большая проблема -- кеши, непредсказуемость и сложность взаимодействия с X11.

XCB это не "асинхронный Xlib" -- это биндинги к Х протоколу, что расширяет возможности программы.
Например, некоторых вещей не было в Xlib (не было и в XCB), но удобнее было припилить их к XCB. Это как сравнивать Gtk2 и Gtk3, который уже на GObject Introspection сделан.

Да, некоторые интерфейсы X11-XCB синхронные (для удобства), но "наружу" всё же выставлена нормальная реализация xcb. Там не всё в исходниках видно, бо́льшая часть всего генерируется при сборке.

Ответить | Правка | Наверх | Cообщить модератору

149. "Представлен RubyWM, оконный менеджер, написанный целиком на ..."  +/
Сообщение от n00by (ok), 24-Янв-24, 18:02 
Вот когда нужна предсказуемость, в частности более-менее гарантированное время отклика на действие пользователя ("тиринг" лишь частный случай, есть ещё "инпут лаг"), тогда оказывается, что реализовать самому "композитор" - это необходимость, а не дополнительная сложность.
Ответить | Правка | Наверх | Cообщить модератору

138. "Представлен RubyWM, оконный менеджер, написанный целиком на ..."  +/
Сообщение от n00by (ok), 24-Янв-24, 11:46 
А основная претензия к Wayland, насколько я понял -- это монолит из сервера и менеджера окон. То есть годным "композитор" был бы, предоставляй он возможность описать механизм управления окнами на удобном языке. В существующих реализация такое сделать возможно, но для этого потребуется перепилить их исходники. Догадываюсь, почему авторы не заморачиваются модульной архитектурой -- каждый полагает, что его управление окнами самое лучшее.
Ответить | Правка | К родителю #131 | Наверх | Cообщить модератору

132. "Представлен RubyWM, оконный менеджер, написанный целиком на ..."  +/
Сообщение от n00by (ok), 24-Янв-24, 09:02 
>>> он сложнее для небольших проектов -- требует написать ещё композитор
>> Зачем нужен в клиенте Wayland композитор?
> Затем, что это не простой клиент, а оконный менеджер.

Wayland это протокол. Есть серверная часть (т.н. "композитор"), есть клиентская. Небольшой проект - это клиент.


Ответить | Правка | К родителю #128 | Наверх | Cообщить модератору

133. "Представлен RubyWM, оконный менеджер, написанный целиком на ..."  +/
Сообщение от zhmylove (ok), 24-Янв-24, 09:03 
>>>> он сложнее для небольших проектов -- требует написать ещё композитор
>>> Зачем нужен в клиенте Wayland композитор?
>> Затем, что это не простой клиент, а оконный менеджер.
> Wayland это протокол. Есть серверная часть (т.н. "композитор"), есть клиентская. Небольшой
> проект - это клиент.

Всё ещё не вижу ссылки на исходники твоего оконного менеджера, а не окошка с хелловолдом ;)

Ответить | Правка | Наверх | Cообщить модератору

135. "Представлен RubyWM, оконный менеджер, написанный целиком на ..."  +/
Сообщение от n00by (ok), 24-Янв-24, 09:32 
>>>>> он сложнее для небольших проектов -- требует написать ещё композитор
>>>> Зачем нужен в клиенте Wayland композитор?
>>> Затем, что это не простой клиент, а оконный менеджер.
>> Wayland это протокол. Есть серверная часть (т.н. "композитор"), есть клиентская. Небольшой
>> проект - это клиент.
> Всё ещё не вижу ссылки на исходники твоего оконного менеджера, а не
> окошка с хелловолдом ;)

Видишь ли, меня Perl (а точнее, его ВМ, то есть вирт.машина) для таких целей не устраивает (не смотря на то, что против языка ничего не имею). Пришлось делать свой интерпретатор, он рядом тем с хелловолдом. Всё еще есть желание говорить о сложности "ВМ", сравнивая лишь Wayland и xcb?

Ответить | Правка | Наверх | Cообщить модератору

139. "Представлен RubyWM, оконный менеджер, написанный целиком на ..."  +1 +/
Сообщение от Аноним (19), 24-Янв-24, 13:08 
Ну раз Perl тебя не устраивает, где ссылка на твой Window Manager на другом языке, не на Perl?
Ответить | Правка | Наверх | Cообщить модератору

148. "Представлен RubyWM, оконный менеджер, написанный целиком на ..."  +/
Сообщение от n00by (ok), 24-Янв-24, 18:01 
Я понимаю, что галантерейщик и кардинал это сила, но мне больше пользы будет пообщаться с кардиналом.

Если тебе действительно интересно, то такой есть рядом с хелловордом, на асме Z80. Окошек там не много, но в отличие от всего нынешнего, обеспечен "жёсткий реалтайм".

Ответить | Правка | Наверх | Cообщить модератору

142. "Представлен RubyWM, оконный менеджер, написанный целиком на ..."  +/
Сообщение от zhmylove (ok), 24-Янв-24, 13:19 
> Видишь ли, меня Perl (а точнее, его ВМ, то есть вирт.машина) для
> таких целей не устраивает (не смотря на то, что против языка
> ничего не имею).

Just for your information: у Перла нет виртуальной машины

Ответить | Правка | К родителю #135 | Наверх | Cообщить модератору

147. "Представлен RubyWM, оконный менеджер, написанный целиком на ..."  +/
Сообщение от n00by (ok), 24-Янв-24, 17:57 
>> Видишь ли, меня Perl (а точнее, его ВМ, то есть вирт.машина) для
>> таких целей не устраивает (не смотря на то, что против языка
>> ничего не имею).
> Just for your information: у Перла нет виртуальной машины

The work of the interpreter has two main stages: compiling the code into the internal representation, or bytecode, and then executing it.

https://github.com/Perl/perl5/blob/5459eb2e968db0aa506200323...

Виртуальная машина - это исполнитель байт-кода. Так называется, поскольку реализует виртуальный процессор, для которого байт-код является машинными инструкциями.

И даже если на деле вместо этого JIT компиляция, это не существенно. Меня не устраивает сборка мусора в неподходящий момент.

Ответить | Правка | Наверх | Cообщить модератору

152. "Представлен RubyWM, оконный менеджер, написанный целиком на ..."  +/
Сообщение от zhmylove (ok), 24-Янв-24, 21:04 
> И даже если на деле вместо этого JIT компиляция, это не существенно.
> Меня не устраивает сборка мусора в неподходящий момент.

Это не jit, там нет никакой виртуальной машине и тем более сборщика мусора. А слово bytecode, я подозреваю, там появилось ещё до того, как придумали java.

И оно тут в другом значении.

Ответить | Правка | Наверх | Cообщить модератору

153. "Представлен RubyWM, оконный менеджер, написанный целиком на ..."  +/
Сообщение от n00by (ok), 25-Янв-24, 09:47 
> А слово bytecode, я подозреваю, там появилось ещё до того,
> как придумали java.

Байт-код вообще появился задолго до того, как придумали Java. Н.Вирт называл такое P-code.

Вот опкоды Perl:

typedef enum opcode {
    OP_NULL         = 0,
    OP_STUB         = 1,
...
    OP_METHSTART     = 419,
    OP_INITFIELD     = 420,
    OP_CLASSNAME     = 421,
    OP_max        
} opcode;

https://github.com/Perl/perl5/blob/48d382667948f6a16c732c477...

Размером больше байта, что сути не меняет, поскольку его размер и в Си стандартизировали относительно недавно.

> там нет никакой виртуальной машине

Here's an older description from Larry.

Perl's compiler is essentially a 3-pass compiler with interleaved phases:

    A bottom-up pass
    A top-down pass
    An execution-order pass

Есть терминологическая неоднозначность. Если Perl не переводит исходный текст в инструкции целевой машины, значит это не компилятор (для такой машины). Но компилятор там есть - в вышеупомянутый коды операций (и было бы странно, если бы он всякий раз при исполнении раз разбирал текст). Эти кода исполняет машина, не реализованная в железе, а потому она - виртуальная.

/* This file contains the main Perl opcode execution loop. It just
* calls the pp_foo() function associated with each op, and expects that
* function to return a pointer to the next op to be executed, or null if
* it's the end of the sub or program or whatever.
...
*/

...

/*
* 'Away now, Shadowfax!  Run, greatheart, run as you have never run before!
*  Now we are come to the lands where you were foaled, and every stone you
*  know.  Run now!  Hope is in speed!'                    --Gandalf
*
*     [p.600 of _The Lord of the Rings_, III/xi: "The Palantír"]
*/

int
Perl_runops_standard(pTHX)
{
    OP *op = PL_op;
    PERL_DTRACE_PROBE_OP(op);
    while ((PL_op = op = op->op_ppaddr(aTHX))) {
        PERL_DTRACE_PROBE_OP(op);
    }
    PERL_ASYNC_CHECK();

    TAINT_NOT;
    return 0;
}

https://github.com/Perl/perl5/blob/48d382667948f6a16c732c477...

> и тем более сборщика мусора.

В мои планы не входило в ходе дискуссии скачивать сорцы Perl и что-то там искать, полагаю, что цитат выше достаточно для начала. Устройство интерпретаторов в общем виде я знаю, как и несколько частных случаев. Если в языке нет явного управления памятью, значит это делает за программиста "рантайм". Консервативный сборщик, уплотняющий ли, или же там подсчёт ссылок - это дело десятое. Под мои требования к "ВМ" не очень подходит даже free(), поскольку там нет гарантии O(1).

Ответить | Правка | Наверх | Cообщить модератору

155. "Представлен RubyWM, оконный менеджер, написанный целиком на ..."  +/
Сообщение от zhmylove (ok), 25-Янв-24, 12:09 
Мне дальше лень.
Ответить | Правка | К родителю #153 | Наверх | Cообщить модератору

156. "Представлен RubyWM, оконный менеджер, написанный целиком на ..."  +/
Сообщение от n00by (ok), 25-Янв-24, 16:43 
Спасибо, понял. Считал перловиков некоей особой кастой, этакими хранителями традиций. В том числе и способными ткнуть носом в код.
Ответить | Правка | К родителю #155 | Наверх | Cообщить модератору

125. "Представлен RubyWM, оконный менеджер, написанный целиком на ..."  +/
Сообщение от Аноним (116), 24-Янв-24, 08:50 
Хочу немногл пояснить для себя иксы и разобраться в сраче между поклонниками X и Wayland. Одни говорят что иксы протухли другие, что концепция у них хорошая, но все испортили библиотеки-костыли
Ответить | Правка | К родителю #122 | Наверх | Cообщить модератору

127. "Представлен RubyWM, оконный менеджер, написанный целиком на ..."  +1 +/
Сообщение от n00by (ok), 24-Янв-24, 08:56 
99% экспертов ничего не писали ни под xcb, ни под Wayland.
Ответить | Правка | Наверх | Cообщить модератору

157. "Представлен RubyWM, оконный менеджер, написанный целиком на ..."  +/
Сообщение от Bottle (?), 25-Янв-24, 19:42 
Гипотетически можно же в иксах внедрить изоляцию приложений?
Ответить | Правка | К родителю #122 | Наверх | Cообщить модератору

158. "Представлен RubyWM, оконный менеджер, написанный целиком на ..."  +/
Сообщение от zhmylove (ok), 25-Янв-24, 20:09 
> Гипотетически можно же в иксах внедрить изоляцию приложений?

Конечно можно :) Через всякие Xnest

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру