LINUX.ORG.RU

lightning-image-viewer 0.2.0

 , , , ,


2

4

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

Написан на C с SDL3. Поддерживаются форматы изображений, которые поддерживаются SDL3_Image (то есть, все популярные кроме HEIC).

Есть сборочное выражение для Nix, бинарники для Ubuntu 25.04 и Windows.

Скриншоты показывать смысла нет, поскольку ничего, кроме собственно картинки поверх остальных окон, он не показывает, но есть веб-демо (скомпилировал C-шный код в WebAssembly, благо зависимостей минимум).

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

★★

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

Это фича) В картографических так же. Мне кажется, пан обычно нужен тогда, когда картинка не помещается на дисплее, и при этом «движение камеры, а не объекта» воспринимается как более привычное

shatsky ★★
() автор топика

но есть веб-демо

Но вообще, в браузере любую картинку и так открыть можно. :)

anonmyous ★★
()

то есть, все популярные кроме HEIC

А что с heic? Лицензия? Сейчас фоток в этом формате всё больше, мои айфон и Самсунг фоткают в нём.

skyman ★★★★
()

А насколько большое изображение реально может осилить?

static_lab ★★★★★
()

Скриншоты показывать смысла нет, поскольку ничего

как-то так :-)

нет скриншота image-viewer`а, нет интереса..ну что его ставить что-ли только ради чтобы посмотреть ?

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

Пока не дошли руки, загрузка изображений посредством SDL3_Image, оно не поддерживает HEIC.

shatsky ★★
() автор топика

Управление с клавиатуры есть? Постраничное листание вверх-вниз и влево-вправо?

question4 ★★★★★
()

собрал для rosa13 по рецепту из nix файла

irton ★★★★★
()

Собирается мгновенно. Да и в AUR уже бинарник есть.

thera_pi
()

Можно ли выставлять произвольный цвет фона для изображений с прозрачными областями? Как в feh.

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

Пока что нет, прозрачные области и рендерятся прозрачными, думал сделать конфиг и возможность сетить цвет в нем, на feh посмотрю.

shatsky ★★
() автор топика

Скриншоты показывать смысла нет, поскольку ничего, кроме собственно картинки поверх остальных окон, он не показывает, но есть веб-демо (скомпилировал C-шный код в WebAssembly, благо зависимостей минимум).

Скриншоты с Леной всегда есть смысл показывать, желательно с полной версией

cocucka_B_TECTE
()

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

Не видел такого на веб-сайтах.

seiken ★★★★★
()

Мне больше интересно, кто тебя снабжает халявными суши.

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

Для тех, кто не в курсе, кто такая Лена

ЛОР образовательный!

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

ху зе хелл из «пан»?

Оно же панорамирование — движение камерой над объектом, не помещающимся в кадр.

mord0d ★★★★★
()

Special thanks to:
ChatGPT (in case it does have consciousness after all), for its time-saving advice, and all humans who created knowledge which it was trained on

Осуждаю эксплуатацию ИИ.

jpegqs
()

Штука выглядит классно, но шоб прям агонь, ннада:

  • HEIC (сейчас он встречается гораздо чаще, чем JPEG);
  • GIF-/APNG-анимации (по крайней мере в демо оно не работает, некоторые анимированные GIF даже загрузить нормально не может);
  • И бонусный функционал, на который я особо не рассчитываю: SVG-анимации.
mord0d ★★★★★
()
Ответ на: комментарий от pihter

Сковорода же, ты когда яишницу жаришь на сильном огне, сковородкой туда сюда вертишь в горизонтальной плоскости, вот и с картинкой так же – чтоб не пригорело. Ну или не яишницу даже, а вок.

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

Мне кажется, пан обычно нужен тогда, когда картинка не помещается на дисплее, и при этом «движение камеры, а не объекта» воспринимается как более привычное

В терминологии оно так и есть: панорамирование это взаимодействие с камерой, а не с объектом.

Но восприятие далёких от темы людей (коих большинство) сыграло так, что это изображение двигают на экране, а не "камеру" над "объектом", вот и получилось… (=

mord0d ★★★★★
()

Чем-то напоминает вьювер из Picasa, только не хватает какого-нибудь заполнителя фона, типа затемнения, как в Telegram сделано, например.

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

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

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

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

«Переключение по пробелу» - это как в Nautilus+Sushi? Я его засетил дефолтным вьювером и «переключаю» энтером. По пробелу в принципе тоже можно сделать, но это надо заставить файловый менеджер его запускать по пробелу, в наутилусе это вроде бы вообще как-то через дбас.

+/- должны масштабировать, точнее, =/-/0, как в браузерах, только без контрола. Очень странно, если не работает, возможно, окно не получает фокус, какой энв?

Вообще биндинги клавиш сейчас хардкод, в цикле событий в main.

Начальный масштаб сейчас выбирается так: вычисляется самый большой масштаб из дискретного ряда …, 1/2, 1/sqrt(2), 1, sqrt(2), 2, … (между которыми переключают скролл и =/-/0), в котором изображение все еще умещается на экране целиком (точнее, в окне, которое должно быть полноэкранным прозрачным, возможно, под некоторыми композиторами или в некоторых многомониторных конфигурациях будут проблемы).

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

Учитывая, что оно использует sdl_image пункты 2 и 3 очень маловероятны (оно просто не для этого, оно спрайты в игры грузить) Пункт 1 теоретически реализуется через libheif

iSage ★★★★
()

Если нет скриншота, значит там какой-то срам, который страшно показать.

Hangover
()
Ответ на: комментарий от iSage

SDL_image для того, чтобы в SDL приложении одной строчкой почти все форматы и вполне юзабельный прототип, а там подумать.

Есть мысль дальше вообще на libmpv двигаться. Но сначала, наверное, по-быстрому сделаю HEIC через libheif.

Анимации SDL_image может. Меня больше беспокоит секьюрити, но это все же довольно тонкий враппер для обычных декодеров, которые и другие приложения юзают.

Сам SDL выбран по причине больше всего знакомых сишников из подходящих либ имели дело именно с ним. 2м, правда. Но в 3м нормально сделали прозрачные окна на поддерживающих это платформах, и вот-вот добавят SDL_SCALEMODE_PIXELART

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

Я версию для Windows пробовал в Win10 и Win11, чтобы разночтений не было.

И про прозрачность для событий ввода вне прямоугольника изображения. Это взаимоискоючающие варианты

У меня там переход к следующему/предыдущему изображению в каталоге срабатывал на PgUp/PgDown, потому и написал про пробел. Так можно одной рукой листать, а другой менять масштаб, если нужно.

У меня программа сейчас работает так: Запускаю программу, выбираю файл из множества в каталоге, нажимаю PgUp - открывается следующий, PgDown - открывается предыдущий.

Из этого я сделал вывод, что листание файлов есть.

+/- должны масштабировать, точнее, =/-/0, как в браузерах, только без контрола.

+/- я нажимал на NumPad, там не работало. -/+ на основном блоке клавиш масштаб меняют.

Есть еще Ubuntu LTS под рукой, могу там ещё потыкать.

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

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

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

SVG-анимации

Казань брал гиф знаю

Астрахань брал апнг знаю

шпака - не брал ну вот про анимированные свг… Это что же, на них векторные мультики, тима масяни во флеше, делать можно?

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

Понял. Я подумал про другое, в гноме, макоси и винде (со сторонним приложением) есть фича, когда по нажатию пробела в файловом менеджере выделенный файл открывается в лёгком «превьювере», который, соответственно, по нажатию пробела закрывается - переключение как toggle. QuickLook, Sushi.

Про нумпад забыл.

На убунту лтс так просто не встанет, там сдл3 нету. Хотя всегда можно поставить Nix сбоку)

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

вот про анимированные свг… Это что же, на них векторные мультики, тима масяни во флеше, делать можно?

На старейших форумах iXBT появились как раз анимированные SVG-смайлики в 60 fps:

https://forum.ixbt.com/lol.svg

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

Если я правильно понял, то нечто подобное в Telegram есть для стикеров, которые не webm и не png.

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

про анимированные свг… Это что же, на них векторные мультики, тима масяни во флеше, делать можно?

С использованием js — можно. А без оно умеет только простые вещи, типа rotate, scale, matrix и прочего из базовых действий. Как конечные анимации возможны, так и зацикленные (причём каждый элемент может быть анимирован независимо).

Причём работает полноценно это далеко не во всех браузерах, а в просмотрщиках графики… Полноценно — ни разу, частично (базовые анимации) — в двух-трёх; из всех что я тыкал (а тыкал я немало).

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

Это что же, на них векторные мультики, тима масяни во флеше, делать можно?

Можно, https://glaxnimate.org в помощь.

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

А что с heic? Лицензия?

Sdl_image не поддерживает, вот и вся загадка.

andreyu ★★★★★
()

Я бы поюзал, но слишком мало полей в struct State.

water_closed
()

Под вяленым не работает диалог выбора файлов:

$ ./lightning-image-viewer
SDL_ShowOpenFileDialog failed: File dialog driver unsupported (supported values for SDL_HINT_FILE_DIALOG_DRIVER are 'zenity' and 'portal')
$ echo $SDL_HINT_FILE_DIALOG_DRIVER
zenity
$ zenity --version
3.44.5
$ zenity --file-selection
(запускается окно выбора файла)
iron ★★★★★
()

Быстрый и легковесный десктопный вьювер

Ну и насколько он легче и быстрей, чем привычные nsxiv и feh?

posixbit ★★★
()

нужно потыкать, пока лучшее что я видел ( к сожалению на офтопике ) - irfanview, быстро , просто, функционально. Вот под онтопик бы такое.

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

Странно, у меня оно SDL_HINT_FILE_DIALOG_DRIVER вообще игнорирует и все время через портал работает. Версия из deb со страницы релизов на github.

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

Не знаю, вероятно, +- одинаковые. Лёгких вьюверов очень много, но UI/UX почти у всех почти одинаковый, с таким, как я хотел - не нашёл, не считая веба.

Он не показывает никакого окна в пользовательском смысле слова, он показывает только саму картинку, при этом её можно зумить и перемещать по всему экрану, и при этом вокруг неё видны нижележащие окна (когда не фулскрин).

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

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