我的Arch永远在安装(二:桌面环境I3WM的安装)


这里写自定义目录标题

  • 桌面环境安装
    • Xorg安装
    • 安装I3WM
    • Xinit设置
    • 自体和终端的安装
    • i3,启动!
  • 必要软件安装
    • fcitx
    • rofi
    • ranger
    • 软件列表(待完善)
  • I3配置简单介绍
    • i3 按键绑定
    • for_window
    • 自定义软件与i3交互
    • URXVT 配置
      • 颜色

桌面环境安装

Xorg安装

安装桌面环境,首先需要安装xorg-server以及xorg-xinit。这是目前大多数桌面环境的依赖库
为了方便起见,直接安装xorg软件包组(注意,xorg-xinit并不包含在其中)

1
$ sudo pacman -S xorg xorg-xinit

这里我没有安装显示管理器(Display manager)
显示管理器和Xinit两者取其一即可
关于显示管理器详细参考 ArchWiki-显示管理器

安装I3WM

软件包组i3包含了所有的可选包,其中包含的i3-gapsi3-wm是互斥的。i3-gaps包含了额外的参数(窗口之间间隔的设定),所以我选择i3-gaps。其他方面的区别,我了解的不是很多。
本软件包组的其他可选依赖凭自己的喜好安装。

1
$ sudo pacman -S i3

Xinit设置

先拷贝默认配置文件到用户家目录

1
$ cp /etc/X11/xinit/xinitrc ~/.xinitrc

修改 .xinitrc 最后几行

  • 将twm,xclock,xterm的执行语句都注释掉(或者直接删掉)
  • 加上i3的执行语句
  • 例子中的最后一行是 i3的执行语句并将日志输出到文件
1
2
3
4
5
6
7
#twm &
#xclock -geometry 50x50-1+1 &
#xterm -geometry 80x50+494+51 &
#xterm -geometry 80x20+494-0 &
#exec xterm -geometry 80x66+0+0 -name login
exec i3
#exec i3 -V >> ~/i3logs/$(date + '%F-%k-%M-%S') 2>&1

自体和终端的安装

理论上这个时候桌面已经可以运行,但是我们还需要安装字体虚拟终端

1
2
$ sudo pacman -S wqy-microhei adobe-source-code-pro-fonts
$ sudo pacman -S rxvt-unicode

i3,启动!

1
$ startx

必要软件安装

fcitx

记得安装软件包组fcitx-im而不是单个软件包fcitx

1
2
3
4
#安装输入法框架
$ sudo pacman -S fcitx-im
#安装输入法引擎
$ sudo pacman -S fcitx-sunpinyin

关于具体的输入法引擎参见:ArchWiki-fcitx
之后会用i3的自启动配置,不用再额外配置

rofi

gruvbox配色: git仓库

ranger

生成默认配置

1
$ ranger --copy-config=all

设置环境变量

1
RANGER_LOAD_DEFAULT_RC=FALSE

来防止ranger同时读取你的配置和默认配置
安装w3m来预览图片

1
$ sudo pacman -S w3m

同时修改配置文件 .config/ranger/rc.conf
将preview_images的值改为true

1
set preview_images true

软件列表(待完善)

软件名 功能
feh 查看静态图片/壁纸
sxiv 查看gif图片
urxvt(rxvt-unicode) 终端
ranger 文件管理器
rofi 程序启动器
polybar bar
picom(原compton) 窗口视觉效果

I3配置简单介绍

i3 按键绑定

1
bindsym [--release] [<Group>+][<Modifiers>+]<keysym> command

其中--release参数,使得绑定在松开之后进行触发。便于某些工具的使用(xdotoolimport)
bindcode方式不做介绍

按键对应的名称查询:

1
xmodmap -pke

Modifiers按键查询:

1
xmodmap -pm

这里列出我电脑的modifiers,供参考

KeyName Function(KeyCode)
Shift Shift_L(0x32) Shift_R(0x3e)
lock Caps_Lock(0x42)
control Control_L(0x25) Control_R(0x69)
mod1 Alt_L(0x40) Alt_R(0x6c) Meta_L(0xcd)
mod2 Num_Lock(0x4d)
mod3 (无)
mod4 Super_L(0x85) Super_R(0x86)
mod4(续) Super_L(0xce) Hyper_L(0xcf)
mod5 ISO_Level3_Shift(0x5c) Mode_switch(0xcb)

因未对其键值做深入了解,不做具体解释。

for_window

获取应用class

1
xprop

然后点击其他的应用,xporp就会输出应用相关信息,其中WM_CLASS就是应用的class

1
WM_CLASS(STRING) = "chromium", "Chromium"
1
for_window [class="netease-cloud-music"] floating enable

自定义软件与i3交互

i3wm 使用Unix Socket提供IPC接口.该功能默认开启。
启用后,会在/tmp/i3-%u.XXXXXX/ipc-socket.%p 创建Socket文件。
其中%u是用户名,%p是i3的pid,XXXXX X是随机数(参见 mkdtemp(3)).
该目录可以通过环境变量I3SOCK获得和修改(重启生效)。
也可以在配置文件中设置:

1
ipc-socket ~/.i3/i3-ipc.sock

i3也用i3-msg 实现了这个功能,所以也可以通过执行外部程序的方式与i3交互。
另外,i3-msg会将返回的json写入标准输出。

1
$ i3-msg boder none #设置当前窗口无边框

具体的命令可查阅 i3wm user guide:List of commands

URXVT 配置

wiki:rxvt-unicode

颜色

常用的颜色大概有:前景(foreground)、背景(background)、游标颜色(cursorColor),color0-15
前三个颜色都好理解,color0-15是什么呢?
Linux终端有16个 基础颜色,其中八个背景色(color0-7),八个前景色(color8-15)。

默认颜色 前景 背景
黑色 Color0 color8
红色 Color1 color9
绿色 Color2 color10
黄色 Color3 color11
蓝色 Color4 color12
洋红色 Color5 color13
青色 Color6 color14
白色 Color7 color15

这里分享一个测试颜色的脚本,脚本来自这里

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
T='gYw'   # The test text
 
echo -e "\n                 40m     41m     42m     43m\
     44m     45m     46m     47m";
for FGs in  '    m' '   1m' '  30m' '1;30m' '  31m' '1;31m' '  32m' \
            '1;32m' '  33m' '1;33m' '  34m' '1;34m' '  35m' '1;35m' \
            '  36m' '1;36m' '  37m' '1;37m';
    do FG=${FGs// /}
    echo -en " $FGs \033[$FG  $T  "
    for BG in 40m 41m 42m 43m 44m 45m 46m 47m;
        do echo -en "$EINS \033[$FG\033[$BG  $T  \033[0m";
    done
    echo;
done
echo

至于具体配色,我直接使用的Gruvbox的配色,github上可以直接搜索到
这里直接放出来https://pastebin.ubuntu.com/p/gds3C6rJBH
具体用法是,将其复制到家目录下的 .Xresource 文件下(没有就创建)。然后

1
$ xrdb .Xresource #或者重新登陆

就可看到效果啦