Created attachment 22181 [details] Реальный результат Версия пакета: yazi-26.5.6-alt1 (x86_64) Стенды (Обновлённые до Sisyphus): ALT Education p11 xfce (x86_64) Шаги воспроизведения: 1. Установить пакет с необходимой библиотекой для отрисовки превью: # apt-get install yazi ueberzugpp 2. Открыть терминал в полный экран 3. Запустить программу: $ yazi . 4. Выбрать pdf файл или изображение Ожидаемый результат: Запуск программы и корректное отображение превью файлов. Реальный результат: Некорректное отображение превью файлов, превью вылезает на файловый менеджер Дополнительно: Воспроизводиться только в xfce Проверено на виртуальных машинах proxmox и реальном стенде В окружении kde ошибка не воспроизводится
Похоже, проблема не в самом yazi, а в отрисовке превью через ueberzugpp (xfce4-terminal не поддерживает ни Kitty protocol, ни Sixel, поэтому yazi рисует превью отдельным X11-окном ueberzugpp поверх терминала — под xfwm4 у таких окон бывают проблемы с позиционированием и стэкингом). Чтобы это подтвердить, нужно воспроизвести ошибку на «чистом» ueberzugpp, без yazi (официальная инструкция: https://yazi-rs.github.io/docs/image-preview#debug-ueberzug): 1. Установить ueberzugpp: # apt-get install ueberzugpp 2. В том же xfce4-terminal (на полный экран, как в сценарии бага) выполнить: $ mkfifo /tmp/ub-fifo $ ueberzugpp layer --socket /tmp/ub-fifo & $ sleep 1 $ ueberzugpp cmd -s /tmp/ub-fifo -p add -i test -x 5 -y 5 --max-width 40 --max-height 20 -f /путь/к/любой/картинке.jpg (вместо картинки можно указать и pdf-превью, но достаточно обычного изображения) 3. Оценить результат: - Если картинка рисуется смещённой, вылезает за пределы терминала или поверх других окон — баг в ueberzugpp (или в его взаимодействии с xfwm4), а не в yazi. - Если картинка рисуется ровно в указанных координатах (x=5, y=5) — тогда проблема на стороне yazi. Дополнительно полезно проверить: - отключить композитор xfwm4 (Настройки → Диспетчер окон (дополнительно) → Композитор) и повторить шаг 2; - проверить, не включено ли дробное масштабирование экрана (fractional scaling) — оно ломает координаты ueberzugpp. Пожалуйста, приложите к багу вывод yazi --debug и скриншот результата теста с ueberzugpp standalone. По результатам либо перевесим баг на ueberzugpp, либо будем смотреть дальше.
Created attachment 22184 [details] Результат yazi --debug
Created attachment 22185 [details] Результат ueberzugpp layer
Спасибо за результаты, это очень информативно. Разбор: 1. Тест ueberzugpp standalone отработал корректно — картинка нарисовалась ровно в заданных координатах (x=5, y=5), без смещений и наложений. Значит, сам механизм отрисовки ueberzugpp под xfwm4 работает, и проблема, судя по всему, в том, как yazi вычисляет геометрию превью. 2. В выводе yazi --debug есть важная деталь: Emulator.detect: csi_16t: (0, 0) Adapter.matches : X11 Dimension.available: Dimension { rows: 37, columns: 157, width: 0, height: 0 } yazi не смог получить пиксельный размер ячейки терминала (запрос CSI 16t вернул 0x0), поэтому width/height терминала в пикселях равны нулю. Без пиксельной геометрии yazi не может правильно рассчитать размер и положение превью в ячейках — отсюда и некорректное отображение (превью не масштабируется под панель и перекрывает её содержимое, видно на обоих скриншотах). 3. Дополнительно: в системе ueberzugpp 2.9.8 — это версия из p11, тогда как в Sisyphus уже 2.9.10. Похоже, стенд обновлён до Sisyphus не полностью. Просьба: - обновить систему целиком (apt-get dist-upgrade) и убедиться, что ueberzugpp обновился до 2.9.10; - после этого повторить проверку превью в yazi. 4. Также приложите, пожалуйста, лог yazi в режиме отладки: $ YAZI_LOG=debug yazi . (открыть превью любого изображения, выйти, лог будет в ~/.local/state/yazi/yazi.log) Если после обновления ueberzugpp до 2.9.10 проблема сохранится, заведу issue в апстриме yazi по поводу обработки случая csi_16t=(0,0) на VTE-терминалах под X11.
Проверил ещё раз на ветке Sisyphus, команда yazi --debug выводит error: unexpected argument '--debug' found tip: to pass '--debug' as a value, use '-- --debug' Usage: yazi [OPTIONS] [ENTRIES]... For more information, try '--help'. результат $YAZI_LOG=debug yazi вместе с актуальной версией yazi и ueberzugpp прикладываю. Прикладываю результат ueberzugpp layer на sisyphus репозитории
Created attachment 22189 [details] Результат yazi --debug на Sisyphus
Created attachment 22190 [details] Результат YAZI_LOG=debug yazi с версиями пакетов
Спасибо! Вижу, что система обновлена: yazi-26.9.1-alt1, ueberzugpp-2.9.10-alt1, и standalone-тест ueberzugpp на Sisyphus снова отработал корректно. Пара замечаний: 1. В новых версиях yazi флаг --debug убрали из CLI — диагностический блок теперь выводится командой: $ yazi --version 2. Из лога видно, что yazi отправляет в ueberzugpp корректный прямоугольник превью: {"action":"add","identifier":"yazi","x":148,"y":1,"max_width":88,"max_height":51,...} т.е. команды формируются штатно. Но главный вопрос остался без ответа: воспроизводится ли сама ошибка отображения после обновления до yazi-26.9.1 + ueberzugpp-2.9.10? Пожалуйста: - запустите yazi на обновлённой системе, выберите pdf/изображение и приложите свежий скриншот; - приложите вывод yazi --version (нас интересует, по-прежнему ли csi_16t равен (0, 0) — именно из-за нулевой пиксельной геометрии yazi может неверно масштабировать превью). Если ошибка воспроизводится и csi_16t по-прежнему (0, 0) — буду готовить репорт в апстрим yazi.
Небольшая поправка к моему предыдущему комментарию: полный диагностический блок (Emulator/Adapter/Dependencies) в новых версиях yazi выводится не через yazi --version (он теперь показывает только краткую версию), а отдельной командой: $ ya env Пожалуйста, приложите вывод `ya env`, запущенный в том же xfce4-terminal, где воспроизводится проблема. Нас в первую очередь интересует секция Emulator — значение csi_16t (в прежнем выводе оно было (0, 0), что лишает yazi пиксельной геометрии терминала). И главное: уточните, пожалуйста, воспроизводится ли сама ошибка отображения превью на текущих версиях yazi-26.9.1 + ueberzugpp-2.9.10? Если да — приложите свежий скриншот.
Created attachment 22191 [details] баг yazi на Sisyphus Прикладываю ошибку yazi на Sisyphus
Created attachment 22192 [details] Результат ya env прикрепляю результат вывода команды ya env
Итог по последним данным (ya env + скриншот с Sisyphus): Ошибка воспроизводится на актуальных yazi-26.9.1-alt1 + ueberzugpp-2.9.10-alt1. Диагностика подтверждает первоначальную гипотезу: Emulator.probe: version "VTE(8003)", csi_16t: (0, 0) TERM.dimension : Dimension { cols: 237, rows: 53, width: 0, height: 0 } xfce4-terminal (VTE) не сообщает пиксельный размер ячейки: ни через escape-запрос CSI 16t (ответ 0x0), ни, судя по всему, через TIOCGWINSZ. Из-за этого ueberzugpp на X11 не может корректно пересчитать координаты/размеры из ячеек в пиксели — превью рисуется не того размера и не на своём месте (на скриншоте: картинка намного меньше панели превью и сдвинута). Это известный класс проблем ueberzugpp — апстрим в похожих случаях видел в логах «ioctl sizes: COLS=0 ROWS=0 XPIXEL=0 YPIXEL=0» (https://github.com/jstkdng/ueberzugpp/issues/170). То есть это не дефект сборки пакета yazi в Sisyphus, а ограничение связки ueberzugpp + VTE-терминал без пиксельной геометрии. Перевешиваю баг на компонент ueberzugpp. Что можно сделать: 1. Для финального подтверждения приложите, пожалуйста, лог ueberzugpp в debug-режиме: $ SPDLOG_LEVEL=debug yazi . (открыть превью изображения, выйти; лог будет в /tmp/ueberzugpp-$USER.log — ищем там строку «ioctl sizes») 2. Обходные пути (работают уже сейчас): - использовать терминал с поддержкой kitty graphics protocol (kitty, wezterm, Konsole) — тогда ueberzugpp не нужен вовсе, yazi рисует превью нативно; - скомпенсировать смещение вручную через ~/.config/yazi/yazi.toml: [preview] ueberzug_scale = <коэффициент> ueberzug_offset = [x, y, width, height] (https://yazi-rs.github.io/docs/configuration/yazi#preview.ueberzug_scale) 3. Дальнейшее исправление — в апстриме ueberzugpp (корректный фолбэк при нулевой пиксельной геометрии терминала). Заведу issue по результатам лога из п.1.
Проблема в отрисовке превью через ueberzugpp на X11 (терминал VTE не сообщает пиксельную геометрию), а не в yazi. Перевешиваю на ueberzugpp.
После выполнения команды SPDLOG_LEVEL=debug yazi . в файле ueberzugpp-$USER.log появилось следующее: _ _ _ | | | | | | _ _ | | | | ___| |__ ___ _ __ _____ _ __ _ _| |_ _| |_ | | | |/ _ \ '_ \ / _ \ '__|_ / | | |/ _` |_ _|_ _| | |_| | __/ |_) | __/ | / /| |_| | (_| | |_| |_| \___/ \___|_.__/ \___|_| /___|\__,_|\__, | __/ | |___/ v2.9.10 [2026-09-15 11:17:52.081] [terminal] [info] TERM = xterm-256color [2026-09-15 11:17:52.081] [terminal] [info] PTY = /dev/pts/0 [2026-09-15 11:17:52.082] [X11] [info] Canvas created [2026-09-15 11:17:52.082] [main] [info] Listening for commands on socket /tmp/.private/test/ueberzugpp-19958.socket [2026-09-15 11:17:52.085] [main] [info] Command received: {"action":"add","identifier":"yazi","max_height":51,"max_width":88,"path":"/tmp/.private/test/yazi-1000/E27V7EDF3PWDMLBGNZ6E7BCPQU","x":148,"y":1} [2026-09-15 11:17:52.087] [opencv] [info] loading file /tmp/.private/test/yazi-1000/E27V7EDF3PWDMLBGNZ6E7BCPQU [2026-09-15 11:17:53.137] [main] [info] Command received: {"action":"remove","identifier":"yazi"} [2026-09-15 11:17:53.169] [main] [info] Command received: {"action":"add","identifier":"yazi","max_height":51,"max_width":88,"path":"/tmp/.private/test/yazi-1000/7UHXZ6AGV4CXMEAIGWH26XLIOI","x":148,"y":1} [2026-09-15 11:17:53.173] [opencv] [info] loading file /tmp/.private/test/yazi-1000/7UHXZ6AGV4CXMEAIGWH26XLIOI [2026-09-15 11:17:54.237] [main] [info] Command received: {"action":"remove","identifier":"yazi"} [2026-09-15 11:17:55.990] [main] [info] Exiting ueberzugpp однако запуск YAZI_LOG=debug yazi . выдаёт ожидаемый результат _ _ _ | | | | | | _ _ | | | | ___| |__ ___ _ __ _____ _ __ _ _| |_ _| |_ | | | |/ _ \ '_ \ / _ \ '__|_ / | | |/ _` |_ _|_ _| | |_| | __/ |_) | __/ | / /| |_| | (_| | |_| |_| \___/ \___|_.__/ \___|_| /___|\__,_|\__, | __/ | |___/ v2.9.10 [2026-09-15 11:27:31.653] [terminal] [info] TERM = xterm-256color [2026-09-15 11:27:31.653] [terminal] [info] PTY = /dev/pts/0 [2026-09-15 11:27:31.653] [terminal] [debug] ioctl sizes: COLS=237 ROWS=53 XPIXEL=0 YPIXEL=0 [2026-09-15 11:27:31.653] [terminal] [debug] iterm2 is not supported [2026-09-15 11:27:31.654] [terminal] [debug] X11 is supported [2026-09-15 11:27:31.654] [terminal] [debug] Using fallback X11 window id 31457283 [2026-09-15 11:27:31.654] [terminal] [debug] X11 sizes: XPIXEL=1920 YPIXEL=1044 [2026-09-15 11:27:31.654] [terminal] [debug] Wayland is not supported [2026-09-15 11:27:31.654] [terminal] [debug] padding_horiz=18 padding_vert=18 [2026-09-15 11:27:31.654] [terminal] [debug] font_width=7 font_height=19 [2026-09-15 11:27:31.654] [X11] [info] Canvas created [2026-09-15 11:27:31.655] [main] [info] Listening for commands on socket /tmp/.private/test/ueberzugpp-20120.socket [2026-09-15 11:27:31.657] [main] [info] Command received: {"action":"add","identifier":"yazi","max_height":51,"max_width":88,"path":"/tmp/.private/test/yazi-1000/E27V7EDF3PWDMLBGNZ6E7BCPQU","x":148,"y":1} [2026-09-15 11:27:31.660] [opencv] [info] loading file /tmp/.private/test/yazi-1000/E27V7EDF3PWDMLBGNZ6E7BCPQU [2026-09-15 11:27:31.666] [X11] [debug] Initializing canvas [2026-09-15 11:27:31.666] [X11] [debug] Created child window 58720256 at (1054,37) with parent 31457283 [2026-09-15 11:27:31.666] [X11] [debug] Received expose event for window 58720256 [2026-09-15 11:27:31.666] [X11] [debug] Received expose event for window 58720256 [2026-09-15 11:27:33.497] [main] [info] Command received: {"action":"remove","identifier":"yazi"} [2026-09-15 11:27:33.528] [main] [info] Command received: {"action":"add","identifier":"yazi","max_height":51,"max_width":88,"path":"/tmp/.private/test/yazi-1000/7UHXZ6AGV4CXMEAIGWH26XLIOI","x":148,"y":1} [2026-09-15 11:27:33.531] [opencv] [info] loading file /tmp/.private/test/yazi-1000/7UHXZ6AGV4CXMEAIGWH26XLIOI [2026-09-15 11:27:33.534] [X11] [debug] Initializing canvas [2026-09-15 11:27:33.534] [X11] [debug] Created child window 58720258 at (1054,37) with parent 31457283 [2026-09-15 11:27:33.536] [X11] [debug] Received expose event for window 58720258 [2026-09-15 11:27:33.537] [X11] [debug] Received expose event for window 58720258 [2026-09-15 11:27:34.373] [main] [info] Command received: {"action":"remove","identifier":"yazi"} [2026-09-15 11:27:36.164] [main] [info] Exiting ueberzugpp
Спасибо за лог — причина найдена с точностью до строки кода. Ключевые строки лога: [terminal] [debug] ioctl sizes: COLS=237 ROWS=53 XPIXEL=0 YPIXEL=0 [terminal] [debug] X11 sizes: XPIXEL=1920 YPIXEL=1044 [terminal] [debug] font_width=7 font_height=19 [X11] [debug] Created child window 58720256 at (1054,37) Что происходит: 1. xfce4-terminal не сообщает пиксельный размер через TIOCGWINSZ (XPIXEL=0 YPIXEL=0) — подтверждено. 2. ueberzugpp берёт размер окна X11 (1920x1044) и вычисляет ширину ячейки как floor((1920-2*18)/237) = 7 пикселей, хотя реальная ширина ячейки 1920/237 ≈ 8.1 пикселя. 3. Координата превью считается целочисленно: x * font_width. Ошибка ~1.1 px на каждую колонку накапливается: при x=5 (ручной тест) это 5 px и незаметно, а при x=148 (панель превью yazi) окно создаётся в точке 18+148*7=1054 вместо правильных ~1217 — сдвиг ~160 px влево, превью «вылезает» на соседнюю панель. Размер тоже занижается: max_width=88 ячеек → 616 px вместо ~713 px. Итого: это баг в ueberzugpp — при нулевой пиксельной геометрии терминала размер ячейки усекается до целого, и ошибка позиционирования растёт линейно с координатой. В KDE ошибка не воспроизводится, потому что там Konsole (kitty protocol, ueberzugpp не используется). Завёл issue в апстрим: https://github.com/jstkdng/ueberzugpp/issues/289 Обходные пути остаются актуальными: - терминал с kitty graphics protocol (kitty, wezterm, Konsole); - компенсация через ueberzug_scale/ueberzug_offset в ~/.config/yazi/yazi.toml.