Concord: A Feature-Rich TUI Client for Discord

對於開發者和以終端機為中心的用戶來說,官方的 Discord 客戶端通常是一個消耗大量系統資源的重量級應用程式。Concord 作為一種替代方案出現,它提供了一個終端機使用者介面 (TUI),在保持類似 Discord 佈局的同時,提供了終端機模擬器的效率。Concord 使用 ratatuicrossterm 構建,旨在彌合社群平台複雜的功能集與終端機極簡能力之間的差距。

Core Architecture and Performance

Concord 專為效率而設計,閒置記憶體使用量約為 20–40 MB。這與以 Electron 為基礎的官方客戶端形成了鮮明對比,後者以資源密集型著稱。透過利用 ratatui 框架進行 TUI 佈局,並使用 crossterm 進行跨平台終端機處理,該專案提供了一個響應迅速的體驗,而無需負擔完整的瀏覽器引擎。

Feature Set and User Experience

儘管是一個 TUI,Concord 提供了一套完整的功能,反映了官方客戶端的體驗:

Navigation and Control

  • Vim-style Keybindings: 用戶可以使用與其程式碼編輯器相同的方式進行導航,使用 hjkl 進行移動,gG 跳至頂部和底部,Ctrl+dCtrl+u 進行捲動,以及使用 Tab 在面板之間循環切換。
  • Discord-like Layout: 介面組織成熟悉的 Servers、Channels、Messages 和 Members 列表,確保對於已經熟悉 Discord 的用戶來說學習曲線較低。

Messaging and Interaction

  • Communication Tools: 該專案支持發送、編輯和刪除訊息,以及使用提及自動完成功能的訊息回覆。
  • Advanced Discord Features: 支持 Threads、Forum posts (both active and archived)、Pinned messages 和將頻道 (Channels) 標記為已讀的功能。
  • Interaction Elements: 該專案實現了 Reactions (both Unicode and custom emojis)、投票功能,以及詳細的誰對訊息進行了 Reaction 的列表。

Visuals and Media

  • TUI Image Rendering: TUI 最具技術挑戰之一是圖像渲染。Concord 透過 Kitty、iTerm2 或 Sixel 協定處理此功能。對於不支持這些協定的終端機,它提供了一種 halfblock 回退機制。

  • Media Support: 該專案包括頭像 (avatar) 和自定義表情符號 (custom emoji) 的渲染,以及用於整合媒體消費的全螢幕圖像查看器。

Current Limitations and Roadmap

雖然該專案目前功能豐富,但並非沒有限制。專案作者 jpellamo 強調,語音通話功能尚未實現,但已計劃在未來加入。

Conclusion

對於想要將工作流程保持在終端機內的用戶來說,Concord 是一個強大的工具。透過將高性能的 Rust-based TUI 框架與全面的功能集相結合,它為 Discord 生態系統提供了一個可行的替代方案,適合那些比起 Electron-based GUI 而更看重性能和效率的用戶。

Sources