Linux中國

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

作者:intirain 編輯:wxy

本文由貢獻者投稿至 Linux 中國公開投稿計劃,採用 CC-BY-SA 協議 發布,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國