2

оригинальный пост

Я использую Ubuntu 10.04, используя менеджер окон openbox.

Недавно появился черный прямоугольник с размерами около 100x200 пикселей, скрывающий содержимое дисплея. wmctrl -l не перечисляет ничего, что может быть причиной этого. Появляется на всех рабочих столах. Он ловит фокус мыши, но xkill не заставляет его уходить. Он не отображается в цикле alt-tab. Установка окон в положение "всегда сверху" в z-порядке не препятствует тому, чтобы они были скрыты этим прямоугольником. Полноэкранные приложения и видео также скрыты прямоугольником.

Пока что единственные вещи, которые я нашел, могут отображаться без использования этого прямоугольника:

  • другие сеансы TTY, означающие, что нажатие CTRL-ALT-F2 даст консоль, которая не закрыта прямоугольником.
  • xlock . Эта проблема не затрагивается как при отображении экранной заставки, так и при запросе пароля.

Как я могу избавиться от прямоугольника, не убивая мою X-сессию или процессы, не отвечающие за это? Сопротивление бесполезно?

Обновить

Благодаря cYrus я научился использовать xprop для получения PID окна. У него довольно ограниченный набор свойств:

WM_HINTS(WM_HINTS):
        Client accepts input or input focus: True
        Initial state is Normal State.
        window id # of group leader: 0x2000001
_NET_WM_SYNC_REQUEST_COUNTER(CARDINAL) = 34717614
_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_POPUP_MENU
_NET_WM_USER_TIME(CARDINAL) = 354386666
_NET_WM_USER_TIME_WINDOW(WINDOW): window id # 0x211bf8d
WM_CLIENT_LEADER(WINDOW): window id # 0x2000001
_NET_WM_PID(CARDINAL) = 16593
WM_LOCALE_NAME(STRING) = "en_CA.utf8"
WM_CLIENT_MACHINE(STRING) = "XXXXXX"
WM_NORMAL_HINTS(WM_SIZE_HINTS):
        program specified location: 0, 0
        program specified minimum size: 274 by 156
        program specified maximum size: 274 by 156
        window gravity: NorthWest
WM_PROTOCOLS(ATOM): protocols  WM_DELETE_WINDOW, WM_TAKE_FOCUS, _NET_WM_PING, _NET_WM_SYNC_REQUEST
WM_CLASS(STRING) = "google-chrome", "Google-chrome"
WM_ICON_NAME(STRING) = "google-chrome"
_NET_WM_ICON_NAME(UTF8_STRING) = 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2d, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65
WM_NAME(STRING) = "google-chrome"
_NET_WM_NAME(UTF8_STRING) = 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2d, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65

Данный PID соответствует моему процессу Chrome верхнего уровня (версия 6.0.472.53, для тех, кто заинтересован). Я не хочу убивать процесс, так как он может привести к тому, что я потеряю 40+ вкладок, которые у меня открыты, и их разные истории, так что было бы здорово, если бы был какой-то способ закрыть или скрыть это окно. К сожалению, я не очень хорошо знаком со свойствами X и не знаю, как это сделать.

Тип окна указывает, что это всплывающее окно; Я полагаю, это еще не закончилось. Это объясняет, почему он не принимает фокус окна: то есть, хотя он ловит щелчки мышью, последующие нажатия alt-space вызывают меню окна для другого окна.

Я пытался преобразовать его тип в нормальный, но я получаю

$ xprop -set _NET_WM_WINDOW_TYPE\(ATOM\) _NET_WM_WINDOW_TYPE_NORMAL
xprop: error: unsupported conversion for _NET_WM_WINDOW_TYPE(ATOM)

Как я могу манипулировать этим эмбриональным окном так, чтобы оно перестало мешать отображению?

3 ответа3

2

xprop + нажмите на прямоугольник, чтобы получить полезную информацию.


Вы можете убить процесс, когда у вас есть PID:

$ xprop | grep -i pid
_NET_WM_PID(CARDINAL) = 14712
$ kill -KILL 14712

В любом случае, это должен быть правильный способ использования xprop для изменения параметра _NET_WM_WINDOW_TYPE (никогда не пробовал):

xprop -f _NET_WM_WINDOW_TYPE 32a -set _NET_WM_WINDOW_TYPE _NET_WM_WINDOW_TYPE_NORMAL
1

использование

% xwininfo -tree -root

чтобы понять, какие окна есть. Используйте эту информацию, чтобы узнать, находится ли в данной позиции окно или нет, и если: которое.

0

Я недавно сталкивался с подобной проблемой с Chromium и KWin WM.

Чтобы не убить браузер, вы можете просто сделать это окно невидимым:

  1. Получить идентификатор окна с помощью xprop+click как предложено @cYrus или с помощью xwininfo+click
  2. Скрыть это окно с помощью xdotool windowunmap <ID>

PS: настройка _NET_WM_WINDOW_TYPE , похоже, никак не повлияла на это.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .