feat(persona): Allow verifying theme in KDE

This commit is contained in:
Panic
2025-12-08 07:22:02 -07:00
parent 66cfb1f86d
commit 7bcca1f792
5 changed files with 47 additions and 21 deletions

View File

@@ -44,13 +44,10 @@ var setCmd = &cobra.Command{
fmt.Printf("🎭 Switching to: %s\n", targetName)
// Execute Logic
err := system.CurrentSystem.SetGitIdentity(git.GitIdentity{
Name: persona.GitName,
Email: persona.GitEmail,
})
err := setPersona(persona)
if err != nil {
fmt.Printf("❌ Failed to set Git Identity: %v\n", err)
fmt.Printf("❌ %s\n", err)
os.Exit(1)
}
// Verify the active identity (checks for local overrides, env vars, etc.)
@@ -60,14 +57,28 @@ var setCmd = &cobra.Command{
os.Exit(1)
}
err = system.CurrentSystem.SetTheme(persona.KdeTheme)
if err != nil {
fmt.Printf("❌ Failed to set KDE Theme: %v\n", err)
}
},
}
func init() {
PersonaCmd.AddCommand(setCmd)
}
func setPersona(persona config.PersonaConfig) error {
// Execute Logic
err := system.CurrentSystem.SetGitIdentity(git.GitIdentity{
Name: persona.GitName,
Email: persona.GitEmail,
})
if err != nil {
fmt.Printf("❌ Failed to set Git Identity: %v\n", err)
}
err = system.CurrentSystem.SetTheme(persona.KdeTheme)
if err != nil {
fmt.Printf("❌ Failed to set KDE Theme: %v\n", err)
}
return nil
}

View File

@@ -41,5 +41,15 @@ func validatePersona() error {
}
}
currentTheme, err := system.CurrentSystem.GetTheme()
if err != nil {
return fmt.Errorf("failed to get theme: %v", err)
}
fmt.Printf("Current Theme: '%s'\n", currentTheme)
if currentTheme != persona.KdeTheme {
return fmt.Errorf("theme mismatch")
}
return nil
}

View File

@@ -1,6 +1,9 @@
package kde
import "os/exec"
import (
"os/exec"
"strings"
)
type DefaultLookAndFeel struct{}
@@ -11,10 +14,12 @@ func (d *DefaultLookAndFeel) SetTheme(themeName string) error {
return exec.Command("plasma-apply-lookandfeel", "-a", themeName).Run()
}
func (d *DefaultLookAndFeel) SetWallpaper(path string) error {
if path == "" {
return nil
func (d *DefaultLookAndFeel) GetTheme() (string, error) {
cmd := exec.Command("kreadconfig5", "--file", "kdeglobals", "--group", "KDE", "--key", "LookAndFeelPackage")
output, err := cmd.Output()
if err != nil {
return "", err
}
// Add plasma script logic here
return nil
return strings.TrimSpace(string(output)), nil
}

View File

@@ -10,7 +10,7 @@ type GitIdentityProvider interface {
type ThemeHandler interface {
SetTheme(theme string) error
SetWallpaper(path string) error
GetTheme() (string, error)
}
type System interface {

View File

@@ -36,7 +36,7 @@ func (m *MockSystem) SetTheme(theme string) error {
return nil
}
func (m *MockSystem) SetWallpaper(path string) error {
fmt.Printf("🔍 [DRY-RUN] Setting Wallpaper to: '%s'\n", path)
return nil
func (m *MockSystem) GetTheme() (string, error) {
fmt.Println("🔍 [DRY-RUN] Retrieving current KDE Theme (Mocked)")
return "Mock Theme", nil
}