You've already forked panic-cli
mirror of
https://github.com/Print-and-Panic/panic-cli.git
synced 2026-01-21 10:17:41 -08:00
feat(persona): Allow verifying theme in KDE
This commit is contained in:
@@ -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
|
||||
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ type GitIdentityProvider interface {
|
||||
|
||||
type ThemeHandler interface {
|
||||
SetTheme(theme string) error
|
||||
SetWallpaper(path string) error
|
||||
GetTheme() (string, error)
|
||||
}
|
||||
|
||||
type System interface {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user