Discord

出自 ArchWiki

Discord 是一款专有的、跨平台的、一体化的语音和文本聊天应用程序。许多开源社区也拥有官方 Discord 服务器。Discord 可以通过网页浏览器或桌面应用程序使用,桌面应用程序使用 Electron 构建。

安装

您可以使用以下软件包之一来安装 Discord 的桌面应用程序

图形客户端

官方应用

或者,Discord 也可作为 Flatpak 提供。这可以修复一些与系统库相关的问题,并在某些情况下提高性能,但需要额外的工作来启用 Rich Presence。请参阅 #在 Flatpak 上启用 Rich Presence

$ flatpak install discord

使用系统 electron 的官方客户端

官方客户端,使用系统提供的 electron 以提高安全性并可能获得更好的性能

第三方客户端

警告: 使用第三方客户端,或任何修改 Discord 客户端的非官方软件包或应用程序,均违反 Discord 服务条款,并可能导致您的帐户被封禁 [1]。使用此类软件包时,您将承担全部责任。避免使用过时或废弃的客户端,因为它们更可能在其 API 中触发 Discord 的反垃圾邮件系统,从而导致您的帐户被封禁。
  • Abaddon — 一款使用 C++/gtkmm 构建的替代 Discord 客户端,支持语音。
https://github.com/uowuo/abaddon || abaddonAUR
  • discord-screenaudio — 一款自定义 Discord 客户端,支持在 Linux 上进行带音频的流式传输。
https://github.com/maltejur/discord-screenaudio || discord-screenaudioAUR
  • Dissent — Go 语言开发的 GTK4 Discord 客户端。
https://github.com/diamondburned/dissent || dissent-gitAUR
  • Legcord — 一款自定义客户端,旨在增强您的 Discord 体验,同时保持一切轻量级。
https://github.com/Legcord/Legcord || legcordAUR
  • Ripcord — 一款轻量级的、专有的桌面聊天客户端,适用于以群组为中心的服务,如 Slack 和 Discord,基于 Qt 工具包构建。
https://cancel.fm/ripcord/ || ripcordAUR
  • Vesktop — Vesktop 是一款跨平台桌面应用程序,旨在为您提供更流畅的 Discord 体验。支持带音频的屏幕广播。
https://github.com/Vencord/Vesktop || vesktop-binAUR
  • WebCord — Web 客户端的封装器,可提高隐私性并允许在 Wayland 上进行屏幕共享。
https://github.com/SpacingBat3/WebCord || webcordAUR

命令行客户端

AUR 上有许多基于 CLI 的第三方客户端(Github 上也有未打包的客户端),尽管大多数已弃用或损坏。discordo 仍在维护并在 AUR 上打包为 discordo-gitAUR

聊天客户端插件

  • purple-discordlibpurple 基础的消息传递程序(如 Pidgin)的 Discord 插件
https://github.com/EionRobb/purple-discord || purple-discord-gitAUR
  • bitlbee-discordBitlbee 的 Discord 插件
https://github.com/sm00th/bitlbee-discord || bitlbee-discord-gitAUR
  • weechat-discordWeeChat 的 Discord 插件
https://github.com/terminal-discord/weechat-discord || weechat-discord-gitAUR

自定义 CSS & 插件

  • BetterDiscord — 一个允许修改 Discord 以使用自定义 CSS 和插件的项目。
https://betterdiscord.app/ || betterdiscord-installerAUR
  • Discocss — 一个简单的脚本,可以将自定义 CSS 注入到 Discord 客户端中。要将 CSS 注入到 discord-ptbAURdiscord-canaryAUR 版本中,请将任何提及 discord 文件夹的地方替换为正在使用的版本。
https://github.com/mlvzk/discocss || discocss-gitAUR
  • Replugged — Powercord 的一个分支,这是一款轻量级的 Discord 客户端 mod,专注于简洁性和性能。
https://github.com/replugged-org/replugged || replugged-electron-gitAUR
  • Vencord — 一款 Discord 客户端 mod,在 Discord 启动之前完全加载,旨在使其更快更稳定。
https://github.com/Vendicated/Vencord || vencord-installer-binAUR

覆盖层

对于 Linux 客户端,Discord 不支持游戏内覆盖层。discover-overlayAUR 是一款提供这些功能的开源 GTK 应用程序。Discover 可以在 X11 或 wlroots 环境下工作。由于依赖于高级 RPC,这与第三方客户端不兼容。

实用程序

  • Chuncord — 一款命令行工具,用于使用 webhook 将文件分部分上传到 Discord CDN
https://git.lemonsh.moe/lemon/chuncord || chuncordAUR

技巧与窍门

GNOME 顶部栏图标

如果您希望在 GNOME 的顶部栏上显示图标,请安装 AppIndicator 和 KStatusNotifierItem 支持扩展libappindicator-gtk3

Discord 提示更新,但仓库中尚不可用

如果有可用更新,Discord 将拒绝启动,并显示以下消息“Must be your lucky day, there's a new update!”(一定是您的幸运日,有新更新!)。如果更新后的版本在官方仓库中尚不可用,您可以使用 Arch 构建系统 构建并安装更新后的软件包。

要禁用更新检查,请将行 "SKIP_HOST_UPDATE": true 添加到 ~/.config/discord/settings.json。如果该文件不存在,请创建它并添加以下内容

~/.config/discord/settings.json
{
  "SKIP_HOST_UPDATE": true
}

请注意,如果该文件存在,由于 JSON 要求,您需要在 WINDOW_BOUNDS 对象后添加一个额外的逗号,即

{
  "IS_MAXIMIZED": true,
  "IS_MINIMIZED": false,
  "WINDOW_BOUNDS": {
    "x": 2240,
    "y": 219,
    "width": 1280,
    "height": 720
  },
  "SKIP_HOST_UPDATE": true
}

如果上述方法仍然提示更新,一个快速的临时替代方法是将新的 discord-0.0.x.tar.gz 文件解压到例如 /opt/discord-temporary/,更改新解压的 discord.desktop 的名称,并将其符号链接到您的 ~/.local/share/applications/ 文件夹中,最好也更改新的 discord.desktop 文件中的 Name,以便将其与您的系统 Discord 客户端区分开来。

启动 Discord 时最小化

可以通过 --start-minimized 参数以最小化方式启动 Discord。

麦克风噪音抑制

Discord 现在内置了噪音抑制功能,标准选项和由 Krisp 提供的 AI 驱动选项均可用。您还可以按照 PipeWire#语音噪音抑制 在 PipeWire 上提供您自己的噪音抑制。

屏幕共享与音频

Discord 现在原生 支持 Linux 上的音频流,支持已在 0.0.76 版本中添加。

Web RPC 扩展

有一些扩展程序可用于在您的 Discord Rich Presence 中显示选定的 Web 活动

启用开发者工具

警告: 粘贴到开发者工具 Console 中的代码有能力窃取您的凭据并危害您的 Discord 帐户。除非您知道自己在做什么,否则不要启用此功能。

在最近的一次更新之后,出于安全原因,默认情况下在 Discord 上禁用了 devtools。要重新启用它们,请将其添加到 ~/.config/discord/settings.json

  "DANGEROUS_ENABLE_DEVTOOLS_ONLY_ENABLE_IF_YOU_KNOW_WHAT_YOURE_DOING": true

启用文本转语音

默认情况下,文本转语音在 Discord 客户端中被禁用。但是,可以使用 --enable-speech-dispatcher 标志启用它。这会利用 speech-dispatcher 守护程序来输出语音。

原生 Wayland 渲染

Discord 和其他 Electron 应用程序默认使用 X11 并在 Wayland 会话上通过 Xwayland 运行,这是可以更改的。请参阅 Wayland#Electron

注意
  • 由于官方 Discord 客户端不使用系统 Electron,因此它不会使用 ~/.config/electron-flags.conf 中的标志。
  • 如果您使用的是 flatpak 版本,则必须在 Flatseal 或 Plasma 设置中授予 Discord 使用 Wayland 的权限,否则它将无法启动。这可能也适用于其他 flatpak 应用程序。

故障排除

滚动服务器列表时卡顿

如果您在滚动服务器列表时遇到卡顿和停顿,请确保您的硬件加速工作正常。您可以通过在基于 Chromium 的浏览器中打开 chrome://gpu 来执行此操作。如果它不起作用,请查看关于 硬件视频加速 的章节,并尝试使用一些附加选项运行 Discord

$ discord --ignore-gpu-blocklist --disable-features=UseOzonePlatform --enable-features=VaapiVideoDecoder --use-gl=desktop --enable-gpu-rasterization --enable-zero-copy

语音通话期间出现爆裂声

如果您在语音聊天中遇到爆裂声,请尝试 PulseAudio/故障排除#故障排除缓冲区下溢(毛刺、跳过、爆裂声) 中概述的步骤。

Wayland 上的屏幕共享

本文或章节已过时。

原因: Discord 屏幕共享现在可以在 Wayland 上工作,无需任何第三方解决方法(在 Talk:Discord 中讨论)

从 0.0.17 版本开始,屏幕共享功能在 Wayland 上无法工作,即使启用 Ozone for Wayland,使用 /usr/bin/discord --enable-features=UseOzonePlatform --ozone-platform=wayland 也不行。请参阅 此 Reddit 帖子Discord 错误报告

可能的解决方法是

在 Flatpak 上启用 Rich Presence

使用 Flatpak 版本的 Discord 时,Rich Presence 将无法开箱即用。要使其工作,需要创建从 $XDG_RUNTIME_DIR/discord-ipc-0$XDG_RUNTIME_DIR/app/com.discordapp.Discord/discord-ipc-0 的符号链接。要为当前用户会话创建符号链接,请运行

$ ln -sf {app/com.discordapp.Discord,$XDG_RUNTIME_DIR}/discord-ipc-0

要自动创建符号链接,可以使用 systemd-tmpfiles,方法是在 ~/.config/user-tmpfiles.d/ 中扩展名为 .conf 的文件中添加以下行

L %t/discord-ipc-0 - - - - app/com.discordapp.Discord/discord-ipc-0

长时间通话期间 Discord 变得无响应

如果 Discord 在长时间通话期间变得无响应,请尝试 --no-sandbox 参数。您也可以将以下内容添加到您的 .bashrc 或 shell 的别名文件中

alias discord='discord --no-sandbox'

收到 ping 或消息后 Discord 卡死

如果一条会触发通知的消息(ping、DM、启用通知的服务器等)导致客户端卡死,则客户端无法找到通知服务器。要在不安装通知服务器的情况下修复它,请在通知选项中禁用启用桌面通知

通知声音在 PipeWire 下无法工作

请参阅 PipeWire#Discord 没有通知声音

表情符号渲染不正确

如果您遇到关于表情符号的渲染问题(例如,渲染为矩形),discord-canary-electron-binAUR 具有适当的字体作为可选依赖项。您应该安装 ttf-symbolaAURnoto-fonts-cjknoto-fonts-emoji

ttf-twemojiAUR 是使表情符号出现在频道名称中所需的。请务必将 75-twemoji.conf 安装到 /etc/fonts/conf.d/,默认情况下不会这样做。

点击链接无法打开网页浏览器

如果点击链接没有在您的默认网页浏览器中打开选项卡,您应该安装 xdg-utils 可选依赖项。

KDE Plasma 系统托盘中 Discord 图标模糊

您可以尝试通过安装 libappindicator-gtk3 来替换 libappindicator-gtk2 来解决此问题,后者已知会导致此问题。

Discord 向 systemd 日志中写入大量信息

您可能会发现 Discord 在您的 日志 中创建了大量消息,格式如下

(device_info_linux.cc:45): NumberOfDevices

要禁用导致此污染的日志记录:转到用户设置,选择“语音和视频”,滚动到屏幕底部并禁用“调试日志记录”。

纯 ALSA 环境中没有语音聊天

Discord 的桌面应用程序依赖于 PulseAudio 进行语音聊天,并且不直接在 ALSA 上运行。在这种情况下,使用 apulse 作为解决方法已弃用。如果您想在没有 PulseAudioPipewire 的情况下使用 Discord 的语音聊天,请通过 基于 Chromium 的网页浏览器 访问 Discord 的 Web 客户端。或者,作为基于 Chromium 的封装器,Webcord 在纯 ALSA 环境中可以工作。

如果您选择此路线并且无法取消静音(即获得访问麦克风的权限),请在 ~/.asoundrc将其设置为默认捕获设备。此外,在 Discord 中,转到用户设置 > 语音和视频 > 输入设备,并确保选中默认

通知徽章丢失

Discord 可以在任务栏图标上显示徽章,显示未读提及的数量。如果未显示徽章,请验证是否安装了 libunityAUR 软件包,因为此功能需要它才能工作。

如果您使用的是 KDE Plasma,您可能需要在启动 Discord 之前手动设置环境变量 XDG_CURRENT_DESKTOP=KDE5

Wayland 上 NVIDIA 闭源驱动黑屏

Wayland 上的 Discord 需要 VA-API 支持,而 NVIDIA 闭源驱动程序不具备此功能。可以使用诸如 libva-nvidia-driver 之类的转换层来获得 VA-API 支持。

表情是方块

您需要安装一个处理 表情符号 的字体包才能使其正确渲染。

使用 Wireplumber 时,当 Discord 处于活动状态时,麦克风音量不断降低

可以通过删除一些 WirePlumber 对 discord 的权限来解决此问题。感谢 Martin Bartlettaskubuntu.com 上提供的解决方案。


注意: 确保二进制名称与您正在使用的 discord 版本匹配,这通常可以是 electron。在这种情况下,这将影响所有 electron 应用程序。
~/.config/wireplumber/wireplumber.conf.d/99-stop-microphone-auto-adjust.conf
access.rules = [
  {
    matches = [
      {
        application.process.binary = discord
      }
    ]
    actions = {
      update-props = {
        default_permissions = "rx"
      }
    }
  }
]

然后重启整个音频堆栈。

$ systemctl --user restart wireplumber pipewire pipewire-pulse