LINUX.ORG.RU

Переместить выпавший кусок окна

 , ,


0

1

Avidemux сжимает фильм. Я его свернул в трей. Время от времени открываю посмотреть оценку «Time remaining». В очередной раз превью фильма вылезло из основного окна и осталось висеть на экране после сворачивания в трей.

Это «окно» отображается поверх всех остальных. Переключиться в него по Alt-Tab невозможно. Переключиться в него из другого окна Avidevux по Alt-~ — тоже. Обрамления нет, нажатия мыши обрабатываются нижележащими окнами, поэтому выбрать его мышью или вызвать меню невозможно.

Как его переместить на другой монитор?

Дополнение: Левый верхний угол выпавшего «окна» находится там же, где был левый верхний угол превью на момент запуска Avidemux. По мере обработки фильма кадры в окне меняются (раз в несколько десятков минут), его размер меняется при изменении ширины окна Avidemux (с таким же запаздыванием). Я уже нашёл 2 способа убрать превью — изменить расположение мониторов, чтобы превью оказалось за видимой областью либо порядка часа не открывать Avidemux из трея. Но я хотел бы на будущее узнать способ двигать такие окна через xdotool или подобные утилиты.

Дополнение 2: «Окно» не видно xdotool, либо его положение не привязано к видимым xdotool координатам. На скриншотах Spectacle не отображается.

Дополнение 3: Превью исчезло при загрузке другого фильма.

Дополнение 4: Закрытый x11-drivers/nvidia-drivers-590.44.01

★★★★★

Последнее исправление: question4 (всего исправлений: 6)
Ответ на: комментарий от wandrien

ну так можно попытаться узнать, Если поломавшийся рендеринг - возможно поможет перезапуск kwin (не знаю правда, не прибьёт ли современный kwin сесиию при перезапуске)

mittorn ★★★★★
()

Если я правильно помню ту историю, в иксах есть десяток способов вывести аппаратно-ускоренное видео на экран, при этом часть из них работают в обход оконного менеджера, приложение просто знает, куда выводить, а потом в эти же координаты выводит видео. Соответственно, оконный менеджер этим оверлеем не управляет, им управляет приложение. И если что-то пошло не так, спрашивать в с него.

В данном случае, возможно, поможет восстановить окно Avidemux, переместить его и свернуть обратно. А возможно, и не поможет.

Aceler ★★★★★
()
Ответ на: комментарий от mittorn

не знаю правда, не прибьёт ли современный kwin сесиию при перезапуске

С год назад успешно перезапускал его, не прерывая работу Avidemux.

Если поломавшийся рендеринг - возможно поможет перезапуск kwin

Не помог. Все программы продолжают работать, окно продолжает висеть.

question4 ★★★★★
() автор топика
Ответ на: комментарий от wandrien

Если это вообще окно оконной системы, а не поломавшийся рендеринг

Какая разница?

Содержимое окна меняется по мере обработки фильма, и меняется его размер при изменении размеров окна Avidemux. Но с огромным запаздыванием — десятки минут.

question4 ★★★★★
() автор топика
Ответ на: комментарий от Aceler

В данном случае, возможно, поможет восстановить окно Avidemux, переместить его и свернуть обратно. А возможно, и не поможет.

Не помогает. Это я подразумевал в начальном посте.

question4 ★★★★★
() автор топика
Ответ на: комментарий от Aceler

KDE тут не при делах.

Тег KDE на случай если в нём есть средства отслеживания и управления такими окнами.

question4 ★★★★★
() автор топика
Ответ на: комментарий от Dr64h

‘meta’ + ‘ЛКМ’ обычно даёт перетаскивать окна.

Сработало с клавишей Windows + ЛКМ. Но как я сказал выше, это окно невидимо для мыши, все клики идут в окно под ним.

question4 ★★★★★
() автор топика
Ответ на: комментарий от question4

'Ctrl' + 'F10' — «показать все окна со всех рабочих столов», если это окно там не появится, значит оно рисуется в обход kwin, либо Иксами, либо ещё как-то.

Dr64h ★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

Можно запустить xwininfo и просто мышкой кликнуть в интересуемое место, в терминале выхлоп будет, в кого мышкой попал.

Выводит информацию по нижележащему окну.

question4 ★★★★★
() автор топика
Ответ на: комментарий от Dr64h

‘Ctrl’ + ‘F10’ — «показать все окна со всех рабочих столов», если это окно там не появится, значит оно рисуется в обход kwin, либо Иксами, либо ещё как-то.

Не работает. Как оно называется по-английски?

question4 ★★★★★
() автор топика
Ответ на: комментарий от question4

selectwindow должен выбрать окно кликом по нему

В каком он пакете?

А, xdotool selectwindow. Этот тоже показывает информацию под нижележащим окном.

question4 ★★★★★
() автор топика
Ответ на: комментарий от question4

UPdate

под нижележащим окном

Кликни в само окно avidemux, хотя если там всё через dbus общается или ещё какую хрень, то затея бесполезная :(


Тогда скомпиляй https://gitflic.ru/project/blogdron/xwidpid

Затем wxininfo получаешь его WID, далее

Получаешь PID

xwidpid 0x3c00007
PID: 1240912

Получаешь все WID этого PID

xwidpid 1240912
WID: 0x3c00001
WID: 0x3c00003
WID: 0x3c00007
WID: 0x3c00008
WID: 0x3c005cb

Кто есть кто можно посмотреть по xwininfo -id 0xчто_там_из_списка Кто-то из этих WID то самое, если выведено не через какой хак, такой что нигде и никак не регистрируется.


А теперь зарули всё это в скрипт :D
Лёгким движением руки брюки превращаются… брюки превращаются… превращаются брюки… в элегантные шорты!


Для справки

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 3)
Ответ на: комментарий от question4

Оно почему-то с LANG=en всё равно на русском.

В файле ~/.config/kglobalshortcutsrc вот так записано:

ExposeAll=Ctrl+F10\tLaunch (C),Meta+F10\tLaunch (C)\tCtrl+F10,Показать все окна со всех рабочих столов\s

Dr64h ★★★★
()
Ответ на: комментарий от mittorn

xwininfo и искать в дереве окон т.к окно не принимает события

С этого начал. Что значат эти строки?

0x50006fe "avidemux3_qt6": ("avidemux3_qt6" "avidemux3_qt6")  203x264+1941+1628  +1941+1628

203x264 — размер, а 1941 и 1628 — координаты левого верхнего угла?

Скриптом из вывода xwininfo -root -tree отобрал окна с подходящими координатами. К каждому с «avidemux» в имени или без имени применил команду вида xdotool windowmove --relative 0x5000690 1000 0 Я правильно понимаю, что это должно было сдвинуть окно на 1000 пикселов вправо? Ничего не произошло.

Доказывает ли это, что превью рисуется в обход X?

question4 ★★★★★
() автор топика
Ответ на: комментарий от mittorn

а позиции окон в xwininfo обновились?

Да, изменились. Думаю, это были какие-то элементы интерфейса основного окна.

question4 ★★★★★
() автор топика
Ответ на: комментарий от question4

Тебе выше уже писали несколько раз, что эта картинка - не окно. В обход X или не в обход, в данном случае не важно, это знание никак не поможет ей управлять. Главное, что в обход оконной абстракции. Управляет ей прога, которая её рисует, значит фиксить надо прогу.

firkax ★★★★★
()
Ответ на: комментарий от mittorn

Рисуется через какое-то апи (иксовое или видеокарты). Какая разница, через какое, если повлиять на него ты всё равно штатно не можешь?

firkax ★★★★★
()
Ответ на: комментарий от Dr64h

В файле ~/.config/kglobalshortcutsrc вот так записано:

ExposeAll=Ctrl+F10\tLaunch (C),Meta+F10\tLaunch (C)\tCtrl+F10,Показать все окна со всех рабочих столов\s

Ничего такого у меня в ~/.config/kglobalshortcutsrc нет.

У меня всего 1 рабочий стол, возможно когда-то (на KDE 4) поотключал всё связанное с переключением рабочих столов, когда оно с чем-нибудь конфликтовало. На Expose и All тоже ничего не ищется.

Как я понял, для единственного стола то же даст Alt+W, Overview. В настройках есть, но не работает.

question4 ★★★★★
() автор топика
Ответ на: комментарий от mittorn

Подробностей я не знаю, но способов там скорее всего несколько. Подобные штуки обычно называются общим словом «видео-оверлей». Были и в win9x тоже, кстати (помню одна прога видеозахвата рисовала поток прямо на экран, стараясь имитировать встраивание картинки в своё окно, только координаты рисования обновляла немного с задержкой от двигания окна).

firkax ★★★★★
()
Ответ на: комментарий от firkax

Не, надо не скорее всего, а точно. Аргументируй.У нас тут не win9x, нет GDI. Есть Xrender, который работает иначе и оверлей создать не сможет, за исключением случая, когда композитор рисует всё через Xrender (в этом случае отключение композитора уберёт оверлей)
dri2/dri3 без окна тоже не работают - так что же ты всё-таки имеешь в виду?

mittorn ★★★★★
()
Ответ на: комментарий от question4

windowmove очень легко проигнорировать. Его обрабаьывает оконный менеджер.
Попробуй windowunmap

mittorn ★★★★★
()
Ответ на: комментарий от firkax

Подробностей я не знаю, но способов там скорее всего несколько. Подобные штуки обычно называются общим словом «видео-оверлей». Были и в win9x тоже, кстати (помню одна прога видеозахвата рисовала поток прямо на экран, стараясь имитировать встраивание картинки в своё окно, только координаты рисования обновляла немного с задержкой от двигания окна).

Весь остальной интерфейс окна перерисовывается с черепашьей скоростью, но окна, которые я протаскиваю под превью, не приобретают никаких дефектов, и не влияют на картинку в прямоугольнике превью. Кто ответственен за это?

question4 ★★★★★
() автор топика
Ответ на: комментарий от mittorn

Аргументируй.

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

И это делают не для того чтобы обмануть оконный менеджер (это - вредный побочный эффект, неудобства юзеру), а для того чтобы сократить нагрузку на разные вычислительные узлы, стримя видео максимально коротким путём.

firkax ★★★★★
()
Ответ на: комментарий от question4

Можно вот так вызвать: qdbus org.kde.kglobalaccel /component/kwin invokeShortcut "ExposeAll".

Ещё есть 'Meta' + 'W' (Overview, Включить или отключить режим обзора) и 'Meta' + 'G' (Grid View, Включить или отключить режим просмотра сеткой), но не уверен, что они все окна выводят.

Dr64h ★★★★
()
Ответ на: комментарий от question4

Кто ответственен за это?

Тот кто мержит оверлей к основному фреймбуферу экрана. Кто это делает - не знаю. Попробуй кстати скриншот сделать для интереса, на нём возможно оверлея не будет (а может и будет).

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от mittorn

Так же мне интересно, если это не окно, кто тогда вот этот прямоугольник:

0x50006fe "avidemux3_qt6": ("avidemux3_qt6" "avidemux3_qt6")  203x264+1941+1628  +1941+1628

Я думаю, что это всё-таки окно, которому сказали быть оверлейным и рисоваться в либо в обход wm, либо поверх, при этом игнорируя windowmove и прочее. Всё это через иксы делается для ОКНА, но не для какого-то магического API
Апишкой видеокарты в обход иксов (/dev/dri/card0?) можно только во весь экран рисовать и только если там нет другого drm клиента (а он есть и рисуется)
Апишкой иксов можно рисовать поверх всего, но окна его будут перерисовывать. Можно рисовать в окно композитора, но это будет перерисовываться композитором. Чтобы не перерисовывалось, придётся создать, мать его, ОКНО

mittorn ★★★★★
()
Ответ на: комментарий от firkax

На известных мне drm драйверах есть только один оверлей - курсор.
Linux и подсистема DRM решили уверенно проигнорировать существование видеооверлеев как класс.
Я пользовался оверлеями на разном мобильном железе через проприетарные апишки, но в drm драйвере их днём с огнём не счщешь, вместо этого на современном железе и дровах предлагается запустить хвалёный вяленд и рисовать оверлеи им (даже если где-то внутри железка поддерживает оверлеи).
Так что если найдёшь такое апи, которое сможет с ними работать на десктопнолинуксовом железе - меня это очень приятно удивит. Но пока такого апи не нашлось.
Видеооверлеи всё ещё могут присутствовать в старых DDX драйверах (но не modesetting/amdgpu/intel - там такой функциональности нет). Но т.к все эти дрова, внезапно, не умеют dri3, я а dri2 дропают из mesa, я подозреваю, что они в данном случае не используются.

mittorn ★★★★★
()
Ответ на: комментарий от firkax

Попробуй кстати скриншот сделать для интереса, на нём возможно оверлея не будет (а может и будет).

Превью на скриншоте отсутствует.

question4 ★★★★★
() автор топика
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария