commit -m "better"
Про пользу #etcd в home #lab. В качестве роутера я использую коробочку от Xiaomi. Ну, потому что она мне дает простой в эксплуатации mesh, и потому что, когда-то, дала мне возможность быстро развернуть нормальную сетку в доме за городом. Нормальную - это…
Рубрика #делай_без_изъебов, #нормально_делай_нормально_будет
Кстати, в качестве edge proxy хочу посоветовать https://github.com/umputun/reproxy
(не на правах рекламы! #lab)
Прелесть этой тулзы в том, что в ней есть примерно все, чтобы сделать проксирование "начального уровня":
* несколько видов discovery endpoint (статика, файлы, и всякие dns - консулы)
* простой load balancer (random, round robin). Причем простой не только в использовании, но и в настройке, я даже сначала не понял, что он там есть.
* интеграция с Let's Encrypt acme certificates. Https из коробки за пару минут.
Ну, то есть, установил 1 файл (приблуда написана на Go, статика, а это всегда приятно), передал пару настроек через command line (даже конфиг не нужен), и все работает.
Понятное дело, что, по каждому направлению, вам может потом захотеться того, чего тулза не умеет, но это будет "потом", и расширять тоже можно по частям.
Ну, вот, нужна балансировка получше, поставил рядом sidecar, который умеет это лучше.
Мне пока больше ничего не надо, мои потребности тулза закрыла целиком. То, что заявлено, работет хорошо.
Пожалуй, единственный заметный недостаток - не умеет прикрывать авторизацией отдельный vhost, а только все целиком.
Кстати, в качестве edge proxy хочу посоветовать https://github.com/umputun/reproxy
(не на правах рекламы! #lab)
Прелесть этой тулзы в том, что в ней есть примерно все, чтобы сделать проксирование "начального уровня":
* несколько видов discovery endpoint (статика, файлы, и всякие dns - консулы)
* простой load balancer (random, round robin). Причем простой не только в использовании, но и в настройке, я даже сначала не понял, что он там есть.
* интеграция с Let's Encrypt acme certificates. Https из коробки за пару минут.
Ну, то есть, установил 1 файл (приблуда написана на Go, статика, а это всегда приятно), передал пару настроек через command line (даже конфиг не нужен), и все работает.
Понятное дело, что, по каждому направлению, вам может потом захотеться того, чего тулза не умеет, но это будет "потом", и расширять тоже можно по частям.
Ну, вот, нужна балансировка получше, поставил рядом sidecar, который умеет это лучше.
Мне пока больше ничего не надо, мои потребности тулза закрыла целиком. То, что заявлено, работет хорошо.
Пожалуй, единственный заметный недостаток - не умеет прикрывать авторизацией отдельный vhost, а только все целиком.
GitHub
GitHub - umputun/reproxy: Simple edge server / reverse proxy
Simple edge server / reverse proxy. Contribute to umputun/reproxy development by creating an account on GitHub.
👍12🔥6🤔5❤1👌1
#bootstrap #rant #svg
https://github.com/hyprwm/Hyprland/releases/tag/v0.37.0
Передовицы всех газет пишут про наш вклад в дело open source!
fix libc++/clang build by @pg83 in #4886
На самом деле, в случае hyprland это какой-то сизифов труд, потому что я примерно каждый релиз чиню им чего-нить для собираемости с libc++/clang, но каждый новый релиз все равно сломан в каком-то новом месте.
0.37.1 сломан в https://github.com/hyprwm/hyprcursor/commit/60f9c53cf2e482c4ee9d2ce2f9c6f26af2f76a91 (пофикшено в trunk)
Поэтому получается, что в моем setup собирается только или патченый hyprland, или hyprland из промежуточной ревизии. Школота.
Еще они завязались на librsvg для рендеринга курсоров - https://github.com/hyprwm/hyprcursor/blob/main/libhyprcursor/hyprcursor.cpp#L369 Я им поканапихал за щеку подсунул заглушек, потому что таких курсоров не встречал in the wild. https://github.com/pg83/ix/commit/11d3869d765cdc73c5d40d977f896ec9381c9421#diff-b9e5df4feed50ceee7a2bc09956a9bcae55f1e87c6902686aa073deaf0272c81R15-R38
Да, да, коллеги совершенно перестали стесняться, и изобретают свои форматы для хранения курсоров в svg (https://github.com/hyprwm/hyprcursor?tab=readme-ov-file#why). Вот бы еще server side курсоры прикрутили, было бы совсем хорошо.
https://github.com/hyprwm/Hyprland/releases/tag/v0.37.0
Передовицы всех газет пишут про наш вклад в дело open source!
fix libc++/clang build by @pg83 in #4886
На самом деле, в случае hyprland это какой-то сизифов труд, потому что я примерно каждый релиз чиню им чего-нить для собираемости с libc++/clang, но каждый новый релиз все равно сломан в каком-то новом месте.
0.37.1 сломан в https://github.com/hyprwm/hyprcursor/commit/60f9c53cf2e482c4ee9d2ce2f9c6f26af2f76a91 (пофикшено в trunk)
Поэтому получается, что в моем setup собирается только или патченый hyprland, или hyprland из промежуточной ревизии. Школота.
Еще они завязались на librsvg для рендеринга курсоров - https://github.com/hyprwm/hyprcursor/blob/main/libhyprcursor/hyprcursor.cpp#L369 Я им пока
Да, да, коллеги совершенно перестали стесняться, и изобретают свои форматы для хранения курсоров в svg (https://github.com/hyprwm/hyprcursor?tab=readme-ov-file#why). Вот бы еще server side курсоры прикрутили, было бы совсем хорошо.
GitHub
Release v0.37.0 · hyprwm/Hyprland
Happy 2 years of Hyprland!! Thanks to everyone who has supported Hyprland in any way shape or form, couldn't have done it without yall. <3
A chonker update for y'all for this occasion.
N...
A chonker update for y'all for this occasion.
N...
🤡10🔥3🤔3❤🔥1💩1
https://www.opennet.ru/opennews/art.shtml?num=60802
"По данным докладчика последнее время наблюдается активное внедрение GnuCOBOL коммерческими компаниями и банками, которые переводят написанные на COBOL бэкенды на GnuCOBOL с проприетарного компилятора Micro Focus. Отмечается, что переход на GnuCOBOL позволяет добиться повышения производительности и избавиться от привязки к одному поставщику. Например, Министерство финансов Франции недавно заменило мэйнфрейм, на котором использовалась операционная система GCOS, на решение, основанное на GnuCOBOL"
Министерство финансов Франции недавно заменило мэйнфрейм, на котором использовалась операционная система GCOS, на решение, основанное на GnuCOBOL...
Перепись бабкоебов, если вы понимаете, о чем я.
"По данным докладчика последнее время наблюдается активное внедрение GnuCOBOL коммерческими компаниями и банками, которые переводят написанные на COBOL бэкенды на GnuCOBOL с проприетарного компилятора Micro Focus. Отмечается, что переход на GnuCOBOL позволяет добиться повышения производительности и избавиться от привязки к одному поставщику. Например, Министерство финансов Франции недавно заменило мэйнфрейм, на котором использовалась операционная система GCOS, на решение, основанное на GnuCOBOL"
Министерство финансов Франции недавно заменило мэйнфрейм, на котором использовалась операционная система GCOS, на решение, основанное на GnuCOBOL...
Перепись бабкоебов, если вы понимаете, о чем я.
www.opennet.ru
Компилятор GnuCOBOL достиг зрелости. Первый выпуск среды разработки SuperBOL
Фабрис Ле Фессант (Fabrice Le Fessant) подвёл итоги 20-летной разработки свободного компилятора GnuCOBOL, позволяющего транслировать программы на языке COBOL в представление на языке Си для последующей компиляции при помощи GCC или других Си-компиляторов.…
😁8👌4🐳3❤1
Продолжаю тему #suid бинарей - https://xn--r1a.website/itpgchannel/1552, будни #bootstrap
Вот есть такая утилита ping.
Для своего функционирования она требует рутовые права (ну или там какой-то CAP_*, про который никто ничего не знает, да и не надо, от лукавого это все https://xn--r1a.website/itpgchannel/248 #sec_model)
Права ей нужны, чтобы создать socket подходящего типа, с которого система разрешит отправить пакет нужного формата.
Сначала я решал эту проблему скриптом-оберткой, которая просто звала "sudo real_ping_binary". В целом, норм решение, но периодически такие времянки нужно разбирать, и делать более хорошо (оценочное суждение intended).
Из интернетов я узнал (https://unix.stackexchange.com/questions/592911/how-does-ping-work-on-fedora-without-setuid-and-capabilities), что можно явно разрешить каким-то группам и пользователям создавать socket нужного типа:
sysctl net.ipv4.ping_group_range="0 4294967295"
Прямо эта команда у меня не отработала, вот с такой ошибкой:
Помогло заменить 4294967295 на 4294967294 (Как?! А вот так!!)
ping после этого не заработал:
strace сказал, что ping из busybox обламывается на socket(AF_INET, SOCK_RAW, IPPROTO_ICMP). В целом, ожидаемо, потому что настройка ядра работает для SOCK_DGRAM (чего должно быть достаточно для ping).
Тогда я решил заменить ping из busybox на настоящий ping, из https://github.com/iputils/iputils, как у всех остальных.
Собрал, и вот что он мне написал:
Sooka, я уже начал немного нервничать.
После короткой сессии с отладчиком, нашел проблемное место - https://github.com/iputils/iputils/blob/master/ping/ping.c#L351
В общем, когда iputils собираются с libidn, то они начинают использовать какой-то неизвестный науке флаг для getaddrinfo.
Как это работает, я вообще не понимаю. Почему под musl это не ошибка сборки (https://github.com/lluixhi/musl-extras/issues/3)? Кто определил этот макрос? Почему он связан именно с наличием libidn, хотя это свойство libc?
Загадка, покрытая мраком.
Я просто убрал сборку с libidn, и, ВНЕЗАПНО, ping заработал и без sudo, как ему и положено.
Вот есть такая утилита ping.
Для своего функционирования она требует рутовые права (ну или там какой-то CAP_*, про который никто ничего не знает, да и не надо, от лукавого это все https://xn--r1a.website/itpgchannel/248 #sec_model)
Права ей нужны, чтобы создать socket подходящего типа, с которого система разрешит отправить пакет нужного формата.
Сначала я решал эту проблему скриптом-оберткой, которая просто звала "sudo real_ping_binary". В целом, норм решение, но периодически такие времянки нужно разбирать, и делать более хорошо (оценочное суждение intended).
Из интернетов я узнал (https://unix.stackexchange.com/questions/592911/how-does-ping-work-on-fedora-without-setuid-and-capabilities), что можно явно разрешить каким-то группам и пользователям создавать socket нужного типа:
sysctl net.ipv4.ping_group_range="0 4294967295"
Прямо эта команда у меня не отработала, вот с такой ошибкой:
sysctl: setting key ...: Invalid argument
Помогло заменить 4294967295 на 4294967294 (Как?! А вот так!!)
ping после этого не заработал:
pg# busybox ping ya.ru
PING ya.ru (77.88.55.242): 56 data bytes
ping: permission denied (are you root?)
strace сказал, что ping из busybox обламывается на socket(AF_INET, SOCK_RAW, IPPROTO_ICMP). В целом, ожидаемо, потому что настройка ядра работает для SOCK_DGRAM (чего должно быть достаточно для ping).
Тогда я решил заменить ping из busybox на настоящий ping, из https://github.com/iputils/iputils, как у всех остальных.
Собрал, и вот что он мне написал:
pg# /ix/store/.../ping ya.ru
ping: ya.ru: Invalid flags
Sooka, я уже начал немного нервничать.
После короткой сессии с отладчиком, нашел проблемное место - https://github.com/iputils/iputils/blob/master/ping/ping.c#L351
В общем, когда iputils собираются с libidn, то они начинают использовать какой-то неизвестный науке флаг для getaddrinfo.
Как это работает, я вообще не понимаю. Почему под musl это не ошибка сборки (https://github.com/lluixhi/musl-extras/issues/3)? Кто определил этот макрос? Почему он связан именно с наличием libidn, хотя это свойство libc?
Загадка, покрытая мраком.
Я просто убрал сборку с libidn, и, ВНЕЗАПНО, ping заработал и без sudo, как ему и положено.
Telegram
commit -m "better"
https://github.com/systemd/systemd/pull/30547 #suid
"add new "uid0" command as alternative multi-call interface for systemd-run, as sudo replacement #30547"
Ну, все, идея пошла в main stream.
Даже, знаете ли, немного обидно, потому что -1 selling point…
"add new "uid0" command as alternative multi-call interface for systemd-run, as sudo replacement #30547"
Ну, все, идея пошла в main stream.
Даже, знаете ли, немного обидно, потому что -1 selling point…
🔥25🐳6👍4❤1🫡1
#fork
Меня тут спрашивают, почему я не пишу про переход Redis на несвободную лицензию - https://www.opennet.ru/opennews/art.shtml?num=60820
Потому что я ждал вот это вот - https://www.opennet.ru/opennews/art.shtml?num=60823
Я как-то писал, что за каждым успешным oss проектом стоит очередь тех, кто захочет его перехватить, дай upstream хоть какой-то повод для этого - https://xn--r1a.website/itpgchannel/1296
Вот, снова и снова, люди наступают на те же грабли.
С первого взгляда форк похож на васянский, но пилит его не кто иной, как #ddv
Будет интересно.
Меня тут спрашивают, почему я не пишу про переход Redis на несвободную лицензию - https://www.opennet.ru/opennews/art.shtml?num=60820
Потому что я ждал вот это вот - https://www.opennet.ru/opennews/art.shtml?num=60823
Я как-то писал, что за каждым успешным oss проектом стоит очередь тех, кто захочет его перехватить, дай upstream хоть какой-то повод для этого - https://xn--r1a.website/itpgchannel/1296
Вот, снова и снова, люди наступают на те же грабли.
С первого взгляда форк похож на васянский, но пилит его не кто иной, как #ddv
Будет интересно.
www.opennet.ru
СУБД Redis переходит на проприетарную лицензию. Обсуждение удаления Redis из Fedora
Компания Redis Ltd объявила об изменении лицензии на СУБД Redis, относящейся к классу NoSQL-систем. Начиная с выпуска Redis 7.4 код проекта будет распространяться под двумя проприетарными лицензиями RSALv2 (Redis Source Available License v2) и SSPLv1 (Server…
👍8🤝5🤔2
Задачка на #bootstrap
Вот есть у нас shell pipeline, например, "a | b | c".
При этом мы совершенно точно знаем, что, после завершения этого pipeline, shell завершает работу.
Поэтому мы хотим оптимизировать этот pipeline так, чтобы shell закончил свою работу ДО того, как начнет выполняться эта команда.
Звучит дико? Как это, завершить шелл, когда он должен что-то actually do?
У нас есть два инструмента:
* мы знаем, что shell не занимается копированием данных через |. Он просто при старте процессов соединяет их stdin/stdout через pipe.
* у нас есть команда exec, которая умеет заменять shell на другую программу, при этом, новый процесс создан не будет, потому что это эквивалетно вызову exec() ядра.
Семантически я хочу сделать что-то вроде:
exec (a | b| c)
или
a | b | exec c
Понятно, что я имею в виду? Хочется сделать так, чтобы shell "настроил" все, а потом сделал exec в последнюю программу pipeline, и больше не мешался под ногами. Предложенные варианты эту задачу не решают (а почему?)
Предлагайте решения этой задачи. Сразу скажу, что я знаю "красивое" решение для bash, и не знаю для POSIX shell (знаю очень некрасивое).
Вот есть у нас shell pipeline, например, "a | b | c".
При этом мы совершенно точно знаем, что, после завершения этого pipeline, shell завершает работу.
Поэтому мы хотим оптимизировать этот pipeline так, чтобы shell закончил свою работу ДО того, как начнет выполняться эта команда.
Звучит дико? Как это, завершить шелл, когда он должен что-то actually do?
У нас есть два инструмента:
* мы знаем, что shell не занимается копированием данных через |. Он просто при старте процессов соединяет их stdin/stdout через pipe.
* у нас есть команда exec, которая умеет заменять shell на другую программу, при этом, новый процесс создан не будет, потому что это эквивалетно вызову exec() ядра.
Семантически я хочу сделать что-то вроде:
exec (a | b| c)
или
a | b | exec c
Понятно, что я имею в виду? Хочется сделать так, чтобы shell "настроил" все, а потом сделал exec в последнюю программу pipeline, и больше не мешался под ногами. Предложенные варианты эту задачу не решают (а почему?)
Предлагайте решения этой задачи. Сразу скажу, что я знаю "красивое" решение для bash, и не знаю для POSIX shell (знаю очень некрасивое).
Будни #bootstrap, #homelab, #lab
Я тут, раз уж у меня большой парк личного железа в личном ДЦ, запилил новый flavor stal/#ix - server. Включение его выглядит вот так - https://github.com/pg83/ix/blob/main/pkgs/set/system/0/server/ix.sh
А используется вот так - https://github.com/pg83/ix/blob/main/pkgs/set/system/0/unwrap/ix.sh#L6
По сути, немного другой набор софта, собранного с чуть другими флагами. Реально, зачем на сервере нужен console greeter, и зачем на сервере нужен iwd? Вряд ли кто-то в своем уме будет гонять серверные нагрузки через wifi.
Так же там отключены демоны звука, seatd, и так далее.
Чуть более интересна вот эта вот строчка - https://github.com/pg83/ix/blob/main/pkgs/set/system/0/unwrap/ix.sh#L7
Тут написано, что у меня на серверах полностью отсутствуют (штатные) privilege escalation механизмы.
Я несколько раз писал, что у меня нет #suid бинарей вообще, и что для повышения привилегий у меня используется кастомно перепиленный ssh daemon, с авторизацией по ключам. То есть, повысить привилегии может тот, у кого есть правильный ключ, а не пароль от рута. (https://xn--r1a.website/itpgchannel/1544 #suid)
Вот, в серверном варианте я решил, что даже это не надо, и убрал этот механизм из поставки.
Зачем? А не знаю, зачем.
За все время эксплуатации своей #lab мне ни разу не пришлось им воспользоваться. В целом, пакетная система работает очень хорошо, и мне ни разу не пришлось заниматься recovery. А если бы было надо - то у меня временно на vt 1 каждого сервера запущена рутовая консолька, физически доступная только в моем ДЦ.
Поэтому ответ - "а почему бы и нет, попробуем пожить так".
Я тут, раз уж у меня большой парк личного железа в личном ДЦ, запилил новый flavor stal/#ix - server. Включение его выглядит вот так - https://github.com/pg83/ix/blob/main/pkgs/set/system/0/server/ix.sh
А используется вот так - https://github.com/pg83/ix/blob/main/pkgs/set/system/0/unwrap/ix.sh#L6
По сути, немного другой набор софта, собранного с чуть другими флагами. Реально, зачем на сервере нужен console greeter, и зачем на сервере нужен iwd? Вряд ли кто-то в своем уме будет гонять серверные нагрузки через wifi.
Так же там отключены демоны звука, seatd, и так далее.
Чуть более интересна вот эта вот строчка - https://github.com/pg83/ix/blob/main/pkgs/set/system/0/unwrap/ix.sh#L7
Тут написано, что у меня на серверах полностью отсутствуют (штатные) privilege escalation механизмы.
Я несколько раз писал, что у меня нет #suid бинарей вообще, и что для повышения привилегий у меня используется кастомно перепиленный ssh daemon, с авторизацией по ключам. То есть, повысить привилегии может тот, у кого есть правильный ключ, а не пароль от рута. (https://xn--r1a.website/itpgchannel/1544 #suid)
Вот, в серверном варианте я решил, что даже это не надо, и убрал этот механизм из поставки.
Зачем? А не знаю, зачем.
За все время эксплуатации своей #lab мне ни разу не пришлось им воспользоваться. В целом, пакетная система работает очень хорошо, и мне ни разу не пришлось заниматься recovery. А если бы было надо - то у меня временно на vt 1 каждого сервера запущена рутовая консолька, физически доступная только в моем ДЦ.
Поэтому ответ - "а почему бы и нет, попробуем пожить так".
👍17🤔4🆒2
Захотел добавить в свой home #lab инсталляцию #minio.
Ну потому что у меня сейчас зеркало #stal/ix копируется на 3 хоста rsync-ом, для надежности, но, кажется, надо попробовать что-нибудь более индустриальное, с кворумом.
Так что я:
* Выяснил, что конфигурация < 3 хостов, < 3 дисков, меня не устаривает. 3x3 - самое то, с точки зрения выпадения хоста/диска.
* Выяснил, что до требуемого числа дисков мне не хватает "чуть-чуть", но придется разобрать зеркала, и прочие массивы.
* Решил, что а нафиг мне выделенные диски под систему, и решил, что нужно, в срочном порядке, опробовать новую (для меня) схему установки stalix. Я давно хотел попробовать схему "налить универсальную флешку", которую, если вставить в правильный usb порт какого-то хоста, то она дальше все сделает сама - получит нужную конфигурацию, in place переконфигурируется под нужную роль, и продолжит работать. Да, да, система - на внешней флешке, воткнутой в usb port. Наверное, дико, но, с точки зрения введения нового хоста в строй для меня это явная экономия усилий, ну и место не пропадает почем зря.
* Пока учился устанавливать EFI + GRUB на флешку, пару раз убил загрузчик своего ноутбука.
* Выяснил, что, чтобы плавно мигрировать кворумные инсталляции сервисов, мне немного не хватает выразительной мощи язычка описания конфигураций.
* И вот, я здесь, продолжаю информировать почтеннейших слушателей о своих "приключениях"!
Ну потому что у меня сейчас зеркало #stal/ix копируется на 3 хоста rsync-ом, для надежности, но, кажется, надо попробовать что-нибудь более индустриальное, с кворумом.
Так что я:
* Выяснил, что конфигурация < 3 хостов, < 3 дисков, меня не устаривает. 3x3 - самое то, с точки зрения выпадения хоста/диска.
* Выяснил, что до требуемого числа дисков мне не хватает "чуть-чуть", но придется разобрать зеркала, и прочие массивы.
* Решил, что а нафиг мне выделенные диски под систему, и решил, что нужно, в срочном порядке, опробовать новую (для меня) схему установки stalix. Я давно хотел попробовать схему "налить универсальную флешку", которую, если вставить в правильный usb порт какого-то хоста, то она дальше все сделает сама - получит нужную конфигурацию, in place переконфигурируется под нужную роль, и продолжит работать. Да, да, система - на внешней флешке, воткнутой в usb port. Наверное, дико, но, с точки зрения введения нового хоста в строй для меня это явная экономия усилий, ну и место не пропадает почем зря.
* Пока учился устанавливать EFI + GRUB на флешку, пару раз убил загрузчик своего ноутбука.
* Выяснил, что, чтобы плавно мигрировать кворумные инсталляции сервисов, мне немного не хватает выразительной мощи язычка описания конфигураций.
* И вот, я здесь, продолжаю информировать почтеннейших слушателей о своих "приключениях"!
👍22😁9❤4🤩3🤡1
https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/6212
#GNOME #gtk moment
К чувакам пришли с реализацией уже принятого в wayland протокола, на что им, в своей уникальной манере, ответили, что для GTK/GNOME от реализации этого протокола пользы не будет. Речь идет о server side cursor. Попытка решить очень древнюю проблему с неконсистентностью курсовров в разных приложениях (напомню, что поверхность с курсором отдает клиент, и это может быть вообще все, что угодно).
Они, на полном серьезе, сравнивают курсор (который, на минуточку, может быть отрисован не только клиентом, а еще композитором, когда курсор находится вне любого клиента, или клиентом другого DE), и рендеринг шрифтов - https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/6212#note_2056112
Цикл моих заметок про курсоры в Wayland:
https://xn--r1a.website/itpgchannel/185
https://xn--r1a.website/itpgchannel/1214
https://xn--r1a.website/itpgchannel/246
https://xn--r1a.website/itpgchannel/854
https://xn--r1a.website/itpgchannel/1758
Нет слов.
https://www.opennet.ru/opennews/art.shtml?num=60847
А вот "правильный" заход в #Wayland - #SDL говорят, что не будут включать Wayland по дефолту, пока им не запилят два нужных расширения. И тут уж коллегам из Wayland придется прогнуться, потому что один из основных потребителей SDL - Valve, которая сейчас пилит половину десктопного кода под Linux (стек драйверов, компиляторов шейдеров, да и свои компизиторы у них есть https://github.com/ValveSoftware/gamescope). Все #хорошее в графическом стеке Linux делают корпорации!
Будьте уверены, в данном вопросе все пойдет, как по маслу. Потому что одно дело, когда что-то нужно сообществу, тогда можно поломать комедию и повыебываться, а другое дело - когда оно нужно уважаемым людям, которые непосредственно вас кормят.
Вообще, бесит меня этим современный open source, что люди, которые нихуя не делают, а простосидят на трубе обладают паролем от нужного репозитория, палец о палец не пошевелят, пока у задачи не найдется спонсор с деньгами. Если бы эти негодяи просто сами не писали код - это еще полбеды, но они тупо не пропускают нужные изменения в код.
#GNOME #gtk moment
К чувакам пришли с реализацией уже принятого в wayland протокола, на что им, в своей уникальной манере, ответили, что для GTK/GNOME от реализации этого протокола пользы не будет. Речь идет о server side cursor. Попытка решить очень древнюю проблему с неконсистентностью курсовров в разных приложениях (напомню, что поверхность с курсором отдает клиент, и это может быть вообще все, что угодно).
Они, на полном серьезе, сравнивают курсор (который, на минуточку, может быть отрисован не только клиентом, а еще композитором, когда курсор находится вне любого клиента, или клиентом другого DE), и рендеринг шрифтов - https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/6212#note_2056112
Цикл моих заметок про курсоры в Wayland:
https://xn--r1a.website/itpgchannel/185
https://xn--r1a.website/itpgchannel/1214
https://xn--r1a.website/itpgchannel/246
https://xn--r1a.website/itpgchannel/854
https://xn--r1a.website/itpgchannel/1758
Нет слов.
https://www.opennet.ru/opennews/art.shtml?num=60847
А вот "правильный" заход в #Wayland - #SDL говорят, что не будут включать Wayland по дефолту, пока им не запилят два нужных расширения. И тут уж коллегам из Wayland придется прогнуться, потому что один из основных потребителей SDL - Valve, которая сейчас пилит половину десктопного кода под Linux (стек драйверов, компиляторов шейдеров, да и свои компизиторы у них есть https://github.com/ValveSoftware/gamescope). Все #хорошее в графическом стеке Linux делают корпорации!
Будьте уверены, в данном вопросе все пойдет, как по маслу. Потому что одно дело, когда что-то нужно сообществу, тогда можно поломать комедию и повыебываться, а другое дело - когда оно нужно уважаемым людям, которые непосредственно вас кормят.
Вообще, бесит меня этим современный open source, что люди, которые нихуя не делают, а просто
GitLab
wayland: implement cursor_shape_v1 (!6212) · Merge requests · GNOME / gtk · GitLab
This implements https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/194 Let me know if there's a more specific place that _gdk_wayland_cursor_get_enum would fit. Also, would a...
👍12🤯6😭3😢2💯1