Каково точно отношение между wmctrl-d и wmctrl - LG в Единице?

от человека wmctrl:

wmctrl является командой, которая может использоваться для взаимодействия с менеджером по X Window, который совместим со спецификацией EWMH/NetWM. wmctrl может запросить менеджер окон для получения информации, и это может запросить, чтобы были приняты определенные меры управления окнами.

Вопрос конкретно

wmctrl -d команда может использоваться для получения информации о рабочих столах (области просмотра/рабочие области), wmctrl -lG списки команд все окна, включая их информацию о геометрии.

Как может я (в Единице по сравнению с другими менеджерами окон):

  • получите обзор рабочих областей и как они расположены?
  • узнайте, который является текущей рабочей областью?
  • узнайте, где окно расположено в абсолютном смысле?
  • окна списка, которые находятся на текущей рабочей области?

из командной строки, с помощью этих двух команд?

Справочная информация


wmctrl-d команда
рабочие столы списков. На (например). Xubuntu, когда я работаю wmctrl -d, Я могу ясно видеть в выводе, который является текущей рабочей областью и разрешением экрана (DG) на рабочей области (областях).

0  - DG: 1024x600  VP: N/A  WA: 0,31 1024x569  1
1  - DG: 1024x600  VP: N/A  WA: 0,31 1024x569  2
2  - DG: 1024x600  VP: N/A  WA: 0,31 1024x569  3
3  * DG: 1024x600  VP: 0,0  WA: 0,31 1024x569  4

Текущая рабочая область отмечена с a *.

На Единице однако, выводе wmctrl -d шоу только одна (очень большая) рабочая область, отмеченная с a *, неважно, который является текущей "рабочей областью", например:

0  * DG: 3360x2100  VP: 1680,0  WA: 65,24 1615x1026  N/A

wmctrl - команда LG
от man wmctrl:
-l: Перечислите окна, управляемые менеджером окон.
-G-: Включайте информацию о геометрии в вывод-l действия

Когда я работаю wmctrl -lG на (например). Xubuntu, с окном коврика для мыши на каждой рабочей области:

0x03400003  0 241  197  533  244  jacob-1001PX Untitled 1 - Mousepad
0x03400197  1 299  222  533  244  jacob-1001PX Untitled 2 - Mousepad
0x034001be  2 236  201  533  244  jacob-1001PX Untitled 3 - Mousepad
0x034001e3  3 283  228  533  244  jacob-1001PX Untitled 4 - Mousepad

Информация довольно понятна; из второго столбца мы знаем рабочую область, окно идет, его положение (x, y, столбец 3/4) и размер (x, y, столбец 5/6). Положение дано относительно worspace, на котором оно расположено.

На Единице однако, это - совершенно другая история. Когда у меня есть четыре рабочих области, и я открываю gedit окно на каждых из них:

0x03c03b81  0 468  -884 875  741  jacob-System-Product-Name Niet-opgeslagen document 1 - gedit
0x03c03e74  0 369  164  1111 741  jacob-System-Product-Name Niet-opgeslagen document 2 - gedit
0x03c03f8e  0 -1269 214  1111 741  jacob-System-Product-Name Niet-opgeslagen document 3 - gedit
0x03c00085  0 -1376 -917 1111 741  jacob-System-Product-Name Niet-opgeslagen document 4 - gedit

Некоторые окна имеют отрицательные координаты, у некоторых (могут) быть coordintates, которые превышают разрешение моего экрана.

4
задан 23 December 2014 в 00:59

1 ответ

Области просмотра по сравнению с рабочими областями

Как указано в этом ответе, существует существенное различие между Compiz/Unity и другими менеджерами окон.

Если мы смотрим на Xubuntu (XFCE), все рабочие области являются одинокими пробелами. Все, что мы должны знать, является рабочей областью, окно идет, и координаты X и Y. В основном нет никакой матрицы, в которой рабочие области заказаны кроме "lineair" порядка 1, 2, 3 и т.д.

Это отличается в Единице, где существует на самом деле только одна рабочая область. (Охват) рабочая область разделена на многие разделы, названные областями просмотра. Эти области просмотра расположены в строках и столбцах.

Тем путем возможно, что одно окно частично видимо на всех областях просмотра:

enter image description here

в отличие от рабочих областей:

enter image description here

Различия в выводе wmctrl-d и как интерпретировать

Понять вывод wmctrl -lG, мы должны понять его "анатомию":

enter image description here

  1. настольное число (сначала = 0)
  2. текущая настольная метка (" *", если это - текущий рабочий стол (рабочая область), "-" если не),
  3. настольная геометрия (размер рабочего стола x-y)
  4. положение области просмотра (позиция по рабочему столу; посмотрите Единицу),
  5. геометрия рабочей области как ("применимый" размер рабочего стола, минус панели и т.д.; первая колонна является пкс от левого/главного),
  6. название рабочего стола (возможно содержащий несколько пробелов)

Так как Единица только имеет одну рабочую область, вывод всегда показывает a * на [2]. Как мы знаем, как области просмотра расположены и какова текущая область просмотра?

Информация находится в VP: 1680,0 ([4]). Не просто как число области просмотра, но как координата X и Y. Эти координаты могут быть нулем или x*разрешение экрана. Чтобы знать, как области просмотра настраиваются, мы должны будем знать reolution экрана также (с помощью xrandr).

Как узнать:

  • сколько области просмотра там в настоящее время и как они расположенный:

    Взгляд на DG: 3360x2100 в примере "Единицы", и зная, что разрешение нашего экрана 1680x1050, мы можем прийти к заключению, что существует два столбца областей просмотра (3360/1680) и две строки (2100/1050).

  • который является текущей рабочей областью:

    Пример
    Экран имеет разрешение 1680x1050. Информация об области просмотра Саис VP: 1680,0. Cordinates отображены как левый верхний угол, Таким образом, мы находимся на втором столбце, первой строке.

  • где окно расположено в абсолютном смысле:

    После того как мы знаем, какая область просмотра является текущей, мы можем локализовать окна, смотря на их координаты в выводе wmctrl -lG [3]:

enter image description here

  1. окно - идентификатор
  2. настольное число (на Единице: всегда 0, как указано)
  3. координаты окна, с точки зрения текущей области просмотра (x-y)
  4. размер окна, с точки зрения (w-h)
  5. имя компьютера
  6. имя окна

    Мы можем просто определить местоположение окна с источником в левой вершине текущей области просмотра.

    Ниже примера разрешения экрана 1680x1050, области просмотра 2x2:

    координаты окна с точки зрения области просмотра 1

    enter image description here

    координаты окна с точки зрения области просмотра 4

    enter image description here

    • которые являются окнами на текущей рабочей области:

    С информацией выше и справкой wmctrl -lG (координаты окна, раздел [3]), довольно простой:

    если

    1. x-координата окна между 0 и (горизонтальное) разрешение экрана, и
    2. y-координата окна между 0 и (вертикальное) разрешение экрана

    затем окно расположено на текущей области просмотра.

4
ответ дан 1 December 2019 в 09:49

Другие вопросы по тегам:

Похожие вопросы: