linuxmint / linuxmint/nemo

Feature request: optional dual-state icons (unselected / selected) in icon view

Open
#3,761 0 comments 0 reactions 0 assignees View on GitHub

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
  1. For each rendered icon in the icon view, Nemo looks up <icon-name>-selected in the active GtkIconTheme when the item is in the selected state.
  2. 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.
  3. Behavior is driven entirely by the icon theme — no new user preference, consistent with how GTK already handles -symbolic and -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
  1. When a -selected variant 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.
  2. Willingness to accept a PR if I prototype this? I would like to gauge interest before investing the implementation work.
References

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.