跳转至内容

Discord

来自 ArchWiki

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

安装

你可以使用以下包之一来安装 Discord 桌面应用程序

图形客户端

官方应用程序

此外,Discord 也可以作为 Flatpak 使用。这可能会解决一些与系统库相关的问题并在某些情况下提高性能,但需要额外操作来启用 Rich Presence。参见 #在 Flatpak 上启用 Rich Presence

$ flatpak install com.discordapp.Discord

使用系统 Electron 的官方客户端

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

第三方客户端

警告 使用第三方客户端,或任何修改 Discord 客户端的非官方包或应用程序,都违反了 Discord 服务条款,并可能导致你的账号被封禁 [1]。使用此类软件包需自行承担全部责任。请避免使用过时或弃用的客户端,因为它们更有可能触发 Discord API 中的反垃圾系统,从而导致账号被封。
  • Abaddon — 一个使用 C++/gtkmm 开发的替代 Discord 客户端,支持语音。
https://github.com/uowuo/abaddon || abaddonAUR
  • discord-screenaudio — 一个支持在 Linux 上进行带音频推流的自定义 Discord 客户端。
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
  • LibreDiscord — LibreDiscord 是一个自由开源的 Discord 语音客户端,使用 C 语言结合 GTK3 和 GLib 编写。
https://gitlab.com/zipdox/librediscord || librediscord-gitAUR
  • Ripcord — 一个轻量级的专有桌面聊天客户端,基于 Qt 工具包构建,支持 Slack 和 Discord 等以群组为中心的服务。
https://cancel.fm/ripcord/ || ripcordAUR
  • Vesktop — Vesktop 是一个跨平台桌面应用,旨在提供更流畅的 Discord 体验。支持带音频的屏幕共享。
https://github.com/Vencord/Vesktop || vesktopAUR
  • WebCord — Web 客户端的包装器,提高了隐私性,并允许在 Wayland 上进行屏幕共享。
https://github.com/SpacingBat3/WebCord || webcordAUR

命令行客户端

AUR 中有许多基于 CLI 的第三方客户端(Github 上也有一些未打包的),尽管大多数已经过时或损坏。

  • discordo — 一个轻量级、安全且功能丰富的 Discord 终端客户端。
https://github.com/ayntgl/discordo || discordo-gitAUR

聊天客户端插件

  • purple-discord — 适用于基于 libpurple 的即时通讯工具(如 Pidgin)的 Discord 插件。
https://github.com/EionRobb/purple-discord || purple-discord-gitAUR
  • bitlbee-discord — 适用于 Bitlbee 的 Discord 插件。
https://github.com/sm00th/bitlbee-discord || bitlbee-discord-gitAUR
  • weechat-discord — 适用于 WeeChat 的 Discord 插件。
https://github.com/terminal-discord/weechat-discord || weechat-discord-gitAUR

自定义 CSS 与插件

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

叠加层 (Overlay)

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

工具

  • Chuncord — 一个使用 Webhook 分段上传文件到 Discord CDN 的命令行工具。
https://git.lemonsh.moe/lemon/chuncord || chuncordAUR

技巧与提示

GNOME 顶栏图标

如果你希望在 GNOME 顶栏显示图标,请安装 AppIndicator and KStatusNotifierItem Support 扩展 以及 libappindicator

Discord 请求版本库中尚不可用的更新

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

要禁用更新检查,请将 "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 时最小化

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

麦克风降噪

Discord 现在内置了降噪功能,提供标准选项和由 Krisp 提供的 AI 驱动选项。你也可以按照 PipeWire#语音降噪 在 PipeWire 上提供自己的降噪方案。

带音频的屏幕共享

Discord 现在已经在 Linux Wayland 上原生 支持音频共享,该支持已在 0.0.76 版本中加入。

Web RPC 扩展

有一些扩展程序可以在你的 Discord Rich Presence 中显示特定的网页活动:

启用开发者工具

警告 粘贴到开发者工具控制台 (Console) 中的代码可能会窃取你的凭据并危害你的 Discord 账号。除非你清楚自己在做什么,否则请勿启用此功能。

在最近的一次更新后,出于安全原因,Discord 默认禁用了开发者工具。要重新启用它们,请将此项添加到 ~/.config/discord/settings.json

  "DANGEROUS_ENABLE_DEVTOOLS_ONLY_ENABLE_IF_YOU_KNOW_WHAT_YOURE_DOING": true

启用文本转语音 (TTS)

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

原生 Wayland 渲染

默认情况下,Discord 和其他 Electron 应用在 Wayland 会话中通过 Xwayland 使用 X11,这可以更改。参见 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/故障排除#解决缓冲区欠载(跳音、杂音) 中概述的步骤。

在 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 $XDG_RUNTIME_DIR/{app/com.discordapp.Discord,}/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'

收到提问或消息后 Discord 冻结

如果触发通知的消息(提问、私聊、开启通知的服务器等)导致客户端冻结,说明客户端无法找到 通知服务器。要在不安装通知服务器的情况下修复此问题,请在“通知”选项中禁用“启用桌面通知”。

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 来替换 libappindicator-gtk2AUR 来解决此问题,已知后者会导致此问题。

Discord 在 systemd journal 中刷屏

你可能会发现 Discord 在你的 journal 中产生了大量如下格式的消息:

(device_info_linux.cc:45): NumberOfDevices

要禁用导致此类污染的日志记录:前往“用户设置”,选择“语音和视频”,在顶部选择“调试”并禁用“调试日志”。

纯 ALSA 环境下无法语音聊天

Discord 的桌面应用程序依赖 PulseAudio 进行语音聊天,无法直接在 ALSA 上运行。在这种情况下,不建议使用 apulse 作为解决方法。如果你想在没有 PulseAudioPipewire 的情况下使用 Discord 的语音聊天,请通过 基于 Chromium 的浏览器 访问 Discord Web 客户端。或者,作为基于 Chromium 的包装器,Webcord 可以在纯 ALSA 环境下工作。另请参见 Chromium#无声音服务器时音频不可用

如果你选择此方案且无法取消静音(即获取麦克风访问权限),请在 ~/.asoundrc将其设置为默认采集设备。此外,在 Discord 中,前往用户设置 > 语音和视频 > 输入设备,并确保选择了 Default

缺少通知角标

Discord 可以在任务栏图标上显示未读提及数量的角标。如果未显示角标,请检查是否安装了 libunityAUR 包,因为此功能需要该包。

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

Discord 硬编码了 桌面入口文件 (desktop entry) discord.desktop,这会导致在其他 Discord 发布版本(如 discord-ptbAURdiscord-canaryAUR)上未读角标通知失效。

要解决此问题,请创建你所用 Discord 版本的桌面入口文件(discord-releasechannel.desktop)的副本,并命名为 discord.desktop。例如,如果你使用的是 discord-canaryAUR

cp /usr/share/applications/discord-canary.desktop ~/.local/share/applications/discord.desktop

你还可以创建一个虚构的桌面入口文件来替换 Discord 提供的文件,以避免桌面环境中出现重复的桌面图标。

~/.local/share/applications/discord-canary.desktop
[Desktop Entry]
NoDisplay=True

NVIDIA 闭源驱动在 Wayland 下黑屏

Wayland 上的 Discord 需要 VA-API 支持,而 NVIDIA 闭源驱动不具备该支持。可以使用 libva-nvidia-driver 等转换层来获得 VA-API 支持。

表情符号显示为方块

你需要安装一个支持 表情符号 (Emojis) 的字体包才能使其正确渲染。

使用 Wireplumber 时,Discord 活动会导致麦克风音量持续降低

这可以通过为 Discord 添加 WirePlumber 修正 (quirk) 来修复。

注意 请确保二进制文件名与你使用的 Discord 版本匹配,通常可能是 "electron"。在这种情况下,这会影响所有 Electron 应用。
~/.config/wireplumber/wireplumber.conf.d/99-stop-microphone-auto-adjust.conf
pulse.rules = [
  {
    matches = [
            { application.process.binary = "Discord" }
    ]
    actions = { quirks = [
      block-source-volume
      block-sink-volume
    ]}
  }
]

然后 重启 wireplumber.servicepipewire.servicepipewire-pulse.service 用户单元

推流画质随时间变得模糊

如果在通过 Discord 推流时遇到画质下降,请确保在“App 设置 > 语音和视频”中的“视频”选项卡下的“高级”部分禁用 OpenH264 视频编解码器。这应该会让 Discord 回退到 VP8 编解码器,该编解码器不受此问题影响。

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.