[Share Experiences] 如何让 grub 主题更好看 Resolved
Tofloor
poster avatar
忘记、过去
Moderator
2023-12-09 22:41
Author

修改使用 deepin grub 主题

adjust-deepin-grub-theme.tar.gz

下载解压附件后,使用 root 身份执行该脚本即可,会要求手动输入所需分辨率(如 1920x1080,中间使用小写字母 x 分割即可)。

脚本内容预览:

#!/bin/bash

# Judge system distributor
DISTRIBUTOR=$(lsb_release -i -s | tr '[A-Z]' '[a-z]')
if [ $DISTRIBUTOR != "deepin" -a $DISTRIBUTOR != "uos" ] ; then
    echo "Only Deepin and UOS can run this script!"
    exit -1
fi

# Judge uid
if [ "$(id -u)" != "0" ] ; then
    echo "Please run this script as root!"
    exit 1
fi

echo "You are trying to adjust your grub theme, please use this script at your own risk."

# Remove cfg created by com.deepin.daemon.Grub2 in UOS 1060 update2
rm -f /etc/default/grub.d/11_dde.cfg

# Create /boot/grub/themes/deepin (if not existed)
if [ ! -d "/boot/grub/themes/deepin" ] ; then
    /usr/lib/deepin-api/adjust-grub-theme > /dev/null 2>&1
fi

# Provide default background_source (if not existed)
if [ ! -f "/boot/grub/themes/deepin/background_source" ] ; then
    cp -f /boot/grub/themes/deepin-fallback/background.jpg /boot/grub/themes/deepin/background_source
fi

# Enter screen resolution
echo -n "Enter your screen resolution (e.g. 1920x1080): "
read RESOLUTION

# Edit /etc/default/grub
sed -i '/^GRUB_BACKGROUND=*/c\GRUB_BACKGROUND="/boot/grub/themes/deepin/background.jpg"' /etc/default/grub
sed -i "/^GRUB_GFXMODE=*/c\GRUB_GFXMODE=\"${RESOLUTION}\"" /etc/default/grub
sed -i '/^GRUB_THEME=*/c\GRUB_THEME="/boot/grub/themes/deepin/theme.txt"' /etc/default/grub

# Create link /etc/default/grub.d/11_dde.cfg for UOS 1060 update2
ln -s /etc/default/grub /etc/default/grub.d/11_dde.cfg

# Update /boot/grub/themes/deepin
/usr/lib/deepin-api/adjust-grub-theme

# Update /boot/grub/grub.cfg
update-grub

echo
echo "Your /etc/default/grub has been changed:"
cat /etc/default/grub

echo
echo "Symbol link /etc/default/grub.d/11_dde.cfg -> /etc/default/grub has been created to be compatible with UOS 1060 update2."

sleep 3

echo
echo "adjust-grub-theme succeeded, press any key to exit..."
read

exit 0

题外话

以前的 Deepin 安装之后,grub 主题有个很好看的模糊效果,大概长这样:

667798421.png

然而自从某个版本之后,控制中心->通用->启动菜单里面就把这个主题砍掉了,即使开关主题也仍在使用 deepin-fallback 主题......

1358881-20180826202337813-867611461.jpg


当初闲着蛋疼到处翻文件夹的时候,偶然找到了 dde-api 里面实际上提供了自动调整计算 grub 主题背景的可执行文件 /usr/lib/deepin-api/adjust-grub-theme,就是不知道为啥不用了......

首次执行的时候会有警告提示找不到 background_source 文件,后来发现实际上是 deepin 这个 grub 主题刚被创建出来,没有背景图片素材。随便找个 jpg 图片改名为 background_source 塞进 /boot/grub/themes/deepin 后,再次执行就没问题了,主题效果可以正常生成。

如果重启后发现显示效果有偏移或者很模糊(比如偏在左上方,文字很小;图片模糊,文字过大之类的),说明 grub 指定的分辨率有问题。尝试修改 /etc/default/grub 指定分辨率,似乎写了多个分辨率也只识别第一个,写 auto 就没用了......


UOS 用户注意事项

  • 家庭版里面似乎有改过 dde-api,导致生成的 grub 主题中间的框框是纯黑色,一点都不好看......
  • 专业版 1060 开始似乎多了 /etc/default/grub.d/11_dde.cfg 文件,会在 update-grub 执行时覆盖 /etc/default/grub 中指定的主题配置。脚本中直接删除了这个配置文件,并在修改 /etc/default/grub后创建了软链接(因为控制中心里面修改 grub 主题的话还会生成该文件,导致 adjust-grub-theme 优先读取这个文件而找不到分辨率信息)。目测应该没啥太大影响吧......

高阶玩法

参考 4 楼大佬,直接上 grub-customizor,想怎么改就怎么改 joy
干脆找自己喜欢的主题替换也不是不行......

Reply Favorite View the author
All Replies
TXOS-C.User
deepin
2023-12-09 22:51
#1
希望能出个固定中文版的,总是默认英文每次都得手动更改
Reply View the author
阿尼樱奈奈
Moderator
2023-12-09 22:52
#2

like

Reply View the author
忘记、过去
Moderator
2023-12-09 22:58
#3
TXOS-C.User
希望能出个固定中文版的,总是默认英文每次都得手动更改

这个我倒是有印象......家庭版的 grub 启动项是中文的,但似乎别的版本上没见过


家庭版上执行脚本的时候用 sudo -E 脚本路径 就可以带着当前语言环境更新 grub 引导项名称了。具体引导项名称怎么跟着语言变化我还真不知道......

Reply View the author
偷捧时间煮酒喝
deepin
2023-12-09 23:16
#4
It has been deleted!
fax928
Moderator
2023-12-09 23:28
#5

like

Reply View the author
偷捧时间煮酒喝
deepin
2023-12-09 23:29
#6

我昨天找了很久的关于美化grub的资料,把我给折腾惨了。结果你今天就发了脚本。我太难了。

Reply View the author
忘记、过去
Moderator
2023-12-09 23:53
#7
偷捧时间煮酒喝

我昨天找了很久的关于美化grub的资料,把我给折腾惨了。结果你今天就发了脚本。我太难了。

doubt https://bbs.deepin.org.cn/post/265639 正好有个倒霉孩子在问,就干脆写个脚本算了......不然这么好看的 grub 主题没人看得到就太可惜了

Reply View the author
阿尼樱奈奈
Moderator
2023-12-10 05:03
#8
It has been deleted!
qq1156257674
deepin
2023-12-12 20:23
#9

慢慢看,还是看得懂一点,看来我得好好学习一下shell script才行。你们都用什么软件写脚本?

Reply View the author