作为以一个大部分工作时间对着终端的运维开发工程师,除了工作以外还是想找点乐子的。
TUI - Terminal User Interface (终端用户界面)
先上链接为敬:
1,各种控制台工具说明,我遇到的讲的最好的一篇Blog,你是想播放音乐、还是打游戏都可以
Console Desktop Guide (pspodcasting.net)
2.awesome-tui TUI(文字UI)项目集成,翻翻看看什么mysql客户端等等也不少。awesome开头必须是精品。
rothgar/awesome-tuis: List of projects that provide terminal user interfaces (github.com)
3. awesome-ttygames git上的awesome项目不用多说吧,以前一直在问这终端上能有什么游戏呢?
ligurio/awesome-ttygames: Unix ASCII games (github.com)
TUI编程的核心主要就是curse库,后期又出了一个ncurses,最近在网上闲逛的时候碰到了notcurses,这个库对终端有了更高的提升。
最早看到的是shell写的俄罗斯方块,这个百度搜源代码很容易查找,闲来无事想找一个TUI下的打砖块,发现了github上一个早期的项目bricktick,应该也是大佬之前的试验性的脚本,C语言写的,想着这东西有没有人优化一下,发现了notcurses这个库(dankamongmen/notcurses),pacman(我自己的linux用的是arch,其他自己找yum、brew等都能安装)安装以后跑了一个demo 很是惊艳,
$ notcurses-demo
要完美实现这个demo测试,需要终端软件支持、终端配置好相应的TERM环境变量等,测试了几个终端软件,按TERMINALS.md(github,项目里可见)文档里的“终端说明”试验了自己有比较常见的:
环境win11下WSLwindows自带的虚机环境,
Linux:manjaro
终端复用器:tmux (screen好像支持有问题,没有测试,不启用tmux,我这边运行notcurses-demo有问题,notcurses官方支持tmux)
测试常用终端软件:
1. iTerm2:Mac下的iTerm2,完美适配
2. Alacritty:多平台支持的Alacritty 有些缺陷,但是我用的最习惯的一个终端软件
3. Kitty:完美支持,但是不匹配Windows,看来开发是个忠实的Linux用户(如果不需要QQ办公,我也不想用win,LinuxQQ虽然多年后又开发,现在还是各种崩溃ing)
4.WezTerm:支持的也比较好,使用的时候发现鼠标块选择有问题,发现这个项目还在持续开发中,下了一个,下载了一个每日更新版解决问题。还有一个是字库问题,WezTerm看作者使用的字体是JetBrains Mono,这个git上找一个安装在自己的机器上即可。
5.Contour:测试显示比较完美。
看了天notcurses项目,感觉还是有点复杂,而且跨版本以后,原版的pdf教学入门例程有几个都跑不通,version2 看了是可以读取stdin标准输入,version3被接管,我的理解是3版的思路就是都用上TUI界面了,标准输入就被notcurses自己的get代替了。
先研究到这吧,也只是错略的看了看。
关于字体问题:
在终端上要显示图形方式的字体,需要一个nerd字体path,Releases · ryanoasis/nerd-fonts (github.com)
可以去这个Releases里找别人已经打好的nerd库的字库下载,安装看项目说明。