Чтобы добавлять сообщения и комментарии, .

@tzirechnoy:
tzirechnoy

В своё время (примерно 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 — явно менее года) чтобы оно было само с собой протэстировано и по этому поводу не падало.
То есть сборка иксов стала гораздо хужэ. Сука, какой всё-таки Паккард дегенерат, как можно так всё ломать, просто не представляю!

@segfault:
segfault

Где мне прочесть про бинарный формат иксового протокола? В особенности, интересует идентификатор запроса. Обязательно ли увеличивать идентификатор с каждым запросом на 1? Ответы на запросы приходят строго в том же порядке, что запросы, или в рандомном? Если я отправлю запрос без ответа с ид 1, а затем запрос с ид 2 и получу ответ с ид 2, это значит что запрос 1 был выполнен успешно, или ни чего не значит?
Как они так проектировали это говно? Запросы могут иметь больше 1 ответа, а могут не иметь ни одного, но при этом, ошибки на запросы без ответов все равно могут приходить. То есть, не понятно, как определять статус запроса без ответа: на него может придти ошибка (когда?), а может ни чего не придти никогда (нахуй так жить?). Да и как разработчики в это ныряют и изменяют? Должна же быть документация, но я два дня провел в раскопах, и не нашел. Документация по протоколу на вкус как земля. В IRC молчат. Вся надежда на тебя, планета надеется.

@segfault:
segfault

seasonofcode.com
А тулкиты и правда рисуют графику окнами в окнах, или тут автор лукавит? Если да, то это из за приседаний с фокусом ввода, небось?

@segfault:
segfault

Библиотека xhb форирует запросы к серверу через runPut из binary ... quite insane.

@glupovat:
glupovat

Строка "¼∞" под X11 с Compose вводится как <Multi_key> <1> <4> <8> <8>.

@tzirechnoy:
tzirechnoy

Рассматривая файлик Compose, нашёл последовательность <Multi_key> <C> <C> <C> <P>

Логично, чо.

@iportnov:
iportnov

С управлением настройками планшетов wacom в kde всё немного грустно. В KDE4 есть более-менее нормальный модуль для этого, но 4е кеды вроде как уходят в прошлое. В Plasma 5 модуль есть, но недопортирован и хромает на обе ноги.
При этом ни тот, ни другой (и, насколько я знаю, гномовский тоже?) не умеют автоматом переключать профили настроек при переключении окон. И ещё они не умеют управлять режимами кольца на планшете (intuos pro).
А если у вас не кеды и не гном, а какой-нибудь lxde, то всё совсем грустно — остаётся только баш-скриптами xsetwacom запускать.
В итоге глюки кде-шного демона довели меня до того, что я сел и написал свой.
github.com
Тут есть несколько вещей:
* Пакет wacom-daemon содержит библиотеку, в которой реализована основная часть логики, и запускалки для этой библиотеки. hswcmcli — тестовая утилита, можно например с командной строки профили планшета переключать. hswcmd — демон, работающий на основе своего конфига (в yaml-формате), умеет автоматом переключать профили.
* Пакет xmonad-wacom содержит модули для автоматического переключения профилей настроек планшета при переключении текущего окна для XMonad. Там есть примеры конфигов xmonad. Поддерживается как интеграция с KDE-шным демоном через dbus, так и самостоятельная работа при помощи библиотеки wacom-daemon. Ещё показывает сообщения о перелкючении профилей через libnotify.
Всё это работает так: запускается демон (в случае xmonad — отдельный поток в рамках самого xmonad, в случае hswcmd — в нём), который помнит текущий профиль настроек, через udev отлавливает подключение планшета и при этом запускает xsetwacom с правильными параметрами. Этому демону через хаскельное API можно сказать "поменяй профиль", он запустит xsetwacom и запомнит новый профиль. Пользоваться этим API можно из XMonad (оконный менеджер сам знает, когда окна переключаются) или из hswcmd (он слушает иксовые события переключения окон). Ну или какие-нибудь ещё программы могут ту же библиотеку использовать, теоретически.
Т.е. если используется xmonad, то можно эту штуку интегрировать в xmonad, и больше ничего запускать не надо. Если используется какой-нибудь там опенбокс, то можно при старте иксов запускать hswcmd.
Всё это в процессе разработки и хреново документировано, но если сильно хочется можно пробовать.

@tzirechnoy:
tzirechnoy

Кстати, увидел наконец тиринг в иксах. Драйвер fbdev — он такой, опасный в этом плане.

@tzirechnoy:
tzirechnoy

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

@tzirechnoy:
tzirechnoy

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

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

@nenastje9606:
nenastje9606

Syma X11 – захватывающее занятие для маленьких и взрослых мальчишек
Каждый раз, задумываясь над выбором подарка для своего ребенка, удивляешься предпочтениям нынешних мальчишек, причем не только маленьких, но и великовозрастных.
Вот сенсационным событием для юных любителей-пилотов стало появление
Syma X11 – удивительной летающей игрушки, предлагаемой современной игровой индустрией. Если вы ищете quadcopters, чтобы впервые научиться летать, внести бесконечную радость в свой дом – стоит задуматься над приобретением quadcopter’а Syma X11.
Изделие от лидера любительских радиомоделей легко управляемо и хорошо контролируемо, как в закрытом пространстве, так и на улице. Если в семье уже есть геймеры, то они, взяв в руки контроллер, мгновенно разберутся в системе настроек и управления «летающим малышом». Тем более, квадрик очень отзывчив к манипуляциям с джойстиком. Считайте, что свобода вам обеспечена, если сами не увлечетесь удивительной и захватывающей игрушкой. Преимущества модели заключаются в
стоимости,
защищенности лопастей и следовательно в безопасности,
легком ремонте,
простоте управления.
Работает Syma X11 от батареи Li-Po 200mAh. При желании можно приобрести боле мощную для более продолжительного времени полета — батарею 380mA.
Поверьте, и ребенку, и вам веселое времяпрепровождение гарантировано!

@tzirechnoy:
tzirechnoy

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

@tzirechnoy:
tzirechnoy

<ketmar> да, аж отлегло. а то я уж думал, что в кои-то веки в гтк что-то прямо сделали. ан нет, всё нормально, криво.

@plumbum:
plumbum

Как побыстрее гонять x11 протокол через ssh туннель? Во-первых — компрессия потока. Во-вторых — более простой и быстрый алгоритм шифрования.
На клиенте запускаем ssh -X -C -c blowfish-cbc,arcfour remote.host.name
На сервере возможно придётся указать дополнительные алгоритмы шифрования добавив строчку в sshd_config:
Ciphers 3des-cbc,blowfish-cbc,cast128-cbc,arcfour,arcfour128,arcfour256,aes128-cbc,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com
Минздрав предупреждает: использование облегчённого шифрования вредит вашему здоровью.

Ну и на клиенте настройки можно прописать в .ssh/config
Host shortname
HostName remote.host.name
ForwardX11 yes
Compression yes
Ciphers blowfish-cbc,arcfour

И подключаться по-быстрому ssh shortname

@axcel:
axcel

жуйк подскажи как сделать что-то окошко было на всех виртуальных рабочих столах

@tzirechnoy:
tzirechnoy

Нашёл способ сделать меню в 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 ужэ и немного осталось.

@tzirechnoy:
tzirechnoy

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

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

@tzirechnoy:
tzirechnoy

СЯУ, что таглайн по <Shift-Ins> и <Button-2> вставляет PRIMARY selection, а по <Ctrl-V> — CLIPBOARD.

@Strephil:
Strephil

Попробовал поиспользовать x2go для работы на десктопе на своей кубиборде. То есть, подключаюсь к нормальному десктопу. Гы, для тяжеловесных программ, типа Firefox'а, это оказывается оправданным. Работает.

Это ведь и есть там самая сетевая прозрачность иксов, о которой говорили большевики?

@OCTAGRAM:
OCTAGRAM

XMing сейчас доступен не очень новый безплатно и относительно новый за пожертвование (~500руб. или около того). Есть сабж. Нужен кому?

@segfault:
segfault

xrestop чтобы узнать, изза кого X сожрал столько памяти

@tzirechnoy:
tzirechnoy

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

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

@Tenno-Seremel:
Tenno-Seremel

The recent report of X11/X.Org security in bad shape rings more truth today. The X.Org Foundation announced today that they've found a X11 security issue that dates back to 1991. The issue is a possible stack buffer overflow that could lead to privilege escalation to root and affects all versions of the X Server back to X11R5. After the vulnerability being in the code-base for 23 years, it was finally uncovered via the automated cppcheck static analysis utility.
tech.slashdot.org

Решето!

@tzirechnoy:
tzirechnoy

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

@4DA:
4DA

Совсем ебанулся и поменял местами Shift_R и Control_R

github.com

@GotF:
GotF

Либо я идиот, либо xkb действительно сделано из волшебства -_- Вчера (или сегодня?) попробовал сделать описание геометрии своей клавиатуры и получилось как-то кривовато — видимо, нужно знание каких-то грязных секретов.

@tzirechnoy:
tzirechnoy

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

@tzirechnoy:
tzirechnoy

Перевернул мышку. Ну, хвостик удобнее. И чтобы заодно попробовать 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'

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

@waterlaz:
waterlaz

Пусть есть некоторый процесс, который изменяет клипбуфер. Я правильно понимаю, что как только этот процесс прибивается, клипбуфер тоже становится пустым?

Пример: выделил текст в программе А, прибил А, попытался вставить в программу Б => нихера не вышло.

@tzirechnoy:
tzirechnoy

Полюбуйтесь, пара дебилоидов написала очередную лажу про то, почему они делают вяленого: 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.>>

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

@tzirechnoy:
tzirechnoy

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

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

@tzirechnoy:
tzirechnoy

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

@tzirechnoy:
tzirechnoy

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

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

@4DA:
4DA

Можно ли делать что-то вроде X11 Window Forwarding используя NX?

То есть хочу не удаленный десктоп, а удаленное окно.

@tzirechnoy:
tzirechnoy

Кстати, о птичках. Вот здесь: cvsweb.xfree86.org можно посмотреть дефолтные keybindings для text-widget в Xaw.
Там много полезного, потому я иногда это перечитываю. Для освежэния памяти.

@Buckstabu:
Buckstabu

Посоны, написал тут скриптец:

#!/usr/bin/env bash

fswebcam -r 1280x720 --png 0 --save /tmp/printcode.png
text_data=`zbarimg -q /tmp/printcode.png | cut -f 2 -d ':'`

if [[ $text_data == '' ]]; then
notify-send "Error"
else
active_window=`xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)" | cut -f 5 -d ' '`
xdotool type --window $active_window $text_data
xdotool key --window $active_window KP_Enter
fi

Существуют ли в природе логин-менеджеры и скринлокеры, в которых это можно забиндить на хоткей?

@Strephil:
Strephil

Прелесть СПО в том, что это мир, открытый для экспериментов. Почти ничего не прибито гвоздями. Всегда можно попробовать и придумать что-то новое, то, что интересно тебе!
X11, Wayland, Mir — и с разбегу, и на месте, и двумя ногами вместе!

@Elemir:
Elemir

Жуйк, какие ты знаешь виртуальные терминалки с функционалом, аналогичным rxvt -pty-fd? Я ничего кроме rxvt-наследников не нашёл
P.S. Для нелюбителей читать маны поясняю: rxvt может соединиться с уже открытым в программе pty master, позволяя, тем самым, из родительского процесса использовать его как терминал.
P.P.S. Для совсем непонятливых перл скрипт с простым примером использования этой фичи:
raw.github.com

@qnikst:
qnikst

а где почитать инфу как должен WM управлять параметрами у окон, например должен ли рут окну выставлять NET_ACTIVE со значением актиного окна?
а ещё лучше как WM независимо узнать какое окно активное XGetInputFocus круто, но похоже, что оно ждёт "лишних" событий, и отвечает после keypress или
ещё чего.

@asvil:
asvil

Сглаженные курсоры для CLX:
github.com