VCC:給 UNIX 程序員的酷炫命令行聊天軟體
VCC 簡介
我熱愛 UNIX/Linux 和 C 語言,VCC(very cool chat)是我和其他人開發的一個業餘(課餘)作品。它是用 C 編寫的,是一個運行在 UNIX/Linux 上的命令行聊天軟體。VCC 目前還處於相當早期的階段。這次將它介紹給大家是希望引來一些關注,無論是建議還是 bug 報告。當然,要是你對這個項目感興趣,也非常歡迎你參與到開發當中。
我們開發它一方面是為了在命令行上更好的進行聊天對話,另一方面純粹為了提升技術以及為了好玩。使用 VCC,你可以在寫代碼的時候快速切換到它所在終端標籤聊天,這一直是我的一個夢想。
當前版本的 vcc 1.5.2/vccd 1.6.1 支持用戶登錄、廣播消息、創建 / 加入會話,以及在會話中聊天。
VCC 採用 GPLv3 許可證,目前貢獻者有我(intirain)以及 3swordman。
安裝 VCC
VCC 分為客戶端(即 vcc
)以及服務端(即 vccd
),託管在碼雲上:
將上述代碼倉庫克隆到本地後,進入該目錄並且運行 make
來編譯。你會得到一個可執行文件 vcc
或者 vccd
。
運行 vcc 客戶端
不提供參數直接運行客戶端,會連接到我建立的默認伺服器(124.223.105.230
):
vcc $ ./vcc
它將會提示你輸入用戶名以及密碼。如果你是遊客,則可使用遊客賬戶(用戶名和密碼都是 guest
)。而如果你想要獲得一個賬號,請向我發郵件( mailto:intirain@163.com )聯繫我。
如果你想要連接到自己那有著 128 個核心、1 TB 內存、SSD 1 YB 的小型伺服器,請運行:
vcc $ ./vcc [伺服器 IP 地址] # 當前還不支持域名
登錄成功之後即可開始聊天,只需要輸入消息並且回車即可。過長的信息(大約 200 位元組以上)會被截斷。
運行自己的 vccd 伺服器端
你可以在 46 埠上運行自己的 vccd
服務。
以下命令需要 root 許可權。
如果你是第一次運行 vccd
,首先請執行安裝腳本:
vccd $ sudo scripts/install
該腳本會創建文件 /etc/vccd-runtime
,並且在其中記錄了 vccd
的運行時目錄的位置($HOME/.vccd-runtime
)。該目錄中保存著用戶信息(當前還沒有加入聊天記錄功能),具體的位置是 users/用戶名
,每個文件都是一個採用本機位元組序的結構體。
vccd $ sudo ./vccd
上列命令只是啟動了 vccd
守護進程(嚴格來說,它只能算一個運行於後台的程序,並不是「守護進程」),而沒有創建任何用戶。運行如下命令可以創建用戶(不需要重啟 vccd
):
vccd $ sudo scripts/adduser <用戶名> <密碼>
vcc 命令
vcc
(客戶端)支持命令,它的命令都以 -
開頭。以下是當前 vcc
(1.5.2)支持的所有命令,可以在連接到伺服器的 vcc
客戶端里輸入 -help
命令查看:
#000 intirain$: -help
-help: Show information about every message.
-quit: Disconnect to server and exit vcc.
-ls: List all users online now.
-rate: Change message refresh rate.
-newse: Create a new session.
-currs: Get current session id.
-swtch: Switch to another session.
-lsse: List all sessions created.
#000 intirain$:
以下是對每一條命令的詳細描述:
命令名稱 | 描述 |
---|---|
-help |
顯示所有命令的幫助信息 |
-quit |
退出 vcc (相當於殺掉它) |
-ls |
查看當前在線的所有用戶 |
-rate |
設置刷新率 |
-newse |
新建一個會話 |
-currs |
查看當前會話 id(sid) |
-swtch |
加入另一個會話 |
-lsse |
查看伺服器上所有已經創建了的會話 |
說明:
- 刷新率:
vcc
需要時序性的請求伺服器來獲取新消息。刷新率以赫茲為單位,默認為 1 Hz (即每秒刷新一次)。刷新率不得超過 1000 Hz (即每一毫秒刷新一次)。 - 會話:
vcc
中的群聊叫做「會話」。會話是由一或多個用戶組成的聊天室,0 號會話為大廳,所有人都在其中。會話無法退出。現在還不支持銷毀一個會話,只能通過殺掉vccd
來手動完成。 - 會話不會退出,因此在加入另一會話後你仍在原先的會話中,仍會收到原先會話中的消息。但是你在加入另一會話後發送的消息,並不會被原先會話中的人收到。會話的創建者在會話創建後就移植在會話中。
vcc
還沒有加入命令行參數的支持,也就是說所有的參數都需要你在鍵入該命令互動式輸入。
VCC 的輸出信息
VCC 使用了 ANSI 的 CSI 轉義,但沒有檢查當前終端對該標準的支持。如果你在類似串口的終端上運行 vcc
,將會直接得到沒有渲染的轉義字元。vcc
的配色是可更改的,默認的配色主題在 pretty.c
中定義,是一個 C 語言結構體,該結構體在 include/vcc/pretty.h
中定義。
如果你覺得當前默認的配色不甚好看,完全可以在 pretty.c
中新建自己的配色,也可以複製並更改默認配色。我們也鼓勵大家將自己認為好看的配色 PR 到碼雲倉庫,我們在看到後會第一時間合併。
參與 VCC 的開發
vcc
以及 vccd
是以 GPL 許可證發布的,屬於我們的 「inti 計劃」旗下項目之一。我們鼓勵你參與開發改進它,抱歉,我們無力為此支付報酬,參與開發是無償的。
「inti 計劃」是我們(其實也就倆人)創建的一個計劃,目的是為了將優秀的自由軟體(Linux 以及 GNU 計劃)推向社會。我們計劃開發的項目是 GNU 計劃中所不包含的軟體或者庫,採用的編程語言為 C/C++。非常歡迎大家的加入。
VCC 還處於非常早期的開發階段,但它應該已經具備了一個基本聊天軟體的功能。我們當然希望你能夠使用它、改進它,並且將它推廣給身邊使用 UNIX/Linux 的人們。目前,我們正在穩定當前的版本。將來,它也許會成為一個不錯的社交軟體,動態之類的高級功能也會實現。
順便說一句,VCC 的 Windows 移植版本正在開發中,預計還需要幾周的時間(畢竟我們只有周末才能編程 🙁 )。移植之後的 VCC 應該不會保留配色(因為 Windows 並不支持 CSI 轉義)。
作者簡介:intirain,喜歡 UNIX、x86、RISC-V 上的 C。
via: https://github.com/LCTT/Articles/pull/13
本文由貢獻者投稿至 Linux 中國公開投稿計劃,採用 CC-BY-SA 協議 發布,Linux中國 榮譽推出
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive