i3实现透明背景
接着arch linux的教程,上一篇讲到了如何给i3设置默认分辨率。这一节来讲讲i3如何实现透明背景。
首先,需要安装的依赖有,feh
、xcompmgr
以及urxvt
,执行命令安装
1 | sudo pacman -S feh |
feh
Feh是一个轻量级、强大的图像查看器,同时它也可以用来管理桌面壁纸,特别适合缺少这类特性的独立窗口管理器。
简单来讲,feh
的功能很强大,不仅可以用来设置i3的桌面壁纸,还可以用来查看图片,小巧方便。
当需要查看图片时,只要执行命令
1 | feh -g 640x480 filename /path/to/directory |
- -g 选项强制图像的显示大小不大于640x480
更具体的用法可以参见Feh Wiki。
xcompmgr
Xcompmgr是一个简单的混合窗口管理器,可以实现阴影、原生窗口透明(配合
transset
工具)等特效。
xcompmgr
用来设置i3窗口透明用的,需要搭配urxvt
一起使用。具体用法参见
urxvt
urxvt
是rxvt-unicode
的简写。是和xterm
功能类似的终端模拟器。不过,urxvt支持透明、各种字体和颜色的设置,它是i3-sensible-terminal
的首选。可以执行命令
1 | cat /usr/bin/i3-sensible-terminal |
来查看i3终端的设置。安装urxvt
后,再执行exec i3-sensible-terminal
,默认打开urxvt
而不是xterm
了。具体用法参见rxvt-unicode Wiki。
配置
以上三个依赖源介绍完毕后,接下来就是配置文件了。首先打开i3配置文件,执行命令
1 | vim ~/.config/i3/config |
在文件最上面添加三行
1 | exec --no-startup-id feh --bg-scale /path/to/directory |
这里sleep
0.2秒保证transset-df
在xcompmgr
之后启动。transset-df
需要另外安装,执行命令
1 | pacman -S transset-df |
命令参数transset-df -a
用来设置所有窗口的透明度,但实际情况是,我执行transset-df -a 0.5
命令,并不能指定所有窗口的透明度,只能使用默认的透明度。网上也没有找到很好的解决方法。如果要指定透明度,只能单个设置。
接下来创建~/.Xdefaults
文件,写入内容
!!$HOME/.Xdefaults
URxvt.preeditType:Root
URxvt.inputMethod:ibus
URxvt.depth:32URxvt.title:Terminal
URxvt.background:[70]#000000
URxvt.foreground:#00FF00
URxvt.colorBD:Gray95
URxvt.colorUL:Green
URxvt.color1:Red2
URxvt.color4:RoyalBlue
URxvt.color5:Magenta2
URxvt.color8:Gray50
URxvt.color10:Green2
URxvt.color12:DodgerBlue
URxvt.color14:Cyan2
URxvt.color15:Gray95
URxvt.urlLauncher:chromium-browser
URxvt.matcher.button:1
Urxvt.perl-ext-common:matcher
URxvt.scrollBar:True
URxvt.scrollBar_right:True
URxvt.scrollBar_floating:False
URxvt.scrollstyle:plain
URxvt.mouseWheelScrollPage:True
URxvt.scrollTtyOutput:False
URxvt.scrollWithBuffer:True
URxvt.scrollTtyKeypress:True
URxvt.cursorBlink:True
URxvt.saveLines:3000
URxvt.borderLess:False
我直接使用了Z-Shang的urxvt
的配色,看着挺舒服。到这一步执行startx
看看,是不是i3背景变透明了呢。不过在我这儿还有个瑕疵,i3status bar
以及i3title bar
的分辨率很低,跟urxvt的字体对比起来,明显模糊很多。
不过有个方法解决,打开i3配置文件,执行命令
1 | vim ~/.config/i3/config |
将原来的font pango
注释,用font
指定字体来代替。这么一来i3status bar
的字体就比原来清晰多了,不过i3title bar
的文字背景是透明的,我没有解决,我希望是不透明。除非我将字体再换过来,但是代价是i3title bar
的字体会再次变模糊。