Opiniated image browser written in Rust and GTK4
- Folder and archive browser
- View images inside zip and rar archives
- Supports most image formats including (animated) webp
- Image rotation
- Full keyboard navigation
- Convenient zoom mode presets
- Intuitive mouse / mouse-wheel zooming
- Thumbnail view, multiple thumbnail sizes
- Image information, including exif
- Tagging images as favorites or trash
- Hopping between sub-directories and archives while viewing
Press h for help. Press h again for the second help page.
Key(s) | Function |
---|---|
home | first image |
end | last image |
z or ← or keypad 4 | previous image |
x or → or keypad 6 | next image |
↑ or keypad 8 | previous 5 images |
↓ or keypad 2 | next 5 images |
page up | previous 25 images |
page down | next 25 images |
a | previous favorite image |
s | next favorite image |
w or keypad 7 | hop to previous folder/archive |
e or keypad 9 | hop to next folder/archive |
enter or keypad enter | enter (open) folder/archive |
backspace or keypad del | leave (close) folder/archive and return to parent folder |
What is hopping?
If you have several containers (archives or sub-folders) in a parent-folder, and you are browsing in one of the containers, hopping allows you to go the previous or next container without exiting the current, navigation in the parent and opening the previous or next container.
Click on the table headers or use the following keys
Key(s) | Function |
---|---|
1 | sort on category (folder/archive/image/favorite/trash) |
2 | sort on name |
3 | sort on size |
4 | sort on date |
Key(s) | Function |
---|---|
t | open thumbnail view |
m | cycle through thumbnail sizes |
Key(s) | Function |
---|---|
q | quit application |
d | show bookmarks (edit in configuration file) |
f or keypad * | toggle full screen |
esc | exit full screen |
i | toggle image information |
space or keypad / | toggle folder/archive view |
Example config file (location $HOME/.config/mview/mview6.json)
{
"bookmarks": [
{
"name": "Home folder",
"folder": "/home/martin"
},
{
"name": "Pictures folder",
"folder": "/home/martin/Pictures"
},
{
"name": "Holiday 2024",
"folder": "/home/martin/holiday_2024.zip"
}
]
}
The rotation is not saved to image.
Key(s) | Function |
---|---|
r | rotate clock-wise |
shift r | rotate anti-clock-wise |
Zoom using mouse and mouse wheel, or use the following keys:
Key(s) | Function |
---|---|
n | toggle between no-zoom and zoom-fit |
m or keypad 0 | toggle between zoom-fill and zoom-max |
Zoom modes explained
Mode | Behavior |
---|---|
no_zoom |
Will show image 1:1, may fall outside window |
zoom_fit |
Will not enlarge image, but will make sure it fits in the window by shrinking it when necessairy |
zoom_fill |
Will shrink or enlarge image to fill the available window area. All of the image will be visible, there may be black margins |
zoom_max |
Will shrink or enlarge image to fill the available window area. There will be no black margins, part of the image may fall off-screen |
Key(s) | Function |
---|---|
= or keypad + | mark image as favorite (or unmark as trash) |
- or keypad - | mark image as trash (or unmark as favorite) |
Marking is done by adding .lo.
or .hi.
to the image filename. For example image_123.jpg
will be renamed to image_123.hi.jpg
. This does currently not work inside zip or rar archives.
cargo build --release
Put the executable ./target/release/MView6
somewhere in your path.
The following libraries have to be installed
sudo apt-get install libglib2.0-dev libgdk-pixbuf-2.0-dev libgraphene-1.0-dev libgtk-4-dev librsvg2-dev
brew install pkg-config cairo gtk4