diff --git a/cmd/persona/set.go b/cmd/persona/set.go index c11bd1e..7c87114 100644 --- a/cmd/persona/set.go +++ b/cmd/persona/set.go @@ -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 + +} diff --git a/cmd/persona/status.go b/cmd/persona/status.go index 4a8a9d1..38ec7ae 100644 --- a/cmd/persona/status.go +++ b/cmd/persona/status.go @@ -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 } diff --git a/internal/kde/look_and_feel.go b/internal/kde/look_and_feel.go index 69cdc27..b994cd4 100644 --- a/internal/kde/look_and_feel.go +++ b/internal/kde/look_and_feel.go @@ -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 } diff --git a/internal/platform/interface.go b/internal/platform/interface.go index d699ed0..a65a334 100644 --- a/internal/platform/interface.go +++ b/internal/platform/interface.go @@ -10,7 +10,7 @@ type GitIdentityProvider interface { type ThemeHandler interface { SetTheme(theme string) error - SetWallpaper(path string) error + GetTheme() (string, error) } type System interface { diff --git a/internal/platform/mock.go b/internal/platform/mock.go index f36ab11..401a7d0 100644 --- a/internal/platform/mock.go +++ b/internal/platform/mock.go @@ -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 }