i3实现透明背景

接着arch linux的教程,上一篇讲到了如何给i3设置默认分辨率。这一节来讲讲i3如何实现透明背景。

首先,需要安装的依赖有,fehxcompmgr以及urxvt,执行命令安装

1
2
3
sudo pacman -S feh
sudo pacman -S xcompmgr
sudo pacman -S rxvt-unicode

feh

Feh是一个轻量级、强大的图像查看器,同时它也可以用来管理桌面壁纸,特别适合缺少这类特性的独立窗口管理器。

简单来讲,feh的功能很强大,不仅可以用来设置i3的桌面壁纸,还可以用来查看图片,小巧方便。

当需要查看图片时,只要执行命令

1
feh -g 640x480 filename /path/to/directory
  • -g 选项强制图像的显示大小不大于640x480

更具体的用法可以参见Feh Wiki

xcompmgr

Xcompmgr是一个简单的混合窗口管理器,可以实现阴影、原生窗口透明(配合transset工具)等特效。

xcompmgr用来设置i3窗口透明用的,需要搭配urxvt一起使用。具体用法参见

Xcompmgr Wiki

urxvt

urxvtrxvt-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
2
3
exec --no-startup-id feh --bg-scale /path/to/directory
exec --no-startup-id xcompmgr &
exec --no-startup-id sleep .2 && transset-df -a

这里sleep0.2秒保证transset-dfxcompmgr之后启动。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:32

URxvt.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-Shangurxvt的配色,看着挺舒服。到这一步执行startx看看,是不是i3背景变透明了呢。不过在我这儿还有个瑕疵,i3status bar以及i3title bar的分辨率很低,跟urxvt的字体对比起来,明显模糊很多。

不过有个方法解决,打开i3配置文件,执行命令

1
2
3
vim ~/.config/i3/config
#font pango:monospace 8
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1

将原来的font pango注释,用font指定字体来代替。这么一来i3status bar的字体就比原来清晰多了,不过i3title bar的文字背景是透明的,我没有解决,我希望是不透明。除非我将字体再换过来,但是代价是i3title bar的字体会再次变模糊。

avatar

chilihotpot

You Are The JavaScript In My HTML