Feature request: optional dual-state icons (unselected / selected) in icon view
维护者通常 10 天内回复
还没有人认领这个 Issue。
评估
调研方向
从 Nemo 的图标视图渲染路径以及用于已渲染图标的 GtkIconTheme 查找开始。确认当前选中项如何获得选择叠加层,然后定义 -selected 回退行为,并验证只有在找到变体时才会抑制叠加层。
由索引模型根据 Issue 内容生成。
描述
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/
- 主要语言
- C
- 星标
- 1.6k
- 派生
- 379
- 平均合并
- 10 天 14 小时
- 30 天内合并 PR
- 4
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
linuxmint/nemo 的其他 Issue
-
Copy dialog: Enter key accidentally cancels file copy可能重新可做 关联的 PR 已关闭且未合并。 未关闭
难度 2/5 1-3 小时 新手友好度 68/100
维护者通常 10 天内回复
-
难度 2/5 1-3 小时 新手友好度 74/100
linuxmint/nemo#3838 · 1 条评论 · 1 个 reaction ·
维护者通常 10 天内回复
-
难度 2/5 1-3 小时 新手友好度 78/100
维护者通常 10 天内回复
-
难度 2/5 1-3 小时 新手友好度 76/100
linuxmint/nemo#3805 · 2 条评论 · 1 个 reaction ·
维护者通常 10 天内回复
-
难度 2/5 1-3 小时 新手友好度 65/100
维护者通常 10 天内回复
相似的 Issue
-
documentation severity: low
难度 1/5 1 小时以内 新手友好度 88/100
luainkernel/lunatik#2231 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 72/100
apache/arrow-swift#209 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 78/100
libretiny-eu/libretiny#435 ·
维护者通常 4 天内回复
-
Needs-Triage
难度 2/5 1-3 小时 新手友好度 70/100
维护者通常 2 天内回复
-
难度 2/5 1-3 小时 新手友好度 64/100
trezor/trezor-firmware#8210 ·
维护者通常 3 天内回复