Discord
Discord 是一款专有的、跨平台的、一体化语音和文本聊天应用程序。许多开源社区也拥有 官方 Discord 服务器。Discord 可以通过 Web 浏览器使用,也可以通过基于 Electron 开发的桌面应用程序使用。
安装
你可以使用以下包之一来安装 Discord 桌面应用程序
图形客户端
官方应用程序
- 稳定版:discord
- 测试版:discord-ptbAUR
- 开发版:discord-canaryAUR
此外,Discord 也可以作为 Flatpak 使用。这可能会解决一些与系统库相关的问题并在某些情况下提高性能,但需要额外操作来启用 Rich Presence。参见 #在 Flatpak 上启用 Rich Presence。
$ flatpak install com.discordapp.Discord
使用系统 Electron 的官方客户端
官方客户端,使用系统提供的 electron 以提高安全性并可能获得更好的性能
- 稳定版:discord_arch_electronAUR
- 开发版:discord-canary-electron-binAUR
第三方客户端
- Abaddon — 一个使用 C++/gtkmm 开发的替代 Discord 客户端,支持语音。
- discord-screenaudio — 一个支持在 Linux 上进行带音频推流的自定义 Discord 客户端。
- Dissent — 使用 Go 编写的 GTK4 Discord 客户端。
- Legcord — 一个旨在增强 Discord 体验同时保持轻量级的自定义客户端。
- LibreDiscord — LibreDiscord 是一个自由开源的 Discord 语音客户端,使用 C 语言结合 GTK3 和 GLib 编写。
- Ripcord — 一个轻量级的专有桌面聊天客户端,基于 Qt 工具包构建,支持 Slack 和 Discord 等以群组为中心的服务。
- Vesktop — Vesktop 是一个跨平台桌面应用,旨在提供更流畅的 Discord 体验。支持带音频的屏幕共享。
- WebCord — Web 客户端的包装器,提高了隐私性,并允许在 Wayland 上进行屏幕共享。
命令行客户端
AUR 中有许多基于 CLI 的第三方客户端(Github 上也有一些未打包的),尽管大多数已经过时或损坏。
- discordo — 一个轻量级、安全且功能丰富的 Discord 终端客户端。
聊天客户端插件
- bitlbee-discord — 适用于 Bitlbee 的 Discord 插件。
- weechat-discord — 适用于 WeeChat 的 Discord 插件。
自定义 CSS 与插件
- BetterDiscord — 一个允许修改 Discord 以使用自定义 CSS 和插件的项目。
- Discocss — 一个可以向 Discord 客户端注入自定义 CSS 的简单脚本。要向 discord-ptbAUR 和 discord-canaryAUR 版本注入 CSS,请将所有提及
discord文件夹的地方替换为正在使用的版本名称。
- Replugged — Powercord 的分支,这是一个注重简洁和性能的轻量级 Discord 客户端插件。
- Vencord — 一个完全在 Discord 启动前加载的客户端插件,旨在使其运行更快、更稳定。
叠加层 (Overlay)
对于 Linux 客户端,Discord 不支持游戏内叠加层。discover-overlayAUR 是一个提供这些功能的开源 GTK 应用程序。Discover 可在 X11 或 wlroots 环境下工作。由于依赖高级 RPC,它与第三方客户端不兼容。
工具
- Chuncord — 一个使用 Webhook 分段上传文件到 Discord CDN 的命令行工具。
技巧与提示
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 中显示特定的网页活动:
- PreMiDAUR 配合相应的浏览器 扩展。
- discord-rpc-extension-binAUR 配合 PreWrap 或 Mal-sync 浏览器扩展。
启用开发者工具
在最近的一次更新后,出于安全原因,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 下通知声音不工作
表情符号渲染不正确
如果你遇到表情符号的渲染问题(例如渲染为矩形),discord-canary-electron-binAUR 将相应的字体作为可选依赖项。你应该安装 ttf-symbolaAUR、noto-fonts-cjk 和 noto-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 作为解决方法。如果你想在没有 PulseAudio 或 Pipewire 的情况下使用 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-ptbAUR 或 discord-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) 来修复。
~/.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.service、pipewire.service 和 pipewire-pulse.service 用户单元。
推流画质随时间变得模糊
如果在通过 Discord 推流时遇到画质下降,请确保在“App 设置 > 语音和视频”中的“视频”选项卡下的“高级”部分禁用 OpenH264 视频编解码器。这应该会让 Discord 回退到 VP8 编解码器,该编解码器不受此问题影响。