ArchLinux配置Mac主题

今年早些时候开始进入Archlinux的怀抱,虽然默认的界面也很漂亮,但是感觉还是苹果的主题更加合理一些,所以计划将ArchLinux美化成苹果界面。到开学的时候,我实现了对Archlinux的全面改造,所以在此专门写一篇博客介绍一下美化过程,同时由于系统升级也会带来一些问题,本文也追踪升级后带来的问题及处理方案。

下载各主题

1
2
3
4
5
git clone git@gitee_fengzhenhua:fengzhenhua/WhiteSur-gtk-theme.git   ./WhiteSur-gtk-theme
git clone git@gitee_fengzhenhua:fengzhenhua/WhiteSur-icon-theme.git ./WhiteSur-icon-theme
git clone git@gitee_fengzhenhua:fengzhenhua/WhiteSur-cursors.git ./WhiteSur-cursors
git clone git@gitee_fengzhenhua:fengzhenhua/grub2-themes.git ./grub2-themes
git clone git@gitee_fengzhenhua:fengzhenhua/WhiteSur-wallpapers.git ./WhiteSur-wallpapers

安装WhiteSur GTK Theme主题

WhiteSur GTK Theme需要安装一些依赖,这部分脚本已经自动处理了,所以本文不再列出,请参考 https://github.com/vinceliuice/WhiteSur-gtk-theme 或者 https://gitee.com/fengzhenhua/WhiteSur-gtk-theme

1
2
3
4
cd ./WhiteSur-gtk-theme
chmod +x install.sh
./install.sh
cd ..

完成之后可以设置程序界面为苹果主题。但是在2022年11月02日升级系统后发现nautilus文件管理器的最小化,最大化,关闭按钮失去了渲染的效果。分析原因,Gnome升级后很多程序使用gtk4标准编写,而之前安装主题的时候默认没有安装关于gtk4程序的美化配置,于是需要再安装一下Light主题,这时需要注意使用gtk4,即执行

1
./install.sh -l -c Light 

同时,重启系统后发现登陆界面也失去了效果,所以需要重新再安装一下gdm,执行命令

1
sudo ./tweaks.sh -g

但是在[2023年03月31日星期五晴北京市北京师范大学]升级了我的Archlinux后,再执行上述命令报错,如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Oops! Operation failed...

=========== ERROR LOG ===========

>>>>>>> No error log found <<<<<<

=========== ERROR INFO ==========
FOUND :
>>> lib-core.sh
>>> lib-install.sh
>>> tweaks.sh
SNIPPET:
>>> mv -n "${1}"{"",".bak"}
TRACE :
>>> signal_error
>>> backup_file
>>> install_gdm_theme
>>> main

=========== SYSTEM INFO =========
DISTRO : rolling;arch
SUDO : yes
GNOME : 42-0
REPO : 2023-03-29T14:48:35+0800

HINT: You can google or report to us the info above

https://github.com/vinceliuice/WhiteSur-gtk-theme/issues

通过分析得到问题出在文件lib-core.sh上面,因为之前有备份文件,所以再次使用mv备份时就出现了问题,解决方案就是删除 /usr/share/gnome-shell/gnome-shell-theme.gresource.bak 然后再执行命令。但是这可能是之前的脚本执行没有问题,但是升级后Archlinux自身的问题。源码如下

WhiteSur-gtk-theme/shell/lib-core.sh
1
2
3
4
5
6
7
8
9
10
11
12
backup_file() {
if [[ -f "${1}" || -d "${1}" ]]; then
case "${2}" in
sudo)
sudo mv -n "${1}"{"",".bak"} ;;
udo)
udo mv -n "${1}"{"",".bak"} ;;
*)
sudo mv -n "${1}"{"",".bak"} ;;
esac
fi
}

修改为备份进不再按存在文件时不覆盖,而是直接强制覆盖。修改后的代码为:

WhiteSur-gtk-theme/shell/lib-core.sh
1
2
3
4
5
6
7
8
9
10
11
12
backup_file() {
if [[ -f "${1}" || -d "${1}" ]]; then
case "${2}" in
sudo)
sudo mv -f "${1}"{"",".bak"} ;;
udo)
udo mv -f "${1}"{"",".bak"} ;;
*)
mv -f "${1}"{"",".bak"} ;;
esac
fi
}

安装图标

1
2
3
4
cd  ./WhiteSur-icon-theme
chmode +x *.sh
./install.sh
cd ..

安装光标主题

1
2
3
4
cd ./WhiteSur-cursors
chmod +x *.sh
./install.sh
cd ..

安装壁纸

1
2
3
4
5
cd ./WhiteSur-wallpapers
chmod +x *.sh
./install-gnome-background.sh
./install-wallpapers.sh
cd ..

安装GRUB

1
2
3
4
cd ./grub2-themes
chmod +x *.sh
./install.sh -b -t whitesur -i whitesur -s 1080p
cd..

由于此主题所设置的GRUB有些问题,导致重启后不能正常开机,此时需要用启动U盘启动ArchLinux原版的重构一下GRUB.即重启U盘后,执行命令:

1
lsblk

获得硬盘信息(按照之前的文件,使用我之前的Dell-latitude3510的分区方案)

1
2
3
4
5
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
nvme0n1 259:0 0 476.9G 0 disk
├─nvme0n1p1 259:1 0 1G 0 part
├─nvme0n1p2 259:2 0 16G 0 part
└─nvme0n1p3 259:3 0 459.9G 0 part

挂载根分区和/boot/efi分区

1
2
mount /dev/nvme0n1p3  /mnt/
mount /nvme0n1p1 /mnt/boot/efi

执行构建GRUB命令

1
2
3
arch-chroot /mnt
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id= ArchLinux
grub-mkconfig -o /boot/grub/grub.cfg