Linux的虚拟终端(tty)实现中文显示和中文输入以及图片查看
前言
因为Linux系统的tty好像是不能直接支持中文显示的,所以要在另外一个程序中运行tty,我的操作系统是kali-linux5.4.0,基于debian的发行版,所以应该会ubuntu、debian是一样的操作
1.先要安装fbterm,才能在tty下显示中文字符,而且只有进入了fbterm,才能切换中文
aptitude install fbterm
如果你的linux版本的库里面没有fbterm,请参考该文章
安装好后,直接在tty界面下输入fbterm就可以进入
2.安装yong输入法
直接百度搜索小小输入法(就是yong输入法),下载压缩包,解压
住:7z文件的解压命令:7za x 你的压缩文件明 -r -o/xxx/xxx
x代表压缩文件,并且按原始目录解压,-r代表递归解压缩所有子文件夹,-o指定目录,-o后面没有空格,直接接目录
进入到解压好的文件目录
运行yong-tool.sh即可
./yong-tool.sh --install
相关的参数
–install
–uninstall
–select
安装好了之后,注销一下重新进入,终端输入:
yong &
让其在后台运行
或者在这个目录下添加一个可执行文件,名称随意
/etc/X11/Xsession.d
里面的内容就是yong &
注:yong输入法不能在xfce4的终端下运行,但是可以在fbterm虚拟终端下运行,运行yong输入法时不能切换ibus输入法工具,所以要切换回原来的ibus,需要卸载yong输入法,注销后重新登录
./yong-tool.sh --uninstall
需要用到yong输入法时,重新安装、登录即可。
3.安装fbv可以在tty下查看图片,支持多张图片查看(fbterm下不能使用fbv,因为fbterm不是tty)
fbv xxx.png xxx.jpeg
我这里写出安装fbv的坑,后来人可以借鉴以下!!!
下载安装fbv压缩包的网址——>s-tech.elsat.net.pl/fbv
1.安装fbv时需要几个依赖工具
可以在解压后的包里面参考这个
cat README
里面有这样几段话
2. REQUIREMENTS
Linux, configured to provide the framebuffer device interface
(/dev/fb0 or /dev/fb/0)
libungif for GIF support
libjpeg for JPEG support
libpng for PNG support
- 第一个插件 libungif:
我用的kali5.4.0系统,刚开始用apt直接安装libungif-bin,发现fbv在运行./configure的时候是没有检测到libungif的,所以要从源安装,在这里去下载tar.gz文件,安装过程不再赘述 - 第二个插件libjpeg
直接apt安装即可,aptitude install libjpeg-dev - 第三个插件libpng
aptitude install libpng-dev,然后还有一个必然的插件libpng16-16。注:这里开始出现了坑
2.开始安装fbv
安装好上三个插件后再运行./configure发现都支持了,然后运行make指令
这时候据出现了错误,导致编译失败
error: dereferencing pointer to incomplete type
if (setjmp (png_ptr->jmpbuf))
^
并且问题是出在png.c这个源文件的if (setjmp (png_ptr->jmpbuf))语句,报错类型是指针指向不完整的结构类型,作为一个程序员就要找到原因所在:
首先查看png_ptr这个指针的定义,看到这个指针的在每个函数的声明为:
png_structp png_ptr;
在vim里面搜索png_structp的定义,发现没有,但是在包含头文件中有这一行
#include<png.h>;包含了这样一个库函数,这些库函数所在的文件目录为/usr/include这个文件夹中
所以我们去看一下png.h这个头文件中是不是png_structp这个结构体不完整
结果发现这个头文件有对png_structp的模板定义,
所以猜测是不是png_ptr这个png_structp的指针没有jmpbuf成员,
所以在png.h中搜索jmpbuf,发现了这个宏定义,是这样的:
#define png_jmpbuf(png_ptr)
好的,问题就出在这里,我们之前下的libpng库是——>libpng16-16,如果系统是之前的下的是libpng12-dev不会出现这个问题,最新的libpng16对jmpbuf重新定义了一下,而fbv已经很久没有更新了所以我们需要把解压后的fbv文件夹中的png.c中的所有if(setjmp (png_ptr->jmpbuf))改成png.h中定义的指针调用改成即可:
if(setjmp(png_jmpbuf(png_ptr)))
注:png_ptr是在png.c中定义的结构指针,名字可能随着以后fbv的更新而有所不同哦(但开发人员应该不会去改),程序员自己细品
现在重新make,发现成功了,然后make install即可,结束!!!
更新
安装fbgrab在tty下可以截图
aptitude install fbgrab
注:fbgrab只能在tty下截图,比如fbgrab -c 1 xxx.png,-c表示选择第几个tty,这里是tty1