diff --git a/adjust-grub-theme/main.go b/adjust-grub-theme/main.go index b4ecae9b..56c1627d 100644 --- a/adjust-grub-theme/main.go +++ b/adjust-grub-theme/main.go @@ -410,7 +410,7 @@ func adjustThemeFallback() error { } copyThemeFiles(themeInputDir, themeOutputDir) - bgImg, err := loadBackgroundImage() + bgImg, themeBgImg, err := loadV25BackgroundImage() if err != nil { return err } @@ -419,6 +419,18 @@ func adjustThemeFallback() error { if err != nil { return err } + if themeBgImg != nil { + err = saveJpeg(themeBgImg, filepath.Join(themeOutputDir, "background_in_theme.jpg")) + if err != nil { + return err + } + } else { + _, err = copyFile(filepath.Join(themeOutputDir, "background.jpg"), + filepath.Join(themeOutputDir, "background_in_theme.jpg")) + if err != nil { + return err + } + } themeFile := filepath.Join(themeInputDir, "theme.txt.tpl") theme, err := tt.ParseThemeFile(themeFile) @@ -476,6 +488,77 @@ func adjustThemeFallback() error { return err } +// ParseOSVersionFile parses the /etc/os-version file and returns the value of SystemName, +// which is used to determine whether it is a community version. +func ParseOSVersionFile(filePath string) (string, error) { + file, err := os.Open(filePath) + if err != nil { + return "", err + } + defer file.Close() + + var systemName string + scanner := bufio.NewScanner(file) + for scanner.Scan() { + line := scanner.Text() + if strings.HasPrefix(line, "SystemName=") { + parts := strings.SplitN(line, "=", 2) + if len(parts) == 2 { + systemName = parts[1] + break + } + } + } + + if err := scanner.Err(); err != nil { + return "", err + } + + return systemName, nil +} + +// The v25 theme has 2 background images +func loadV25BackgroundImage() (image.Image, image.Image, error) { + img, err := loadImage(filepath.Join(optThemeOutputDir, themeNameNormal, "background_source")) + if err == nil { + return img, nil, nil + } + logger.Warning("failed to load image background_source:", err) + systemName, err := ParseOSVersionFile("/etc/os-version") + if err != nil { + logger.Warningf("Error reading file: %v\n", err) + return nil, nil, err + } + + var backGroundFileName, themeBackGroundFileName string + if strings.Contains(strings.ToLower(systemName), "deepin") { + backGroundFileName = "deepin_background.jpg" + themeBackGroundFileName = "deepin_background_in_theme.jpg" + } else { + backGroundFileName = "uos_background.jpg" + themeBackGroundFileName = "uos_background_in_theme.jpg" + } + + backGroundFile := filepath.Join(optThemeInputDir, themeNameFallback, backGroundFileName) + themeBackGroundFile := filepath.Join(optThemeInputDir, themeNameFallback, themeBackGroundFileName) + img, err = loadImage(backGroundFile) + if err == nil { + cmdImg, err := loadImage(themeBackGroundFile) + if err == nil { + return img, cmdImg, nil + } + } + logger.Warning(err) + + originDesktopImageFile := filepath.Join(optThemeInputDir, themeNameNormal, "background.origin.jpg") + img, err = loadImage(originDesktopImageFile) + if err != nil { + logger.Warning(err) + return nil, nil, err + } + return img, nil, nil +} + func main() { flag.Parse() if optVersion { diff --git a/adjust-grub-theme/version.go b/adjust-grub-theme/version.go index 3c9ac1ab..6efcb7df 100644 --- a/adjust-grub-theme/version.go +++ b/adjust-grub-theme/version.go @@ -4,4 +4,4 @@ package main -const VERSION int = 17 +const VERSION int = 18 diff --git a/debian/changelog b/debian/changelog index 1b3b6823..1ac9794b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +dde-api (6.0.13) unstable; urgency=medium + + * feat: add new grub theme. + + -- xinpeng.wang Wed, 25 Sep 2024 11:15:16 +0800 + dde-api (6.0.12) unstable; urgency=medium * fix: no logout sound (linuxdeepin/developer-center#9370) diff --git a/debian/control b/debian/control index d118764d..d9ce4d12 100644 --- a/debian/control +++ b/debian/control @@ -27,7 +27,7 @@ Build-Depends: golang-gopkg-check.v1-dev, libcairo2-dev, libcanberra-dev, - libfreetype-dev, + libfreetype-dev | libfreetype6-dev, libgdk-pixbuf2.0-dev, libgtk-3-dev, libpoppler-glib-dev, diff --git a/debian/postinst b/debian/postinst index 40f800c7..b7add180 100644 --- a/debian/postinst +++ b/debian/postinst @@ -36,7 +36,7 @@ adjustGrubTheme () { fi echo themeCurrentVersion: $themeCurrentVersion - if [ $themeToolVersion -gt $themeCurrentVersion ]; then + if [ $themeToolVersion -gt $themeCurrentVersion ] || [ ! -d "$fallbackThemeDir" ]; then echo need adjust grub theme $adjustGrubThemeBin -log-sys || true update-grub || true diff --git a/misc/data/grub-themes/deepin-fallback/deepin_background.jpg b/misc/data/grub-themes/deepin-fallback/deepin_background.jpg new file mode 100644 index 00000000..00d08b1e Binary files /dev/null and b/misc/data/grub-themes/deepin-fallback/deepin_background.jpg differ diff --git a/misc/data/grub-themes/deepin-fallback/deepin_background_in_theme.jpg b/misc/data/grub-themes/deepin-fallback/deepin_background_in_theme.jpg new file mode 100644 index 00000000..539b4a59 Binary files /dev/null and b/misc/data/grub-themes/deepin-fallback/deepin_background_in_theme.jpg differ diff --git a/misc/data/grub-themes/deepin-fallback/menu_e.png b/misc/data/grub-themes/deepin-fallback/menu_e.png deleted file mode 100644 index 1c658f8c..00000000 Binary files a/misc/data/grub-themes/deepin-fallback/menu_e.png and /dev/null differ diff --git a/misc/data/grub-themes/deepin-fallback/scrollbar_thumb_c.png b/misc/data/grub-themes/deepin-fallback/scrollbar_thumb_c.png deleted file mode 100644 index 97330734..00000000 Binary files a/misc/data/grub-themes/deepin-fallback/scrollbar_thumb_c.png and /dev/null differ diff --git a/misc/data/grub-themes/deepin-fallback/scrollbar_thumb_n.png b/misc/data/grub-themes/deepin-fallback/scrollbar_thumb_n.png deleted file mode 100644 index 88ee4560..00000000 Binary files a/misc/data/grub-themes/deepin-fallback/scrollbar_thumb_n.png and /dev/null differ diff --git a/misc/data/grub-themes/deepin-fallback/scrollbar_thumb_s.png b/misc/data/grub-themes/deepin-fallback/scrollbar_thumb_s.png deleted file mode 100644 index 1e3cfc21..00000000 Binary files a/misc/data/grub-themes/deepin-fallback/scrollbar_thumb_s.png and /dev/null differ diff --git a/misc/data/grub-themes/deepin-fallback/select_c.png b/misc/data/grub-themes/deepin-fallback/select_c.png deleted file mode 100644 index dfab69a6..00000000 Binary files a/misc/data/grub-themes/deepin-fallback/select_c.png and /dev/null differ diff --git a/misc/data/grub-themes/deepin-fallback/select_e.png b/misc/data/grub-themes/deepin-fallback/select_e.png deleted file mode 100644 index 062fe62f..00000000 Binary files a/misc/data/grub-themes/deepin-fallback/select_e.png and /dev/null differ diff --git a/misc/data/grub-themes/deepin-fallback/select_n.png b/misc/data/grub-themes/deepin-fallback/select_n.png deleted file mode 100644 index c034db13..00000000 Binary files a/misc/data/grub-themes/deepin-fallback/select_n.png and /dev/null differ diff --git a/misc/data/grub-themes/deepin-fallback/select_ne.png b/misc/data/grub-themes/deepin-fallback/select_ne.png deleted file mode 100644 index 7be4d3af..00000000 Binary files a/misc/data/grub-themes/deepin-fallback/select_ne.png and /dev/null differ diff --git a/misc/data/grub-themes/deepin-fallback/select_nw.png b/misc/data/grub-themes/deepin-fallback/select_nw.png deleted file mode 100644 index 58c73790..00000000 Binary files a/misc/data/grub-themes/deepin-fallback/select_nw.png and /dev/null differ diff --git a/misc/data/grub-themes/deepin-fallback/select_s.png b/misc/data/grub-themes/deepin-fallback/select_s.png deleted file mode 100644 index 036d9e62..00000000 Binary files a/misc/data/grub-themes/deepin-fallback/select_s.png and /dev/null differ diff --git a/misc/data/grub-themes/deepin-fallback/select_se.png b/misc/data/grub-themes/deepin-fallback/select_se.png deleted file mode 100644 index 47a34c0d..00000000 Binary files a/misc/data/grub-themes/deepin-fallback/select_se.png and /dev/null differ diff --git a/misc/data/grub-themes/deepin-fallback/select_sw.png b/misc/data/grub-themes/deepin-fallback/select_sw.png deleted file mode 100644 index 92906958..00000000 Binary files a/misc/data/grub-themes/deepin-fallback/select_sw.png and /dev/null differ diff --git a/misc/data/grub-themes/deepin-fallback/select_w.png b/misc/data/grub-themes/deepin-fallback/select_w.png deleted file mode 100644 index b5bfb5db..00000000 Binary files a/misc/data/grub-themes/deepin-fallback/select_w.png and /dev/null differ diff --git a/misc/data/grub-themes/deepin-fallback/selected_item_c.png b/misc/data/grub-themes/deepin-fallback/selected_item_c.png new file mode 100644 index 00000000..cf368e56 Binary files /dev/null and b/misc/data/grub-themes/deepin-fallback/selected_item_c.png differ diff --git a/misc/data/grub-themes/deepin-fallback/selected_item_e.png b/misc/data/grub-themes/deepin-fallback/selected_item_e.png new file mode 100644 index 00000000..c5fe2ba1 Binary files /dev/null and b/misc/data/grub-themes/deepin-fallback/selected_item_e.png differ diff --git a/misc/data/grub-themes/deepin-fallback/selected_item_n.png b/misc/data/grub-themes/deepin-fallback/selected_item_n.png new file mode 100644 index 00000000..b037cbf9 Binary files /dev/null and b/misc/data/grub-themes/deepin-fallback/selected_item_n.png differ diff --git a/misc/data/grub-themes/deepin-fallback/selected_item_ne.png b/misc/data/grub-themes/deepin-fallback/selected_item_ne.png new file mode 100644 index 00000000..600a87cc Binary files /dev/null and b/misc/data/grub-themes/deepin-fallback/selected_item_ne.png differ diff --git a/misc/data/grub-themes/deepin-fallback/selected_item_nw.png b/misc/data/grub-themes/deepin-fallback/selected_item_nw.png new file mode 100644 index 00000000..18e8f870 Binary files /dev/null and b/misc/data/grub-themes/deepin-fallback/selected_item_nw.png differ diff --git a/misc/data/grub-themes/deepin-fallback/selected_item_s.png b/misc/data/grub-themes/deepin-fallback/selected_item_s.png new file mode 100644 index 00000000..b037cbf9 Binary files /dev/null and b/misc/data/grub-themes/deepin-fallback/selected_item_s.png differ diff --git a/misc/data/grub-themes/deepin-fallback/selected_item_se.png b/misc/data/grub-themes/deepin-fallback/selected_item_se.png new file mode 100644 index 00000000..6c5fbe39 Binary files /dev/null and b/misc/data/grub-themes/deepin-fallback/selected_item_se.png differ diff --git a/misc/data/grub-themes/deepin-fallback/selected_item_sw.png b/misc/data/grub-themes/deepin-fallback/selected_item_sw.png new file mode 100644 index 00000000..4bfefbe3 Binary files /dev/null and b/misc/data/grub-themes/deepin-fallback/selected_item_sw.png differ diff --git a/misc/data/grub-themes/deepin-fallback/selected_item_w.png b/misc/data/grub-themes/deepin-fallback/selected_item_w.png new file mode 100644 index 00000000..c5fe2ba1 Binary files /dev/null and b/misc/data/grub-themes/deepin-fallback/selected_item_w.png differ diff --git a/misc/data/grub-themes/deepin-fallback/theme.txt.tpl b/misc/data/grub-themes/deepin-fallback/theme.txt.tpl index 5f696135..01936597 100644 --- a/misc/data/grub-themes/deepin-fallback/theme.txt.tpl +++ b/misc/data/grub-themes/deepin-fallback/theme.txt.tpl @@ -3,9 +3,9 @@ # Global Property title-text: "" -desktop-image: "background.jpg" +desktop-image: "background_in_theme.jpg" desktop-color: "#000000" -terminal-font: "Unifont Regular 16" +terminal-font: "Unifont Regular 14" terminal-box: "terminal_box_*.png" terminal-left: "0" terminal-top: "0" @@ -15,28 +15,25 @@ terminal-border: "0" # Show the boot menu + boot_menu { - left = 15% - top = 20% - width = 70% - height = 60% + left = 34% + top = 51% + width = 32% + height = 50% item_font = "Unifont Regular 16" - item_color = "#cccccc" - selected_item_color = "#0099ff" - item_height = 24 - item_spacing = 12 - selected_item_pixmap_style = "select_*.png" - scrollbar_thumb = "scrollbar_thumb_*.png" - scrollbar_width = 6 - menu_pixmap_style = "menu_*.png" + item_color = "#dddddd" + selected_item_color = "#ffffff" + item_height = 18 + item_spacing = 25 + selected_item_pixmap_style = "selected_item_*.png" } # Show a countdown message using the label component + label { - left = 0 - top = 97% - width = 100% - align = "center" - id = "__timeout__" + left = 0 + top = 97% + width = 100% + align = "center" + id = "__timeout__" _text_en = "Booting in %d seconds" # zh_CN _text_zh_CN = "在 %d 秒内启动" @@ -44,16 +41,15 @@ terminal-border: "0" _text_zh_TW = "在 %d 秒內啟動" # zh_HK _text_zh_HK = "在 %d 秒內啟動" - color = "#99E53E" - font = "Unifont Regular 16" + color = "#7d7d7d" + font = "Unifont Regular 16" } - + label { left = 0 top = 94% width = 100% align = "center" - color = "#99E53E" + color = "#7d7d7d" font = "Unifont Regular 16" # EN _text_en = "Use ↑ and ↓ keys to change selection, Enter to confirm, E to edit the commands before booting or C for a command-line" diff --git a/misc/data/grub-themes/deepin-fallback/uos_background.jpg b/misc/data/grub-themes/deepin-fallback/uos_background.jpg new file mode 100644 index 00000000..00d08b1e Binary files /dev/null and b/misc/data/grub-themes/deepin-fallback/uos_background.jpg differ diff --git a/misc/data/grub-themes/deepin-fallback/uos_background_in_theme.jpg b/misc/data/grub-themes/deepin-fallback/uos_background_in_theme.jpg new file mode 100644 index 00000000..dc4a724b Binary files /dev/null and b/misc/data/grub-themes/deepin-fallback/uos_background_in_theme.jpg differ