** 简介 **
i3 是一款平铺式(tilling)窗口管理器,目标平台为 GNU/Linux 和 BSD 操作系统。i3 是自由开源软件(FOSS),遵循 BSD 协议。其主要目标人群为高级用户和开发者。
i3配置其实挺简单的,直接用默认的也可以,但是默认的移动是jkl;,不是hjkl。
我的i3搭配了i3ststus、dmenu、feh,大家可以参考下,话说加个tint2什么的也不错
下面给两张图片吧:
** 安装 **
可以直接用zypper安装,源里有,但是只有i3,像i3status之类的木有,还有dmenu也要再单独装。
想要编译安装的,源码到这里下 __http://i3wm.org/
** 简单的使用 **
i3 默认修饰键是 Alt。第一次启动时,i3 会创建一个配置文件。创建过程中,可以告诉配置向导在配置文件中使用 Alt(Mod1) 还是 Winkey(Mod4)作为修饰键。同时还会配置键盘布局。
** 配置文件 **
如果您要重新配置 i3,可将原配置文件删除,再启动该配置向导,命令为 i3-config-wizard,重新配置完成后可以使用$mod+Shift+C重新载入配置文件。提示:如果已有 ~/.i3/config 配置文件,向导会退出。
i3 配置文件采用纯文本格式,使用文本编辑器打开即可对 i3 进行配置,不需使用某个特定的编程语言。
配置文件位置:
~/.i3/config (or ~/.config/i3/config)
i3启动的时候会按以下顺序寻找配置文件:
-
~/.config/i3/config (or $XDG_CONFIG_HOME/i3/config if set)
-
/etc/xdg/i3/config (or $XDG_CONFIG_DIRS/i3/config if set)
-
~/.i3/config
-
/etc/i3/config
你也可以使用 -c选项指定配置文件。
** 中文支持 **
感谢erhandsome告知,i3可以使用xft,配置格式如下
font xft:Wen Quan Yi Zen Hei Mono 10
以下加有下划线的部分仅在尝试xft不成功时当做替补方案:
由于 i3 使用 xcb,而 Cairo 还没有在上游上支持 xcb 的缘故,i3 现在还是只能使用 X core fonts,而不支持 xft。因此窗口标题无法显示中文,想要使用中文需要把自己的字体目录加到xorg.conf文件里,现在多数发行版都已经用xorg.conf.d目录取代了xorg.conf。其实就是把xorg.conf拆成了一个个的小文件,配置方法跟以前还是一样的。
在xorg.conf中添加以下内容__
Section "Files"
FontPath "/usr/share/fonts/truetype/wqy"
EndSection
将FontPath后路径更换为自己的相应路径就可以了。
然后在i3的配置文件中更改字体设置,例如:
font -wenquanyi-wenquanyi bitmap song-bold-r-normal–-120-75-75-p--iso10646-1
使用$mod+Shift+C重新载入配置文件就可以正常显示中文了。
** 终端 **
打开终端:$mod+Enter
root权限打开终端:$mod+Shitf+Enter
继续按下这一组合键,就打开另一个终端窗口。
bindsym $mod+Return exec i3-sensible-terminal
bindsym $mod+Shift+Return exec kdesu i3-sensible-terminal
** 跟随启动 **
在配置文件中可以设置跟随i3一起启动的程序,例如:
exec feh --bg-scale /home/owen/3.jpg
** 窗口 **
在 i3 中,窗口布局分为:
默认(defualt):每个窗口都分配有一定量的空间。
叠加(stacking):只显示焦点窗口。其他窗口会在顶部以列表形式显示。
标签式(tabbed):与叠加原则一样,但顶部的窗口列表在垂直高度上只是单行显示。
$mod+e 默认, $mod+s 叠加式, $mod+w 显示标签式。
bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed
bindsym $mod+e layout default
切换活动窗口全屏显示,可使用 $mod+f。
bindsym $mod+f fullscreen
** 浮动与平铺 **
i3支持将窗口切换为浮动模式,使用$mod+Shift+space进行切换,使用$mod+space在平铺窗口与浮动窗口之间切换。
bindsym $mod+Shift+space floating toggle
bindsym $mod+space focus mode_toggle
** 窗口分割方向 **
新建窗口时切割父窗口的方向,使用$mod+v或$mod+Shift+V.
bindsym $mod+Shift+V split h
bindsym $mod+v split v
** 调整窗口大小 **
按下$mod+r,然后使用hjkl或方向键进行调整,使用Shift+hjkl或方向键进行反向调整,调整结束按下回车键离开调整模式。
mode "resize" {
bindsym h resize shrink left 10 px or 10 ppt
bindsym Shift+H resize grow left 10 px or 10 ppt
bindsym j resize shrink down 10 px or 10 ppt
bindsym Shift+J resize grow down 10 px or 10 ppt
bindsym k resize shrink up 10 px or 10 ppt
bindsym Shift+K resize grow up 10 px or 10 ppt
bindsym l resize shrink right 10 px or 10 ppt
bindsym Shift+L resize grow right 10 px or 10 ppt
bindsym Left resize shrink left 10 px or 10 ppt
bindsym Shift+Left resize grow left 10 px or 10 ppt
bindsym Down resize shrink down 10 px or 10 ppt
bindsym Shift+Down resize grow down 10 px or 10 ppt
bindsym Up resize shrink up 10 px or 10 ppt
bindsym Shift+Up resize grow up 10 px or 10 ppt
bindsym Right resize shrink right 10 px or 10 ppt
bindsym Shift+Right resize grow right 10 px or 10 ppt
bindsym Return mode "default"
bindsym Escape mode "default"
}
bindsym $mod+r mode "resize"
** 调整窗口边框 **
无边框:$mod+u
普通模式:$mod+t
单像素边框:$mod+y
bindsym $mod+t border normal
bindsym $mod+y border 1pixel
bindsym $mod+u border none
新窗口边框类型
new_window 1pixel
** 特殊窗口 **
使用for_window command可以定义新建窗口时的窗体风格、浮动/平铺等特性。 语法:
for_window <criteria> command
例子:
# enable floating mode for all XTerm windows
for_window [class="XTerm"] floating enable
# Make all urxvts use a 1-pixel border:
for_window [class="urxvt"] border 1pixel
# A less useful, but rather funny example:
# makes the window floating as soon as I change
# directory to ~/work
for_window [title="x200: ~/work"] floating enable
** 启动应用程序 **
除了在终端使用命令打开应用程序、绑定快捷键之外,可以按下 $mod+d 启动 dmenu,输入您要打开应用程序的名称即可。应用程序命令路径也必须在您的 $PATH 之内才能查找到相应命令。
bindsym $mod+d exec dmenu_run
有些程序需要超级管理员的权限,但是通过上边的方法启动程序不会出现权限请求的界面,所以:
bindsym $mod+Shift+D exec kdesu dmenu_run
这样在出现dmenu的时候就会权限请求,提示用户输入密码了。
** 关闭程序窗口 **
不提供相关退出机制的应用程序(应用程序大多数应用支持如 ESC 或 Ctrl+W),可使用$mod+Shift+Q 关闭窗口。
bindsym $mod+Shift+Q kill
** 重新加载 **
如果 i3 升级到了一个新版本,不必注销,可以按下 $mod+Shift+R 就可以重新加载 i3。
bindsym $mod+Shift+R restart
当更新了 i3 配置文件,可以按下$mod+Shift+C重新加载i3的配置文件。
bindsym $mod+Shift+C reload
当然,如果要退出 i3 会话(非杀死 X 服务器),可以使用 $mod+Shift+E 组合键。
bindsym $mod+Shift+E exit
提示 :查看 ~/.i3/config 配置文件,就可以得到一个当前 i3 操作大全。
** 工作区 **
在 i3 下可以建立 10 个之多工作区(0~9)。只要按下 $mod+num 就切换到相应数字的工作区,如果存在该工作区则显示该工作区,如无,则新建工作区。
bindsym $mod+1 workspace 1
bindsym $mod+2 workspace 2
bindsym $mod+3 workspace 3
bindsym $mod+4 workspace 4
bindsym $mod+5 workspace 5
bindsym $mod+6 workspace 6
bindsym $mod+7 workspace 7
bindsym $mod+8 workspace 8
bindsym $mod+9 workspace 9
bindsym $mod+0 workspace 10
除$mod+num外,还可以使用快捷键依次切换工作区,可以在config中加入以下内容后使用$mod+Tab/$mod+Shift+Tab进行切换。
bindsym $mod+Tab workspace next
bindsym $mod+Shift+Tab workspace prev
如果要想将当前工作区的活动窗口移到其他工作区内,可按下 $mod+Shift+num。
bindsym $mod+Shift+exclam move workspace 1
bindsym $mod+Shift+at move workspace 2
bindsym $mod+Shift+numbersign move workspace 3
bindsym $mod+Shift+dollar move workspace 4
bindsym $mod+Shift+percent move workspace 5
bindsym $mod+Shift+asciicircum move workspace 6
bindsym $mod+Shift+ampersand move workspace 7
bindsym $mod+Shift+asterisk move workspace 8
bindsym $mod+Shift+parenleft move workspace 9
bindsym $mod+Shift+parenright move workspace 10
就先写这么多吧,想起什么再来补充。
感谢erhandsome,现补充一点:
自动把打开的程序放到指定工作区
例如:
assign [class="(?i)firefox"] → 1
assign [class="(?i)pidgin"] → 3
assign [class="(?i)transmission-gtk"] → 10
i3bar
关于i3bar,简单的说一下吧
官网是这么介绍的:
It is a modular approach.
It follows the UNIX philosophy of “Make each program do one thing well”.
It leads to two separate, clean codebases.
大体就是模块化,不喜欢可以删掉什么的,符合Unix每个程序做好一件事的理念。
i3bar配置 是类似这样的:
bar {
status_command i3status
mode hide
position top
workspace_buttons yes
}
如果你的i3bar不在$PATH里,用下面的语句指定:
i3bar_command command
i3bar可以运行一个程序,可以输出当前的IP地址,电池状态等信息。
status_command command
Example:
status_command i3status --config ~/.i3status.conf
至于i3status,这个配置很简单,直接贴下配置,基本上看一眼就明白
general {
colors = true
interval = 5
}
order += "disk /"
order += "run_watch DHCP"
order += "wireless wlan0"
order += "ethernet eth0"
order += "battery 0"
order += "cpu_temperature 0"
order += "load"
order += "time"
wireless wlan0 {
format_up = "W: (%quality at %essid, %bitrate) %ip"
format_down = "W: down"
}
ethernet eth0 {
# if you use %speed, i3status requires the cap_net_admin capability
format_up = "↑↓: %ip (%speed)"
format_down = "≠: down"
}
battery 0 {
format = "%status %percentage %remaining %emptytime"
path = "/sys/class/power_supply/BAT%d/uevent"
low_threshold = 10
}
run_watch DHCP {
pidfile = "/var/run/dhclient*.pid"
}
time {
format = "%Y-%m-%d %H:%M:%S"
}
load {
format = "%5min"
}
cpu_temperature 0 {
format = "T: %degrees °C"
path = "/sys/devices/platform/coretemp.0/temp1_input"
}
disk "/" {
format = "%free"
}
显示模式
就是可以定义i3bar是一直显示还是自动隐藏,按下$mod的时候才会显示,可以设置按下某个键唤出
mode <dock|hide>
modifier <Modifier>
modifier可以定义的按键是Mod1~5,Shift, Control
显示位置
就是设置bar显示在屏幕上边还是下边,我设置的是在上边
position <top|bottom>
托盘输出
就是系统托盘,可以显示pidgin、fcitx、vlc之类的图标什么的
tray_output <none|primary|output>
这个可以关闭,也可以设置为在某一个显示器显示
字体
这个是跟上边的配置一样的
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
font pango:DejaVu Sans Mono 10
工作区按钮
这个就是左边显示现在是第几个工作区的那个东西,默认是开启的,这个一般不用设置吧
workspace_buttons <yes|no>
颜色
恩,黑黑的bar看起来是不是太单调了点呢,其实可以配置下颜色的啦,是用十六进制表示的指定像素的RGB值#rrggbb的哈
可以配置的有这几项
background
statusline
separator
focused_workspace
active_workspace
inactive_workspace
urgent_workspace
话说这个单看字面意思就可以知道是代表什么了,就不详细讲了,配置的时候是这样用:
colors {
background <color>
statusline <color>
separator <color>
colorclass <border> <background> <text>
}
给个例子参考下:
bar {
colors {
background #000000
statusline #ffffff
separator #666666
focused_workspace #4c7899 #285577 #ffffff
active_workspace #333333 #5f676a #ffffff
inactive_workspace #333333 #222222 #888888
urgent_workspace #2f343a #900000 #ffffff
}
}
编辑的比较仓促,可能会有些错误,欢迎指正。
再补充一点东西吧
暂存器
这个就是一个特殊的workspace,可以把窗口移动到里面起,想用的时候再召唤出来~~
可以设定快捷键把当前窗口移动到暂存器中,然后快捷键唤出,有点像yakuake之类的下拉终端那样子,不过这个是任意程序都可以~~
从暂存器中召出的时候是浮动模式,想要从暂存器中删除就把他切换成平铺模式就好了
也可以为特定的程序设置快捷键
#Make the currently focused window a scratchpad
bindsym $mod+Shift+minus move scratchpad
#Show the first scratchpad window
bindsym $mod+minus scratchpad show
# Show the sup-mail scratchpad window, if any.
bindsym mod4+s [title="^Sup ::"] scratchpad show
标记跳转
熟悉vim的话对这个功能应该不会陌生
# Mark a container with a single character
bindsym $mod+m exec i3-input -f pango:mono -F 'mark %s' -l 1 -P 'Mark: '
# Go to the container marked
bindsym $mod+g exec i3-input -f pango:mono -F '[con_mark="%s"] focus' -l 1 -P 'Goto: '
i3lock
这个是一个锁屏工具,可以设置锁屏壁纸啦什么
用法:
$ i3lock --help
i3lock: Syntax: i3lock -v] -n] -b] -d] -c color] -u] -p win|default] -i image.png] -t]
在i3的config设置
# i3lock
mode "i3lock: Return to lock/Escape to Cancel" {
bindsym Return mode "default" exec i3lock -i /home/owen/image/jpsc_logo.png
bindsym Escape mode "default"
}
bindsym Mod1+Control+l mode "i3lock: Return to lock/Escape to Cancel"
然后使用快捷键即可~