我用的是 Ubuntu 17.10 ,想在 C/C++程序运行时更改终端的背景色(不是字体),有没有相关库或者系统函数,该如何操作?
1
ysc3839 2018 年 5 月 16 日 via Android ANSI escape sequences
|
2
shijingshijing 2018 年 5 月 16 日
Ubuntu 不知道,Debian 里面是在 Terminal 的 Edit -> Editing Profile -> Colors 下面改的。
|
3
jmc891205 2018 年 5 月 16 日 via iPhone
是只在运行 c++程度的时候变色?其他时候保持原来颜色吗?
|
4
FrankHB 2018 年 5 月 16 日
当年被各种终端的文明用语 API 搞得一怒之下强行 tput ……这画风酸爽得……(和隔壁 Win32 对比一下看看?)一直到现在都没下决心填坑……
https://github.com/FrankHB/YSLib/blob/master/YFramework/source/YCLib/Host.cpp#L434 好吧比 ANSI escape sequence 大概高明那么点? |
5
FrankHB 2018 年 5 月 16 日
嘛上面坑了所以只用了 setaf ……因为背景色相对前景色在 Win32 上的可移植性更不靠谱所以懒得搞了。
要背景色的话 tput setb/setab。 |
8
ycfung OP @shijingshijing 是运行程序的时候啦
|
10
ysc3839 2018 年 5 月 16 日
@nevilleyung 改颜色后空格清屏?
|
11
lcdtyph 2018 年 5 月 16 日 via iPhone
ncurses
|
14
lcdtyph 2018 年 5 月 17 日
@nevilleyung #12 你自己搜一下吧,我只知道这个库可以搞定你的需求,但是我也不会用= =||
|
15
jssyxzy 2018 年 5 月 17 日
是运行的结果整个背景显示一种颜色, 还是根据语义不同, 错误, warning 显示不同颜色.
|
16
mengyaoss77 2018 年 5 月 17 日 via Android
exec 系统调用 执行一个 shell 命令试试? 虽然我不知道有没有什么命令能改颜色的
|
17
ysc3839 2018 年 5 月 17 日 via Android
@nevilleyung 不会吧?那有的控制台游戏怎么改背景色的?
|
18
sammo 2018 年 5 月 17 日
再安一个终端程序,然后特意拿它来干啥
|
19
gnaggnoyil 2018 年 5 月 17 日
PDCurses?这需求本质上等价于写一个 CUI 而 POSIX 上的 shell 环境可不保证一定能跑 CUI.
所以说 Win32 的 conhost 大法好,CUI 是亲儿子 shell 环境才是后娘养的(逃 |
20
owt5008137 2018 年 5 月 17 日 via Android
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; |
21
shilyx 2018 年 5 月 17 日
看起来是没办法实现的。
linux 上的终端这个程序是谁都可以写的,不同的发行版有不同的配套,连桌面系统都不是原生的,何况桌面系统上的一个终端程序? 所以你要找的不是通用的改变终端颜色的方案,你要找到你的目标终端,找到他的代码,修改代码留个接口,重编译生成后安装到操作系统上就可以为所欲为了。 windows 就不一样了,cmd 是操作系统的原生组件,只此一家,通过 system 函数调用命令“ color f0 ”即可实现效果了。 |
25
ycfung OP @mengyaoss77 我也不太会 shell 命令耶…
|
27
iwtbauh 2018 年 5 月 20 日
正确的做法是使用 terminfo 数据库
|