记录我的联想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配置本机引导,首先安装grub
和efibootmgr
两个包。
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
- swayidle 在一定非活跃时间后执行操作 swayidle与swaylock配置延时锁屏
- swaylock-effects Sway锁屏工具
配置Sway平铺窗口管理器
配置在登录系统后自动启动sway,以及配置Sway的程序启动器,任务栏,和各种优化。
配置tty登录后自动运行sway
vim ~/.bash_profile
启动Sway时,设置环境变量,其中包含让firefox使用wayland的标记变量以及QT环境等变量信息。
vim ~/.local/bin/sway
1 | #!bin/sh |
编辑环境变量文件:
1 | MOZ_ENABLE_WAYLAND=1 |
- 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 --
使用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
关于更多本土化中文字体设置详见
锁屏工具swaylock
我使用的是swaylock-effects
创建锁屏执行脚本文件: sudo vim /usr/bin/lock-screen
1 |
|
赋予全体用户执行权限: chmod u+x /usr/bin/lock-screen
接下里配置Sway配置文件: vim .config/sway/config
1 | ### Idle configuration |
上面的部分配置为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 | git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh |
常用软件包
这里会记录一些我常用的软件包
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 | [archlinuxcn] |
安装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 | git clone https://aur.archlinux.org/yay.git |
或者在开启了archlinuxcn源后直接通过源安装。
pacman -S yay
让yay通过proxychains使用代理
go版本的yay不能使用proxychains进行代理,所以需要替换安装以下的软件包:
1 | yay -S gcc-go (代替go) |
重新安装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 | [multilib] |
yay -Sy
yay -S insatll wine