LINUX.ORG.RU

Lightning Image Viewer 0.5.1

 , , , ,


2

3

Lightning Image Viewer – легковесное приложение для просмотра изображений на десктопном компьютере со своеобразным UX, который автор находит наиболее удобным.

Без рамки окна, без меню, без тулбаров, только само изображение в прозрачном полноэкранном оверлее с управлением, аналогичным таковому в картографических приложениях:

  • панорамирование (перемещение) перетаскиванием мышью с зажатой левой кнопкой (или клавиатурными стрелками);
  • зум в точку под курсором скроллом (или в точку в центре дисплея клавиатурными +=/-/0);
  • закрытие левым кликом где угодно (или клавиатурным Enter, что делает возможным «моментальное переключение» между файловым менеджером и просмотром изображения).

Написано на C и Rust с SDL3 и image-rs.

Исходники и сборки для Linux (Ubuntu 25.10, Nix выражение) и оффтопика: https://github.com/shatsky/lightning-image-viewer

Веб-демо: https://shatsky.github.io/lightning-image-viewer/

Оффтопик стор: https://apps.microsoft.com/detail/9np4j8k90smk

Заметки про разработку: https://shatsky.github.io/notes/2025-03-07_sdl3-image-viewer.html

Основные изменения с предыдущего мажорного релиза:

  • image-rs (растовая библиотека номер 1 для работы с изображениями) с jxl-oxide и libheif-rs (обеспечивающие поддержку всех распространенных форматов, в т. ч. JXL и HEIC);
  • поддержка анимации (для GIF, PNG и WEBP).

>>> Страница релиза на GitHub

★★

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

Пока что нетy. В моем главном юзкейсе (просмотр архива сохраненок, типичные жпеги размером около мегабайта) не очень нужно, задержка очень маленькая (на синкпаде т480 с ссд). Думаю, уже скоро браузеры заставят image-rs сделать возобновляемое декодирование после неожиданного конца недочитанного/недопринятого файла, и тогда это будет легко сделать. Пока что следующие запланированные улучшения в эту сторону, которые уже несложно сделать:

  • отображение анимации по готовности декодированных фреймов
  • чтение разрешения до начала декодирования и отображение прямоугольника соответствующего размера, заполненного растянутой текстурой из миниатюрки, которую показывает файл менеджер
shatsky ★★
() автор топика
Ответ на: комментарий от shatsky

отображение анимации по готовности декодированных фреймов

Вот это точно надо делать опционально, а не ультимативно. «Тормозная» анимация сильно раздражает, приятнее подождать пару секунд, но сразу смотреть с задуманной скоростью.

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

ну да, кстати, читать миниатюру - тоже хорошая идея. Я так делал для jpeg и dng/tiff, подгружая миниятюру из начала файла и отрисовывая до основной картинки
Касательно юзкейса с SSD - наиболее востребована последовательная загрузка при чтении с usb накопителей, либо сетевого хранилища, что как раз часто используется для больших фотографий

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

Это почти идеальный просмоторщик, именно то, что я искал.

Единственное:

  • Просмотр расширенных метаданных очень нужен
  • Полечить оконный режим в wayland(может и в X11) в тайловых менеджерах. Полноэкранный работает ок, закреплённые окна ещё ничего(только бэк нужно чёрным заливать), а вот плавающие окна вообще не переваривает.
  • В CI/CD и релизы добавить сборку под musl, чтобы добавить пакет в AUR, например
  • Использовать готовые биндинги SDL и убрать image.c =)

Советую в репозиторий добавить release-please, он очень помогает. Добавляется просто: https://github.com/SL-RU/mmtui/tree/master/.github

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

добавить сборку под musl, чтобы добавить пакет в AUR,

Musl и арч/аур как-то связаны уже?

One ★★★★★
()

- slackware 15.0
- rust-1.58.1
- sdl-1.2.15

book$ make
cargo build --release
error: failed to parse manifest at `/dev/shm/sun/ram/01/lightning-image-viewer-0.5.1/Cargo.toml`

Caused by:
  failed to parse the `edition` key

Caused by:
  this version of Cargo is older than the `2024` edition, and only supports `2015`, `2018`, and `2021` editions.
make: *** [Makefile:6: all] Error 101
юзаем топовые версии «раста»?

перепаковка deb-пакета:
book$ ./lightning-image-viewer
./lightning-image-viewer: error while loading shared libraries: libSDL3.so.0: cannot open shared object file: No such file or directory

sunjob ★★★★★
()
Последнее исправление: sunjob (всего исправлений: 3)
Ответ на: комментарий от andreyu

- slackware 15.0
- cmake 3.21.4

book$ cmake ../
CMake Error at CMakeLists.txt:1 (cmake_minimum_required):
  CMake 3.22 or higher is required.  You are running version 3.21.4

-- Configuring incomplete, errors occurred!

как говориться, с новым годом, с легким паром! :o)

sunjob ★★★★★
()

со своеобразным UX, который автор находит наиболее удобным

Можно добавлять почти к любой новости.

MoldAndLimeHoney ★★
()

Название не очень удачное, так как сразу перекликается с Lightning сетью, а UX в описании читается как UTXO

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

UX в описании читается как UTXO

Это какая-то твоя личная деформация, UX — стандартный термин.

Ну а Lightning да, пожалуй не с тем ассоциируется.

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

столько, сколько нужно! как прибили гвоздиком, так и держиться. не мне бодаться с патреком в «системном дизайнинге», хотя, да, смаке я обычно сам пересобираю... а данную софтину собирал на ноутубке (hostname is book), который бОльше «летает или мобильно перемещается в пространстве», нежели «пашет» на полную... поэтому он бОлее стОковый и соотв. «версия тулкита». :о)

sunjob ★★★★★
()
Последнее исправление: sunjob (всего исправлений: 2)

Забыл, как называется эта картина. Там сюжет страшный: люди на плоте после кораблекрушения, потом они начали есть друг друга ..

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

Эта картина Айвазовского называется «Девятый вал».

Правда не помню, чтоб там какой-то каннибализм подразумевался… Просто люди на плоту после кораблекрушения, не?

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 2)

Написано на C и Rust с SDL3 и image-rs.

Какая-то мешанина с зависимостями на rust, укоторых зависимости на C.

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

Эта картина Айвазовского называется «Девятый вал».

Айвазовский хотел назвать картину «Программисты борятся с borrow-checker», но решил, что современники не поймут и выбрал «Девятый вал».

u-235
()
Ответ на: комментарий от u-235

Ну, держаться за Qt 5 тоже тупо. Пятая версия мертва, пора забыть о ней. Когда я начинал разработку, меня критиковали за выбор Qt 4, которая только-только вышла, предлагали третью версию использовать. А смысла-то?

unC0Rr ★★★★★
()

Без рамки окна, без меню, без тулбаров, только само изображение в прозрачном полноэкранном оверлее с управлением, аналогичным таковому в картографических приложениях

И чем это лучше feh? Только тем, что написано на «ржавом»? :)

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

переходим на Qt 6… На Qt 5 оставаться нет возможности

А возможность поддержки двух мажорных версий на одной кодовой базе не рассматривали? Или уже и за это из генты выгоняют?

Когда я начинал разработку, меня критиковали за выбор Qt 4, которая только-только вышла, предлагали третью версию использовать.

Это совсем другое. там слом API и форматов был капитальный.

Я уже неоднократно приводил пример с @roxton, у которого поддерживаются 4, 5 и 6. У меня 4 и 5 поддерживаются в DoubleContact и в куче проектов по работе, хочу тоже 6-ку прикрутить к DoubleContact, @u-235 в этом уже поучаствовал, кстати :)

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

А возможность поддержки двух мажорных версий на одной кодовой базе не рассматривали?

Честно говоря, не вижу смысла. У Qt уже 6.11 на носу, а пятая ветка снята с поддержки. Кому надо, может компилить старый фронтенд, никаких новых фич добавлено не было, фронтенд у нас считай что мёртв, хотя другого нового ещё и нет.

unC0Rr ★★★★★
()

Не, ну пусть будет конечно, но пользоваться таким...

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

я так понял - на расте «бибилотека работы с графикой»... видимо, все остальное на старом добром си :о)

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

Жерико "Плот «Медузы».

Но да, к скриншоту из новости эта картина не имеет, на скриншоте каноничный Айвазовский.

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

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

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

Как провожают пароходы?
Совсем не так как поезда.
Морские медленные воды.
Не то что рельсы в два ряда...

:o)

sunjob ★★★★★
()

закрытие левым кликом где угодно или клавиатурным Enter,

А почему не клавишей ESC, которая специально предназначена для этого?

Xintrea ★★★★★
()

Очередной факап растаманов. :) В который раз поставил компилятор раста, вдруг на расте что-то годное написали наконец, в итоге:

JPEG2000 не умеет, при попытке открыть ту же самую картинку отконвертированную в 8-bit grayscale JPEG загрузил одно ядро на 100%, уже хотел прибить, думал зависло, но оно рухнуло само написав что-то невнятное про какое-то zune_что-то-там.

Параметры картинки:

mars_greyscale.jpg JPEG 25928x44039 25928x44039+0+0 8-bit Grayscale Gray 256c 197.355MiB 0.000u 0:00.000

Gwenview и пр. справляются, небыстро, но без проблем. feh с ковырнутой на предмет максимального размера изображения imlib2 (там рудименты с времён 32-битных процессоров, поэтому размер картинки не больше 32767х32767 искаропки) вообще очень шустр.

Снёс раст нахрен вместе с очередным растоподелием. :)

В общем, КГ/АМ

Stanson ★★★★★
()

Нда, так себе новость - «очередная просматривалка изображений на срасте использующая для работы другую просматривалку изображений на срасте»

daniyal
()
Последнее исправление: daniyal (всего исправлений: 2)
Ответ на: комментарий от Stanson

Снёс раст нахрен вместе с очередным растоподелием. :)

В общем, КГ/АМ

Надеюсь, автор проги вернул тебе деньги.

u-235
()
Ответ на: комментарий от u-235

Надеюсь, автор проги вернул тебе деньги.

Зачем мне его деньги? Я достаточно брезглив, чтобы не брать деньги например у растолюбов.

Stanson ★★★★★
()

залей на флатхаб пожалуйста.

a__
()
Ответ на: комментарий от Stanson

было-бы лучше, если-бы вы «дотошно» описали ситуацию:
- дистрибутив/патчи/системное
- версии компияторов/прочих тулзятин, причастных к сборке
- более полный выхлоп с ошибками

так, однозначно, «это» было-бы полезным для «коллектива» :о)

sunjob ★★★★★
()
Последнее исправление: sunjob (всего исправлений: 1)
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.