VCC:给 UNIX 程序员的酷炫命令行聊天软件
创始人
2024-03-02 10:25:10
0

VCC 是一个 UNIX/Linux 上的命令行聊天软件。

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中国 荣誉推出

VCC

相关内容

Linux查看CUDA版本...
在日常使用中,在配置镜像以及使用开源网站时经常需要查...
2025-05-31 04:24:06
不支持的 GPU,带有 n...
这个错误通常表示您的GPU不受支持或驱动程序不正确。以下是一些可能...
2025-01-11 19:00:35
编译TensorFlow时...
出现“nvcc error: 'cicc'在构建TensorFlo...
2024-12-09 05:00:28
编译成PTX的NVCC和N...
编译成PTX的NVCC和NVRTC之间的区别在于它们是用于不同目的...
2024-12-07 20:30:28
Angular http:...
这个错误表示无法找到指定的URL。请检查以下几点,以解决问题:确保...
2024-10-19 05:31:47
Asp.NetMVCCor...
如果您使用自定义表而不是默认表,则需要更新IdentityUser...
2024-09-19 05:01:39

热门资讯

Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
2024 开年,LLUG 和你... Hi,Linuxer,2024 新年伊始,不知道你是否已经准备好迎接新的一年~ 2024 年,Lin...
什么是 KDE Connect... 什么是 KDE Connect?它的主要特性是什么?它应该如何安装?本文提供了基本的使用指南。科技日...
Opera 浏览器内置的 VP... 昨天我们报道过 Opera 浏览器内置了 VPN 服务,用户打开它可以防止他们的在线活动被窥视。不过...