同时在多个 IRC 频道上交谈?

同时在多个 IRC 频道上交谈?

我似乎记得,早在 1991 年左右,Solaris 机器上基于控制台的 IRCII 实现首次让我上网,它允许我在给定网络上加入多个频道,这样,当新频道加入时,它们就会开始滚动到单个控制台视图。我们称之为“交叉对话”聊天范例。我记错了吗?更重要的是,是否有一种现代方法可以在任何基于 GUI 的客户端中执行此操作?

我很惊讶这不是一个常见的愿望/功能,因为我认为这会大大改善体验,尤其是在具有高 SNR 的频道上。例如,如果我正在处理一个项目,我可能会连接到 Freenode 并加入:#Qt、#OpenGL、#C++。就像现在一样,使用 mIRC、Xchat,我必须手动翻页才能看到正在说的内容并回复。

我设想的情况会更像这样(为简单起见,仅使用 2 个通道)

>/加入#QT#OpenGL

< [QT] QtChannelUser:你好,TwoPixelGrid。
< [OpenGL] OpenGLChannelUser:你好,TwoPixelGrid。

> @QT:嗨 QtChannelUser
> @OpenGL:你好,OpenGLChannelUser
> 此消息将发送至我的所有频道。

我是否必须编写一个新客户端,或者它已经存在了?

答案1

作为前面提到的“显示所有频道”脚本的作者,我还想补充几点。

  1. “shared_tab”的默认值已经是1,而不是0。在此设置下,来自所有网络的所有消息都会显示在同一个选项卡中。
  2. 无需修改源代码,只需通过执行以下操作将值更改为 0(这是 TwoPixelGrid 想要的):/sc_set shared_tab 0(现在脚本页面上应该很清楚了)
  3. 如果使用共享选项卡,您可以使用脚本允许以下稍微复杂的语法:“/doat #ChannelName say Message here”。
    • 这可能会稍微长一点,但至少#ChannelName 可以通过制表符完成,并且您还可以创建“sayat”(或任何其他词)的用户命令,将短语缩短为“/sayat #ChannelName Message here”。
    • 设置 -> 高级 -> 用户命令可以用“sayat”和“doat %2 say &3”指定

这应该涵盖了所有内容。我已经在 #xchat 中提到过这些内容,但是由于这个问题可能会出现在其他人身上,所以我认为也应该在这里回答。

答案2

在 Freenode 的 #xchat 上找到了来自用户的答案(感谢 Khisanth)。

有一个 perl 脚本插件聊天称为显示全部频道它的功能几乎与我描述的完全一样。它会创建一个新窗口,显示所有传入消息,然后您可以使用现有的 XChat 命令处理单个频道或同时处理所有频道。

/msg #频道名称 ipsum lorem

或者

/allchanl 说 ipsum lorem

脚本站点上没有记录的一个问题。要使寻址正常工作,您必须更改 .pl 脚本中的变量。

第 34 行内容为:'shared_tab' => 0,
更改为:'shared_tab' => 1,

这将导致脚本为您所在的每个服务器创建一个单独的“所有频道”窗口。除非您更改此设置,否则您将无法从全局“所有频道”窗口向各个频道发送 /msg,因为当您在“所有频道”窗口中时,XChat 不会将您视为在任何服务器上。

答案3

如果你使用微聊,您可以使用chanmon.pl插件将多个频道交错在一起。您可以使用 Weechat 中的/script命令在 weechat-c​​urses 中安装它。有关它的更多信息,您可以查看http://dev.weechat.org/post/2012/08/14/Scripts-manager

虽然我猜它不会让你回应相关频道,但我相信。但你很可能可以添加该功能。

答案4

mIRC 使用 Windows 的“多文档界面”API,允许它在容器窗口内显示多个频道窗口。使用主窗口控件下方的控件恢复(取消最大化)频道窗口,然后您可以按需要排列它们。甚至还有一个用于自动平铺的按钮。

另一个可以做到这一点的客户端是 AdiIRC。它看起来与 mIRC 非常相似,只是字体渲染略好一些。

这不是交错聊天,但我认为这是一种“现代方式”,希望能回答你的问题—— 阅读多个频道 —— 如果不是您所问的话。

许多客户端允许您取消停靠频道以使其成为桌面上的独立窗口,但没有办法同时在显示器之间任意平铺或移动所有窗口。

据我所知,截至我撰写本文时,由于 KVIrc 已取消对 MDI 的支持,mIRC 和 AdiIRC 已成为仅有的世界上所有当前版本的 IRC 客户端中,只有 irssi 能够实现这一功能。可以说,irssi 也符合这一要求,因此我并不是想忽略它,但由于它更像是一个基于文本的终端客户端,因此它可能不适用于相同的用例。

相关内容