i3使用进阶

前一篇文章讲解了i3的基础使用,而这一篇的主要内容则是将i3”桌面化”

字体修改

更改i3的title和bar字体

首先,下载字体的ttf文件,例如apple的Yosemite San Francisco:https://github.com/supermarin/YosemiteSanFranciscoFont/archive/master.zip

其次,将ttf字体文件移动至家目录的.font文件夹:

1
]$ cp *.ttf ~/.fonts

然后,修改i3的配置文件,更改使用字体:

1
font pango:System San Francisco Display 12

重新加载i3,发现title和bar的字体已经更改

更改gtk程序字体

下载lxappearance程序,打开并修改字体大小,退出(lxappearance并不能检测到自定义字体,因此只需要让其生成配置文件,在配置文件中手动修改)

打开生成的.gtkrc-2.0配置文件,修改字体:

1
gtk-font-name="System San Francisco Display 10"

打开.config/gtk-3.0/settings.ini配置文件,修改字体:

1
gtk-font-name=System San Francisco Display 10

更改window和bar的配色

修改i3配置文件,颜色根据自己喜好决定:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
set $bg-color 	         #2f343f
set $inactive-bg-color #2f343f
set $text-color #f3f4f5
set $inactive-text-color #676E7D
set $urgent-bg-color #E53935

# window colors
# border background text indicator
client.focused $bg-color $bg-color $text-color #00ff00
client.unfocused $inactive-bg-color $inactive-bg-color $inactive-text-color #00ff00
client.focused_inactive $inactive-bg-color $inactive-bg-color $inactive-text-color #00ff00
client.urgent $urgent-bg-color $urgent-bg-color $text-color #00ff00

# bar
bar {
status_command i3status
colors {
background $bg-color
separator #757575
# border background text
focused_workspace $bg-color $bg-color $text-color
inactive_workspace $inactive-bg-color $inactive-bg-color $inactive-text-color
urgent_workspace $urgent-bg-color $urgent-bg-color $text-color
}
}

去除边框

i3默认在每个窗口都有一个顶部栏,可以设置不需要它:

1
hide_edge_borders both

文件管理器

有个轻量级的文件管理器叫做thunar,可以图形化的查看文件

如果打开后发现没有图标,可以下载自定义的图标.例如gnome-icon-theme-full,kiconthemes

更改gtk主题

如果认为gtk默认主题不怎么好看的话,可以自行下载gtk相关主题.例如arc:

1
]$ sudo pacman -S arc-gtk-theme

下载安装后可以再lxappearance中应用它

同样,也可以下载图标文件,并在lxappearance中应用

程序启动器

i3默认使用dmenu作为程序启动器,而rofi是另一个选择

rofi的配置默认在~/.Xresource,或~/.config/rofi/config.可以先使用rofi -dump-Xresources > config生成配置列表,再手动修改需要更改的配置.这里贴上我修改的配置:

1
2
3
4
5
6
7
8
rofi.width:                          100
rofi.lines: 3
rofi.font: System San Francisco Display 18
rofi.bw: 0
rofi.padding: 800
rofi.eh: 2
rofi.color-normal: #a02f343f,#a0f3f4f5,#a02f343f,#a02f343f,#a09575cd
rofi.color-window: #a02f343f,#a02f343f,#a02f343f

默认rofi的透明度是不生效的,如果需要透明,要安装一个叫做compton的程序,并在后台启动:

1
exec --no-startup-id compton -f

注:添加-f参数有窗口切换时的渐变效果

bar

i3的默认bar叫做i3bar,用来描述状态面板的信息.如配色,大小等等.之前我们已经对i3bar做过简单配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
bar {
i3bar_command i3bar -t
status_command i3blocks -c ~/.config/i3/i3blocks.conf
position top
colors {
background #a02f343f
separator #757575
# border background text
focused_workspace #a02f343f #a02f343f #a0f3f4f5
inactive_workspace #a02f343f #a02f343f #f3f4f5
urgent_workspace #a0e53935 #a0e53935 #f3f4f5
}
}

i3的bar默认不支持透明度设置,而i3-gaps可以,需要启动i3bar时添加-t参数

在面板上当然需要各种状态信息,这类信息由一个专门的程序提供,用户可以选择默认的状态程序(i3status),也可以使用其他丰富多样的程序(i3block,condy等等).从原理上,状态程序负责每间隔一段时间标准输出一段字符串,而i3bar负责将其显示到面板中

这里我使用的是i3block,附上我们配置文件:

i3blocks.conf:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
command=/usr/lib/i3blocks/$BLOCK_NAME
separator_block_width=15
markup=none
[volume_pactl]
label=
instance=Master
interval=1
signal=10
[bandwidth]
interval=1
[battery]
label=
interval=30
[time]
label=
command=date '+%H:%M:%S'
interval=1

volume_pactl:

1
2
3
#!/bin/sh

pactl list sinks|grep Volume|head -n1|grep -o -E '[0-9]+%'|head -n1

最后,bandwidth文件的IN和OUT也改为了和

0%