A fast as fuck, memory efficient and simple but fancy image viewer built with Rust that's cross-platform. VERY WIP!

(image from a WIP development build, this is NOT the final product)
Caution
This project is HEAVILY a work in progress, hence it may crash or harm your system. Github issues are very welcome. π€
You can find devlogs in video format on my youtube channel; I have a playlist for it here: https://www.youtube.com/playlist?list=PLI8mjQYZec82ZajoDnDkAicBarEZ1yPd-
As Roseate is in heavy development I won't offer packages and binaries yet so you'll need to compile the application from source.
-
Rust and Cargo (Rust
1.80.0
+ is required!). -
Linux dependencies required by eframe:
-
libxrandr (required by display-info for smart downsampling)
-
xdg-desktop-portal (required by rfd for file dialog)
All of these deps are required on Linux. However they are common x11 / wayland dependencies so you most likely already have them installed.
- Clone the repo.
git clone https://github.com/cloudy-org/roseate
cd roseate
- Pull the cirrus tool kit submodule.
git submodule update --init --recursive
Installing it to your system I advise you use GNU Make or else copy the commands from the "Makefile" (you will need to install Make if you haven't already). If you would like to run roseate for development continue ahead to the next section.
- Build the release binary.
make
- Install to your system.
sudo make install
- Then the
roseate
binary will be available in your terminal.
roseate
Open an image by passing its path.
roseate ./anime_girls.png
You might want to also set the binary at /usr/bin/roseate
as your default image viewer so double clicking on images calls it.
You can look up how to perform that for your desktop environment or operating system but on many popular Linux desktop environments, the roseate.desktop
file that is now installed on your system is your friend. π
Warning
Building a development build WILL SIGNIFICANTLY KILL performance! Read more here.
Now for development, you would just run cargo run
.
- Run dev binary.
cargo run
To run Roseate in development with an image, append --
and pass an image path after like so:
cargo run -- ./anime_girl.png
To run with verbose debugging, call cargo run with the RUST_LOG=DEBUG
environment variable:
RUST_LOG=DEBUG cargo run -- ./anime_girl.png
[2024-10-20T02:20:36Z DEBUG roseate] Image '/home/goldy/Downloads/anime_girl.png' loading from path...
[2024-10-20T02:20:36Z DEBUG eframe] Using the glow renderer
[2024-10-20T02:20:36Z DEBUG sctk] Bound new global [70] wl_output v4
[2024-10-20T02:20:36Z DEBUG sctk] Bound new global [74] wl_output v4
[2024-10-20T02:20:36Z DEBUG sctk] Bound new global [30] zxdg_output_manager_v1 v3
[2024-10-20T02:20:36Z DEBUG sctk] Bound new global [10] wl_seat v7
[2024-10-20T02:20:36Z DEBUG sctk] Bound new global [16] wp_cursor_shape_manager_v1 v1
... (truncated for the sanity of this readme)