[Enhancement]: Allow admin-uploaded icons for libraries #1997

Open
opened 2026-04-25 00:02:13 +02:00 by adam · 8 comments
Owner

Originally created by @ZLoth on GitHub (May 19, 2024).

Type of Enhancement

Web Interface/Frontend

Describe the Feature/Enhancement

The current set of icons is too limiting. It would be nice to be able to upload a custom icon within a set size limit to the library icon set, then be able to set that library with that icon.

Why would this be helpful?

Due to the large number of books in my collection, I have subdivided my collection into categories including some specific sub-genres. Thus, it would be nice if I could set custom icons such as:

  • Doctor Who - Blue Police Box
  • Torchwood - The Torchwood Institute logo
  • Lord of the Rings - The One Ring
  • Star Wars - Light Sabre
  • Star Trek - The logo
  • Sherlock Holes - Magnifying Glass, Side Silouette

Future Implementation (Screenshot)

No screen shot

Audiobookshelf Server Version

2.9.0

Current Implementation (Screenshot)

image

Originally created by @ZLoth on GitHub (May 19, 2024). ### Type of Enhancement Web Interface/Frontend ### Describe the Feature/Enhancement The current set of icons is too limiting. It would be nice to be able to upload a custom icon within a set size limit to the library icon set, then be able to set that library with that icon. ### Why would this be helpful? Due to the large number of books in my collection, I have subdivided my collection into categories including some specific sub-genres. Thus, it would be nice if I could set custom icons such as: * Doctor Who - Blue Police Box * Torchwood - The Torchwood Institute logo * Lord of the Rings - The One Ring * Star Wars - Light Sabre * Star Trek - The logo * Sherlock Holes - Magnifying Glass, Side Silouette ### Future Implementation (Screenshot) No screen shot ### Audiobookshelf Server Version 2.9.0 ### Current Implementation (Screenshot) ![image](https://github.com/advplyr/audiobookshelf/assets/6700159/844f0896-bb6d-4dd8-b441-56bf19918a1b)
adam added the enhancementbacklog labels 2026-04-25 00:02:13 +02:00
Author
Owner

@BimBimSalaBim commented on GitHub (May 27, 2024):

I've looked into this and from my understanding this would need to rehaul the whole icon system. Currently icons are in a font generated by icomoon, while it is possible to modify the fonts and the global libraryIcons var, allowing uploads through the UI might be a big task.

files that will need to be modified:
client\assets\absicons.css
client\components\ui\MediaIconPicker.vue
client\store\globals.js

and all the font stuff

@BimBimSalaBim commented on GitHub (May 27, 2024): I've looked into this and from my understanding this would need to rehaul the whole icon system. Currently icons are in a font generated by icomoon, while it is possible to modify the fonts and the global `libraryIcons` var, allowing uploads through the UI might be a big task. files that will need to be modified: client\assets\absicons.css client\components\ui\MediaIconPicker.vue client\store\globals.js and all the font stuff
Author
Owner

@advplyr commented on GitHub (May 27, 2024):

Thanks @BimBimSalaBim that's correct. This is unlikely to be supported.

@advplyr commented on GitHub (May 27, 2024): Thanks @BimBimSalaBim that's correct. This is unlikely to be supported.
Author
Owner

@ZLoth commented on GitHub (May 28, 2024):

icons are in a font generated by icomoon

This set? https://iconduck.com/sets/icomoon-free-icon-set . If so, then I can look for possibilities

@ZLoth commented on GitHub (May 28, 2024): >icons are in a font generated by icomoon This set? https://iconduck.com/sets/icomoon-free-icon-set . If so, then I can look for possibilities
Author
Owner

@BimBimSalaBim commented on GitHub (May 29, 2024):

@ZLoth the icon set used is under client/static/fonts/absicons

if you want to just change the icons for yourself its super easy, you just have to import the absicons.svg into IcoMoon and add your icons and export and rename the files back to the original names. Then you just have to add the name into the libraryIcons array on line 81 in client/store/globals.js aswell as adding a component to the client/assets/absicons.css with the unicode name of the icon from the absicons.svg.

hope this helps.

@BimBimSalaBim commented on GitHub (May 29, 2024): @ZLoth the icon set used is under client/static/fonts/absicons if you want to just change the icons for yourself its super easy, you just have to import the absicons.svg into IcoMoon and add your icons and export and rename the files back to the original names. Then you just have to add the name into the `libraryIcons` array on line 81 in client/store/globals.js aswell as adding a component to the client/assets/absicons.css with the unicode name of the icon from the absicons.svg. hope this helps.
Author
Owner

@WickedSquirrel commented on GitHub (Oct 9, 2024):

@ZLoth the icon set used is under client/static/fonts/absicons

if you want to just change the icons for yourself its super easy, you just have to import the absicons.svg into IcoMoon and add your icons and export and rename the files back to the original names. Then you just have to add the name into the libraryIcons array on line 81 in client/store/globals.js aswell as adding a component to the client/assets/absicons.css with the unicode name of the icon from the absicons.svg.

hope this helps.

Would this then also work in tandem with the android app?
And would I have to do it again on every update?

@WickedSquirrel commented on GitHub (Oct 9, 2024): > @ZLoth the icon set used is under client/static/fonts/absicons > > if you want to just change the icons for yourself its super easy, you just have to import the absicons.svg into IcoMoon and add your icons and export and rename the files back to the original names. Then you just have to add the name into the `libraryIcons` array on line 81 in client/store/globals.js aswell as adding a component to the client/assets/absicons.css with the unicode name of the icon from the absicons.svg. > > hope this helps. Would this then also work in tandem with the android app? And would I have to do it again on every update?
Author
Owner

@nichwall commented on GitHub (Oct 9, 2024):

Would this then also work in tandem with the android app?
And would I have to do it again on every update?

I believe you would also need to add the icon to the app.

You should not need to manually redo it every time since you would be running from source. If you create a fork of the repo, you can pull upstream changes every release, and as long as the same files haven't been changed, there wouldn't be any merge conflicts.

@nichwall commented on GitHub (Oct 9, 2024): > Would this then also work in tandem with the android app? > And would I have to do it again on every update? I believe you would also need to add the icon to the app. You should not need to manually redo it every time since you would be running from source. If you create a fork of the repo, you can pull upstream changes every release, and as long as the same files haven't been changed, there wouldn't be any merge conflicts.
Author
Owner

@WickedSquirrel commented on GitHub (Oct 9, 2024):

will loom into this and try it out
I have never forked anything and would have to try out how to change the source of my container without breaking it

But thank you for your help!

@WickedSquirrel commented on GitHub (Oct 9, 2024): will loom into this and try it out I have never forked anything and would have to try out how to change the source of my container without breaking it But thank you for your help!
Author
Owner

@BimBimSalaBim commented on GitHub (Oct 9, 2024):

will loom into this and try it out I have never forked anything and would have to try out how to change the source of my container without breaking it

For the web client you would either run off a dev environment or rebuild for every update

But for the mobile app you would need to rebuild every time you want an update.

Honestly with how good the whole system is you probably would be fine without getting updates as long as everything you want/use works(new features are always nice).

@BimBimSalaBim commented on GitHub (Oct 9, 2024): > will loom into this and try it out I have never forked anything and would have to try out how to change the source of my container without breaking it For the web client you would either run off a dev environment or rebuild for every update But for the mobile app you would need to rebuild every time you want an update. Honestly with how good the whole system is you probably would be fine without getting updates as long as everything you want/use works(new features are always nice).
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/audiobookshelf#1997