记录我的联想M720Q Arch Sway窗口管理器的安装和配置过程

记录我的联想M720Q Arch Sway窗口管理器的安装和配置过程

安装Arch Linux基本过程纪录

下载并烧录镜像

本次下载2021.5.1日的镜像,写这篇文章的时候是六一儿童节,但是并没有看到这个月的镜像。好耶,都去过六一了!

应该是最后一次用东软维云的镜像站咯!下载Arch 2021.5.1 ISO走起。

引导系统

引导Arch ISO前在BIOS中关闭安全引导,借着还有Windows的时候,更新了一下BIOS到2021年三月份的版本。

链接到互联网

在 Arch ISO Live中安装了iwd来管理无线网络,因为本次安装过程只有无线网络,那么用iwctl工具来配置本次安装过程中使用的无线网络。

进入iwctl交互模式: iwctl

罗列设备: device list,在列表中可以找到wlan0无线设备,记下来他的名字,接下来会使用到这个名称。

扫描无线网络: station wlan0 scan

罗列已发现的网络 station wlan0 get-networks

连接到无线网络 station wlan0 connect SSID

删除多余的引导

使用efibootmgr删除Windows引导。

efibootmgr -b 000X -B

更新系统时间

使用timedatectl更新时间,开启ntp。确保系统时间是准确的: timedatectl set-ntp true

建立硬盘分区

使用fdisk工具对磁盘进行分区,我要将整个磁盘都空间都划分给Arch使用。

fdisk /dev/nvme0n1

  • ESP分区 1G
  • SWAP分区 8G
  • 根文件存储 剩余空间

格式化磁盘文件系统

将ESP被格式化成,ESP分区格式化成FAT32分区格式: mkfs.vfat -F32 /dev/nvme0n1p1

创建SWAP文件系统:

mkswap /dev/nvme0n1p2

swapon /dev/nvme0n1p2

创建根目录文件系统ext4: mkfs.ext4 /dev/nvme0n1p3

挂载分区

挂载根分区目录: mount /dev/nvme0n1p3 /mnt

创建EFI目录并进行挂载:

mkdir /mnt/efi

mount /dev/nvme0n1p1 /mnt/efi

选择镜像源

文件 /etc/pacman.d/mirrorlist 定义了软件包会从哪个镜像源下载。在 LiveCD 启动的系统上,在连接到因特网后,reflector 会通过选择 20 个最新同步的 HTTPS 镜像并按下载速率对其进行排序来更新镜像列表。

在列表中越前的镜像在下载软件包时有越高的优先权。您或许想检查一下文件,看看是否满意。如果不满意,可以相应的修改 /etc/pacman.d/mirrorlist 文件,并将地理位置最近的镜像源挪到文件的头部,同时也应该考虑一些其他标准。

这个文件接下来还会被 pacstrap 拷贝到新系统里,所以请确保设置正确。

安装系统软件包

pacstrap /mnt base linux linux-firmware base-devel networkmanager

写入引导

用以下命令生成 fstab 文件 (用 -U 或 -L 选项设置UUID 或卷标):

genfstab -U /mnt >> /mnt/etc/fstab

强烈建议在执行完以上命令后,后检查一下生成的 /mnt/etc/fstab 文件是否正确。

切换根目录

Chroot更当前进程及其子进程的可见根路径。变更后,程序无法访问可见根目录外文件和命令。

arch-chroot /mnt

安装一些常用软件包

pacman -S vim bash-completion

设置时区时间

timedatectl set-timezone Asia/Shanghai

hwclock --systohc

设置使用的区域

编辑/etc/locale.gen然后移除需要的 地区 前的注释符号 #

接着执行 locale-gen 以生成 locale 信息

编辑/etc/locate.conf:

LANG=en_US.UTF-8

设置全局区域环境为美国英语环境。

稍后用户可以编辑自己的~/.config/locale.conf文件来设置使用的语言和特定的区域格式。如:

  • LANG
  • LANGUAGE
  • LC_ADDRESS
  • LC_COLLATE
  • LC_CTYPE
  • LC_IDENTIFICATION
  • LC_MEASUREMENT
  • LC_MESSAGES
  • LC_MONETARY
  • LC_NAME
  • LC_NUMERIC
  • LC_PAPER
  • LC_TELEPHONE
  • LC_TIME

LANG:默认的区域设置
这个变量的值会覆盖掉所有未设置的 LC_* 变量的值。

相关详情访问: Arch Wiki - Locate(简体中文)

设置主机名

hostnamectl set-hostname Archxxxxxx

设置用户及ROOT密码

设置root用户密码: passwd

添加普通用户并设置密码:

useradd -m username

passwd username

将用户添加到管理员组(wheel): usermod -aG wheel username

编辑/etc/sudoers文件允许wheel组中用户使用sudo提权到root级别权限。

安装引导程序

安装引导是安装的最后一步,使用GRUB配置本机引导,首先安装grubefibootmgr两个包。

pacman -S grub efibootmgr

然后按照下列步骤安装 GRUB:

挂载 EFI 系统分区,在本节之后的内容里,挂载点为/efi

选择一个启动引导器标识,这里叫做 GRUB。这将在 esp/EFI/ 中创建一个与标识同名的目录来储存 EFI 二进制文件,而且这个名字还会在 UEFI 启动菜单中表示 GRUB 启动项。

执行下面的命令来将 GRUB EFI 应用 grubx64.efi 安装到 esp/EFI/GRUB/,并将其模块安装到 /boot/grub/x86_64-efi/。

grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=GRUB

生成GRUB配置文件: grub-mkconfig -o /boot/grub/grub.cfg

安装后的一些系统服务配置

使用NetworkManager管理本机网络

刚才在安装过程中使用pacstrap安装软件包时就已经将networkmanager软件包安装好了,接下来开启NetworkManager服务,并使用nmcli配置连接无线网络。

systemctl enable --now NetworkManager

罗列当前可用的无线网络: nmcli device wifi list

连接到SSID_NAME无线网络
nmcli device wifi connect SSID_NAME ifname wlp3s0 password <mypassword> name XXXXX

若要交互式的输入密码,可以加-a --ask参数,避免在终端内输入密码留下痕迹。

nmcli device wifi connect SSID_NAME ifname wlp3s0 name XXXXX

此时缺省password参数,会在终端内进行交互式输入密码。

PPPoE / DSL support

若要使用PPPoE拨号,需要rp-pppoe软件包后,才可以用nmcli连接。

pacman -S rp-pppoe

nmcli connection add type pppoe pppoe.username "myusername" pppoe.password "mypassword" ifname "enp1s0f1" con-name "NDR" autoconnect yes

nmcli connection up NDR

配置EAP PEAP认证无线网络

校内的无线网络使用EAP认证,通过查阅资料使用nmcli添加EAP无线网络方法如下:

nmcli connection add type wifi con-name my-CUCC ifname wlp3s0 ssid CUCC ipv4.method auto 802-1x.eap peap 802-1x.phase2-auth mschapv2 802-1x.identity yourusername 802-1x.password yourpassword wifi-sec.key-mgmt wpa-eap autoconnect yes

桌面窗口服务

使用Wayland图形显示服务,sway平铺窗口管理器。

常见的环境配置文件所在地址

对于特定用户,还可以在 /.bashrc、/.xinitrc 或 ~/.xprofile 中设置自己的用户环境。不同之处在于:

.bashrc:每次使用终端登录时读取并运用里面的设置。

.xinitrc:每次使用 startx 或 SLiM 启动 X 界面时读取并运用里面的设置。

.xprofile:每次使用 GDM 等显示管理器登录时读取并运用里面的设置。

安装wayland和Sway以及依赖的一些包

pacman -S wayland sway

pacman -S alacritty swayidle

有关使用Wayland中的常见问题详见Arch Wiki - Wayland

配置Sway平铺窗口管理器

配置在登录系统后自动启动sway,以及配置Sway的程序启动器,任务栏,和各种优化。

配置tty登录后自动运行sway

vim ~/.bash_profile

启动Sway时,设置环境变量,其中包含让firefox使用wayland的标记变量以及QT环境等变量信息。

vim ~/.local/bin/sway

1
2
3
4
5
6
7
8
#!bin/sh
set -a
[ -f $HOME/.config/sway/env ] && . "$HOME/.config/sway/env"
set +a

if [ -z $DISPLAY ] && [ "$(tty)" = "/dev/tty1" ]; then
exec sway
fi

编辑环境变量文件:

1
2
MOZ_ENABLE_WAYLAND=1
QT_QPA_PLATFORM=wayland
  • MOZ_ENABLE_WAYLAND=1 : 火狐浏览器使用Wayland图形窗口服务标记
  • QT_QPA_PLATFORM=wayland : 在Wayland环境下使用Qt5需要安装qt5-wayland包,并设置QT_QPA_PLATFORM=wayland环境变量。

使用wofi作为程序启动坞

安装wofi: yay -S wofi

修改Sway配置文件

set $menu dmenu_path | wofi --show drun -i | xargs swaymsg exec --

rofi-emoji

使用dex自动启动程序-Fcitx5(自启动fcitx5)

fcitx5等一些应用会创建XDG Autostart启动配置,通常以.desktop文件拓展名结尾。像fcitx5等一些程序包在安装时会在/etc/xdg/目录下生成配置文件,但是只有部分的窗口管理器支持xdg启动。在Sway中目前没有看到原生对它的支持,所以就需要一些其它工具辅助执行。

那么若要在进入桌面环境后自动启动fcitx5,则可以使用dex工具。它可以自动执行/etc/xdg/autostart目录下的.desktop程序启动配置文件。

安装dex: yay -S dex

在Sway配置文件中配置自启动dex:

~/.config/sway/config 文件末尾处添加: exec_always "dex -a"

之后在Sway启动后,会执行dex工具,dex工具又回去执行哪些在XDG自动启动目录下,但是在Sway中不会自动执行的程序启动配置文件.desktop,此时fcitx5已经可以自动启动了。

安装中文字体

推荐安装以下常用开源中文字体:

  • wqy-microhei
  • wqy-microhei-lite
  • wqy-bitmapfont
  • wqy-zenhei
  • noto-fonts-cjk

yay -S wqy-microhei wqy-microhei-lite wqy-bitmapfont wqy-zenhei noto-fonts-cjk

更新字体缓存: fc-cache -fv

关于更多本土化中文字体设置详见

Arch Wiki Simplified Chinese

锁屏工具swaylock

我使用的是swaylock-effects

创建锁屏执行脚本文件: sudo vim /usr/bin/lock-screen

1
2
3
4
5
6
#!/bin/bash
#
swaylock --screenshots --clock --indicator --indicator-radius 100 \
--indicator-thickness 7 --effect-blur 7x5 --effect-vignette 0.5:0.5 \
--ring-color bb00cc --key-hl-color 880033 --line-color 00000000 \
--inside-color 00000088 --separator-color 00000000 --grace 2 --fade-in 0.2

赋予全体用户执行权限: chmod u+x /usr/bin/lock-screen

接下里配置Sway配置文件: vim .config/sway/config

1
2
3
4
5
6
7
8
9
10
11
12
### Idle configuration
#
# Example configuration:
#
exec swayidle -w \
timeout 300 'lock-screen &' \
timeout 500 'swaymsg "output * dpms off"' \
resume 'swaymsg "output * dpms on"' \
before-sleep 'lock-screen &'
# This will lock your screen after 300 seconds of inactivity, then turn off
# your displays after another 200 seconds, and turn your screens back on when
# resumed. It will also lock your screen before your computer goes to sleep.

上面的部分配置为Sway默认配置,简单修改为上面的配置即可,修改好配置文件好需要重启Sway后才可以生效,因为使用的是exec,所以重新加载配置文件还不能生效,如果想要查看效果。可以: killall -9 sway ,之后重新登录系统等待查看效果。

延时工具swayidle配置

swayidle我用来和swaylock-effects搭配使用,用于在一定时间内无操作后自动执行脚本或程序,所以可以用来解决一定时间哪无操作自动锁屏的需求。

zsh

安装zsh: yay -S zsh

更改用户默认Shell: usermod --shell /usr/bin/zsh username

要注意bash_profile等文件是否有内容,如果有的话需要迁移为zsh相关的文件。

初始化默认配置文件:

1
2
3
git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
source .zshrc

常用软件包

这里会记录一些我常用的软件包

  • git
  • vim
  • bash-completion bash自动补全
  • rp-pppoe 对PPPoE的支持
  • openssh openssh 需要开启服务
  • rclone 挂载云盘
  • yay 使用yay管理AUR源
  • proxychains-ng 终端代理,可配置代理链
  • v2ray-core 请珍惜眼前所拥有的一切
  • ntfs-3g 挂载ntfs设备
  • qt5-wayland 在Wayland下支持Qt5,需要配置环境变量

开启archlinuxcn

我使用清华大学archlinuxcn源

使用方法:

/etc/pacman.conf 文件末尾添加以下两行,并安装 archlinuxcn-keyring 包导入 GPG key。

1
2
[archlinuxcn]
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch

安装fcitx5-rime中文输入法

安装以下包:yay -S fcitx5 fcitx5-qt fcitx5-gtk fcitx5-configtool fcitx5-rime qt5-wayland

若在Wayland环境下使用Qt5需要安装qt5-wayland包,并设置QT_QPA_PLATFORM=wayland环境变量

yay安装

1
2
3
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si

或者在开启了archlinuxcn源后直接通过源安装。

pacman -S yay

让yay通过proxychains使用代理

go版本的yay不能使用proxychains进行代理,所以需要替换安装以下的软件包:

1
2
yay -S gcc-go (代替go)
yay -S yay (or yay-git)

重新安装yay后还需要更改proxychains的配置文件:将52行附近的proxy_dns前使用#注释#proxy_dns

Edge浏览器

从AUR源中安装微软Edge浏览器: yay -S microsoft-edge-dev-bin

在Wayland环境下,还需要对Edge浏览器的启动脚本做些手脚才能正式使用。

vim /usr/bin/microsoft-edge-dev

在exec指令中添加两个参数:

-enable-features=UseOzonePlatform

-ozone-platform=wayland

目前没办法在EDGE浏览器中使用输入法,待解决

安装Wine

Wine目前原生不支持wayland,需要Xwayland支持。不过经过搜索后发现Wine的Git仓库中存在了wayland分支,并且在持续开发,截止到目前已经支持wayland环境与Wine运行的应用共享剪贴板。

接下来尝试使用wayland的分支尝试编译运行。

emmmm失败了,错误提示找不到显示驱动,先不折腾它,接下来试试Xwayland吧。

安装Xwayland

yay -S xorg-xwayland

安装wine

Wine可通过开启Multilib仓库来安装wine包及依赖。

vim /etc/pacman.conf

1
2
[multilib]
Include = /etc/pacman.d/mirrorlist

yay -Sy

yay -S insatll wine