Commit graph

77 commits

Author SHA1 Message Date
869e38f3a5
refactor: filter out events in State::subscription
this may improve performance, saving update and view calls
2026-08-15 09:49:24 -07:00
65ddef28df
fix: missing svg mime type in desktopItem 2026-08-14 11:36:40 -07:00
85a80346e3
refactor: move svg integration into crate 2026-08-14 11:27:07 -07:00
16e13be214
minor: use name SVG over extension svg to identify errors
since the extension could be svg or svgz
2026-08-14 10:53:07 -07:00
a87a7bc0a1
feat: svg support 2026-08-14 10:25:46 -07:00
603678ba34
refactor: move kra to crate
in the interest of reusing that code in a gallery app
2026-08-03 23:30:21 -07:00
db457fc4e7
docs: add readme 2026-08-03 11:27:29 -07:00
e57c1c9322
fix: jxls being rotated twice 2026-08-01 10:22:41 -07:00
d3bc84769e
refactor: improve clipboard put code style 2026-07-31 20:17:25 -07:00
cb5e1d837a
feat: image copy and paste 2026-07-31 20:08:58 -07:00
1f909904c2
fix: print error on failed to read metadata
this should be very rare, so no need to display it or abort
2026-07-31 17:47:12 -07:00
808a8bf31d
feat: put the bars together
this made sense now that I made error messages shorter,
and figured out how to properly align things in a row.

looks good! might even consider keeping the infobar on by default
2026-07-31 17:32:52 -07:00
6fa0e29eae
feat: display file size 2026-07-31 17:23:29 -07:00
18de039e77
feat: make pickers async 2026-07-31 15:53:11 -07:00
9d4e24e809
refactor: apply clippy lints
cargo clippy --no-deps -- --deny clippy::nursery --deny clippy::pedantic
(does not quite pass due to unused `&self` in State::subscription)
I am considering ignoring events when the file picker is opened,
but that isn't a very nice solution (should just make it async atp)
2026-07-31 14:39:18 -07:00
94c905db38
build: seperate linux-specific deps 2026-07-31 14:19:53 -07:00
754dd6126d
fix: wrong dbus output (?) 2026-07-31 11:21:37 -07:00
26c17d5cf9
docs: add safety note 2026-07-31 11:14:05 -07:00
5a84b56025
build: use libdbus over zenity
I completely misunderstood the RFD doc comments,
thought that save file dialogs were not avaliable on linux outside of gtk

this helps avoid the wrapper, which is nice;
but I imagine it would fail if portals are unavaliable.
2026-07-31 09:55:08 -07:00
e98f268e59
refactor: do not format each ImageError
this makes the code much nicer,
but also it reduces the amount of extra fluff in the error messages.
2026-07-31 09:51:57 -07:00
973703726f
feat: guess format from magic numbers as well
this allows opening files with extensions that don't match the filetype
2026-07-31 09:16:38 -07:00
fca4577c0f
refactor(kra): factor out error mapping 2026-07-31 00:24:39 -07:00
57ad7dfb1e
build: reduce indirection slightly 2026-07-31 00:05:48 -07:00
b8b4d8698c
build: remove no-op wrapper argument 2026-07-31 00:03:35 -07:00
13976b91ea
fix: add .kra (krita) support to mimeTypes 2026-07-30 23:54:37 -07:00
101adc7a89
refactor: split kra (krita) logic into image hook
may further split this into its own crate;
seems quite useful! (albeit somewhat short and easy)

since there aren't any runtime dependancies,
it could even go into image-extras maybe
2026-07-30 23:40:14 -07:00
c96a1cbdd1
feat: default to FilterMethod::Nearest on small image
helps make pixelart sharp without the need to change it yourself
2026-07-30 22:54:56 -07:00
fc92ff60e0
feat: kra (krita) support 2026-07-30 22:41:17 -07:00
2e8a6c8546
feat: use single quotes in usage to reduce noise 2026-07-30 21:43:06 -07:00
50b5ed58b0
feat: add to usage reference 2026-07-30 21:40:14 -07:00
b1157474c9
feat: simplify theme 2026-07-30 20:35:45 -07:00
9bdd556c9d
refactor: use newer helper method in State::new
this should keep it from printing "no image to allocate"
each time when started without an argument
2026-07-30 20:27:34 -07:00
7ce87e2870
feat: optional infobar
literally the title; except on the bottom
2026-07-30 20:17:21 -07:00
97ce6754dd
feat: change scale limits
zooming in a lot is sometimes useful,
but zooming out is basically useless and annoying
(when you want to put it back to covering the full window)

if you really need to zoom out, you can always resize the window
2026-07-30 19:21:12 -07:00
f279c3aa15
feat: f to switch FilterMethod
useful to scale pixelart images nicely.

This makes me consider expanding the status bar to include info;
partially because I don't use window decorations usually
(so I don't see the info in the title)
2026-07-30 19:19:23 -07:00
e7e1400c3a
style: avoid toml curly braces
else it causes messy diffs and is generally less writable and readable
2026-07-29 16:11:48 -07:00
5a83fe39e9
feat: switch to pure-rust jxl decoder
this makes the logic drastically simpler;
as it comes with image crate integration.

however, images can no longer be saved as JXL with this version
(as jxl-oxide is decoder-only)
2026-07-29 16:11:35 -07:00
89b4639a69
chore: add license to Cargo.toml 2026-07-27 23:17:18 -07:00
f789271f9e
build: use avif-native
this allows it to open (more?) AVIFs
2026-07-27 22:09:25 -07:00
a91cc6b525
refactor: apply clippy lints 2026-07-27 21:42:52 -07:00
c4738ad2c8
feat: display image dimensions in title 2026-07-27 21:37:00 -07:00
e32c18e304
refactor: improve helper function sanity
pure(er) functions are so much easier to work with
(see the bug fix in the pior commit)

there's a bit of duplicate code introduced but it's worth it
2026-07-27 21:23:59 -07:00
60717d639c
fix: hidden error 2026-07-27 21:14:22 -07:00
ab24e5f10d
refactor: use Result with a unit type over Option
this helps convey intent, and makes it more consistent
2026-07-09 20:58:44 -07:00
dab5f8e09f
refactor: annotate State::allocate_image with must_use 2026-07-09 20:51:06 -07:00
d577fe2e76
refactor: move image logic to utils 2026-07-09 20:48:34 -07:00
c3a5919e87
feat: drag and drop (outside of wayland) 2026-07-09 20:16:56 -07:00
b11264dc4b
build: zenity consistency 2026-07-09 20:16:33 -07:00
ccc2efc21a
feat: display other image missing errors 2026-07-04 11:17:32 -07:00
32f5503ffc
fix: typos in error message 2026-07-04 11:04:10 -07:00