Skip to content

Commit cdf3046

Browse files
Decodetalkersdengbo11
authored andcommitted
feat: support to set anykind of grub theme
Log:
1 parent df12d6d commit cdf3046

2 files changed

Lines changed: 40 additions & 0 deletions

File tree

bin/dde-system-daemon/exported_methods_auto.go

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bin/dde-system-daemon/plymouth.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,41 @@ func (d *Daemon) scalePlymouth(scale uint32) error {
6565
return nil
6666
}
6767

68+
func (d *Daemon) SetPlymouthTheme(themeName string) *dbus.Error {
69+
return dbusutil.ToError(d.setPlymouthTheme(themeName))
70+
}
71+
72+
func (d *Daemon) setPlymouthTheme(themeName string) error {
73+
plymouthLocker.Lock()
74+
defer plymouthLocker.Unlock()
75+
defer logger.Debug("end ScalePlymouth", themeName)
76+
themelistout, err := exec.Command("plymouth-set-default-theme", "--list").CombinedOutput()
77+
if err != nil {
78+
return fmt.Errorf("seems cannot find the plymouth-set-default-theme: %v", err)
79+
}
80+
themelist := string(themelistout)
81+
if !strings.Contains(themelist, themeName) {
82+
return fmt.Errorf("The themeName %s does not exist in plymouth themelist", themeName)
83+
}
84+
85+
out, err := exec.Command("plymouth-set-default-theme", themeName).CombinedOutput()
86+
if err != nil {
87+
return fmt.Errorf("failed to set plymouth theme: %s, err: %v", string(out), err)
88+
}
89+
90+
kernel, err := exec.Command("uname", "-r").CombinedOutput()
91+
if err != nil {
92+
return fmt.Errorf("failed to get kernel, err: %v", err)
93+
}
94+
out, err = exec.Command("update-initramfs",
95+
"-u", "-k", string(bytes.TrimSpace(kernel))).CombinedOutput()
96+
if err != nil {
97+
return fmt.Errorf("failed to update initramfs: %s, err: %v", string(out), err)
98+
}
99+
100+
return nil
101+
}
102+
68103
func getEditionName() (string, error) {
69104
conf, err := parseInfoFile("/etc/os-version", "=")
70105
if err != nil {

0 commit comments

Comments
 (0)