Vencord / Vesktop

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

[Feature Request] Implement discord:// scheme / protocol #769

Open Write opened 2 months ago

Write commented 2 months ago

Discord Account

No response

Motivation

I'd like to use this app as a discord replacement. This has been requested here https://github.com/Vencord/Vesktop/issues/200 but closed without any response / reason.

Solution

Add support for discord:// url-scheme

Alternatives

Proxying discord:// to vesktop:// but this doesn't exist either.

Additional context

No response

Request Agreement

mmaietta commented 2 months ago

Quick chime-in since I noticed this project leverages electron-builder. Adding a protocol scheme is very easy in the builder config.

  protocols: {
    name: "Vesktop Example",
    schemes: [
      "vesktop"
    ]
  },
  linux: {
    desktop: {
      MimeType: "x-scheme-handler/vesktop"
    },
  },
Vendicated commented 2 months ago

This has been requested here https://github.com/Vencord/Vesktop/issues/200 but closed without any response / reason.

I closed it because i decided it wasn't useful enough to warrant the time spent. I haven't seen the protocol used much, not even by Discord. What aspects of it do you consider useful? As in, which routes?

Write commented 2 months ago

This has been requested here #200 but closed without any response / reason.

I closed it because i decided it wasn't useful enough to warrant the time spent. I haven't seen the protocol used much, not even by Discord. What aspects of it do you consider useful? As in, which routes?

First example coming to my mind : Every time a server is joined via a web link, it should open the app, to the correct server that is.

Vendicated commented 2 months ago

that already works! :P it's done via RPC, not the protocol

Write commented 2 months ago

that already works! :P it's done via RPC, not the protocol

This doesn't work for me ? It tries to open a discord:// url scheme when I click on "launch app" and it just says no app exist for such scheme, or something along those lines. At least on macOS + Safari.

Guessing RPC would require discord to be already running ?

Vendicated commented 2 months ago

Oh i see, interesting! Indeed, RPC only works if you have Vesktop open. I wasn't aware they use the protocol when RPC is unreachable, but you are right

Write commented 2 months ago

In the meantime,

I used Platypus to register discord:// scheme and open vesktop app. It doesn't passtrough args to vesktop but merely just opens the app

Example of config for Platypus : shot on 2024-July-22@11h44(26)

In script path, I just added a script containing this :

#!/bin/sh

open -jga /Applications/Vesktop.app

When you tick "Accept dropped items", click "Settings" and then tick "Register as URI scheme handler" and simply add discord:// (or discord, I don't remember). This will register the discord:// link to your new app, and this new app will simply launch Vesktop when launched :)

Arcitec commented 2 weeks ago

I accidentally made a duplicate thread, so I'll bring the information here:


Motivation

Currently, Vesktop does not register itself to handle Discord links, so the browser won't offer to open Vesktop instead.

I am not sure if this can be solved.

Solution

The required MIME type for "Open in Discord App" support can be added with this command:

sudo desktop-file-edit --add-mime-type=x-scheme-handler/discord /usr/share/applications/vesktop.desktop

That command adds the following line to the .desktop file (which could be manually included in the project instead of relying on the above tool):

MimeType=x-scheme-handler/discord;

If someone already has Vesktop on the system, the MIME handler database has to be updated like this:

sudo update-desktop-database

(That last command might be needed as post-install in the packages such as RPM, I can't remember. It used to be required at least. But nowadays the system might detect the .desktop file and register MIME types automatically, at least with the DNF package manager. I really don't know.)

After registering this MIME support, you can verify that it works with this command in Terminal:

xdg-open "discord://test"

However, after registering this MIME support, I am not sure if something else will be needed to fully support "Open in Discord App" detection on pages such as https://discord.com/invite/GameSir

Most likely, the Electron wrapper will need some change too, so that the incoming discord:// URL gets forwarded to the built-in Discord web app.

Covkie commented 2 weeks ago

pure yappery ☝️

build #813 if you want this

Write commented 2 weeks ago

pure yappery ☝️

build #813 if you want this

The fuck ?