Хромированный псевдоокно, закрывающий дисплей

1077
intuited

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

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

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

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

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

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

Обновить

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

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) 

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

2
«Xprop» + клик по прямоугольнику дает некоторую полезную информацию? cYrus 13 лет назад 0
@cYrus: Да, спасибо. Похоже, это Chrome. Вы должны сделать свой комментарий ответом, чтобы я мог принять его. intuited 13 лет назад 0
@cYrus: Есть идеи, какую собственность я бы хотел передать, чтобы закрыть? Хотя он ловит щелчки мышью, на самом деле он не фокусируется, поэтому я не могу использовать alt-space, чтобы получить его меню. intuited 13 лет назад 0
Да, суть в том, что это Chrome окно (обычно используется для меню, но иногда и для всплывающих окон), о котором Chrome создал и забыл. Предложение cYrus о том, что вы убьете Chrome, - единственное, что я нашел, и это работает. Я пробовал "xkill" в оскорбительном окне, но оно никогда не работало. На самом деле я предпочитаю убивать Chrome, а не выходить чисто, потому что, насколько я знаю, он восстановит все мои окна и вкладки при перезапуске. Если у кого-то есть способ получше, я бы хотел это услышать. Edward Falk 10 лет назад 0
Я перешел на Unity через некоторое время после публикации, и у меня не было проблемы в последнее время. intuited 10 лет назад 0

3 ответа на вопрос

2
cYrus

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 
Я закончил тем, что закрыл chrome обычным способом, поэтому я не буду проверять вашу команду xprop, если это не повторится снова. Благодарю. intuited 13 лет назад 0
1
akira

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

% xwininfo -tree -root 

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

0
aland

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

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

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

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