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


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Bash : Получить id окна и свернуть его  (Прочитано 7147 раз)

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

Оффлайн Serbis

  • Автор темы
  • Любитель
  • *
  • Сообщений: 91
    • Просмотр профиля
Bash : Получить id окна и свернуть его
« : 23 Февраля 2011, 13:36:47 »
#!/bin/bash
var1=sudo xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)"
wmctrl -r var1 -b add, shade
exit 0
1. Как получить id активного окна без лишнего мусора, только 0x значение, а не _NET_ACTIVE_WINDOW(WINDOW): window id # 0x160b318 как это делает xprop в вышеуказанном примере.

2.Почему bash не понимает в xprop параметр -root, хотя в консоли все проходит на ура?

3. Как в wmctrl свернуть окно на панель задач, а не скрутить как это делает параметр shade?

Оффлайн aliftin

  • Старожил
  • *
  • Сообщений: 1398
    • Просмотр профиля
Re: Bash : Получить id окна и свернуть его
« Ответ #1 : 23 Февраля 2011, 17:14:07 »
wmctrl -l
wmctrl -l | awk '{print $1}'

xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)" | awk '{print $5}'
Если мы не можем до чего то дотянуться, мы виним в этом не свой рост, не отсутствие табуретки, а свою цель.

Оффлайн Serbis

  • Автор темы
  • Любитель
  • *
  • Сообщений: 91
    • Просмотр профиля
Re: Bash : Получить id окна и свернуть его
« Ответ #2 : 23 Февраля 2011, 18:54:49 »
А как указать интерпритатору что -root это не программа а аргумент xprop??
var1=xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)" | awk '{print $5}'

Оффлайн 666joy666

  • Активист
  • *
  • Сообщений: 719
  • :wq
    • Просмотр профиля
Re: Bash : Получить id окна и свернуть его
« Ответ #3 : 23 Февраля 2011, 19:50:43 »
А как указать интерпритатору что -root это не программа а аргумент xprop??
var1=xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)" | awk '{print $5}'
~/ >>xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)" | awk '{print $5}'
0x2400004
~/ >>var=xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)" | awk '{print $5}'
zsh: command not found: -root
~/ >>var=$(xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)" | awk '{print $5}')
~/ >>echo $var                                               
0x2400004

Оффлайн aliftin

  • Старожил
  • *
  • Сообщений: 1398
    • Просмотр профиля
Re: Bash : Получить id окна и свернуть его
« Ответ #4 : 23 Февраля 2011, 22:03:37 »
[bash]i="-root"
xprop "$i" | grep "_NET_ACTIVE_WINDOW(WINDOW)" | awk '{print $5}'
id=`xprop "$i" | grep "_NET_ACTIVE_WINDOW(WINDOW)" | awk '{print $5}'`
Если мы не можем до чего то дотянуться, мы виним в этом не свой рост, не отсутствие табуретки, а свою цель.

Оффлайн Serbis

  • Автор темы
  • Любитель
  • *
  • Сообщений: 91
    • Просмотр профиля
Re: Bash : Получить id окна и свернуть его
« Ответ #5 : 24 Февраля 2011, 07:13:36 »
  Елки палки, я за последние сутки научился распахивать, скручивать, перемещать, скрывать окна и даже отправлять приложениям сигналы, а та задача которую я пытался решить я так и не сделал. Wmctrl по моему умеет делать все что угодно, но только не это - сворачивать/разворачивать окна на панель задач... Ну подскажите решение! :'(

Оффлайн aliftin

  • Старожил
  • *
  • Сообщений: 1398
    • Просмотр профиля
Re: Bash : Получить id окна и свернуть его
« Ответ #6 : 24 Февраля 2011, 11:02:15 »
Может воспользоваться compiz-ом?  С ним можно общаться через dbus и кажется есть возможность слать сигналы отдельному окну. Но это тоже не тривиальная задача, так как нормального описания нет. Посмотрите вот эту тему - https://forum.ubuntu.ru/index.php?topic=110511.0, там есть несколько ссылок.

UP Поищите как послать программе сигнал нажатия клавиш. Можно послать окну нажатие ALT+F9 и тем самым свернуть его.
« Последнее редактирование: 24 Февраля 2011, 11:06:52 от aliftin »
Если мы не можем до чего то дотянуться, мы виним в этом не свой рост, не отсутствие табуретки, а свою цель.

Оффлайн Serbis

  • Автор темы
  • Любитель
  • *
  • Сообщений: 91
    • Просмотр профиля
Re: Bash : Получить id окна и свернуть его
« Ответ #7 : 24 Февраля 2011, 14:48:09 »
Я использую kwin, он как я понял не умеет сворачивать окна по нажатию клавиш. Так как я использую консоль без рамки и меню(для красоты), для того что бы свернуть это окно, мне нужно выполнить целую последовательность действий.Поэтому я и решил написать скрипт сворачивающий окна комбинацией клавиш. И вот я собственно все сделал, и осталось добавить только команду на сворачивание самого окна, а вот тут такая лажа... :-[

Оффлайн boa

  • Участник
  • *
  • Сообщений: 104
    • Просмотр профиля
    • Карта рыбака
Re: Bash : Получить id окна и свернуть его
« Ответ #8 : 24 Февраля 2011, 21:37:57 »
  Елки палки, я за последние сутки научился распахивать, скручивать, перемещать, скрывать окна и даже отправлять приложениям сигналы, а та задача которую я пытался решить я так и не сделал. Wmctrl по моему умеет делать все что угодно, но только не это - сворачивать/разворачивать окна на панель задач... Ну подскажите решение! :'(
Не умеет он сворачивать: https://bugs.launchpad.net/ubuntu/+source/wmctrl/+bug/260875

Оффлайн aliftin

  • Старожил
  • *
  • Сообщений: 1398
    • Просмотр профиля
Re: Bash : Получить id окна и свернуть его
« Ответ #9 : 24 Февраля 2011, 22:22:12 »
У меня нет возможности проверить, но если судить по ответам google, kwin не плохо дружит с dbus и есть примеры использования. Посмотрите на доступные функции, может можно что-то использовать.
Если мы не можем до чего то дотянуться, мы виним в этом не свой рост, не отсутствие табуретки, а свою цель.

Оффлайн Antony3d

  • Любитель
  • *
  • Сообщений: 83
  • 12.04+GNOME Shell 3.4.1
    • Просмотр профиля
Re: Bash : Получить id окна и свернуть его
« Ответ #10 : 11 Апреля 2013, 22:53:16 »
Озадачился я тоже проблемой не сворачивания, и в целом победил. Вот тут отписался: https://bugs.launchpad.net/ubuntu/+source/wmctrl/+bug/260875

Есть версия исходника https://github.com/geekless/wmctrl с добавленной опцией
-Y <WIN> Iconify (minimize) the window.
Собирается, работает. Для себя собрал .deb пакет (12.04 i386), не уверен что очень грамотно собрал, но ставится и удаляется.

Можно взять тут: http://westudio.ru/Files/anton/wmctrl_1.08-1_i386.deb

Оффлайн Antony3d

  • Любитель
  • *
  • Сообщений: 83
  • 12.04+GNOME Shell 3.4.1
    • Просмотр профиля
Re: Bash : Получить id окна и свернуть его
« Ответ #11 : 24 Декабря 2013, 05:53:33 »
Еще одна проблема есть интересная.
Вот есть у меня некое кол-во окон на текущем столе.
└──▶ wmctrl -l
0x01200004 -1 a3d Desktop
0x03c00002  1 a3d XP SP3 [Paused] - Oracle VM VirtualBox
0x03600003  0 a3d HexChat: Anton2d @ freenode / #ubuntu-ru (27)
0x032000ef -1 a3d O - Skype™
0x04c00006  0 a3d mc [root@a3d]:/etc/cron.daily
0x046000ca  0 a3d Ответ - Mozilla Firefox
0x04e00003  0 a3d Keyboard
0x05c00003  0 a3d medit - /home/a3d/bin/wmcome
0x02000027 -1 a3d Guake!
Мне нужно узнать какие из этих окон свернутые (minimize), в этом списке нету такого параметра, нужна утилитка которая бы показывала состояние окна, свернутое, развернутое и т.д.

 

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