Skip to content

mots/Noctalia-Dynamic-Icons

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Noctalia-Dynamic-Icons

Noctalia-Dynamic-Icons is a way to dynamically apply color-themed icons as Noctalia template. It uses git as a smart cache to avoid expensive retinting or excessive storage use.


output.mp4

The Concept

Upstream icon sets like Colloid are designed for a "one-time install." This tool makes them dynamic components that shift with your wallpaper or system accent colors.

  • Arbitrary Colors: Generate icons for any hex code, not just the hardcoded presets.
  • Generate Once, Cache Forever: The tool calls the icon generation script the first time a color is requested. The result is then indexed and cached on a local Git branch for all future runs with that same color.
  • Atomic Swaps: Uses Git plumbing to update the entire icon set in a single operation, preventing half-finished theme states.

Performance & Efficiency

Observed Stats

Icon sets have a large footprint. Storing them traditionally for a dynamic setup is unsustainable:

  • Standard Footprint: A single full install occupies ~105MB.
  • Traditional Storage: 5 colors would normally cost ~525MB.
  • The Delta Advantage: Because variants are structurally identical, Git stores only the "diffs." 5+ variants occupy only ~4MB—a ~99% reduction in overhead compared to standard directory storage.

Real-Time Hot-Reload

  • Namespace Stability: Force-patches index.theme to a consistent name (Colloid-Noctalia) so OS settings never "lose" the theme.
  • Instant Refresh: Signals GNOME/Nautilus via D-Bus to redraw icons immediately—no session restart required.

Integration with noctalia-shell

Designed to be a modular component of the noctalia-shell ecosystem.

File Structure

~/.config/noctalia/
├── user-templates.toml        # Template registry
├── templates/
│   └── icons.cfg              # Variable mapping
└── mots/
    ├── bin/dynamic_icons.sh   # Core logic
    └── etc/icon-theme.conf    # Rendered config

Installation & Setup

You can use the provided install.sh to set up the directory structure, or configure it manually:

  1. Register Template (user-templates.toml):
    [templates.colloid-icons]
    input_path = "~/.config/noctalia/templates/icons.cfg"
    output_path = "~/.config/noctalia/mots/etc/colloid-noctalia.conf"
    post_hook = "sh ~/.config/noctalia/mots/bin/dynamic_icons.sh"
  2. Define Input (templates/icons.cfg):
    THEME_COLOR="{{colors.primary.default.hex}}"
    COLOR_SUFFIX="Noctalia"
    VARIANT="-Dark"

About

Dynamically colored icons for noctalia shell

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages