Feature request: optional dual-state icons (unselected / selected) in icon view
Nobody has claimed this yet.
- Dominant language
- C
- Stars
- 1.6k
- Forks
- 368
- Avg merge
- 4d 4h
- Merged PRs (30d)
- 2
Description
Summary
Add support in Nemo's icon view for dual-state icons: if the active icon theme provides a -selected variant for an icon, Nemo displays it when the item is selected, instead of applying the usual selection overlay (blue tint / border).
This mirrors the Amiga Workbench behavior, where each icon carried both a "normal" and a "selected" image that swapped on click.
No user preference, no change in behavior for users whose icon theme does not provide -selected variants.
Motivation
The current selection feedback is a uniform overlay applied to any icon. It works, but:
- The icon graphic itself carries no additional information when selected — only the background changes.
- Some users (retro-computing enthusiasts, accessibility use cases where a color overlay is hard to perceive) would benefit from a stronger visual distinction where the icon image changes.
- On AmigaOS, the dual-state icon was a defining part of the desktop experience and is often cited as one of the things modern file managers do not reproduce.
This is not about theming Nemo into Workbench — it is about letting an icon theme provide a "selected" variant and having Nemo honor it when present.
Proposed behavior
- For each rendered icon in the icon view, Nemo looks up
<icon-name>-selectedin the activeGtkIconThemewhen the item is in the selected state. - If the variant exists, it is rendered in place of the normal icon. If it does not exist, Nemo falls back to the current rendering (standard icon + selection overlay). No regression for themes that do not provide the variant.
- Behavior is driven entirely by the icon theme — no new user preference, consistent with how GTK already handles
-symbolicand-rtl.
Icon convention
The -selected suffix is proposed because it:
- is consistent with existing GTK/freedesktop conventions (
-symbolic,-rtl); - does not require changes to the Icon Theme Specification;
- is trivially ignorable by other file managers (they just won't load it);
- lives entirely in icon themes — no new storage on disk, no filesystem side effects.
Example layout in a theme:
/usr/share/icons/MyTheme/scalable/places/folder.svg
/usr/share/icons/MyTheme/scalable/places/folder-selected.svg
Scope
In scope
- Icon view (desktop + folders in icon mode).
- Theme-based lookup with graceful fallback to the current rendering.
Out of scope (for this issue)
- List view / compact view (could be a follow-up).
- Animations / transitions between states.
- Per-file overrides via sibling files or extended attributes (could be discussed later if this first step lands).
- Shipping a default "selected" icon set with Mint.
Open questions
- When a
-selectedvariant is loaded, should the existing selection overlay still be drawn on top, or suppressed (pure swap, as on Amiga)? Suggesting: suppressed when a variant is found, kept otherwise. - Willingness to accept a PR if I prototype this? I would like to gauge interest before investing the implementation work.
References
- Amiga Workbench icon format (dual-image
.info): http://amiga.nvg.org/amiga/reference/Libraries_Manual_guide/node0238.html - freedesktop Icon Theme Specification: https://specifications.freedesktop.org/icon-theme-spec/
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start at Nemo's icon-view rendering path and the GtkIconTheme lookup used for rendered icons. Confirm how selected items currently receive the selection overlay, then define the -selected fallback behavior and verify that the overlay is suppressed only when a variant is found.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- c
- Domain
- desktop
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100