Linux 下 C/C++ 程序如何更改终端背景色?

2018 年 5 月 16 日
 ycfung

我用的是 Ubuntu 17.10 ,想在 C/C++程序运行时更改终端的背景色(不是字体),有没有相关库或者系统函数,该如何操作?

6615 次点击
所在节点    Linux
27 条回复
ysc3839
2018 年 5 月 16 日
ANSI escape sequences
shijingshijing
2018 年 5 月 16 日
Ubuntu 不知道,Debian 里面是在 Terminal 的 Edit -> Editing Profile -> Colors 下面改的。
jmc891205
2018 年 5 月 16 日
是只在运行 c++程度的时候变色?其他时候保持原来颜色吗?
FrankHB
2018 年 5 月 16 日
当年被各种终端的文明用语 API 搞得一怒之下强行 tput ……这画风酸爽得……(和隔壁 Win32 对比一下看看?)一直到现在都没下决心填坑……
https://github.com/FrankHB/YSLib/blob/master/YFramework/source/YCLib/Host.cpp#L434
好吧比 ANSI escape sequence 大概高明那么点?
FrankHB
2018 年 5 月 16 日
嘛上面坑了所以只用了 setaf ……因为背景色相对前景色在 Win32 上的可移植性更不靠谱所以懒得搞了。
要背景色的话 tput setb/setab。
ycfung
2018 年 5 月 16 日
@jmc891205 是的只在运行程序时变色…其他时候我也会手动调啦…
ycfung
2018 年 5 月 16 日
@ysc3839 😂😂有听说过但是没有找到整个背景变色的,只有输出字体的
ycfung
2018 年 5 月 16 日
@shijingshijing 是运行程序的时候啦
ycfung
2018 年 5 月 16 日
@FrankHB 我好好研究研究。。。
ysc3839
2018 年 5 月 16 日
@nevilleyung 改颜色后空格清屏?
lcdtyph
2018 年 5 月 16 日
ncurses
ycfung
2018 年 5 月 17 日
@lcdtyph 这个我也看过一下…不知道怎么用耶…能指导一下嘛
ycfung
2018 年 5 月 17 日
@ysc3839 好像实现不了…
lcdtyph
2018 年 5 月 17 日
@nevilleyung #12 你自己搜一下吧,我只知道这个库可以搞定你的需求,但是我也不会用= =||
jssyxzy
2018 年 5 月 17 日
是运行的结果整个背景显示一种颜色, 还是根据语义不同, 错误, warning 显示不同颜色.
mengyaoss77
2018 年 5 月 17 日
exec 系统调用 执行一个 shell 命令试试? 虽然我不知道有没有什么命令能改颜色的
ysc3839
2018 年 5 月 17 日
@nevilleyung 不会吧?那有的控制台游戏怎么改背景色的?
sammo
2018 年 5 月 17 日
再安一个终端程序,然后特意拿它来干啥
gnaggnoyil
2018 年 5 月 17 日
PDCurses?这需求本质上等价于写一个 CUI 而 POSIX 上的 shell 环境可不保证一定能跑 CUI.

所以说 Win32 的 conhost 大法好,CUI 是亲儿子 shell 环境才是后娘养的(逃
owt5008137
2018 年 5 月 17 日
https://github.com/atframework/atframe_utils/blob/master/include/cli/shell_font.h
https://github.com/atframework/atframe_utils/blob/master/src/cli/shell_font.cpp

sample:
util::cli::shell_stream ss(std::cout);
ss() << util::cli::shell_font_style::SHELL_FONT_COLOR_GREEN << util::cli::shell_font_style::SHELL_FONT_SPEC_BOLD << "绿色粗体" << std::endl;

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/455360

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX