LINUX.ORG.RU

KDE: дробное масштабирование в Wayland и другие изменения

 


2

2

Разработчики реализовали долгожданную поддержку дробного масштабирования под Wayland и наконец-то в корне устранили застарелые ошибки в работе Plasma с несколькими экранами.

Дробное масштабирование в Wayland

На прошлой неделе был принят протокол семейства Wayland для дробного масштабирования, предложенный Kenny Levinsen. А уже на этой неделе были добавлены его реализации на стороне KDE (Plasma 5.27) и Qt, подготовленные David Edmundson.

Это позволяет фреймворку Qt задействовать в сеансе Wayland существующую поддержку дробного масштабирования, ранее использовавшуюся в X11. Приложения больше не придётся рисовать в завышенном до следующего целочисленного множителя разрешении и затем уменьшать до нужного размера! Как итог, приложения на Qt с дробным масштабом (не 200%, а, например, 125%) теперь должны выглядеть менее размытыми и работать быстрее.

Приложения GTK получат те же преимущества, если GTK когда-нибудь добавит поддержку дробного масштабирования и реализует упомянутый протокол. До тех пор приложения GTK продолжат использовать менее эффективный метод масштабирования.

Диспетчер окон KWin уже поддерживает всё необходимое в Plasma 5.27. Поддержка в Qt сейчас есть только в шестой версии, что обычно говорит о необходимости ждать Plasma 6. Однако есть шанс, что все будет адаптировано и к Qt 5 и включено в набор правок Qt от KDE.

Исправление работы с несколькими мониторами

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

Эта новая система должна значительно повысить стабильность, надёжность и предсказуемость в отношении того, как экраны включаются и отключаются, где размещаются и какие рабочие столы Plasma показывают. Она исправляет печально известные ошибки, такие как произвольное перемещение контейнеров Plasma и их потерю, а также утрату настроек рабочих столов (обоев, виджетов, параметров значков). Также обеспечено сохранение расположений экранов и контейнеров Plasma между сеансами Plasma X11 и Wayland.

Другие изменения

В сеансе Plasma Wayland теперь можно разрешить приложениям, использующим XWayland, подслушивать нажатия клавиш, сделанные в родных приложениях Wayland, как будто они работают в X11. Это уязвимое поведение по умолчанию отключено, но может пригодиться для некоторых приложений, например, для режима рации в Discord. Есть несколько уровней, чтобы можно было настроить под себя баланс безопасности и поддержки устаревших технологий.

Клавиши-модификаторы (например, одиночную Meta) теперь можно использовать в качестве комбинаций клавиш при настройке вызова действий с клавиатуры. Со временем это позволит нам заменить странную старую обработку клавиш-модификаторов в KWin и просто напрямую назначать клавиши-модификаторы на такие действия, как вызов меню приложений или запуск режима обзора.

Полный перевод новости

Спасибо @ilya_b

>>> Подробности

★★★★★

Проверено: hobbit ()
Последнее исправление: unfo (всего исправлений: 6)
Ответ на: комментарий от khrundel

Зачем тебе знать свои координаты? Вот реально?

Чтобы делать многооконные интерфейсы вроде GIMP и Lazarus вместо велосипедного тайлового WM в каждой программе.

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

На самом деле в Wayland уже и так через некоторые трюки можно узнать и задать абсолютные координаты окон. Например создать невидимое окно во весь экран и обычные окна делать как popup относительно невидимого окна. Или можно сделать невидимое popup окно большого размера и запросить относительные координаты вроде (-9999, -9999) так что сервер Wayland сдвинет popup так чтобы он не выходил за пределы экрана и по обновлённой относительной позиции popup можно посчитать абсолютные координаты окна.

Всё, взломал я ваш дырявый Wayland.

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 1)
Ответ на: комментарий от X512

Чтобы делать многооконные интерфейсы вроде GIMP и Lazarus вместо велосипедного тайлового WM в каждой программе.

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

В общем кто тут спрашивал про полезные фичи вяленда? Вот, одна из них: поощряет принцип «одно приложение - одно окно».

На самом деле в Wayland уже и так через некоторые трюки можно узнать и задать абсолютные координаты окон. Например создать невидимое окно во весь экран и обычные окна делать как popup относительно невидимого окна.

А я вот не уверен, что прозрачное главное окно будет прозрачно и для мыши.

Или можно сделать невидимое popup окно большого размера и запросить относительные координаты вроде (-9999, -9999) так что сервер Wayland сдвинет popup так чтобы он не выходил за пределы экрана и по обновлённой относительной позиции popup можно посчитать абсолютные координаты окна.

Правила релокации попапа, не попадающего в экран, завсегда можно изменить, можно даже рандомизировать положение такого попапа, чтоб такие умники получили по заслугам. При этом оставить нормальные попапы работоспособными. Не уверен, что относительные координаты попапа вообще можно получить. Ну и если можно, что мешает DS вернуть те же старые (-9999, -9999)? В принципе это просто, DS может хранить некие координаты смещения, которые в нормальном случае = 0, приложению недоступны, но при рендеринге попапа добавляются к «официальным» координатам.

В общем всё решаемо. А вот в случае, когда можно просто взять и совершить 2 легальных обращения + провести какие-то внутренние подсчёты, то это никак не прикрыть вообще.

khrundel ★★★★
()
Последнее исправление: khrundel (всего исправлений: 1)
Ответ на: комментарий от X512

Чтобы делать многооконные интерфейсы вроде GIMP и Lazarus вместо велосипедного тайлового WM в каждой программе.

Например создать невидимое окно во весь экран и обычные окна делать как popup относительно невидимого окна

Ну в тех-же виндах это, в общем-то, так и работает. Создаётся toplevel-окно (можно его и спрятать) и уже относительно его координат всё на его DC «рисуется» (WS_OVERLAPPED, или как-то так это называется).

Не знаю, как в Мак-овской Сocoa, но догадываюсь, что примерно также.

SkyMaverick ★★★★★
()
Ответ на: комментарий от khrundel

Только ради этого стоило отменить абсолютные координаты.

Великолепно. И это пишет человек, который только что несколько дней подряд распинался про то, какие пидарасы отдельные личности, поменявшие кое-какие интерфейсы в ядре, лишь бы драйвер от нвидиа не работал.
Может, мусьё, стоило бы быть более последовательным? Нет, у GIMP интерфейс далеко не подарок, тут я не спорю. Но если потребность в точном позиционировании у людей имеется - а она имеется - то на любой хитрый ход любителей безопасности через закрытие всегда будет находится винт с левой резьбой.

BydymTydym ★★
()
Ответ на: комментарий от BydymTydym

Великолепно. И это пишет человек, который только что несколько дней подряд распинался про то, какие пидарасы отдельные личности, поменявшие кое-какие интерфейсы в ядре, лишь бы драйвер от нвидиа не работал.

Долго ж ты терпел ;)

Но если потребность в точном позиционировании у людей имеется - а она имеется…

То люди берутся за руки дружно идут в жопу вместе со своей потребностью. Под улюлюканье всех вменяемых зрителей.

Потребность всегда можно выдумать. Например, очень желательно слушать все нажатия клавиатуры, чтоб сделать punto switcher. Нужно знать положения всех окон, чтоб запилить овцу, которая по этим окошкам бегает. А ещё биос материнки иногда нужно прошивать, причём это не забава какая-то. А уж сколько разного можно придумать для оправдания модификации памяти процесса или для доступа к физической памяти.

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

Тут надо понимать, что заинтересован в безопасности конечный пользователь. Ему не нужны эти всевозможные пунтосвитчеры и овцы, по крайней мере не ценой безопасности. А вот в том, чтоб все драйвера были лицензированы под GPL пользователь как бы совсем не заинтересован, ему вообще на это насрать. Это политические игрища всяких адептов RMS. Вот в этом разница.

khrundel ★★★★
()
Ответ на: комментарий от khrundel

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

Я считаю что свободный софт – это в том числе про свободу действий пользователя и разработчика. Исскуственные запреты без внятной причины вроде абсолютное позиционирование в Wayland – это лишение пользователя свободы и акт вредительства. Не нравиться – не пользуйтесь, но зачем другим мешать?

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

А я вот не уверен, что прозрачное главное окно будет прозрачно и для мыши.

Можно задать регион прозрачности для мыши: https://wayland.app/protocols/wayland#wl_surface:request:set_input_region.

Не уверен, что относительные координаты попапа вообще можно получить.

Можно и например popup GTK 4 этим пользуются чтобы рисовать стрелку в направлении откуда появился popup.

Starting with version 3, it may be sent again if the popup is setup with an xdg_positioner with set_reactive requested, or in response to xdg_popup.reposition requests.

Я автор реализации Wayland поверх оконной системы Haiku если что (https://github.com/X547/wayland-server, Вышла четвертая бета-версия ОС Haiku).

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 1)
Ответ на: комментарий от khrundel

Долго ж ты терпел ;)

Мне интересно было читать этот срач, но делать его эпическим не хотелось

Ему не нужны эти всевозможные пунтосвитчеры и овцы

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

Это так не работает. Пользователи (точнее, конечно же разрабы, но в данном случае они и есть пользователи) если чего-то хотят, то они этого добьются, просто будет это через тернии.

BydymTydym ★★
()
Ответ на: комментарий от khrundel

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

Пользователь сам знает в чём он заинтересован и хватит уже решать за других. Как нибудь сам разберётся.

X512 ★★★★★
()
Ответ на: комментарий от BydymTydym

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

Зачем тебе это? Порнобаннер-вымогатель поверх остальных окон выводить собрался?

Это так не работает. Пользователи (точнее, конечно же разрабы, но в данном случае они и есть пользователи) если чего-то хотят, то они этого добьются, просто будет это через тернии.

Конечно же нет. Вон, вышла винда, и все эти «пользователи», которые форматировали нулевую дорожку на HDD под досом куда-то исчезли.

Тут будет аналогично. Вот захочет разработчик сделать какую-то «удобную» хрень, посмотрит, на стековерфлоу поглядит на ответы данные 2 года назад, которые уже вдруг перестали работать, и подумает «а может сделать по-человечески?».

Заметь: с глобальными хоткеями так и вышло. Поныли-поныли, и забыли. И выяснилось, что не нужны они, только вот дискорду и то внутри одного приложения. Одни только дурачки из КДЕ зачем-то сделали дыру и тут же её дефолтными настройками прикрыли.

khrundel ★★★★
()
Последнее исправление: khrundel (всего исправлений: 1)
Ответ на: комментарий от X512

Пользователь сам знает в чём он заинтересован и хватит уже решать за других. Как нибудь сам разберётся.

Ты же к хайку какое-то отношение имеешь, верно? Ну как ты там, топишь во внутренних обсуждениях за отмену изоляции памяти процессов, например? Или «это другое, тут пользователь не разберётся»?

khrundel ★★★★
()
Ответ на: комментарий от X512

Я считаю что свободный софт – это в том числе про свободу действий пользователя и разработчика.

Полностью согласен.

Исскуственные запреты без внятной причины вроде абсолютное позиционирование в Wayland – это лишение пользователя свободы и акт вредительства.

А вот тут уже ошибка. Свобода есть в том числе и у разработчиков Вейланда, которые могут не хотеть делать из своего продукта что-то уж совсем дырявое. Как ты правильно заметил: «Не нравиться – не пользуйтесь» в том числе и вейландом, голосуйте ногами. Вообще, это очень просто, X11 до сих пор существует, можно и другой вариант запилить, или например расширение вейланда, кастомное, для собственного DS, в котором твоё приложение будет правильно позиционировать порнобаннер.

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

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

Можно задать регион прозрачности для мыши: https://wayland.app/protocols/wayland#wl_surface:request:set_input_region.

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

khrundel ★★★★
()
Ответ на: комментарий от khrundel

Ну как ты там, топишь во внутренних обсуждениях за отмену изоляции памяти процессов, например?

Ну как бы во всех нормальных ОС уже и так есть разделяемая память а также интерфейсы отдадки, позволяющие читать чужую память. Или вы предлагаете GDB запретить читать память отлаживаемого процесса? Проблема не в самой возможности, а в управлении привелегиями.

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 2)
Ответ на: комментарий от khrundel

Как ты правильно заметил: «Не нравиться – не пользуйтесь» в том числе и вейландом, голосуйте ногами.

Тут проблема в том, что композиторы Wayland – это системный инфраструктурный софт глобально определяющий возможности и ограничения системы. Например если мне не нравится GIMP, то я могу выбрать Krita, Photoshop в Wine и т.п. или использовать разные программы в зависимости от ситуации. А если композитор Wayland не даёт доступа к координатам окон, то этот функционал глобально недоступен ни для каких окон и выбора нет.

Выбор между X11/Wayland есть только пока, разработчики-фанаты Wayland нагло его продвигают во все дистрибутивы и нагло лгут про проблемы X11 и преимущества Wayland. Со временем X11 может просто перестать запускаться на новых дистрибутивах потому что это якобы небезопасно и вообще никому не нужно.

Как ты правильно заметил: «Не нравиться – не пользуйтесь» в том числе и вейландом, голосуйте ногами.

Ну я и голосую, используя и разрабатывая Haiku. Wayland для меня в основном – это средство для запуска GTK программ в Haiku. В таком виде он не мешает и по прежнему доступны нативные интерфейсы оконного менеджера Haiku позволяющего в том числе узнавать и задавать координаты окон.

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 1)
Ответ на: комментарий от hobbit

Да. Бэкенд Qt нативный, а GTK 3/4 работает поверх Wayland. Причина в использовании Wayland для GTK в том, что написать и поддерживать код нативного бэкенда намного сложнее, там нестабильное и плохо документированное внутреннее API, нужно поддерживать две ветки для GTK 3 и 4, код бэкенда должен быть в дереве кода GTK (в Qt бэкенды имеют форму плагинов и могут находиться отдельно).

Реализация Wayland для Haiku использует публичные протоколы Wayland и позволяет запустить одновременно GTK 3 и GTK 4.

X512 ★★★★★
()
Ответ на: комментарий от khrundel

Зачем тебе это? Порнобаннер-вымогатель поверх остальных окон выводить собрался?

Это уже есть - окошко поверх прочих окон и сейчас ничего не мешает расположить. И во весь экран его распахнуть. Так что отсутствия знания абсолютных координат, как я понимаю, мешает всем, кроме авторов порнобанеров. Не говоря уж о том, что эта защита должна на другом уровне пролегать - где-то в районе песочницы браузера, к примеру, а не по принципу «а давайте вообще у пользователя отберем монитор, раньше для работы и Consul’а хватало»

Заметь: с глобальными хоткеями так и вышло.

Это все же несколько другое. Там пароль можно было спереть. А тут какой вектор атаки? И, кстати, пока еще фразу «так и вышло» к Wayland применять преждевременно, как к целому, так и к любой части.

BydymTydym ★★
()
Ответ на: комментарий от X512

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

Что за глупость? Т.е. если я пилю очередной туду-лист, то я имею право решать каким будет мой софт, а если пилю то что реально нужно, то я вдруг должен подчиняться всяким ушлёпкам?

Кстати, а это для всех работает? Вот, скажем, если нвидии очень сложно сделать поддержку вейланда через GBM и они хотят чтоб была через EglStreams то все «системные инфраструктурные софты» должны подчиниться? Или это другое и «фак ю нвидия»?

На самом деле проблемы нет от слова совсем. Пилите расширение, добавляйте в свой композитор, отказывайтесь работать под тем композитором, который это расширение не поддерживает.

khrundel ★★★★
()
Ответ на: комментарий от X512

Ну как бы во всех нормальных ОС уже и так есть разделяемая память а также интерфейсы отдадки, позволяющие читать чужую память.

Ну так а я против что ли? Для реализации глобальных хоткеев вполне можно запилить что-то внутри DS. Для реализации пунтосвитчера на вейланде вполне подойдут экстеншены этого самого DS. Я задавал вопрос о другом, о том, нужно ли отказаться от изоляции памяти только потому что было бы удобно всякое делать не будучи ограниченным прикладными интерфейсами.

Потому что то что описываешь ты - это как раз дать программе полную свободу на случай «а вдруг кому-то понадобится».

khrundel ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.