在Ncurses上添加滚动条或使其像"more"

Add a scrollbar on Ncurses or make it like "more"

本文关键字:more Ncurses 添加 滚动条      更新时间:2023-10-16

基本上我正在编写一个客户端程序,它从服务器接收响应和日志,客户端也能够向服务器发送不同信息的请求。我使用了诅咒和输出看起来相当不错。它看起来像VI,输出在顶部,用户在客户端输入命令在底部。唯一的问题是我不能滚动回…我的老板告诉我要让它看起来像"linux中更多的命令",我想坚持我的解决方案,在输出窗口的一侧添加一个滚动条…我认为服务器随机发送日志,几乎不可能(或太难)让它看起来更…

如果你在你的客户端维护一个行列表或数组,并要求护士画一个范围的行作为一个滑动窗口,你可以向上和向下滑动你的窗口响应^F ^B ^U ^D ^Y ^E命令,这只是用不同的索引重新绘制屏幕。

我会跳过尝试绘制滚动条:它会在Linux系统上看起来不合适。甚至mc也没有滚动条。只要在底线显示一个内容摘要,类似于vimTop, Bot, All, N%,当:set ruler打开时,会感觉最自在。

我不完全确定你是否在问如何实现滚动条或如何绘制滚动条与护士。我猜是第二个。

假设您的ncurses是使用Unicode支持编译的(记住在初始化ncurses时要正确设置环境,请查看"setlang"),您可以使用以下字符:

Unicode:
▲ - U+25B2 BLACK UP-POINTING TRIANGLE
▼ - U+25BC BLACK DOWN-POINTING TRIANGLE
▮ - U+25AE BLACK VERTICAL RECTANGLE
ASCII:
176 - ░ Light shaded block
177 - ▒ Medium shaded block
178 - ▓ Dark shaded block
219 - █ Block block

编写代码在正确的位置显示黑色块应该非常简单。

如果我理解错了你的问题,请原谅。

另一种可能性是将客户端重写为IRC bot或IM客户端。用户直接向客户端或特定通道发送消息,bot执行操作并返回任何必要的回复。

美妙之处在于你可以自己跳过所有用户界面的东西——向后滚动,历史记录是通过irssi或xchat或其他客户端处理的。用户可以运行自己最喜欢的客户端。

日志记录可以通过一个中央机制来处理,发布到全世界,或者根据需要提供给特定的管理人员/管理员。

缺点是您必须维护和运行IRC服务器或XMPP服务器。如果您已经在组织的其他地方使用它们,并且将它们用于此是合适的,那么杠杆可能是值得的。如果您还没有使用一个服务,那么在客户端中节省的费用可能不值得维护另一个服务。

我过去的一个团队喜欢有一个IRC接口到BuildBot来报告签入,构建成功,构建失败,测试成功,测试失败,为我们的持续集成构建和测试设置。