Vencord / Vesktop

Vesktop is a custom Discord App aiming to give you better performance and improve linux support
GNU General Public License v3.0
2.79k stars 141 forks source link

User customizable assets #667

Open Covkie opened 2 weeks ago

Covkie commented 2 weeks ago

Content

This is an issue which is meant to unify #571, #352 and #355, #439, #517, #576, #261 as well as #298, #424, #384, #294. https://discord.com/channels/1015060230222131221/1216096162008924291/1252079440075161715

Design goals:

  1. Give the user full control over what icons Vesktop displays and/or uses.
    • excludes; in window assets, controllable via css and the app icon(read #505, DEs provide methods of achieving this).
  2. Store the user provided assets in the Vesktop cache dir. (all the prs that partially implement things do not do this.)
  3. Support Linux, Windows and MacOS unless stated otherwise

Scope:

  1. Startup splash customization
  2. Tray icon customization

Features:

  1. [ ] Startup Splash: (mostly implemented in #355 but doesn't follow #2 of design goals, nor have reusability in mind - tray stuff)

    • [x] Support static and animated image formats
    • [ ] Multi selection for randomized startup animation
    • [ ] Disable the startup splash window in its entirety #384
    • [ ] Adhere to design goal #2
  2. [x] Tray icon: Implemented in #517

    • [x] Change static icon
      1. [x] User can provide a static icon
      2. [x] Support unread badges:
        • Bake the unread indicator into the tray icon #261. (Colour is user pick-able or follows system accent)
      3. [ ] Animated instead of static
        • Would require splitting the animated image into frames baking each badge number into each frame then combining the animated image for displaying (whishlist)
          • [x] Voice chat status
            1. [x] Default audio, mute and deafened indicator follow system accent colour unless specified otherwise by a provided option
            2. [x] Default light and dark mode variants of the above which automatically switch using this unless overridden by the user
            3. [x] Allow the user to apply custom icons for any of the above 4 states (Audio detected, no audio, muted, deafend)
FYI System accent on linux is a standard portal. Read: flatpak/xdg-desktop-portal/pull/815. Try in your terminal: dbus-send --session --print-reply --dest=org.freedesktop.portal.Desktop /org/freedesktop/portal/desktop org.freedesktop.portal.Settings.Read string:'org.freedesktop.appearance' string:'accent-color'

cc: @Vendicated @PolisanTheEasyNick @ading2210 @alchzh @MrGarlic1

ading2210 commented 2 weeks ago

I personally don't think storing the splash animations in the config is a good idea, since those files have the potential to be huge. Storing a base64'd GIF that's several MB in size (and also syncing that to the cloud) will be fairly detrimental to performance. The other suggestion of copying it into the cache directory is probably better.

image

Covkie commented 2 weeks ago

The Vesktop cache is location at ~/.config/vesktop/sessionData on my system which i assumed is the default so i just used "config" interchangeably for "cache"

Tiagoquix commented 2 weeks ago

About accent color, do you mean like the text selection color that comes from the system theme that gets applied on the browser (let's say, Firefox) to also apply for Vesktop (instead of it using dark blue text selection color due to Chromium's default)? Not sure where accent color would change much on Discord with the exception of text selection. I think Vesktop mantainers would prefer to stick with Discord official colors somehow.

Also, FYI, there's custom icon themes that support the various states of Discord system tray (IIRC, system tray icon states work as expected on the official Discord client for Linux). Example of a custom theme that has support: https://github.com/search?q=repo%3APapirusDevelopmentTeam%2Fpapirus-icon-theme+discord&type=code

Not sure how the implementation is going to be, but it would be nice to have an option/toggle like "Use system icons" which would use system-provided icon packs that have support for it (such as Papirus) - otherwise fall back to Vesktop's provided ones.

If I'm not mistaken this is implemented by the DE, and (if I'm not mistaken) on KDE Plasma you can request a system icon with a simple call and get a returning value of it existing or not and then proceed from there. Not sure how it works on GNOME, but I think it's basically the same principle on GNOME and other DEs.

Covkie commented 2 weeks ago

Using the system accent colour is only meant for the tray. See #517 (Currently does not support Linux system accent).

I dont think a toggle would be needed for relying on system provided or user provided tray icons as the system theme would just override the icons, no?

Tiagoquix commented 2 weeks ago

I dont think a toggle would be needed for relying on system provided or user provided tray icons as the system theme would just override the icons, no?

Not sure. I think that by design Vesktop would prioritize its own icons and only search for system-provided icons if explicitly specified to do so (which a setting could do).

atriup commented 1 week ago

shiggy is the worst creation in the history of mankind

Covkie commented 1 week ago

mods drop a nuclear bomb on this user

atriup commented 1 week ago

i stand by my statement

nah seriously tho this should be customizable like most things are with themes

holly-hacker commented 6 days ago

Does this include customization of the window icon? To my knowledge, this is different from the tray icon. I'd like to customize the window icon because I'm used to scanning for the discord logo and Vesktop's square icon throws me off.

Pandapip1 commented 6 days ago

I'd also like a "boring mode" option that reverts all of those assets to the Discord default ones.

AAGaming00 commented 6 days ago

hasn't ven said that vesktop isn't going to redistribute discords icons

Pandapip1 commented 6 days ago

hasn't ven said that vesktop isn't going to redistribute discords icons

Is there anything stopping the client from just... fetching them from Discord itself and then saving it?

Vendicated commented 6 days ago

we can't use official discord icons. that would give Discord legal grounds to have Vencord taken down due to trademark infringement

ZribeDev commented 14 hours ago

Really need this on PopOS lol