Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

User customizable assets #667

Open
11 of 13 tasks
Covkie opened this issue Jun 18, 2024 · 32 comments · May be fixed by #517
Open
11 of 13 tasks

User customizable assets #667

Covkie opened this issue Jun 18, 2024 · 32 comments · May be fixed by #517

Comments

@Covkie
Copy link
Collaborator

Covkie commented Jun 18, 2024

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.
  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 Add option for custom startup animations #355)

  2. Tray icon:
    Implemented in feat: Tray icon voice detection, customization and notification badge #517

    • Change static icon
      1. User can provide a static icon
      2. Support unread badges:
    • Voice chat status
      1. Default audio, mute and deafened indicator follow system accent colour unless specified otherwise by a provided option
      2. Default light and dark mode variants of the above which automatically switch using this unless overridden by the user
      3. 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

This comment was marked as outdated.

@Covkie

This comment was marked as outdated.

@Tiagoquix
Copy link
Contributor

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
Copy link
Collaborator Author

Covkie commented Jun 18, 2024

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
Copy link
Contributor

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

This comment was marked as abuse.

@Covkie

This comment was marked as outdated.

@atriup

This comment was marked as spam.

@holly-hacker
Copy link

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
Copy link

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

@AAGaming00
Copy link
Contributor

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

@Pandapip1
Copy link

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
Copy link
Member

Vendicated commented Jun 30, 2024

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

@ZribeDev

This comment was marked as spam.

@testsnake
Copy link

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

Would the Vencord logo with a circular purple background be legally distinct enough? For me, just a purple circle would be enough to manage without having to rewire my brain to look for a different logo. Could also include other background colours.

@Pandapip1
Copy link

I think it probably makes sense to move all the discussion on whether or not something is legal or not to a separate issue to avoid this cluttering this specific issue with unrelated stuff. This issue is specifically to allow user-provided assets.

@zoobporsor
Copy link

So is it possible to change the taskbar/notification area Icon to actually resemble Discord , or not? I'm confused.

@Arcitec
Copy link

Arcitec commented Sep 11, 2024

So is it possible to change the taskbar/notification area Icon to actually resemble Discord, or not?

Yes it's possible to change the Vesktop application icon, on Linux. As follows:

  • Go to my iconix repository and follow the instructions.
  • That's it.

What it does:

  • Lets you install the official Discord icon or your own custom SVG/PNG/JPG icon.
  • It will permanently change the launcher icon and taskbar/dock icon in a way that persists between app updates.
  • It will also change the running application icon of the window itself, which GNOME shows under the window preview in Activities Overview (when you press the Meta/Windows key to see an overview of all windows).

Here is an example with my own, custom icon. I have designed and included 18 different icon themes (54 icons total) in the repository for people who want to get started quickly.

image

It will not change the notification area icon, since it's created by Vesktop itself (but that feature is coming to Vesktop later, as the 1st post in this thread explains):

image

@ZribeDev
Copy link

News:

* Anyone who saw my tool release [in the previous message](https://github.com/Vencord/Vesktop/issues/667#issuecomment-2342678343) should read that message again.

* I have released a major rewrite, which is now able to theme _every_ icon for Vesktop except the notification tray. I have also designed and included 18 different, custom icon themes, for those who want to get started quickly without having to think about it.

Have fun!

Could you open the issues tab in your repo?

@Arcitec
Copy link

Arcitec commented Sep 15, 2024

Could you open the issues tab in your repo?

Alright, it's enabled, so you can make tickets. I don't want large feature requests though. :)

@trevorknorpp
Copy link

So how do we actually change it? I've been starting at this page for a long time trying to figure out what to actually do.

@cootshk
Copy link

cootshk commented Sep 16, 2024

So how do we actually change it? I've been starting at this page for a long time trying to figure out what to actually do.

You can clone the repo, replace the icons with the official ones, and build it from source. I built it if you want to use my build files

@holly-hacker
Copy link

Perhaps it's best to move this conversation about an external tool to that tool's issue tracker, and leave this issue to the implementation of user customizable assets within Vesktop. That way, people won't get pinged for off-topic conversation.

@lewisakura
Copy link
Member

Yes, please do. If further discussion regarding third-party patching tools occurs I'll lock this issue and we'll work on it elsewhere. We shouldn't be promoting third-party patches because we can't provide support for them.

@PacketAuditor
Copy link

PacketAuditor commented Oct 14, 2024

Any movement on this? Or a way to change the icon without building from source? The default tray icon is killing my vibes. I can change the icon in the task manager on KDE, but not the tray.

image

@AAGaming00
Copy link
Contributor

Any movement on this? Or a way to change the icon without building from source? The default tray icon is killing my vibes. I can change the icon in the task manager on KDE, but not the tray.

image

for once a valid complaint about this that isn't "rainbow bad" lol

@Arcitec
Copy link

Arcitec commented Nov 29, 2024

For me it's just about how distracting and out of place the tray icon is. We're talking about a pixelated 8-bit looking janky icon with some color, when the established style for tray icons is to have high-resolution monochrome icons. When my eyes glance at the tray it's almost like something looks broken. Like one of the icons didn't render properly and didn't antialias itself.

image

That tray icon will only be changeable by adding support for that in Vesktop itself. Since it's being registered via a tray API/method that doesn't have a way to override icons.

By the way, why not make the default tray icon a high-res monochrome "furry cat face" (the Vesktop mascot, but just the outline of its face and ears)? Then it will fit in with the style of other tray icons on Linux.

As for the normal app icon in the dock/launcher, it's easily changed by installing an icon via #667 (comment). And that's actually probably the only way to do it universally for both Flatpaks and Native installations. Because applications on Linux don't really have full control over their own dock/status bar icons. Those icons are fetched via the application's .desktop file and its Icon= line. So my solution there writes a per-user icon which the desktop environment will display.

@PacketAuditor
Copy link

For me it's just about how distracting and out of place the tray icon is. We're talking about a pixelated 8-bit looking janky icon with some color, when the established style for tray icons is to have high-resolution monochrome icons. When my eyes glance at the tray it's almost like something looks broken. Like one of the icons didn't render properly and didn't antialias itself.

image

That tray icon will only be changeable by adding support for that in Vesktop itself. Since it's being registered via a tray API/method that doesn't have a way to override icons.

As for the normal app icon in the dock/launcher, it's easily changed by installing an icon via #667 (comment). And that's actually probably the only way to do it universally for both Flatpaks and Native installations. Because applications on Linux don't really have full control over their own dock/status bar icons. Those icons are fetched via the application's .desktop file and its Icon= line. So my solution there writes a per-user icon which the desktop environment will display.

Totally agree!

@Pandapip1
Copy link

Pandapip1 commented Dec 3, 2024

Because applications on Linux don't really have full control over their own dock/status bar icons.

This was true, but mercifully the Wayland folks approved the following protocol: https://wayland.app/protocols/xdg-toplevel-icon-v1

@Arcitec
Copy link

Arcitec commented Dec 3, 2024

Because applications on Linux don't really have full control over their own dock/status bar icons.

This was true, but mercifully the Wayland folks approved the following protocol: https://wayland.app/protocols/xdg-toplevel-icon-v1

Oh. That protocol definitely solves an issue, but it does not solve the app icon issue.

Quoted from the top of that page: "A toplevel icon represents the individual toplevel (unlike the application or launcher icon, which represents the application as a whole), and may be shown in window switchers, window overviews and taskbars that list individual windows."

Basically it's a protocol where every parent window can set its own individual icon, so when you alt-tab between multiple windows of an app, each can have separate icons.

But the app itself and launchers will still use the .desktop file's Icon= icon to display the actual app icon before it launches.

The new protocol does solve an annoying issue though: Many apps don't have an associated .desktop file but still create windows, which gives them a generic "no icon" icon. That protocol will let apps override their own opened window icons, which is a really nice improvement to remove some jankiness of Linux (hopefully Steam decides to use it for Proton to show the actual game icons instead of generic "no icon" when Windows games are running).

@Pandapip1

This comment was marked as off-topic.

@Covkie
Copy link
Collaborator Author

Covkie commented Dec 3, 2024

Please stop discussing changing the app icon in this issue. That is not what this is for.

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 a pull request may close this issue.