ssm-browse/internal/common/ui/osstyle/osstyle_darwin.go

47 lines
1.1 KiB
Go
Raw Normal View History

package osstyle
import (
"github.com/pkg/errors"
"log"
"os/exec"
"strings"
)
const (
errorMessageIndicatingInLightMode = `The domain/default pair of (kCFPreferencesAnyApplication, AppleInterfaceStyle) does not exist`
)
// Usage: https://stefan.sofa-rockers.org/2018/10/23/macos-dark-mode-terminal-vim/
func darwinGetOSColorScheme() ColorScheme {
d, err := exec.Command("defaults", "read", "-g", "AppleInterfaceStyle").Output()
if err != nil {
var exitErr *exec.ExitError
if errors.As(err, &exitErr) {
stdErr := string(exitErr.Stderr)
if strings.Contains(stdErr, errorMessageIndicatingInLightMode) {
log.Printf("error message indicates that macOS is in light mode")
return ColorSchemeLightMode
}
log.Printf("cannot get current OS color scheme: %v - stderr: [%v]", err, stdErr)
} else {
log.Printf("cannot get current OS color scheme: %v", err)
}
return ColorSchemeUnknown
}
switch string(d) {
case "Dark\n":
return ColorSchemeDarkMode
case "Light\n":
return ColorSchemeLightMode
}
return ColorSchemeUnknown
}
func init() {
getOSColorScheme = darwinGetOSColorScheme
}