Здравствуйте. Мучаюсь с одной проблемой, для которой никак не могу найти решение. Window snapping в openbox. У меня получилось имитировать функционал при помощи xev для отслеживания перемещений клиента, но xev почему-то не оповещает об эвенте ButtonMotionMask, поэтому пришлось сравнивать начальное положение курсора(при нажатии) и размеры клиента. Также я храню данные о изначальных размерах клиентов, привязанных к углам экрана, в environment variable что ассоциативный массив в виде wid->w:h(изначальные) для других просто - Unmaximize. Проблема осталась в том что при Unmaximize, который привязан к drag действию в контексте titlebar в rc.xml при условии что окно Maximized, клиент восстанавливает свои изначальные размеры И позицию. Я пробовал телепортировать окно с помощью wtp из wmutils что приводит к тому что окно на момент, до того как курсор был перемещён более чем на 1px, перемещается на заданные в wtp координаты, а потом обратно на изначальную позицию(откуда клиент был Maximized) и продолжает своё движение до того как была отпущена кнопка мыши или нажат Enter. Чтоб было понятнее: Click на titlebar maximized клиента->Drag->Клиент возвращает изначальные размеры(unmaximize) и координаты->Клиент перемещается на координаты заданные в wtp(для этого используется шелл скрипт <comand> rc.xml)->Клиент продолжает движение с ИЗНАЧАЛЬНЫХ координат->отпускаю кнопку мыши->Перемещение завершается.
Итак что же находится в чёрном ящике? Внимание, вопрос:
Возможно ли вызывать Openbox Actions в рамках шелл скрипта(из терминала)? Почему такой вариант? Потому что когда я перемещаю клиент при помощи MoveResizeTo клиент ведёт себя так как предполагается, то есть перемещается(телепортируется) на указанные координаты и продолжает движение оттуда. Проблема только в том что в пределах rc.xml нельзя узнать нынешнее положение курсора.
Есть ли другие способы решения этой проблемы?(именно этой, мышью, а не клавиатурой)