Skip to content

Built in icon gallery with .streamDeckIconPack support#200

Open
NecroKote wants to merge 6 commits intonekename:mainfrom
NecroKote:icon-gallery
Open

Built in icon gallery with .streamDeckIconPack support#200
NecroKote wants to merge 6 commits intonekename:mainfrom
NecroKote:icon-gallery

Conversation

@NecroKote
Copy link

What

Allow users select from internal icon gallery. The gallery consists of icons from Installed icon packs. For now only native StreamDeck packs are supported (.streamDeckIconPack)

Hold Alt (Option on mac) while clicking on icon to open build in icon selector.
Selector supports search by icon name and icon pack name.

icon_packs.mp4

How

  • new tauri module iconpacks with custom icon:// protocol
  • managed IconPackManager as state
    • fst-based search. Hopefully allowing thousands of installed icons to be searchable in an instant. Probably a total mess and definitely an overkill
  • custom tauri frontend commands that call IconPackManager
  • new set of frontend components. Too many to mention

I've barely tested this on my mac, and it somehow works 🤷
Totally needs to be polished a bit before merging.

Let me know what you think @nekename.

@nekename
Copy link
Owner

Wow, that's a lot of stuff! Thanks!

My first concern is that the Elgato Marketplace now has DRM "protection" on all asset files, which if it doesn't apply to icon packs yet, it definitely will soon.

That aside, it's a lot of new code, so I will wait until you have tested it thoroughly and cleaned up any of the "mess" you mentioned, because otherwise I will be spending a lot of time reviewing it again and again whenever you make a change!

I would also want to let you know that I am crazy about making sure everything is the same everywhere in a codebase - that means, for example, using the same Tailwind classes where possible, or the same import groupings, so just keep that in mind :)

I think that the alt+click UX is kinda clanky. Maybe change the "solid colour" button to a row of three icon buttons: solid colour, icon picker, and reset to default. That way we can avoid the alt+click and remove the right-click to reset.

I'll take a skim over the code now but will leave my detailed review to when you think it's ready :)

Thanks again

@nekename
Copy link
Owner

nekename commented Dec 22, 2025

Ok, I've just skimmed over the Rust code very very briefly.

The formatting is all over the place with a mix of tabs and spaces. Please follow the checklist in the contributing section of the README to format and lint all of your code.

Screenshot_20251222-093504.png

Secondly, the use statements / imports seem poorly organised: please organise them like the rest of the codebase (super, crate, std, other). You're also using .into() to convert &str to String whereas the rest of the codebase uses .to_owned()

I've only looked for 2 mins on my phone tho and not at all at the frontend

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants