SVG icon set
git clone https://git.lucas.co/cce-icons.git
hicolor/README.md (1.9K)
1 # App icons (`hicolor/`)
2
3 The XDG icon theme cce apps are looked up in. `ccebuild install` mirrors this
4 tree into `$XDG_DATA_HOME/icons/hicolor/`, so **the path here is the path there** —
5 the size and context of an icon are its directory (`scalable/apps`), not a rule
6 buried in the installer. Adding `48x48/apps/` or `scalable/mimetypes/` later needs
7 no change to `ccebuild`.
8
9 ## Why `hicolor` and not the `cce` theme
10
11 `hicolor` is the spec-mandated fallback: every implementation searches it last, no
12 matter what the user's icon theme is set to. The sibling `cursors/` theme installs
13 as `~/.local/share/icons/cce` and, as its README notes, **nothing selects it** —
14 there is no icon-theme setting anywhere in the DE. An app icon put there would
15 resolve for nobody. Putting them in `hicolor` means they resolve unconditionally.
16
17 Deliberately **no `index.theme` here.** The system `hicolor-icon-theme` package
18 already ships one at `/usr/share/icons/hicolor/index.theme` declaring every
19 size/context directory, and a theme is the union of its per-base-dir trees. A
20 second index in `$XDG_DATA_HOME` that listed only `scalable/apps` would be read
21 first and make every other hicolor directory invisible.
22
23 ## Every file is a symlink into `../../../svg/`
24
25 `svg/` stays the sole source (see the design-language notes there). An entry here
26 is a *name*, not artwork: `cce-files.svg -> ../../../svg/folder.svg` says "the
27 Files app is drawn with the folder glyph", and the glyph itself is edited in one
28 place. The link is intra-repo, so it never dangles in a standalone clone; `install`
29 dereferences it and writes a real file to the destination.
30
31 ## Adding an app
32
33 1. The name must equal the `Icon=` key in the crate's `<crate>.desktop`, which by
34 convention is the binary name. `Icon=cce-files` ⇒ `cce-files.svg`.
35 2. `ln -s ../../../svg/<glyph>.svg cce-<app>.svg` — or add a new glyph to `svg/`
36 first if none fits.
37 3. `ccebuild install` picks it up with no edit to the installer.