Форум русскоязычного сообщества Ubuntu


За новостями русскоязычного сообщества и Ubuntu в целом можно следить на нашей страничке в Google+

Автор Тема: Как получить координаты окна приложения? (bash)  (Прочитано 1658 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ramzport

  • Автор темы
  • Новичок
  • *
  • Сообщений: 49
    • Просмотр профиля
    • Легальность во все поля
Собственно в этом весь вопрос. Гуглил-гуглил не нагуглил  :-[

Оффлайн aliftin

  • Старожил
  • *
  • Сообщений: 1398
    • Просмотр профиля
Наверно wmctrl то что вам нужно:
aliftin@r2d2:~$ wmctrl -lG
0x01a00729 -1 950  630  330  170  r2d2 N/A
0x01c00003 -1 0    1550 1280 25   r2d2 Bottom Expanded Edge Panel
0x01c00029  0 0    0    1280 25   r2d2 Top Expanded Edge Panel
0x02000020 -1 0    0    1280 800  r2d2 x-nautilus-desktop
0x02200005  0 5122 96   580  383  r2d2 aliftin@r2d2: ~
0x03400003  0 2560 96   1280 727  r2d2 3. Groove Armada - History (Grum Remix) (5:43) - Audacious
0x02203bd8  0 0    96   1280 727  r2d2 aliftin@r2d2: ~

4 и 5 столбики это размеры окна, а какой показывает положение окна я не знаю. Можно воспользоваться  xwininfo, только нужно узнать из man-а как передать ему id окна. Вот это еще почитайте - http://www.sablog.ru/linux-peremeshhenie-i-izmenenie-razmerov-okna-programmy/.

UP Как то вот так:
xwininfo -id `wmctrl -l | grep Audacious | awk '{print $1}'`
Там потом сами через awk/sed вытащите нужные вам значения.
« Последнее редактирование: 02 Ноябрь 2010, 21:15:43 от aliftin »
Если мы не можем до чего то дотянуться, мы виним в этом не свой рост, не отсутствие табуретки, а свою цель.

Оффлайн ramzport

  • Автор темы
  • Новичок
  • *
  • Сообщений: 49
    • Просмотр профиля
    • Легальность во все поля
Наверно wmctrl то что вам нужно:
aliftin@r2d2:~$ wmctrl -lG
0x01a00729 -1 950  630  330  170  r2d2 N/A
0x01c00003 -1 0    1550 1280 25   r2d2 Bottom Expanded Edge Panel
0x01c00029  0 0    0    1280 25   r2d2 Top Expanded Edge Panel
0x02000020 -1 0    0    1280 800  r2d2 x-nautilus-desktop
0x02200005  0 5122 96   580  383  r2d2 aliftin@r2d2: ~
0x03400003  0 2560 96   1280 727  r2d2 3. Groove Armada - History (Grum Remix) (5:43) - Audacious
0x02203bd8  0 0    96   1280 727  r2d2 aliftin@r2d2: ~

4 и 5 столбики это размеры окна, а какой показывает положение окна я не знаю. Можно воспользоваться  xwininfo, только нужно узнать из man-а как передать ему id окна. Вот это еще почитайте - http://www.sablog.ru/linux-peremeshhenie-i-izmenenie-razmerov-okna-programmy/.

UP Как то вот так:
xwininfo -id `wmctrl -l | grep Audacious | awk '{print $1}'`
Там потом сами через awk/sed вытащите нужные вам значения.

Спасибо, xwininfo уже пробовал - буду от туда брать. Думал, что есть что-то более простое :) Спасибо

Оффлайн aliftin

  • Старожил
  • *
  • Сообщений: 1398
    • Просмотр профиля
Да куда уж проще то.
Если мы не можем до чего то дотянуться, мы виним в этом не свой рост, не отсутствие табуретки, а свою цель.

Оффлайн ramzport

  • Автор темы
  • Новичок
  • *
  • Сообщений: 49
    • Просмотр профиля
    • Легальность во все поля
Получилось как-то так:

#!/bin/bash

NAME=имя_окна

XWINFO=`xwininfo -name "$NAME"`

COORDX=${XWINFO#*"X:"}
COORDX=${COORDX%" Absolute"*}

COORDY=${XWINFO#*"Y:"}
COORDY=${COORDY%%" Relative"*}

echo "x=$COORDX"
echo "y=$COORDY"

Оффлайн aliftin

  • Старожил
  • *
  • Сообщений: 1398
    • Просмотр профиля
Ну вот, это еще проще чем я думал. Опять я инвалидную коляску нагородил вместо трех команд, нужно себя останавливать иногда.
Если мы не можем до чего то дотянуться, мы виним в этом не свой рост, не отсутствие табуретки, а свою цель.

Оффлайн kostazs

  • Любитель
  • *
  • Сообщений: 64
  • You can't stand the power of GEASS !
    • Просмотр профиля
    • vk
Получилось как-то так:

#!/bin/bash

NAME=имя_окна

XWINFO=`xwininfo -name "$NAME"`

COORDX=${XWINFO#*"X:"}
COORDX=${COORDX%" Absolute"*}

COORDY=${XWINFO#*"Y:"}
COORDY=${COORDY%%" Relative"*}

echo "x=$COORDX"
echo "y=$COORDY"

не работает (

 

Страница сгенерирована за 0.062 секунд. Запросов: 25.