i3lock

i3lock-fancy

折腾了半天 i3lock ,不写篇博客可惜了。

i3lock 有啥好折腾的?不就是挂个壁纸锁屏嘛。
就是因为 i3lock 太鸡肋了折腾啊。
于是我试过了 i3lock 的各种民间 fork 版本,在此总结。

i3lock

官方版本 i3lock ,稳定可靠,但是鸡肋。

安装:

1
sudo aptitude install i3lock

使用:

1
i3lock

i3lock-lixxia

最友好,最简单的一个 i3lock fork ,
优化了中间显示的圆形框,并支持一些颜色自定义。

安装:

1
2
3
4
5
6
7
8
sudo aptitude remove i3lock
sudo aptitude install pkg-config libxcb1-dev libxcb1 libgl2ps-dev libx11-dev libglc0 libglc-dev libcairo2-dev libcairo-gobject2 libcairo2-dev libxkbfile-dev libxkbfile1 libxkbcommon-dev libxkbcommon-x11-dev libxcb-xkb-dev libxcb-dpms0-dev libxcb-damage0-dev libpam0g-dev libev-dev libxcb-image0-dev libxcb-util0-dev libxcb-composite0-dev libxcb-xinerama0-dev
git clone https://github.com/Lixxia/i3lock.git
cd i3lock
autoreconf -fi
mkdir -p build && cd build
../configure
make && sudo make install

顺带一提,只有这个 fork 给出了靠谱的源码安装方式,
其他 fork 甚至 i3lock 本身的安装方式都给得很不靠谱。

使用:

1
i3lock

i3lock-blur

支持模糊背景,毛玻璃特效。

安装:

1
2
3
4
5
6
7
8
sudo aptitude remove i3lock
sudo aptitude install pkg-config libxcb1-dev libxcb1 libgl2ps-dev libx11-dev libglc0 libglc-dev libcairo2-dev libcairo-gobject2 libcairo2-dev libxkbfile-dev libxkbfile1 libxkbcommon-dev libxkbcommon-x11-dev libxcb-xkb-dev libxcb-dpms0-dev libxcb-damage0-dev libpam0g-dev libev-dev libxcb-image0-dev libxcb-util0-dev libxcb-composite0-dev libxcb-xinerama0-dev
git clone https://github.com/karulont/i3lock-blur.git
cd i3lock-blur
autoreconf -fi
mkdir -p build && cd build
../configure
make && sudo make install

再顺带一提,只有这个 fork 直接给出了需要安装那些库。

使用:

1
i3lock --fuzzy

i3lockr

支持模糊背景,毛玻璃特效。

安装:

1
2
wget https://github.com/owenthewizard/i3lockr/releases/download/v1.0.0-final/i3lockr
sudo mv i3lockr /usr/local/bin

使用:

1
i3lockr --blur=25

i3lock-color

对于颜色的自定义十分全面。

安装:

1
2
3
4
5
6
7
8
sudo aptitude remove i3lock
sudo aptitude install pkg-config libxcb1-dev libxcb1 libgl2ps-dev libx11-dev libglc0 libglc-dev libcairo2-dev libcairo-gobject2 libcairo2-dev libxkbfile-dev libxkbfile1 libxkbcommon-dev libxkbcommon-x11-dev libxcb-xkb-dev libxcb-dpms0-dev libxcb-damage0-dev libpam0g-dev libev-dev libxcb-image0-dev libxcb-util0-dev libxcb-composite0-dev libxcb-xinerama0-dev
git clone https://github.com/PandorasFox/i3lock-color
cd i3lock-color
autoreconf -fi
mkdir -p build && cd build
../configure
make && sudo make install

使用:

1
i3lock

i3lock-fancy

重头戏,star 最多的 fork ,甚至比 i3lock 本身更多,被广泛使用。

安装:

1
sudo aptitude install i3lock-fancy

使用:

1
i3lock-fancy

依赖 i3lock ,实际上是产生了背景图片再调用 i3lock 。
默认使用模糊背景,用起来没什么问题,但是事实上,
圆形框的颜色并不是最正确的,而是兼容的。

源码里有这样一条:

1
2
3
4
5
# try to use a forked version of i3lock with prepared parameters
if ! i3lock -n "${PARAM[@]}" -i "$IMAGE" > /dev/null 2>&1; then
# We have failed, lets get back to stock one
i3lock -n -i "$IMAGE"
fi

bash -x i3lock-fancy 就知道,
if 上的命令往往失败了,执行的是 if 里头的命令。

事实上这需要 i3lock-color 。
那么,安装 i3lock-color 代替 i3lock 后,执行 i3lock-fancy ,
会发现圆形框的颜色与背景更加配了。

关于模糊背景

事实上,如果你用了 compton 再用 i3lock ,效果十分差劲。
解决这个方案,可以在调用 i3lock 前 kill compton ,结束后重新启动 compton 。

拿 i3lock-fancy 举例,把之前展示的代码改成这样:

1
2
3
4
5
6
7
# try to use a forked version of i3lock with prepared parameters
pkill compton
if ! i3lock -n "${PARAM[@]}" -i "$IMAGE" > /dev/null 2>&1; then
# We have failed, lets get back to stock one
i3lock -n -i "$IMAGE"
fi
compton -i 0.8 -b

其次,用模糊背景通常会比较慢,尤其是 i3lock-fancy ,需等上 3 秒左右。
那么如果调用 i3lock-fancy 之后你又做了一些别的操作,比如关闭一个窗口,
这时锁屏了,你会发现背景和原来的不一样。 :)