r/madeinrust • u/KayXue • 2h ago
AI Assisted Nautilus Image Converter - A decent tool, but with better performance
As you know, Nautilus Image Converter is a tool that can help you rotate and resize images. I also knew it when I was installing and configuring Niri, a Wayland compositor. While I was reading an Arch Linux installation guide, I found the author mentions "nautilus-image-extension". After reading its description, I thought it was interesting, and I installed it.
However, after I started using it, I found some bad things regarding its window and performance.
First, the windows are cropped somehow. I don't know whether any other user notices it, but it's obvious when I use it under Niri Wayland compositor, which makes the window look odd like image below.

Second, when I use it to process multiple images, I feel that the extension handles images slowly. I decided to find out why it processes images really slowly. After I asked AI about it, I finally knew it's mainly because it uses ImageMagick to process images; when it manipulates images, it has to open ImageMagick through a command over and over again, which makes it process multiple images pretty slowly. If you studied Operating Systems, you would know that forking a new process is expensive.
Even though I found the project on GitLab, the project seems to be unmaintained. The latest commit stays at 2022. I checked the issues, there was no more response. Even though someone said that he can help the repo author recreate the application in a issue, there is no more response either.
That's why I recreated this again. If the project is unmaintained, why don't I create my own application which aims to solve these issues?
Features
- Standalone app: It now becomes a standalone app, not binding to Nautilus File Manager anymore. However, you can still bind parent window via CLI arguments.
- Entirely in Rust: No non-rust dependencies, which keeps this app performant, low memory footprint and stable.
- Parallelism: Instead of processing images one by one, this app process images in parallel by rayon.
Limitation
- Unsupported formats: This app only supports formats supported by the image crate; formats such as HEIC are currently not supported.
Screenshots


LLM Usage Claim
Since this application is my first app created with Relm4 and gtk-rs and I wasn't really familiar with them, I used LLM to help me finish connecting events and parent window binding. Other parts of this app such as actual image manipulation logic and widgets are finished by myself. Also, I reviewed all of the code generated by AI and understand most of it except parent window binding code, which I need more time to research on it.
Repository
https://github.com/Kayxue/nautilus-image-converter-reborn-app





