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 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
从 Yum 更新中排除特定/某... 作为系统更新的一部分,你也许需要在基于 Red Hat 系统中由于应用依赖排除一些软件包。如果是,如...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
Opera 浏览器内置的 VP... 昨天我们报道过 Opera 浏览器内置了 VPN 服务,用户打开它可以防止他们的在线活动被窥视。不过...
如何检查你的 Linux 系统... 不知道在使用哪个初始化系统?以下是方法。每个主流 Linux 发行版(包括 Ubuntu、Fedor...