Skip to content

Advanced Configuration

Warning

This section is for advanced configuration. You can configure Roseate with ease via the Settings Menu.

Roseate is in alpha, expect sudden breaking changes in config.toml.

The config file for the Roseate image viewer can be accessed and edited with the --edit or -e command:

terminal
roseate --edit
terminal
start roseate --edit

Note

The section below is automatically generated from Roseate's toml config template which you can find here: https://github.com/cloudy-org/roseate/blob/main/app/assets/config.template.toml

Hence to help edit this section you will need to edit the docstring in the toml template directly over at the Roseate repo.

Warning

This section is in an experimental testing stage; it's very rough around the edges. Contributions to improve my code are welcome.

Version

Version

version = 1

Description:

No description.

Image

Lazy Loading

image.loading.initial.lazy_loading = false

Description:

Load image on separate thread during initial launch.

Setting this to "true" will make the image load on a separate thread to the GUI initially. This means the GUI may load up before the image is ready to display itself. This will have an impact on peak memory hence it's "false" by default.

Lazy Loading

image.loading.gui.lazy_loading = true

Description:

Load image on separate thread when selected within GUI.

Same as the above but this is now for when you select and load an image from the GUI.

For example: Picking an image from the file picker or dropping an image into the window.

Not setting this to "true" will avoid spawning a separate thread for image loading but will cause the GUI to freeze up (or appear as if it's not responding) until the image has been loaded.

Decoder

image.backend.decoder = "image-rs"

Description:

Change image decoder backend.

Setting this to "zune-image" will tell roseate-core to decode images with the zune-image backend, the implementation of this backend in Roseate is experimental and WIP, but it can be faster than image-rs while also having lower memory usage.

However we default to "image-rs" due to it's wider support and stability in Roseate.

WARNING: "zune-image" is not implemented yet (https://github.com/cloudy-org/roseate/issues/102)!

Mode

image.optimizations.mode = "default"

Description:

The optimization mode controls and defines what image optimizations should be enabled or disabled.

Default: A decent balance between low memory usage and speed.

Speed: You don't mind higher memory usage and just want images to load as fast as possible.

Quality: You don't care about memory usage, you just want the highest quality and sharpest image possible.

Monitor Downsampling

image.optimizations.monitor_downsampling = { enabled = true, strength = 1.4 }

Description:

Downsamples the image roughly to the resolution of your monitor.

Images don't always have to be displayed at their full native resolution, especially when the image is significantly bigger than your monitor can even display, so to save GPU memory we downsample the image. Downsampling decreases the amount of GPU memory eaten up by the image at the cost of CPU time wasted actually resizing the image (depending on the decoder). The bigger the image, the more time it will take to downsample but we think the memory savings from doing so are more valuable for most users. Also some decoders have the capability of decoding a specific size of an image (thumbnail) from the get go, which means CPU time is actually never wasted but rather significantly reduced (making image loading even faster with monitor downsampling enabled).

If you do not wish for such memory savings (like those with a beefy GPU) and you prefer overall faster image load times disable this optimization.

If you want your image quality back when zooming into your image, you might want to also enable the "dynamic_sampling" image optimization.

Experimental Consume Pixels During Gpu Upload

image.optimizations.experimental_consume_pixels_during_gpu_upload = true

Description:

Enabling this allows Roseate to upload RGBA decoded images directly to the GPU without duplicating it's memory (zero-copy). If the image is RGBA, peak heap memory (on the CPU side) will be almost HALVED, it's very memory efficient.

If your image is not in the RGBA colour format, zero-copy will NOT be possible (memory will peak for a very short moment), however you will still benefit as memory for the decoded image will still be immediately freed AFTER GPU upload.

This optimization is disabled if you enable "dynamic_sampling" as dynamic sampling benefits from the decoded image not being freed from memory.

Experimental Dynamic Sampling

image.optimizations.experimental_dynamic_sampling = { enabled = false, also_downsample = true }

Description:

Enabling this will enable the extremely experimental dynamic sampling feature that upsamples your image when you zoom in to bring back the detail lost from monitor downsampling when necessary.

Disabled if "monitor_downsampling" is not enabled.

Again, this is VERY experimental, incomplete and untested! Expect a very broken implementation and bugs.

Experimental Multi Threaded Sampling

image.optimizations.experimental_multi_threaded_sampling = false

Description:

If you enable this Roseate will use it's fast multi-threaded function when downsampling images.

If you want to limit or increase the amount of threads used for parallelisation, you may with the "threads" key. Otherwise please leave the key undefined, Roseate will consult with your operating system on how many threads it may use and it will always use two threads less than it's allowed.

experimental_multi_threaded_sampling = {enabled = false, threads = 8}

This is VERY experimental and can break.

Ui

Hide

ui.controls.hide = true

Description:

Show or hide UI controls by default.

Settings

ui.controls.settings = true

Description:

Show the settings button in UI controls for easy access to the settings.

Fullscreen

ui.controls.fullscreen = true

Description:

Show the fullscreen button in UI controls.

Magnification

ui.controls.magnification = true

Description:

Show the magnification panel in UI controls.

Padding

ui.viewport.padding = 2

Description:

Adjust this value to control the spacing between the image and the edge of the window.

Zoom Into Cursor

ui.viewport.zoom_into_cursor = true

Description:

Changes how image zooming behaves with the scroll wheel. Set to "false" to disable zooming into mouse cursor position.

Fit To Window

ui.viewport.fit_to_window = true

Description:

If set to "true", the viewport will automatically fit the image to the window.

Animate Fit To Window

ui.viewport.animate_fit_to_window = true

Description:

Set to "false" if you want the image to instantly snap to the window size otherwise the viewport will perform a fancy animation while fitting the image to the window.

Animate Reset

ui.viewport.animate_reset = true

Description:

If set to "true", the viewport will animate pan and zoom when they are reset.

Show Settings Button

ui.home_menu.show_settings_button = true

Description:

No description.

Show Open Image Button

ui.home_menu.show_open_image_button = true

Description:

Show "Open Image" button in main menu when no image is open.

If set to "true", the image selection menu will display an "Open Image" button otherwise to open an image you can click on the rose.

Show Location

ui.image_info.show_location = true

Description:

Show image location in image info.

When enabled an offline location lookup will be performed and the image info window will display the location of which the image was taken.

Otherwise if disabled no lookup will be performed and no location will be shown.

Key Binds

Show Image Info

key_binds.show_image_info = "I"

Description:

No description.

Show Extra Image Info

key_binds.show_extra_image_info = "CTRL+I"

Description:

No description.

Reset Viewport

key_binds.reset_viewport = "R"

Description:

Key bind to reset the image pan position and zoom scale back to default.

Show Ui Controls

key_binds.show_ui_controls = "C"

Description:

Key bind to toggle all your UI controls like the magnification panel.

Misc

Show Ui Modes Popup

misc.experimental.show_ui_modes_popup = true

Description:

No description.