Arch Linux 文本环境配置

2020-02-27
6分钟阅读时长

如果是经常从事文本工作(如软件工作者进行代码编辑、学生进行笔记整理、文字工作者的撰写、校对等工作)的用户建议选用窗口管理器作为日常工作环境。

独立的窗口管理器可以和KDE、Gnome等桌面环境搭配使用,一来可以起到工作环境转换的适应作用;二来集成化的桌面环境可以应对各种不时之需。所以我将之放在本篇介绍;当然,熟练地使用窗口管理器,原则上可以不借助其他任何桌面环境就能完成所需的各种工作。

Shell

查看系统当前使用的shell。

$ echo $SHELL
/bin/bash

查看系统是否安装了zsh (有些发行版可能自带zsh,而fish一般不会自带)

$ cat /etc/shells #列出当前可用的终端
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
/bin/zsh

安装功能强大、智能友好的终端命令解析器Fish Shell和Z Shell的具体内容见下。

Fish Shell

安装Fish Shell

$ sudo pacman -S fish
$ which fish #查看fish Shell的安装位置
$ chsh -l #列出当前可用的终端(另一种命令方式)
$ chsh -s /usr/bin/fish #为当前用户切换终端

安装Oh-my-fish

$ git clone https://github.com/oh-my-fish/oh-my-fish
$ cd oh-my-fish
$ bin/install --offline
$ fish_config #Colors:Dracula Prompt:Terlar 完成后点选set theme和set prompt
#最后回车得到fish和oh-my-fish

配置Oh-my-fish

$ omf install wttr #安装fish shell下的天气显示插件
$ alias c clear #定义快捷命令
$ funcsave c #记录快捷命令到配置文件
$ alias l "ls -la" 
$ funcsave l

**注意!**如果不小心定义了错误的快捷命令,可能会导致严重的后果。最典型的例子就是定义循环的命令,例如输入alias A Balias B A(A和B分别代表一条命令),然后再输入A或者B,那么计算机可能会输出大量function错误,也可能直接崩溃宕机关闭。

如果已经定义了错误的命令,如alias fuck ls,有以下两种修复办法:

  1. ~/.config/fish/functions中查找之前定义的别名的文件,本例中文件名为fuck.fish,删除之即可。
  2. 再定义一次命令,将fuck转义回原来的语义。输入alias fuck fuck即可。

Z Shell

安装Z shell

$ sudo pacman -S zsh

安装Oh-my-zsh

#方法一,通过curl下载安装
$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" 
#方法二,通过wget下载安装
$ sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

由于诸位都懂的原因, 使用curlwget从github上下载的安装方式通常可能报错port 443拒绝访问。这个时候就需要使用 工具云托管平台 码云托管平台了。

在码云极速下载这个镜像账号中找到oh-my-zsh的仓库,链接如下:https://gitee.com/mirrors/oh-my-zsh

方法一:更改脚本中的克隆位置,运行脚本:

在tools文件夹中复制install.sh的全部内容到Linux下的任一编辑器。GVIM、NeoVim和Emacs等终端下编辑器需要使用Ctrl+Shift+C/V"+p粘贴。其他如Kate,Gedit,VScode等则不用改变键位。

修改该文件的Default settings部分:

- # Default settings
- ZSH=${ZSH:-~/.oh-my-zsh}
- REPO=${REPO:-mirrors/oh-my-zsh}
- REMOTE=${REMOTE:-https://gitee.com/${REPO}.git}
- BRANCH=${BRANCH:-master}
+ # Default settings
+ ZSH=${ZSH:-~/.oh-my-zsh}
+ REPO=${REPO:-mirrors/oh-my-zsh}
+ REMOTE=${REMOTE:-https://gitee.com/${REPO}.git}
+ BRANCH=${BRANCH:-master}

然后在终端中运行命令:

$ cd /path/to/install.sh  #注意先切换到文件存放位置
$ ./install.sh #再运行安装脚本,即可从码云镜像站下载oh-my-zsh的源代码。

方法二:先克隆整个项目到~/.config/oh-my-zsh。克隆命令如下:

 git clone -c core.eol=lf -c core.autocrlf=false \
	 -c fsck.zeroPaddedFilemode=ignore \
     -c fetch.fsck.zeroPaddedFilemode=ignore \
	 -c receive.fsck.zeroPaddedFilemode=ignore \
	 --depth=1 --branch "master" https://gitee.com/mirrors/oh-my-zsh ~/.oh-my-zsh

然后对仓库中的install.sh脚本进行修改:删去main函数中调用setup_ohmyzsh函数的行。

$ cd /path/to/install.sh  #注意先切换到文件存放位置
$ ./install.sh #再运行安装脚本,即可从码云镜像站下载oh-my-zsh的源代码。

配置Oh-my-zsh

修改Oh-my-zsh的主题
$ vim  ~/.zshrc
ZSH_THEME="robbyrussel"
自动提示与命令补全
$ git clone git://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions ~/.oh-my-zsh/custom/plugins

打开 ~/.zshrc 文件,找到插件设置命令,修改为

- plugins=(git)
+ plugins=(zsh-autosuggestions git)
语法高亮
$ git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ~/.oh-my-zsh/custom/plugins
- plugins=( [plugins...])
+ plugins=( [plugins...] zsh-syntax-highlighting) 

如果语法高亮不生效,则考虑zsh-syntax-highlighting放置在插件列表的最后以解决问题。以下是官方文档说明:

Why must zsh-syntax-highlighting.zsh be sourced at the end of the .zshrc file?

zsh-syntax-highlighting.zsh wraps ZLE widgets. It must be sourced after all custom widgets have been created (i.e., after all zle -Ncalls and after running compinit). Widgets created later will work, but will not update the syntax highlighting.

使配置生效
$ source ~/.zshrc

Terminal Applications

关于它们各自的配置以后会提到,这些工具都是完全自定义化的,首先应该参考它们的官方文档。

  1. 文件管理器Ranger

  2. 系统硬件查看器neofetchscreenfetch

  3. 系统资源查看工具htop

  4. 使用图形渲染的终端模拟器alacritty

  5. 展示目录下的文件工具tree

  6. 展示本地或远程的包的结构工具pactree

  7. 解压缩软件zip

  8. 将终端输出的内容重定向到剪切板工具xsel

  9. 终端下的Todo List工具task

  10. 终端命令代理privoxyproxychains

  11. 来自Suckless社区中X下的极简终端模拟器st

$ sudo pacman -S ranger neofetch htop alacritty tree pactree zip task privoxy
$ git clone https://git.suckless.org/st   # 克隆源代码的仓库
$ cd st/
$ sudo make clean install                 # 编译安装

I3 Window Manager

安装i3wm:

$ sudo pacman -S i3 #默认回车即可。由于i3-gaps和i3-wm冲突,因此最后实际安装的是i3-gaps,而这正是我所需要的。
$ sudo pacman -S alacritty
$ sudo pacman -S lxappearance
$ sudo pacman -S feh #安装设置壁纸的软件
lxappearance #打开外观配置
feh --bg-fill /this/path/to/your/picture

配置i3wm:

输入命令:xmodmap -pke > ~/.Xmodmap

注:该命令是将键盘布局生成可阅读的文本文件并保存到家目录下。

输入命令:vim ~/.config/i3/config,在配置文件中添加下面的内容。

exec --no-startup-id xrandr -s 1920x1080 #可选项,修改屏幕分辨率
exec xmodmap ~/.Xmodmap #载入当前键盘布局配置文件
bindsym $mod+d exec rofi -show run
bindsym $mod+d exec rofi -show window #该条与上条任选其一
new window 1pixel #窗口仅有1像素单位的边框
gaps inner 15 #窗口边框距离屏幕边缘距离15个单位

注1:

bindsym表示使用快捷键执行;$mod表示i3下的Super键;

exec表示执行程序;-show run指定为运行程序,-show window指定为显示打开的窗口。故有些情形下两个参数可以混用。

注2:

更多其他配置敬请自行探索。我本人的Dotfiles已上传到代码托管平台。

安装窗口渲染器

我安装的是自行编译的compton,为顺利安装compton,先安装系统可能缺少的依赖,命令如下:

$ sudo pacman -S libconfig asciidoc make #安装相关的依赖

不过现在已经出现了picomXcompmgr,而compton已经不再维护,有需要的完全可以通过官方库安装它们。

$ git clone https://github.com/tryone144/compton.git
$ cd /path/to/compton #切换到克隆的compton库文件夹中
$ make #可能会有一些警告,忽略
$ make docs #这是可选的,制作帮助文档,使用man compton获取。
$ make clean install #clean是可选参数,可以不加

在克隆的compton库中有一份配置文件模版,将之拷贝到用户个人的配置文件夹里,并在编译成功之后即可配置该文件:

$ cp compton.sample.conf ~/.config/compton.conf
$ vim ~/.config/compton.conf

安装自定义计算机状态栏

我使用的是polybar,如果你喜欢i3status,可以不安装polybar。

$ sudo pacman -S cmake git python python2 pkg-config wireless_tools 
#安装polybar构建所需的依赖
$ yay -S polybar

下面是最重要也是最困难的部分:安装字体。

$ yay -S tty-unifont siji-git

此处的困难是对于网络而不是技术层面上来说的,由于软件包取自AUR,速度极慢,极易失败。

新安装的polybar需要拷贝一份配置文件,然后自行修改polybar的配置文件进行配置。

$ cd ~/.config
$ mkdir polybar
$ cp /usr/share/doc/polybar/config ~/.config/polybar/ #将配置文件拷贝到用户当前目录下

默认polybar的名称为example,载入polybar的命令为:

$ polybar example

默认在i3wm中设置自动启动的办法:

$ exec_always polybar example &
Avatar

Serene Feather Pavilion

瞽者无以与乎文章之观,聋者无以与乎钟鼓之声。岂唯形骸有聋盲哉?