home: relabel Vesktop as Discord and fix screenshare quality

Add vesktop (Discord+Vencord) with a proper Wayland/PipeWire screenshare
to replace the official discord client, whose Linux WebRTC path starved
the stream into macroblocks. A launcher-entry override + an icon-only
derivation (real Discord SVG, no runtime closure) relabel it to
"Discord" with the genuine logo. Drops the official discord package.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-28 00:54:28 +01:00
parent fde84f60ff
commit eed3db9f05

View File

@@ -16,6 +16,17 @@ let
fi fi
exec ${share-picker}/bin/hyprland-preview-share-picker "$@" exec ${share-picker}/bin/hyprland-preview-share-picker "$@"
''; '';
# Icon-only derivation: copies the real Discord logo (scalable SVG) out of the
# discord package under the theme name `discord`, so the relabeled Vesktop
# launcher entry below shows the genuine Discord logo. The output is the raw
# SVG bytes with no store references, so `discord` itself stays OUT of the
# runtime closure — it's fetched only at build time and freed by GC.
discord-icon = pkgs.runCommand "discord-icon" { } ''
install -Dm644 \
"${pkgs.discord}/opt/Discord/modules/discord_desktop_core/app/images/discord.svg" \
"$out/share/icons/hicolor/scalable/apps/discord.svg"
'';
in in
{ {
imports = [ imports = [
@@ -424,6 +435,24 @@ EOF
# xdg-open and apps use this for directories. The claude-cli handler was # xdg-open and apps use this for directories. The claude-cli handler was
# registered imperatively by claude-code — kept here since HM now owns # registered imperatively by claude-code — kept here since HM now owns
# mimeapps.list. # mimeapps.list.
# Relabel Vesktop's launcher entry to "Discord" with the real Discord logo.
# HM writes ~/.local/share/applications/vesktop.desktop, which shadows the
# package's own copy (user data dir wins in XDG_DATA_DIRS). Exec stays
# `vesktop`; StartupWMClass stays Vesktop so window matching still works.
xdg.desktopEntries.vesktop = {
name = "Discord";
genericName = "Internet Messenger";
exec = "vesktop %U";
icon = "discord";
categories = [ "Network" "InstantMessaging" "Chat" ];
mimeType = [ "x-scheme-handler/discord" ];
type = "Application";
settings = {
Keywords = "discord;vencord;electron;chat;";
StartupWMClass = "Vesktop";
};
};
xdg.mimeApps = { xdg.mimeApps = {
enable = true; enable = true;
defaultApplications = { defaultApplications = {
@@ -437,6 +466,14 @@ EOF
# config.yml into the store, which breaks `gh auth login`'s first-run write. # config.yml into the store, which breaks `gh auth login`'s first-run write.
gh gh
nautilus nautilus
# Vesktop: Discord+Vencord with a real Wayland/PipeWire screenshare — a
# sane WebRTC bitrate (the official `discord` client starved it into
# macroblocks) and it streams desktop audio, which official Linux Discord
# can't. Uses the same xdg-desktop-portal-hyprland picker wired up above.
# Relabeled to "Discord" with the real Discord logo via the desktop-entry
# override + discord-icon below.
vesktop
discord-icon
slack slack
claude-code claude-code
ripgrep ripgrep