1. 启动盘制作
1.1 下载镜像
1.2 开始制作
-
方式一: 在 Linux 系统上制作
# 查看 U 盘设备(例如:/dev/sdb) 或者使用 lsblk 命令查看 sudo fdisk -l # 使用 dd 命令制作启动盘 sudo dd if=archlinux-x86_64.iso of=/dev/sdb bs=4M status=progress oflag=sync
-
方式二:在 windows 上制作
使用了
rufus
工具其他工具也可以,官网下载-Rufus
PS: 这里就不一一赘述,请读者自行查找相关资料。
注意:选择启动盘引导方式, UEFI 引导或者 BIOS 引导 (请记住你的引导方式:本教程采用 UEFI 方式)。
2. 启动&网络&时间
2.1 开机进入live环境
# 查看有 efi,就可以使用 UEFI(gpt) 来安装启动,否则使用传统DOS(mbr)方式安装。
ls /sys/firmware/efi/efivars
2.2 连接网络
Arch Linux 的安装需要良好的网络连接,有线网络由 systemd-networkd 自动配置(dhcp动态IP),无线网络请使用 wpa_supplicant 连接。
连接到网络前情提要
a. 对于无线局域网(Wi-Fi)和无线广域网(WWAN),请确保网卡未被 rfkill
禁用。
b. 有线以太网 -- 连接网线。
c. WiFi -- 使用 iwctl
验证无线网络。
d. 移动宽带调制解调器(移动网卡) -- 使用 mmcli
实用程序连接到移动网络
检测是否禁用网卡
这里使用无线网络接口(网卡) wlp2s0(不同机器可能不一样)为例,如果查看到网路接口没有开启,就需要先开启。在开启之前,先要激活它(取消禁用,通过
rfkill list
查看到,我的机器默认是禁用的,看到 blocked: yes 字样,说明无线连接被禁用),因此需要启动:
# 查看无线网卡是否被禁用
rfkill list
# 首先:启用 wifi 设备
rfkill unblock wifi
# 开启网络接口 wlp2s0
ip link set wlp2s0 up
配置网络连接
a. DHCP: 对于有线以太网、无线局域网(WLAN)和无线广域网(WWAN)网络接口来说,动态 IP 地址和 DNS 服务器分配(由
systemd-networkd
和systemd-resolved
提供功能)能够开箱即用。b. 静态 IP 地址:按照静态 IP 地址进行操作。
# 1. 检查网络接口是否启动
ip link # 记住网卡设备的名字 (例如:wlan0)
# 2. 启动网络设备
ip link set <设备名> up # (设备名,例如:wlan0)
# 测试否连接网络
ping baidu.com
# 如果还是 ping 不通,尝试继续下面的添加国内镜像源后,执行 `pacman -Syy` 如果成功就继续往下吧。
使用 iw 方式连接无线网络,以后装完系统可以选择其他管理工具:如 NetworkManager
a: 获取接口名
iw dev # 显示出网卡设备的信息
b: 查看网络状态
iw dev <设备名> link # (设备名,例如:wlan0)
显示“Not connected.”,表示网络未连接
c: 如果要连接的是无密码的网络那就很省事了
iw <设备名> connect <网络名称>
d: 如果要连接WPA2加密的网络,可以使用 wpa_supplicant 这个工具
wpa_supplicant -i <设备名称> -c <(wpa_passphrase <网络名称> <密码>)
或者
wpa_supplicant -D wext -B -i <设备名> -c <(wpa_passphrase <wifi 名称> <wifi 密码>)
-D wext 的意义是使用 wext 驱动网卡,
-B 是后台运行,
-i 是指定设备,
-c 是指定配置文件,而后面的内容是根据网络情况生成配置文件,这条长命令本质是两条段命令结合而成的,配置文件不会生成为文件而是直接使用。
e: 再次查看网络状态
iw dev <设备名> link
如果连接成功,应该会显示连接的网络状态
f: 尝试ping百度
ping www.baidu.com
使用 iwctl 方式连接无线网络
a. 列出网卡设备无线网卡
iwctl device list
b. 扫描Wi-Fi热点
iwctl station wlan0 scan # iwlist wlan0 scan
c. 列出Wi-Fi热点
iwctl station wlan0 get-networks
d. 加载wifi网络,确认后输入密码,熟悉自己硬件后可忽略上面3步
iwctl station wlan0 connect wifiname
# iwctl --passphrase wifi密码 station wlp2s0 connect wifi名称
f: 尝试 ping 百度
ping www.baidu.com
测试一下是否连接网络
# 如果能更新,就没必要 ping 了
pacman -Syy
ping baidu.com # ping 网络是否连接
注意:如果还 ping 不同,检查一下防火墙设置。
2.3 校准时间
a. 使用 timedatectl 修改时区
timedatectl set-timezone Asia/Shanghai
# 启动网络时间同步
timedatectl set-ntp true
b. 检查时间是否正确
date
3. 更新镜像源
3.1 手动添加
手动添加一个或几个国内镜像源
vim /etc/pacman.d/mirrorlist
Server = https://mirrors.163.com/archlinux/$repo/os/$arch
3.2 通过 reflector 统一修改
reflector --country China --age 72 --sort rate --protocol https --save /etc/pacman.d/mirrorlist
# 查看一下
cat /etc/pacman.d/mirrorlist
ps: 筛选中国的在 72 小时内,速率最快的 https 协议的镜像源,到 /etc/pacman.d/mirrorlist 文件里
3.3 更新源
pacman -Syy
4. 磁盘分区、格式化、挂载
注意:分区操作涉及到 SSD 和 机械硬盘,会对里面的数据清除,请务必想清楚(备份好数据)再开干 :)
4.1 查看硬盘情况
lsblk
# 或
fdisk -l
例如:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 680M 1 loop /run/archiso/airootfs # iso 镜像
sr0 11:0 1 1024M 0 rom
sda 8:0 0 119.2G 0 disk # 119.2G 的机械硬盘 sda
├─sda1 8:1 0 512M 0 part /boot/efi # efi 的 boot(/boot/efi)分区 sda1
├─sda2 8:2 0 8G 0 part [SWAP] # 交换(swap)分区 sda2
└─sda3 8:3 0 110.7G 0 part / # 根(/)分区 sda3
sdb 8:16 1 3.8G 0 disk # 挂载的 U 盘
└─sdb1 8:17 1 3.7G 0 part /run/archiso/bootmnt # U 盘的 sdb1 分区
nvme0n1 9:0 0 119.2G 0 disk # 119.2G 固态硬盘 nvme0n1
├─nvme0n1p1 259:1 0 100G 0 part /mnt # 固态硬盘第一个分区 nvme0n1p1
└─nvme0n1p2 259:2 0 19.2G 0 part /mnt/boot/efi # 固态硬盘第二个分区 nvme0n1p2
4.2 创建分区
可以使用 cfdisk 和 fdisk 命令来实现
# 使用 cfdisk, 比较直观一些
cfdisk /dev/sda # UEFI 模式下选择 gpt 分区模式
# 或
fdisk /dev/sda
fdisk 分区的相关命令:
d delete a partition 删除分区
l list known partition types 显示分区类型
n add a new partition 新建分区
p print the partition table 显示分区信息
q quit without saving changes 退出不保存
t change a partition's system id 设置分区号
v verify the partition table 进行分区检查
w write table to disk and exit 保存修改
这里通过cfdisk
创建三个分区:交换分区(swap),根目录分区(/),启动分区(/boot/efi)
设置 EFI 分区:通过键盘移动光标到 New,输入磁盘大小(默认全部磁盘,删除后输入,我输入 512M),按回车;再将光标移动 Type 设置类型,移动光标到 EFI System,再按回车。页面显示了新建的磁盘分区。
设置 swap 分区:移动光标到未分区的磁盘,输入磁盘大小(默认剩余全部磁盘,删除后输入,我输入 8G),按回车;再将光标移动 Type 设置类型,移动光标到 Linux swap,再按回车。页面显示了新建的磁盘分区。
设置主分区(root):移动光标到未分区的磁盘,输入磁盘大小(默认剩余磁盘),按回车;再将光标移动 Type 设置类型,默认类型 Linux filesystem,再按回车。页面显示了新建的磁盘分区。
保存分区。光标移动到 Write,回车之后输入 yes,即可保存。
退出分区。光标移动到 Quit。
4.3 格式化分区
创建分区完成后,需要对指定的分区格式化特定类型生成对应的文件系统格式,如果不格式化或格式化类型错误都会导致后面 grub 引导错误,从而导致安装失败。
注意:格式化是对硬盘分区操作的,不是硬盘,别看错了,(例如:/dev/sdax , x 表示分区编号,而不是硬盘 /dev/sda)
# 格式化 EFI Boot 分区(512M)
mkfs.fat -F 32 /dev/sda1 # 或 mkfs.vfat -F 32 /dev/sda1
# 格式化 swap 分区(8G)
mkswap -f /dev/sda2
# 格式化根分区,设置为 ext4 格式
mkfs.ext4 /dev/sda3 # 根分区
4.4 挂载分区
挂载分区:就是把一块分区指定在某个文件夹下,当我们打开这个文件夹的时候,文件夹的空间大小就是使用该分区的存储空间(文件夹不占空间,
/mnt
文件夹是启动盘中的引导文件夹,由于我们目前所有操作都还在启动盘里,所以需要把硬盘分区挂载到启动盘下的/mnt
下,才能进入硬盘进行系统安装和配置,/mnt
就相当于打开新系统的大门或者钥匙。
# 一定要注意挂载顺序
swapon /dev/sda2 # 挂载启用 swap 分区(8G)
mount /dev/sda3 /mnt # 根分区挂载到 /mnt
mkdir -p /mnt/boot/efi # 创建 boot 文件夹及其子文件夹 efi
mount /dev/sda1 /mnt/boot/efi # EFI分区挂载到 /mnt/boot/efi
PS:此时通过lsblk -f
查看分区情况有对应的 UUID 信息了。
确认分区是否成功挂载
lsblk -f
# 或
fdisk -l
输出如下类似结果,就成功挂载了,接下来就可以在硬盘上安装系统了。
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 119.2G 0 disk
├─sda1 8:1 0 512M 0 part /mnt/boot/efi
├─sda2 8:2 0 8G 0 part [SWAP]
└─sda3 8:3 0 110.7G 0 part /mnt
sr0 11:0 1 1024M 0 rom
ps: 此时通过lsblk -f
查看分区情况有对应的 MOUNTPOINTS 信息了。
5. 安装系统
基本系统版本类型(包括linux内核以及基础软件包)
- 普通内核(linux linux-headers): 做好随时滚挂的准备。
- lts 稳定版内核(linux-lts linux-lts-headers): 希望稳定就是用该内核, 并且支持nvidia 显卡,可以安装相应的 nvidia-lts 驱动。
- zen 内核(linux-zen,linux-zen-headers): 不支持 nvidia 显卡。
5.1 安装最小系统软件
# 安装 base 软件包和 Linux 内核以及常规硬件的固件
pacstrap /mnt base base-devel linux-lts linux-lts-headers linux-firmware #(LTS内核)注意:linux-firmware,在虚拟机不安装也不影响,这是硬件固件需要
# 或者
pacstrap /mnt base base-devel linux linux-headers linux-firmware #(普通内核)注意:linux-firmware,在虚拟机不安装也不影响,这是硬件固件需要
# base-devel不是必须安装的,但是它包含了很多常用的功能,像是gcc,grep,pacman,sudo,systemd,which,所以还是安装,因为有很多开发工具
# 可以在此时安装常用软件: dhcpcd、iwd 用来连接网络的, vim 编辑器, sudo 调权,有些工具已经包含在 base-devel 中了。
pacstrap /mnt vim sudo dhcpcd openssh networkmanager git iwd
# 如果安装报错 ERROR: Failed to install packages to new root,尝试以下命令再继续安装:
pacman -Sy archlinux-keyring
5.2 生成文件系统配置表文件 fstab
fstab 存放上面分区且挂载后的信息,尤其 UUID 要一致。
genfstab -U /mnt >> /mnt/etc/fstab
# 查看
cat /mnt/etc/fstab # fstab 存放上面分区且挂载后的信息,尤其 UUID 要一致
lsblk -f
6. 进入刚才安装在硬盘中的系统
Linux chroot (英文全称:change root) 命令用于改变根目录。
chroot
命令把根目录换成指定的目的目录。
arch-chroot bash
脚本是软件包arch-install-scripts
的一部分,在运行/usr/bin/chroot
前,这个脚本会挂载/proc api
文件系统,建立可用的/etc/resolv.conf
配置文件。
# 切换到系统中,从此以后的操作都是在硬盘中了。
arch-chroot /mnt
6.1 查看系统相关的信息
uname -r
: 显示操作系统的发行版号。uname -a
:显示系统名、节点名称、操作系统的发行版号、内核版本等等。- 此时也可以查看刚才生成的文件系统配置表文件 fstab,
cat /mnt/etc/fstab
6.2 设置系统所在时区和语言
-
时区
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime # 设为上海时间 hwclock --systohc --utc # 设置硬件时间
-
语言
# 编辑 locale.gen 文件,找到 `en_US.UTF-8 UTF-8` 和 `zh_CN.UTF-8 UTF-8`,把前面的#号删除,保存退出。 vim /etc/locale.gen # 生成 locale locale-gen # 生成 locale.conf 文件 # echo LANG=zh_CN.UTF-8 > /etc/locale.conf # 中文的 echo LANG=en_US.UTF-8 > /etc/locale.conf # 英文的 locale cat /etc/locale.conf # 查看一下
6.3 设置系统主机名和 root 用户密码
echo arch > /etc/hostname # 这里的 arch 就是自定义的主机名
vim /etc/hosts # 编辑 hosts 文件
/etc/hosts
127.0.0.1 localhost
::1 localhost
127.0.1.1 arch # 127.0.1.1 arch.localdomain arch
6.4 设置 root 超级用户的密码
passwd # passwd root, 不加用户名,就是默认 root 用户
# 接下来,根据提示输入您的密码后确认即可
6.4.1 添加一个用户
# 添加用户 timly
useradd -m -G wheel timly
# 查看
id timly
# 记得提权
# 在 /etc/sudoers 中配置 %wheel ALL=(ALL) ALL
EDITOR=vim visudo (新用户提权)# 相当与 sudo vim /etc/sudoers
# 设置用户 timly 的密码
passwd timly
# 接下来按照提示输入即可
# 查看 timly 用户
cat /etc/passwd | cut -f 1 -d : # cat /etc/passwd
ls /home
6.5 安装引导程序
需要安装 Linux 引导加载程序,才能在安装后启动系统。这里使用grub,你也可以用别的。
-
安装引导程序软件包和 CPU 微码
# 安装工具。其中“GRUB”是启动引导器,“efibootmgr”被 GRUB 脚本用来将启动项写入 NVRAM。对话直接回车 pacman -S grub efibootmgr # pacman -S intel-ucode os-prober [intel-ucode | amd-ucode] # os-prober 可以配合 grub 检测已存在的系统,自动设置启动项
-
安装
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB
-
系统的启动引导文件(grub.cfg)生成
# 生成启动引导文件 grub.cfg grub-mkconfig -o /boot/grub/grub.cfg
注意:这里会有一个是否解决需要检测多系统的警告,根据需要修改
# Archlinux 安装引导过程中出现警告,需不需要检查其他系统(多系统中需要设置): # Warning: os-prober will not be executed to detect other bootable partitions # 解决方法: # 在 /etc/default/grub 文件中添加: # 让 grup 识别其他其他系统 GRUB_DISABLE_OS_PROBER=false # true 表示不需要识别其他系统,多系统就需要设置为 false,需要识别其他系统 # 更新 grub 的配置: # grub-mkconfig -o /boot/grub/grub.cfg
显然可以在
/etc/default/grub
文件中修改一些配置信息,例如,这里修改了:# If you change this file, run 'update-grub' afterwards to update # /boot/grub/grub.cfg. # For full documentation of the options in this file, see: # info -f grub -n 'Simple configuration' # 默认启动项(就是我要的开机默认启动系统) GRUB_DEFAULT=0 // * 默认启动项,按menuentry顺序,从0开始;若改为saved,则默认上次启动项 #GRUB_HIDDEN_TIMEOUT=0 // - 隐藏菜单,0:不隐藏,1:隐藏, grub2不再使用 GRUB_HIDDEN_TIMEOUT_QUIET=true // - 是否显示等待倒计时, true:不显示倒计时,屏幕将会是空白的;false:空白屏幕上有计时器 GRUB_TIMEOUT=3 // * 设置进入默认启动项的等候时间,默认值10秒;若为-1则一直等待 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet splash" // *添加内核启动参数,这个为默认 GRUB_CMDLINE_LINUX="acpi_osi=Linux" //* 手动添加内核启动参数,以 “name=value” 的格式添加,多个参数用空格隔开, 比如 acpi=off noapic等可在这里添加 # Uncomment to enable BadRAM filtering, modify to suit your needs # This works with Linux (no patch required) and with any kernel that obtains # the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...) #GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef" # Uncomment to disable graphical terminal (grub-pc only) #GRUB_TERMINAL=console // - 设置是否使用图形介面。去除前面#,仅使用控制台终端,不使用图形介面 # The resolution used on graphical terminal # note that you can use only modes which your graphic card supports via VBE # you can see them in real GRUB with the command `vbeinfo' #GRUB_GFXMODE=640x480 // * 设定图形介面分辨率,如不使用默认,把前面#去掉,分辨率按需修改 # Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux #GRUB_DISABLE_LINUX_UUID=true // - 设置grub命令是否使用UUID,去掉#,使用root=/dev/sdax而不用root=UUDI=xxx # Uncomment to disable generation of recovery mode menu entries #GRUB_DISABLE_RECOVERY="true" // - 设定是否创建修复模式菜单项, true:禁用,false:使用,默认false # Uncomment to get a beep at grub start # GRUB_INIT_TUNE="480 440 1" // 默认不发声,去掉“#”则发声,值是什么意思不明白(应该是发出声音方式吧)
注意:每当修改
/etc/default/grub
或者/etc/grub.d/
中的文件之后,都需要再次生成主配置文件。grub-mkconfig -o /boot/grub/grub.cfg
6.6 网络工具
pacman -S networkmanager dhcpcd openssh git
# pacman -S networkmanager dhcpcd openssh wpa_supplicant
# 此时最好把网络服务启动
# 设置开机自启
systemctl enable NetworkManager dhcpcd sshd
6.7 退出系统
退出/mnt的系统,即退出chroot,回到 live 环境。重启系统即可
# 退出 chroot
exit
# 卸载 /mnt
# 如果是虚拟机记得移除 iso 镜像,
# 如果是实体机器记得移除 USB 启动盘
umount -R /mnt
# 重启
# 关机 poweroff
reboot
重启以后, Archlinux 系统就可以进入 tty 命令行界面了。
如果没有网络,可以设置网路管理工具。
# 若没有安装网络管理工具 NetworkManager,就安装,最好在安装系统到/mnt的时候安装上。
# pacman -S NetworkManager
# 查看网络状态
systemctl status NetworkManager
# 设置开机自启
systemctl enable NetworkManager
# 现在启动
systemctl start NetworkManager
# pacman -S dhcpcd
# 查看网络状态
# systemctl status dhcpcd
# systemctl enable dhcpcd
# systemctl start dhcpcd
7. 其他一些配置
7.1 bash 简单配置
sudo vim /etc/skel/.bashrc 或者 vim ~/.bashrc
添加:
# 设置 bash 默认文本编辑器为vim
export EDITOR=vim
# 让 grep 搜索出来的东西带上颜色
alias grep='grep --color=auto'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
# [脚本]设置看到的文件夹带上颜色
[ ! -e ~/.dircolors ] && eval $(dircolors -p > ~/.dircolors)
[ -e /bin/dircolors ] && eval $(dircolors -b ~/.dircolors)
重启后执行命令验证:
ls -al /
grep root /etc/passwd
7.2 简单配置 pacman
sudo vim /etc/pacman.conf
内容:
# 配置
Color
[multilib]
Include = /etc/pacman.d/mirrorlist
[archlinuxcn]
SigLevel = Never
Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch
更新:
pacman -Sy archlinuxcn-keyring
pacman -Syy
7.3 paru 助手
paru 社区的包管理工具。安装 yay 助手也可以
pacman -S paru
pacman -S yay
8. DWM 窗口管理器
8.1 X 窗口服务安装
# 通过 startx 进入窗口管理界面
pacman -S xorg-server xorg-xinit xorg-apps # xorg
终端内网页浏览器,便于下载 dwm 源码:
# w3m、surf 都是终端网页
sudo pacman -S w3m # 可以不用装,其他方式下载,例如 git lone
# 进入 dwm 的官网 suckless
w3m suckless.org # 或者直接指定 wget https://dl.suckless.org/dwm/dwm-6.4.tar.gz
# 解压
tar -xf dwm-6.4.tar.gz
三种方式下载 dwm 源码:
git clone https://git.suckless.org/dwm
w3m suckless.org
,通过 w3m 终端网页找到 dwm 的下载页面下载wget https://dl.suckless.org/dwm/dwm-6.4.tar.gz
8.2 编译、安装 dwm
- 修改 Makefile 文件
# 进入刚才解压好的 dwm 中, 修改 Makefile 文件的 clean 位置处代码:
clean:
rm -f dwm ${OBJ} dwm-${VERSION}.tar.gz
# 添加了 config.h *.o *.orig *.rej 如下:
clean:
rm -f dwm ${OBJ} dwm-${VERSION}.tar.gz config.h *.o *.orig *.rej
- 编译安装 dwm
sudo make clean install
- 添加
.xinitrc
配置
# 可以 cp /etc/X11/xinit/xinitrc ~/.xinitrc 一份
# 也可以直接创建
vim ~/.xinitrc # 加入 exec dwm 最后面,然后保存退出
- 启动 dwm 界面
# 在 tty 终端执行 startx 命令,启动 dwm
startx
-
退出 dwm 桌面
按
shift + alt + q
即可退出 dwm 桌面
8.3 安装终端 st
也可以是其他的终端,比如 kitty、alacritty, tmux、termite(前两个有GPU加速)
最好先装一下字体:比如,pacman -S adobe-source-code-pro-fonts
查看字体名称,从字体列表当中找一个喜欢的字体名称,比如我使用的是 Source Code Pro
fc-list
# 或者
fc-list | grep "Source"
-
修改 Makefile 文件,与 dwm 一样配置
-
下载 st 源码
git clone https://git.suckless.org/st
w3m suckless.org
,通过 w3m 终端网页找到 st 的下载页面下载wget https://dl.suckless.org/st/st-0.9.tar.gz
-
修改 config.mk 文件
#X11INC = /usr/X11R6/include #X11LIB = /usr/X11R6/lib # 以上两行改成下面两行 X11INC = /usr/include/X11 X11LIB = /usr/include/X11
-
编译并且安装 st
sudo make clean install
附加 - 音量
- pulseaudio-alsa,一个配置文件
- pavucontrol,图形界面的音量调节工具
# alsa 安装,音量设置
sudo pacman -S alsa-utils
# alsamixer 调试音量
# 左右键选择调哪个,将Master和PCM按“m”解除静音(下边MM变成00),使用上下键调大音量,基本放歌就能听到声音了
alsamixer
# Esc 退出,
# 保存设置
sudo alsactl store
reboot
附加 - Virtualbox 实用扩展工具
在 Virtualbox 虚拟机中,为了方便使用,装一下 virtualbox 的扩展工具。
sudo pacman -S virtualbox-guest-utils # virtualbox
# 加载 VirtualBox 内核模块
# sudo modprobe -a vboxguest vboxsf vboxvideo
sudo systemctl enable vboxservice
reboot
附加 - 实用操作
- 解压:
tar -xzvf xxx-*.tar.gz
- 打补丁:
patch -p1 < patches/dwm-xxx.diff
- 获取窗口
xprop
,来自x11-apps/xprop
- 获取键盘按键编码
xev
,来自x11-apps/xev
附加 - 字体和字体图标
# 查询某字体
sudo pacman -Ss font | grep nerd-fonts
# 字体
pacman -S adobe-source-code-pro-fonts nerd-fonts-fira nerd-fonts-fira-code ttf-fira-code wqy-microhei wqy-zenhei
# nerd-fonts-complete 这就是 nerd-fonts 的全部字体了
# 字体图标
paru -S ttf-symbola ttf-nerd-fonts-symbols-2048-em noto-fonts-emoji unicode-emoji
# 安装好后,清缓存,让配置生效
fc-cache -vf
# 查看字体
fc-list :lang=zh # fc-list :lang=en
fc-list | grep Fira
附加 - 资源管理器
- pcmanfm、thunar、Nautilus、Konqueror、Dolphin、Krusader
- ranger:终端的资源管理器
附加 - fcitx5 以及拼音输入法
fcitx5 只是提供了基本框架,基本框架只对英文提供了输入支持,如果需要输入其他语言,则需要安装相应的输入法引擎:
中文
fcitx5-chinese-addons
包含了大量中文输入方式:拼音、双拼、五笔拼音、自然码、仓颉、冰蟾全息、二笔等。fcitx5-rime
对经典的 Rime IME 输入法的包装,内置了繁体中文和简体中文的支持。fcitx5-chewing
对注音输入法 libchewing 的包装。日文
fcitx5-anthy
一种流行的日语输入引擎。fcitx5-skk
一个日文片假输入法。fcitx5-mozc Google
日文输入法的开源版本。其他语言
fcitx5-hangul
用于输入韩文。fcitx5-unikey
用于输入越南语字符。
-
安装
pacman -S fcitx5-chinese-addons fcitx5-rime # paru -S fcitx5-git fcitx5-gtk fcitx5-qt kcm-fcitx5 # 离线的联想字库 sudo pacman -S fcitx5-pinyin-moegirl fcitx5-pinyin-zhwiki
fcitx5-qt:对 Qt5 程序的支持。
fcitx5-gtk:对 GTK 程序的支持。
fcitx5-qt4-gitAUR:对 Qt4 程序的支持。
注意: 一般情况下,只安装 fcitx5-qt 和 fcitx5-gtk 就行了
-
配置
fcitx5 的配置文件位于 ~/.local/share/fcitx5
-
词库
- citx5-pinyin-zhwiki
- citx5-pinyin-moegirl
-
添加环境变量
1、通过修改文件
vim /etc/profile
或者vim /etc/environment
。vim /etc/environment GTK_IM_MODULE=fcitx QT_IM_MODULE=fcitx XMODIFIERS="@im=fcitx" INPUT_METHOD=fcitx SDL_IM_MODULE=fcitx GLFW_IM_MODULE=ibus vim /etc/profile export INPUT_METHOD="fcitx5" export XMODIFIERS="@im=fcitx5" export GTK_IM_MODULE="fcitx5" export QT_IM_MODULE="fcitx5"
2、在 ~/.xinitrc 的 exec dwm 之前添加,
fcitx5 -d &
。3、通过 fcitx5-configtool 打开配置界面来配置需要输入的输入法。
4、重启以后,Ctrl + 空格键就可以切换输入法了。
注意:如果是中文输入或其他输入,请先安装对应的字体库
附加 - 蓝牙
安装蓝牙
sudo pacman -S bluez bluez-utils
如果需要图形化管理工具,安装
sudo pacman -S bluedevil
# 或者,自己用 blueman
sudo pacman -S blueman
开启蓝牙
sudo systemctl start bluetooth
# 开机自启动
sudo systemctl enable bluetooth
此时可通过 bluetoothctl 进入蓝牙控制台
注意:若要连接蓝牙音频,还需安装
sudo pacman -S pulseaudio-bluetooth
附加 - 截图,看图并设置壁纸,U盘自动挂载
截图 flameshot
sudo pacman -S flameshot
# 在 ~/.xinitrc 的 exec dwm 之前添加
flameshot &
看图和壁纸 feh
# 看图的工具,它可以设置壁纸:feh
sudo pacman -S feh
# 在 ~/.xinitrc 的 exec dwm 之前添加
feh --bg-fill --randomize image-path # image-path 壁纸存放的路径
USB 识别工具
sudo pacman -S udisks2 udiskie
附加 - 终端美化 fish + starship
- 第一种:zsh + oh-my-zsh
- 第二种:fish + starship
- oh-my-zsh 或 starship 来修改 zsh或者fish 的主题和安装常用的插件
-
查看 shell
# 查看系统所有的 shell cat /etc/shells # 查看当前使用的 shell echo $SHELL
-
设置为系统默认 shell
# zsh chsh -s /bin/zsh # fish chsh -s /bin/fish # bash chsh -s /bin/bash # tmux chsh -s /bin/tmux # 注意:只要安装了,就任意选一种自己喜欢的 # 输入对应shell 的命令,即可进入对应的 shell。 # 比如: fish
这里选择第一种: fish + starship
-
安装 fish
sudo pacman -S fish
-
安装 starship
sudo pacman -S starship # 或者如下安装 # 国外 curl -sS https://starship.rs/install.sh | sh # 国内 curl -o install.sh -sS https://starship.rs/install.sh && sed -i "s/https://github.com/https://ghproxy.com/https://github.com/g" install.sh && sudo sh install.sh
-
设置你的终端以使用 Starship
vim ~/.config/fish/config.fish # 最后添加 starship init fish | source
终端以使用 Starship
注意普通用户和root
用户需要分别配置。
# zsh 终端
在 ~/.zshrc 的最后,添加以下内容:
eval "$(starship init zsh)"
启用配置:
source ~/.zshrc
# fish 终端
在 ~/.config/fish/config.fish 的最后,添加以下内容:
starship init fish | source
配置 Starship
如果你想进一步配置 Starship,查阅下列内容:
普通用户
这里选择预设 Pastel Powerline
starship preset pastel-powerline > ~/.config/starship.toml
# 如果 nerd-font-symbols 使用预设需要提前安装 Nerd 字体
starship preset nerd-font-symbols > ~/.config/starship.toml
root
用户
这里选择纯文本符号
su root
starship preset plain-text-symbols > ~/.config/starship.toml
附加 - 窗口合成器 picom
picom 是 Xorg 的独立合成器,适用于不提供合成功能的窗口管理器(如:i3,dwm),可以给窗口设置淡入淡出、半透明、阴影等视觉效果。
注意: dwm需要对应的也要打补丁。dwm.suckless.org/patches/alp…
sudo pacman -S meson cmake uthash libconfig libev
补丁-半透明背景(alpha)
在虚拟机中欧给你可能不起作用,设置一下:sudo vim /etc/xdg/picom.conf
中的 vsync
配置注释掉
源码构建picom:
git clone https://github.com/yshui/picom.git
cd picom
rm -rf build
LDFLAGS="-L/usr/local/lib" CPPFLAGS="-I/usr/local/include" meson --buildtype=release . build
ninja -C build
sudo ninja -C build install
picom --experimental-backends -b --config picomPath # picomPath表示配置文件路径 picomPath:~/scripts/picom.conf
或直接通过 pacman 安装,在 ~/.xinitrc 中配置 picom &
picom.conf的配置内容
# 基础设置
# backend = "glx";
backend = "xrender";
mark-wmwin-focused = true;
mark-ovredir-focused = true;
detect-client-opacity = true;
unredir-if-possible = true;
vsync = true;
dbe = false;
detect-transient = true;
detect-client-leader = true;
invert-color-include = [ ];
glx-copy-from-front = false;
# 圆角
corner-radius = 0.0;
round-borders = 0;
rounded-corners-exclude = [
"class_g *= 'dwm'",
"class_g *= 'fcitx'",
];
# 阴影
shadow = false;
detect-rounded-corners = false;
shadow-radius = 4;
shadow-offset-x = 0;
shadow-offset-y = 0;
shadow-opacity = 0.25;
shadow-ignore-shaped = false;
shadow-exclude = [
"_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'",
"_GTK_FRAME_EXTENTS@:c",
"override_redirect = 1 && !WM_CLASS@:s",
"name = 'Notification'",
"class_g ?= 'Dmenu'",
"class_g *= 'dwm'",
"class_g *= 'Wine'",
"name = 'Dunst'",
"class_g *= 'float'"
];
# 透明,指定哪些应用程序窗口可以透明,需要用到 xorg-xprog 工具包,在命令行可以通过 xprop 命令打印一些信息 WM_CLASS(STRING) 后面的窗口名字
active-opacity = 0.93;
opacity-rule = [
"80:class_g = 'dwmsystray'",
"100:class_g = 'mpv'",
"100:class_g = 'org.remmina.Remmina'",
"100:class_g = 'Surf'",
"100:class_g = 'qutebrowser'",
"100:name *? = 'Sunflower'",
"100:WM_NAME@:s *= 'bilibili'",
"100:class_g = 'obs'",
"100:class_g = 'Gimp'",
"100:WM_CLASS@:s *= 'tim.exe'",
"95:class_g = 'Wine'",
"100:class_g *= 'crx_'",
"100:WM_CLASS@:s *= 'vncviewer'",
];
# 淡入淡出
fading = true;
fade-delta = 2;
fade-in-step = 0.01;
fade-out-step = 0.01;
fade-exclude = [
"class_g *= 'fcitx'"
];
# 动画
animations = true;
animation-window-mass = 1;
animation-stiffness = 180;
animation-dampening = 25;
animation-for-open-window = "zoom";
animation-exclude = [
"class_g = 'fcitx'",
"class_g = 'flameshot'",
"class_g = 'Dunst'",
];
# 模糊
blur-method = "dual_kawase";
blur-strength = 3;
blur-kern = "3x3box";
blur-background-exclude = [
"window_type = 'dock'",
"window_type = 'desktop'",
"_GTK_FRAME_EXTENTS@:c",
"class_g *= 'dwm'",
"name *? = 'Sunflower'",
];
# 针对窗口类型的设置
wintypes :
{
normal = { fade = true; shadow = false; opacity = 0.75; };
tooltip: { fade = true; shadow = false; opacity = 0.75; focus = true; };
fullscreen: { fade = true; shadow = false; focus = true; opacity = 0.83; };
dock = { shadow = false };
dnd = { shadow = false};
popup_menu = { opacity = 0.7 };
dropdown_menu = { opacity = 0.7 };
};
.xinitrc 中加入 picom 启动
# 简单启动
picom -b & # 每次启动图形界面的同时自动启动它
# 指定配置文件启动
# picom --experimental-backends -b --config ~/scripts/pi-com.sh
附加 - 工具
终端
-
kitty、alacritty (具有 GPU 加速)
-
tmux
-
Konsole,xfce4-terminal
-
st
-
xdg-user-dirs
# 自动在 home 目录下生成一些默认文件夹 # Desktop、Documents、Downloads、Music、Pictures、Public、Templates、Videos sudo pacman -S xdg-user-dirs
-
git 、lazygit
-
fzf
-
终端的文件管理器:ranger
sudo pacman -S libcaca highlight atool lynx elinks mediainfo w3m poppler sudo pacman -S ranger # 执行 ranger 就可以启动
ranger 默认是没有开启图片预览的,图片预览功能需要自己手动配置打开。 ranger 文件浏览器配合 w3m 终端式的浏览器预览图片:
# 修改 ~/.config/ranger/rc.conf set preview_images true set preview_images_method w3m # 如果没有找到rc.conf文件,则可以 cp /usr/share/doc/ranger/config/rc.conf ~/.config/ranger/ # 或者 ranger --copy-config=all # all/rc
程序启动器
- dmenu
- rofi
Shell
- fish - starship
- zsh - oh-my-zsh - starship