LINUX.ORG.RU

Как всё-таки получить буффер primary selection на Wayland?

 , , ,


0

2

Пишу себе читалку и благодарю разработчиков wayland… Сделал чтение буффера (по Ctrl+C) прямо из Klipper по qdbus. Не представляю как оно должно работать универсально под вяленым? Под каждое окружение свою логику писать? Ну да ладно, пол беды. А вот то, что хотелось сделать не получается.

Я хочу выделить произвольный текст в любом приложении и чтобы моя прога сидящая в лотке зачитала бы его. Хотябы в рамках KDE как мне это сделать? Для иксов проще, там понял. Почти.

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

Так что думаю это невозможно.

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

Нет. Klipper это как-то делает. Просто я не могу понять как. А так же Orca - самый долбанутый экранный чтец-звиздец. Ему даден доступ ко всем приложениям? Как оно реализовано?

Хотя, наверное не получу тут ответа. Штука специфическая.

PcheloBiaka
() автор топика
Ответ на: комментарий от PcheloBiaka

Klipper часть Плазмы наверное. Надо смотреть, какие у них там API между собой.

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

Orca работает по протоколу AT-SPI для аксесобилити, сами приложения на qt и gtk анонсят в dbus свои контролы, текст на экране и эвенты. Наверно в теории можно что-то отуда вытащить.

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

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

Тут такое дело, мне ИИ подсказал про wl-paste –primary –watch У меня оно есть. Но я уже запутался, оно по дефолту идёт или это я назкспериментировал когда-то? У нормальных людей установлено wl-paste?

PcheloBiaka
() автор топика
Ответ на: комментарий от PcheloBiaka

У нормальных людей установлено wl-paste?

А нормальные - это кто? В плазме он не нужен, там Klipper этим занимается сам по себе. Он нужен там, где нет встроенного менеджера буфера обмена.

Sunderland93 ★★★★★
()

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

papin-aziat ★★★★★
()
Ответ на: комментарий от masa

Что оно в пакете я понимаю, я не представляю стоит ли рассчитывать на на эту прогу? Вдруг всё по другому делается? Но за ссылку спасибо, буду читать. И надо разобрать как в Орке это сделано. Но уже не сегодня. Устал. Мне теперь Александр из Rhvoice читает ваши сообщения.

Хм. Надо замутить такую вундурвафлю! Надо сделать так, чтобы каждого пользователя читало своим голосом!!! :))

PcheloBiaka
() автор топика
Ответ на: комментарий от Shadow

И вы с папиным азиатом меня простите? :))))

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

PcheloBiaka
() автор топика
Ответ на: комментарий от PcheloBiaka

Кстати, из последней плюшки иксов. Чтобы не рулить из муси созданием треков и пдф-а написал скрипты, которые ловят название файла из окна муси и т. д. А вот обновлять онлайн приходилось через гуй, так как попытка скриптом это сделать перехватывается мусей и файл открывается в ней повторно, то есть ничего не происходит — типа иди в открытую программу и там… При закрытой программе всё ОК, но мне это не подходит.

В результате создал другого юзера и от его имени обновляю онлайн. Иксы так умеют через host+. Могёшь так через вяленый?

score=$(awk '/MuseScore 3/ {print $NF}' <(wmctrl -l))
[[ $score ]] || {
    notify-send 'Упс...'
    exit
}

path=$(find /home/me/Depot/MuseScore3/Scores -name ${score}.mscz)

while true; do
    if (($(pgrep -xc mscore) >= 3)); then
        sleep 1
    else
        xhost +
        sudo -u alterego mscore --save-online $path
        xhost -
        break
    fi
done

notify-send "$score сохранён онлайн!"
papin-aziat ★★★★★
()
Ответ на: комментарий от PcheloBiaka

Это ты сидишь на краю перед будущим, вот и… А у меня ещё до 29 года время есть, а если на девятую альму перебраться, то до 32-ого нормальная поддержка иксов!

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

Могёшь так через вяленый?

Я конечно не могу (точнее не пробовал), но описанный юзкейс возможен при наличии протоколов xdg-toplevel-tag и xdg-activation. Ну а обновления также будут работать, от другого юзера.

Sunderland93 ★★★★★
()
Ответ на: комментарий от papin-aziat

Писать приложение под прошлое как-то не так. Я думаю выпустить своё хулиганство. В коем-то веке, должен же я наследить? :))) А то как твои буддисты, насыпал мандалу и смахнул. Я за эти пол года уже три проекта закопал. Писал пока не надоело, и стирал.

PcheloBiaka
() автор топика

попробуй получить его из xwayland, наиболее универсальный пока что способ (хотя бы между иксовыми приложениями должен работать)

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

Интересно! Так-то вроде уже есть что-то типа xclip (если не путаю), а вот devilspie2 видимо под вяленый не будет. И всякие там xdotool, wmctrl тоже вроде не будет.

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

Есть ydotool. Не совсем конечно то же самое, но многие фичи поддерживает https://github.com/ReimuNotMoe/ydotool Для wlroots композиторов есть wlrctl

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

И для каждого своё. И вот вместо написания программы я сижу, расследованиями занимаюсь, что и как сделано как реализовано, и чтобы опробовать мне придётся навернуть стопиццот виртуалок с каждым окружением и написать для одного только линукса по двенадцать разных реализаций каждой функции. Вот раньше-то лохо было, а теперь смотри, Тут wlroots, там kwin, здесь Mutter и ни один из них до конца всего не делает…

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

PcheloBiaka
() автор топика
Ответ на: комментарий от PcheloBiaka

Ну, тебе что конкретно нужно? Менеджер буфера обмена? Я тебе скинул стандартный протокол, есть его вендор версия wlr-data-control, которую собственно и стандартизировали.

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

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

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

Стабильный протокол которому почти никто не следует. И поэтому и получается, я для каждого должен буду написать заново. Нет. Я не подниму неподъёмное. Или интегрирую в КДЕ и буду ориентироваться только на kwin и klipper, или опять брошу. Ну его. Значит эти люди достойны того, чтобы сидеть с Оркой. :)

PcheloBiaka
() автор топика
Ответ на: комментарий от PcheloBiaka

Тебя никто не заставляет писать для каждого. Kwin поддерживает ext-data-control начиная с 6.4, до этого поддерживается wlr-data-control, отличия там небольшие. Klipper на этот протокол и опирается.

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

Вообще бы к этому протоколу бы примеры такого привелигированного окна. Читаю про clipman, там тоже используется wl-paste

PcheloBiaka
() автор топика
Ответ на: комментарий от Sunderland93

Да, но Клиппер никак не подаёт признаков, принимает он этот праймари селект или нет. И так светил его и сяк. через дбус копирование аж два раза отдаёт, а это никаких признаков.

PcheloBiaka
() автор топика
Ответ на: комментарий от Sunderland93

Не. Вот чего-чего, а на это у меня ума не хватает. Мне покажите референсный пример, чтобы я понял. А так… Я вообще не понимаю как этим воспользоваться. Пусть даже в рамках квина. Как указать ему что моё приложение привелегированное?

И я столкнулся с ещё несколькими проблемами. Я держу окошко с кнопкой «читать» и никак не могу его сделать всегда над окнами. Какого типа должно быть окно? Опять игнорируется всё и Qt::WindowStaysOnTopHint и raise()… Ёдленный вейлянд…

Вот ты понимаешь в этом? Научи. Я когда про Qgis писал все кричали «да разрабэ криворукиеэээ!!!». Вот я, уж точно криворукий. Вместо написания, практически, однострочника, сижу в кутях и не могу разрулить ни окнами ни буфферами. Как это делать?

PcheloBiaka
() автор топика
Ответ на: комментарий от PcheloBiaka

Не. Вот чего-чего, а на это у меня ума не хватает. Мне покажите референсный пример, чтобы я понял

Референсый пример чего? Этот протокол везде почти есть https://wayland.app/protocols/primary-selection-unstable-v1#compositor-support

Я держу окошко с кнопкой «читать» и никак не могу его сделать всегда над окнами

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

Вот ты понимаешь в этом? Научи.

Может разработка под Wayland просто не твое? Я даже не совсем понимаю что ты хочешь сделать

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

Может разработка под Wayland просто не твое? А давай так на все вопросы про Wayland отвечать? Ой. А вейляндисты уже так делают…

Естественно не моё. Тут вообще речи нет, моё дело скрипты всякие ваять и вообще не под это дело, а в совершенно другой плоскости. Но на иксах пятнадцать лет назад я это делал. Легко. Не зная НИЧЕГО, а только почитав кутишные классы. Что ТЕПЕРЬ человек должен понимать разрабатывая наколенную утилиту-помощника?

Я думал ты адекватно отнесёшься, научишь.

PcheloBiaka
() автор топика
Ответ на: комментарий от PcheloBiaka

Так сиди на иксах, тебя с них кто-то гонит?

Я думал ты адекватно отнесёшься, научишь.

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

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

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

PcheloBiaka
() автор топика
Ответ на: комментарий от PcheloBiaka

Вижу дикую фрагментацию всего при переходе на Вейлянд

Что есть, то есть. Выбор у тебя есть: 1) смириться; 2) сидеть на иксах до талого; 3) сменить ОС.

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

Ёлки… Ну что ты над сирым и убогим издеваисся? Ну не разбогатею я с этого секрета. Ну ткни носом, мил человек! Ну глупенькой я. Скриптовик-затейник я. Никогда с таким не сталкивался и вот опять. Ну помоги! Я когда запощу проект на гитлабе сделаю так, чтобы каждые пять минут выводило в программе жирными буквами на весь экран как ты мне сильно помог и спас :)))

PcheloBiaka
() автор топика
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.