i3 + conky 打造实用美观的桌面环境 =w=
[ ]The content is recoverd from Wordpress Blog, for more details please check HERE
May 13, 2017
VOID001 Comments 8 comments
看着 #archlinux-cn 的一些小伙伴使用各种 wm (Window Manager),在一段短暂的犹豫之后,窝也开始转向 i3wm 啦 =w=
经过不到两天的配置,总算是达到了窝比较满意的效果
先上一张效果图吧OwO
下面就简单记录一下折腾时遇到的一些问题和过程
所需材料(以Archlinux举例(别的发行版我也没试过(逃
- i3wm — 我们要用的就是它 (pacman)
- conky with lua support — 用来显示状态信息的工具,支持用户自定 lua 脚本(另外不是Condy(逃 (AUR)
- 卡夫的 conky-i3bar =w= https://github.com/frantic1048/conky-i3bar
- feh — 用来换壁纸哒 OwO (pacman)
- GIMP — 这个一会儿就知道干什么用的啦( (pacman)
- InkScape — 矢量画图工具,用来在 conky 上绘制图形 (pacman)
- compton — 用来让窗口支持透明的混成器 (pacman)
在安装的时候要注意 AUR 里的 conky-lua 已经不可用了,社区有用户自己修改了 PKGBUILD 并 comment 在了这个包的下面,使用这个 PKGBUILD 即可编译通过,conky 就有 lua support 啦 ~
https://github.com/fcolista/aur/blob/master/conky-lua/PKGBUILD
下载这个 PKGBUILD 文件并 makepkg 即可
配置过程
i3wm
i3wm 的 wiki 页面已经给了很详细的介绍 在此仅说明几个常用的配置项
- 快捷键支持,这个只需要使用
bindsym <YourKeys> <YourCommand>即可将按键组合绑定到任何可以执行的命令上,比如这个例子 bindsym $mod+Ctrl+l exec i3lock -i /home/void001/Pictures/WP/lock-ohana.png 就将 Modkey(我的是Meta) + Ctrl + L 绑定为锁屏。
- i3 启动时命令执行, 这个只需要在 i3 config 里配置
exec <Your Command>
或者exec_always <Your Command>
前者只会执行一次,只有退出 i3 再次进入才会重新执行,后者只要 restart 一次 i3 就会执行一次 - 将特定类别的窗口分配到某一个 workspace , 或者置为悬浮状态,我们需要使用
for_window
,语法是这样的for_window <criteria> <command>
其中 citeria 可以在这里找到 http://i3wm.org/docs/userguide.html#command_criteria 这里举一个最常见的例子,在 obs 启动时,将他的窗口置为 floating for_window [class=”obs”] floating enable - 另外,将特定的窗口分配到特定的 workspace 也是一个很重要的功能, 这里的语法是
assign <criteria> <workspace>
这里我们举例将所有的浏览器都放在 workspace 3 里assign [window_role = “browser”] 3 - 当然不能忘了字体的设置啦,为了让 i3 的窗口标题栏字体显示看起来适当,我们需要设置字体,我们可以使用系统的字体作为设置,需要加上 pango 前缀 例如: font pango:DejaVu Sans Mono 20
- 然后,记得去掉
bar
以及大括号内部的那些东西 =w= 因为我们有好看的 conky-i3bar 并不需要用 i3bar 啦(
关于 i3 的使用方法在文档里说的已经很清楚了,如果不想看文档的话,也可以去看 https://www.youtube.com/watch?v=j1I63wGcvU4 这期视频教程
各种问题 OAO
怎么没有桌面壁纸 OAO
那么现在我们就有一个 Tiling Window Manager 了,开心的登录进来之后发现
[图片]
WTF!壁纸呢 QAQ (你又没配置它当然不会有了
经过查阅资料得知,X 窗口管理下面,我们的桌面壁纸可以看做是显示在 root window 下的,我们可以通过 xsetroot 设置壁纸,然而这个工具十分难用,而且大概只支持 png 格式的壁纸(之前还写了一个转换jpg到png的程序给它用),这时候就是安利 feh 的时候啦~ 不仅支持各种格式的壁纸图片,还支持随机壁纸哦~ 我们把壁纸都放在 ~/Pictures/Wallpapers 下面,随机切换壁纸的指令如下
feh –recursive –randomize –bg-fill ~/Pictures/WallPapers
我们将它绑定到 i3 的快捷键上 OwO 这样就可以一键换壁纸啦 \w/,然后,我们把终端设置为透明的, 这样我们就不需要终端的壁纸只用桌面壁纸就可以啦(Konsole里面的 Profile 可以修改透明度,不过要先运行 compton)
诶诶壁纸太亮了!看不清终端的字啦喂
这里就是 GIMP 发挥作用的时候啦~! GIMP 可以轻松的将特别亮的图变暗哦~
处理前
处理后
是不是好了很多 OwO ,只要在 GIMP 里打开图片,在 Color->Brightness and Contrast 下将图片的亮度降低,然后导出,即可~
我的 Okular 图标都丢了诶!原来用 KDE 的时候还是好的
这个问题是因为 Okular 检测不到 KDE 的环境变量,因而显示的时候缺少了 KDE 的主题效果,解决办法由 eatradish 提供 OwO
https://eatradish.moe/zai-i3-zhong-shi-yong-dolphin/
将 export DESKTOP_SESSION=kde 这一行加入到 .xprofile 中即可,在 X 启动时候设置好环境变量。再次使用 Okular Dolphin 都没问题啦~
i3bar 太丑啦! 窝想要个好看的状态栏
尽管 i3bar 支持Unicode Character, Font Awesome 来配置显示,可是它显示的还只能是字符 🙁 为了让状态栏看起来更好看 ,我们来使用 conky! 作为 statusbar !
下载好上面的 conky-i3bar, 安装好 conky-lua 并确定 lua 已经安装在你的系统里,我们先来试试水:
记得先修改 conkyrc.lua 里面的 lua_load 改为你的 i3bar.lua 的地址
conky -c /path/to/conky-i3bar/conkyrc.lua
看看效果…
这是什么鬼啊 (#`Д´)ノ ,看来想偷懒是不行了( ˘・з・) 开始调整吧 OwO,因为是 lua 写的所以调整起来并不是很难,基本上都是调节每一个component的xpos, ypos ,还有调整字体大小,注意字体大小不要在 conkyrc.lua 里设置,i3bar.lua 会对字体进行设置, 修改字体的时候记得修改这里。另外在修改的过程中如果发现图片和文字重叠了而且无法调x y pos解决(比如显示日期的那个矢量图因为字体调整之后显得很鬼畜)就直接打开 InkScape 去修改相应的矢量图即可,修改后保存立即可以看到效果,这点还是很不错的 =w=
不过 conky 的 reload 只有在 i3bar.lua 这个文件被修改的时候才会自动 reload 为了让我们能看到实时的修改效果,写一个脚本不停重启 conky 吧(
经过一番调整之后 我们有了这样的状态栏 (,,・ω・,,)
以及上面的时间显示(在panel最右边)
我还想看 Wifi 状态可是 component 里没有啊 QAQ
没关系, repo 的作者提供了供大家开发使用的工具库 util.lua,并且在 component 里有一系列的例子关于如何编写一个组件,然后窝实现了这样的一个组件
三个小圈圈是信号强度,现在的状态是很强的信号,如果信号衰弱则就会减少圈圈,旁边显示的是我的网络 interface 名称以及我 连接的 Wifi 的名称 OwO
我这里有一个可以动的,效果是这样的
(上面的demo给wifi信号变量设置了一个随机的值,为了看效果,要是真实的信号这样变来变去我感觉你可以换网卡了)
实际上上面用了四个 svg 图
没有圈,一个圈,两个,三个,下面是这个 component 的代码,供对开发组件有兴趣的小伙伴研究
https://github.com/VOID001/conky-i3bar/blob/master/components/wireless_stat.lua
夏娜还是第一次做和”装饰”有关的 Coding 呢,感觉用 InkScape 画画图很有趣呢。调间距,字号什么的虽然很累,不过调整好的时候真的很开心w
Historical Comments
SilverRainZ says: May 14, 2017 at 12:13 am 好棒,用 svg 显示 wifi 信号强度的那个需要写点代码的么?
- VOID001 says: May 14, 2017 at 12:19 am 窝文中给出的那个链接就是我的代码啦~
静静 says: May 14, 2017 at 9:26 pm 乃的终端透明是100%嘛。。手动处理图片变暗也是醉了…
- VOID001 says: May 14, 2017 at 9:32 pm 是呀(我也很绝望嘛
终端完全透明的~ 不过今天加上了 blur 效果(
- VOID001 says: May 14, 2017 at 9:32 pm 是呀(我也很绝望嘛
TJM says: June 4, 2017 at 10:31 am 如果终端能分背景透明和字体透明就好了……
兔子qwq says: June 6, 2017 at 7:59 am #NyanRabbit{font-size:14px !important;color:#FF8484 !important;margin: 0 0 0 40px !important;text-shadow: 2px 1px 5px #cecece !important;transition:all 0.3s !important;}#NyanRabbit:hover{transition:all 0.3s !important;font-size:18px !important;} ⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄
a-wing says: April 11, 2018 at 8:43 pm 学习了。。最近也在配i3 。。。好厉害。自己写组件的大佬
VOID001 says: April 22, 2018 at 10:21 am 不是大佬啦 QwQ, 组件写起来也不难, 稍稍学下 lua 就好啦 >w<
VOID001 says: April 22, 2018 at 10:21 am 不是大佬啦 QwQ, 组件写起来也不难, 稍稍学下 lua 就好啦 >w<