← All posts tagged X11

И так, запустил (относительно новый) XCOM: Enemy Unknown под линуксом с опенсурсными дровами.
Всего-то надо было пересобрать mesa, указав при configure --enable-texture-float

Как оказалось, стимовский XCom как раз float texture использует, притом молча и не проверяя наличие GL_ARB_texture_float.
А mesa, везде и по умолчанию, собирается без float texture, поскольку какой-то патент от SGI (см. docs/patents.txt).

Всем привет.
Кстати, для любопытствующих, полные строки configure для моей mesa будут в комментариях. Там на самом деле из git её не так сложно собирать, практически всё что надо есть в стабильном дебиане, только llvm поставить не менее 3.6, и libdrm свежый, и libvdpau, и libva, и dri3proto, dri2proto, glproto. И когда оно в /usr/local/ поставиться, не забыть в /etc/ld.so.conf.d прописать /usr/local/lib
/usr/local/i386/lib
/usr/lib/x86_64-linux-gnu/

<<В исследовании Literacy in the Adult Client Population — Jones & Bartlett Publishers приводились рекомендации, как писать тексты для функционально неграмотных людей.

Рекомендации по оформлению текстов следующие:

1) Составлять адресное, императивное, персонализированное сообщение в духе «ты записался добровольцем?». Неграмотные люди гораздо хуже воспринимают абстрактные и обезличенные тексты, чем прямые обращения.
2) Следует использовать слова из повседневного словаря, желательно не больше 3-4 слогов. Избегать наукообразных слов, технических и медицинских терминов. Желательно избегать слова, допускающие разночтение как по семантике, так и по коннотации. Нельзя использовать наречия типа «скоро», «редко», «часто» — поскольку таким людям важно знать, как скоро и как редко.
3) Предложения не должны превышать 20 слов.
4) Заголовки должны быть короткими и емкими.
5) Самая важная информация выносится в лид статьи, в самое начало.
6) Необходимо разбивать информацию в виде красивых блоков. Побольше абзацев, никакой простыни из текста. Текст надо разбавлять щедрыми пробелами, картиночками, выносками — все ради того, чтобы читателя не отпугнула мрачная стена сплошного текста.
7) Аккуратнее с картинками. Не должно быть никаких декоративных элементов, иллюстраций, перетягивающих на себя внимание. В социальной рекламе для такой аудитории рекомендуют не использовать фотографии курящих беременных женщин или пьяниц, лежащих под лавкой: нужно показывать только то, что вы от аудитории хотите.
8) Всегда расшифровывать статистику и графы с цифрами.
9) Аббревиатуры давать полностью, «и т.д.» заменять на «и так далее», N.B. на полях вообще не писать. Вводные слова тоже надо исключать, хотя, конечно, жаль.
10) Осторожнее с синонимами. Таких читателей появление новых слов только запутывает, поэтому то, что вы в начале текста назвали «машинами», не должно вдруг становиться «автомобилями». >>

from m.facebook.com

Да, кажэтся я начинаю понимать, почему в своё время такая куча народа кричала, что создать новый виджэт под Xaw/Xt — это вообще нереально сложно. И, соответственно, что такого хорошэго было в gtk1, что под него так массово начали писать (хотя это был ужас и по процэссу написания, и по результату).

X11

В своё время (примерно 30-10 лет назад) дистрибуцыя исходников иксов была ужасной. Это была такое громандное дерево, в котором было собрана куча всего по принцыпу "ну, мы тут в X consortium) — включая xterm, какие-то wm, Xlib, Athena, исходники X-серверов под 2/3 поддержываемых платформ.
Оно собиралось несколькими скриптами, которые автогенерили друг друга и затирали свои исходники.
Собираться оно могло сутками, поскольку было ГРОМАДНЫМ. Ну, 20 лет назад оно выглядело ГРОМАДНЫМ, да.
Собираться оно планировало только сразу всё. Поскольку всё равно X-сервер не работал без Xlib.
В общем, система сборки и распространения была ужасмо, летящим на пластинах винтов.

Около 10 лет назад Паккард скзал "пора кончать разврат", и поделил это на большую пачку независимых модулей. В смысле — в исходниках. Ну там, xterm отдельно, X input module отдельно, xorg сервер отдельно, вот это всё.

Теперь. чтобы собрать более-менее работающий икс-сервер, надо нарыть: исходники xorg server, исходники дров мышы и клавиатуры под текущий линукс, исходники дров твоей видюхи, для неё — libglamor, чтобы оно работало — MESA с правильным набором backendов и драйвером твоей видюхи, libdrm, libdri, плюс пачку описаний протокола — всякие proto-input, proto-xinerama, etc, плюс пачку биндингов xcb для для этих протоколов, поскольку какие-то расшырения дажэ на сервере делают это через xcb. Плюс подходящий модуль в ядре пинусов.

Всё это должно быть плюс-минус одного возраста (непонятно, насколько одного, но в случае важных вещей — libglamor, libdrm, libdri, Mesa, xserver-xorg-video-XXX, linux kernel — явно менее года) чтобы оно было само с собой протэстировано и по этому поводу не падало.
То есть сборка иксов стала гораздо хужэ. Сука, какой всё-таки Паккард дегенерат, как можно так всё ломать, просто не представляю!

На пятый год воспоминаний о крутости E14 до меня дошло, что копия должна сохраниться в архивах дебиана. Блин, и правда сохранилась! Правда, с единственной темой. И по-моему, эта тема не была моей любимой. Но, чёрт побери, насколько всё-таки этот E круче, чем та порнография, которую мы видим в e17 и далее.

X11

Срочно подписываюсь на x.org mailing list.

Такую ржаку в прошлом месяцэ пропустил: чувак впервые поставил себе линукс, в попытке перенести какое-то своё приложэние. От использования Qt/GTK/etc отказался, поскольку "ё, это 50 метров, ка к это деплоить?". Спрашывает вопросы начального по всяким тупикам X11/EWMH/XDG.
Отвечают ему люди, которые вообще в теме ни в зуб ногой. Очень смешно, да.

Кстати, у меня тут сгорела видюха в рабочем компе. Второй день сижу за соседним (который с виндой). Поставил на него xming (чтобы не возиться с cygwin). Нормально так сижу, браузер, pdf-viewer, xzgv, tkabber тот жэ — работают через иксы как влитые, и есть не просят.
Правда, сеточка гигабитная.
Но работаёт. Собственно, дажэ ютуб через симанки (480p) — работает. Звука, правда, нет — мне пока лень наушники выдирать откуда-нибудь.

Нашёл способ сделать меню в Xaw click-move-click:
(в ~/.Xresources или другой загружаемый файл с ресурсами):

*SimpleMenu.translations: #replace \
<Enter>: highlight() \n\
<Leave>: unhighlight() \n\
<Motion>: highlight() \n\
<Btn1Down>,<Btn1Up>: popdown() notify() unhighlight() \n

*MButton.translations: #replace \
<Btn1Up>: set() PopupMenu() \n\
<Enter>: set() \n\
<Leave>: reset() \n\
<Motion>: set()

*MenuButton.translations: #replace \
<Btn1Up>: PopupMenu() \n\
<Enter>: highlight() \n\
<Leave>: reset() \n\
<Motion>: highlight() \n


Правда, кажэтся, не тэстировал с Xaw7. Впрочем, её писали имбецылы: вроде то, что они написали — вот давно надо было, но как они при этом умудрились запутать всё с неподдержываемыми translations и ресурсами... При том, что исходники Xt у них тожэ в руках были, и никто им не мешал...
В общем, что с убогих возьмёшь. Ну да ладно, я не об этом.

Да, выяснилось, что не работает на меню File в xdvi. Скорее всего, это не единственное неработающее место, хотя мест с Xaw ужэ и немного осталось.

X11

Прочитал /usr/share/X11/locale/en_US.UTF-8/Compose
Полезная вещь (Multi_key у меня сейчас right win, это, видимо, распространённый дефолт).

Кстати, заметную часть надо вмести в /usr/share/X11/locale/koi8-r/Compose

Вдогонку к #2474319 — выяснилось, что при отключении/переподключении мышы настройка слетает.
Не, ну то есть, это было понятно, что оно будет так — но как-то не задумывался.

Теперь надо искать/писать кого-то, кто будет ловить подключение xinput-устройств и вызывать правильные команды. Да, xorg.conf трогать, разумеется, не хочу — поскольку это пользовательская настройка.

X11

Да, посмотрев на результаты четвертьвекового развития: подход "provide mechanism, not policy" — не работает.
Быдло надо держать в стойле. Механизмы тожэ надо делать умными, но политику надо вырабатывать сразу и применять беспощадно.

Вдобавок к #2474319 внезапно выяснилось, что сломалось передвижэние курсора мышы в активное окно.
После некоторых экспериментов обнаружыл, что оно ломается от того самого "set transformation matrix", при любых значениях.

Перевернул мышку. Ну, хвостик удобнее. И чтобы заодно попробовать xinput --set-prop.
xinput --set-prop 9 "Coordinate Transformation Matrix" -1 0 0 0 -1 0 0 0 -1 — не заработал. То есть меняется coordinate transformation matrix в выводе xinput --list-props — и всё.
Попытался такжэ применять положытельную матрицу (0.1) и применять в предположэнии, что у них не нормализованная трёхмерная матрица, а ненормализованная двумерная (т.е. последним — 1. Хотя там по-моему весь столбец тогда 1 1 1 был бы).
В движэниях мышы ничего не изменилось. Возможно, оно только положытельные цэлые воспринимает — и повернуть на 90 градусов таким способом можно, а как-то ещё — нет, мне лень ужэ пробовать.

Но сработало xinput --set-prop 9 "Evdev Axis Inversion" 1 1
Всё как надо, перевёрнутая мышка катается в соответствии с интуитивными представлениями.
Тут жэ поменял кнопки (чтобы самая удобно нажымаемая была кнопка 1) — xmodmap -e 'pointer = 3 2 1'
Когда попробовал ткнуться в веб-браузер — поменял ещё кнопки колеса
xmodmap -e 'pointer = 3 2 1 5 4'

После этого вроде работает.

Полюбуйтесь, пара дебилоидов написала очередную лажу про то, почему они делают вяленого: phoronix.com

Разберём первые пару тэзисов:
<< if your app supports one version of a given extension but your toolkit supports another, you can't predict which version of that extension you will get.example: Rekonq supports Xinput 2.2. Kdelibs support Xinput 2.0, Flash plugin only supports Core X11...all of those things are gonna fight over what version of Input >>

Поскольку если расшырение пишэт вменяемый человек — то оно совместимо снизу вверх. То есть клиент можэт без проблем обращаться первым протоколом к серверу с четвёртым расшырением.
Наоборот — есть проблемы, поскольк не все запросы будут поддержываться. Только чтобы поставить ограничения на множэство запросов и не выдавать лишних "Error: BadRequest" и была сделана система версионирования расшырений.

<<example: Rekonq supports Xinput 2.2. Kdelibs support Xinput 2.0, Flash plugin only supports Core X11...all of those things are gonna fight over what version of Input >>

Ога, поскольку Xinput 2 и далее писал какой-то хутер, если не сказать большэ. И оно само по себе косое до ужаса — да ещё и само с собой несовместимое.
В общем, никакого Xinput 2.0 и вышэ просто нет. Ну, вот так сложылось, что в спеки иксов последние 10 лет могли коммитить полные мудаки. То есть конкретно этот хутер — он настолько мудак, что написал в своё время поддержку HAL для иксов — ну, нормальные люди вполне только по этому факту могут составить мнение о его умственных способностях.

<<The X Server is huge and stupid.>> Это можно сказать про любую программу более тысячи строк размером. За исключением тех, которые пишэт Чак Мур.

<< Don't believe me? X had its own print server.>> Попытка была херовой, но теоретически ничего плохого в том, что вывод на печать осуществляется такжэ, как и на экран я не нахожу.

<<If you want to use hardware overlays though (Videos) it becomes a complete disaster.>>
Ну да, за XVideo тожэ положэна смерть через матумбу.
Не за оригинальное XVideo, которое предназначалось для управления видеомагнитофонами — а за действия того мудака, который (видимо, из-за подходящего названия) стал использовать это расшырение для ускорения yuv2rgb через оверлеи.
Учитывая, что к тому времени для ускорения yuv2rgb было отличное XIE — мудака, который это сделал после матумбы следует ожывить и убить повторно.

<<Which is why when you scroll on Youtube ,or other video sites with a video playing, sometimes everything tears and chunks.>>
У меня проблем с flash plugin tears and chuncks на винде заметно большэ, чем на линуксе.
Да что там — на линуксе их вообще нет. Что курили эти чуваки?

<<Statelessness.... Or in other words: X Doesn't remember anything.>>
Дальшэ идёт полная шыза, не имеющая никакого отношэния к протоколу и по факту ужэ неверная и в реализацыи.

<<Under X11, the global pixel counter is 15bits. Which means, between all of your displays you can only have 32,768 pixels.>>

Открою секрет: именно для решэния таких вопросов и сделали механизм расшырений.

Там дальшэ идёт несколько абзацэв по поводу какой крутой вейлянд, и как хорошо, что он не поддержывает карточек двадцатилетней давности, и как они рады, что им не надо тянуть совместимость с ими жэ созданными кривыми расшырениями иксов.
И как за счёт этого исходник занимает всего 10% от иксовых.

<<X is Network Transparent.” Wrong. Its not.>>

Ох нифига себе. А что это я три дня назад использовал, интересно?

Кстати говоря, вопреки распространённому мнению — стандартная серверная рисовалка шрифтов вполне позволяет рисовать наклонный текст.
Сама, правда, можэт только буквы наклонять. Если хочется писать по диагонали — то вычислять extents придётся самому (т.е. получить fontinfo). И будет по запросу на символ. Это 20*(размер строки) байт от клиента к серверу, вместо 16+размер строки как для обычного горизонтального текста.

Но рисовать по диагонали вполне можно. См. описание xlfd, там вместо размера можно указывать матрицу двумерных афинных преобразований.

X11

Кстати, когда какой-то девелопер говорит "вот, я ужэ 10 (15) лет пилю иксы, и знаю, что иксов проблемы с развитием, у них куча legacy которое невозможно использовать, мы решыли сделать всё заново" — так вот, очень часто эти "проблемы с развитием" и "legacy, которое невозможно использовать" — это именно из-за действий этого чувака.
То есть вот он 10-15 лет превращал иксы в херню, и теперь хочет сделать всё с нуля по-своему. То есть сделать херню.

В связи с тем, что предыдущий display manager отказался работать без системного dbus — перешёл на gdm. Через месяц обнаружыл, что у меня X-сервер запущен с -nolisten tcp.
Спецыально ведь грепал etc на предмет -nolisten, отрывая всё, что найдётся. Но оно, разумеется, сидит в конф-файле в /usr/share/gdm (и погрепать, что это оно можно только из комментариев — поскольку там какая-то опцыя про tcp, которая заставляет добавлять -nolisten tcp при каждом запуске X-сервера).

Уроды. У xdm, конечно, есть проблемы — но чувствую, что выбора нет.