LINUX.ORG.RU

Bash, XCB, эвенты

 , ,


2

1

Привет. Скажу сразу, но это, скорее всего, к делу не относится, но всё равно спросит кто да нибудь: использую wmutils и lemonbar-xft, lemonbar, также, для рисования заголовков окон не maximized. Мне нужно в скрипте получить уведомление того что пользователь перетащил(нажав левой кнопкой мыши на заголовок окна и не отпуская, обычный drag) окно к краю или углу экрана или корневого окна. Мои исследования в гугле привели меня к XCB_EVENT_MASK_BUTTON_MOTION. Так вот, скрипт запускается при нажатии на заголовок окна, и при отпускании кнопки мыши eventloop уничтожается. Для начала мне нужно узнать как слушать эвенты XCB в пределах башь скрипта, так как я не знаю. Далее я протестирую уже сам функционал на различных оконных менеджерах и без. Спасибо за внимание.

Такой рецепт тебе тут не катит. XCB это библиотека языка C, а не утилита. Хоть там и есть биндинги для perl и python неизвестной степени тухлости, мне кажется, что это велосипедостроение.

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

Спасибо что пояснили, а то скольько не гуглил пришлось создавать аккаунт на форуме. Что вы мне посоветуете для того чтобы отслеживать движение курсора в пределах bash скрипта? Я пробовал xdotools и при нажатой кнопке мыши он переставал отслеживать курсор, хотя курсор присутствовал на экране и был видим. Почему я предположил что эвенты XCB можно слушать в bash, это потому что вывод xdotools-то я получаю а он, в свою очередь, обращается к аналогичному функционалу xlib(что, я теперь понимаю, тоже библиотека для C).

little-boy ()

утилита wew из репо wmutils/opt умеет слушать xcb ивенты

wew | your_script
сам скрипт:
#!/bin/sh

while IFS=: read ev wid; do
    case $ev in
        6) do something ;;
    esac
done

kazufukurou ()
Ответ на: комментарий от little-boy

Я так понимаю, что ты хочешь что-то вроде поведения виндовса при перетаскивании окна на край или угол экрана.

Посоветовал бы посмотреть в сторону композиторов и оконных менеджеров, такой функциональный спектр больше им подходит, а не внешнему опрашивающему скрипту.

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

Что-то не могу получить вывод

wew -m XCB_EVENT_MASK_BUTTON_MOTION
Как то не понятно работает он, если без параметров запускать даже ENTER не отслеживает, вернее через раз. Судя вот по этому https://github.com/wmutils/opt/blob/master/wew.c, он должен выдавать хоть что-то при любых параметрах. Может ли это быть из-за того что я использую виртуальную машину для теста?

little-boy ()
Ответ на: комментарий от little-boy

XCB_EVENT_MASK_BUTTON_MOTION это константа xcb либы, в консоли она недоступна, но можно подставить ее значение

wew -m 64

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

Если кто-то ещё интересуется, предупрежу что wew пока не полностью поддерживает mouse евенты. То есть на клик эвенте, например отвечает внутренним ID эвента и ID клиента, чему есть, конечно, применение, но не обширное.

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