Add toggle-nightlight command

master
Hugo Thunnissen 2 years ago
parent 7bdc03be37
commit dd684d6357

@ -10,6 +10,7 @@ import (
"os/exec"
"os/user"
"strconv"
"strings"
"syscall"
)
@ -19,6 +20,8 @@ COMMANDS
dump-init-files: Dump emacs/bash init files to home directory, overwriting existing files.
List of files: ~/.bash_aliases, ~/.emacs, ~/.custom.el
toggle-nightlight: Toggle Gnome display nightlight feature.
`
//go:embed emacs/init.el
@ -248,7 +251,7 @@ func SetEnvVars() {
// GO Stuff
os.Setenv("GOPATH", home+"/go")
os.Setenv("PATH", home+"/go/bin:"+os.Getenv("PATH"))
os.Setenv("PATH", "/usr/local/go/bin:"+os.Getenv("PATH"))
os.Setenv("PATH", "/usr/local/go/bin:"+os.Getenv("PATH"))
os.Setenv("PATH", "/usr/local/gopkg/bin:"+os.Getenv("PATH"))
os.Setenv("GOPRIVATE", "git.snorba.art")
}
@ -268,6 +271,76 @@ func DumpStringToFile(data string, path string) error {
return writer.Flush()
}
func ToggleNightLight() error {
getState := exec.Command(
"gsettings",
"get",
"org.gnome.settings-daemon.plugins.color",
"night-light-enabled",
)
state, err := getState.CombinedOutput()
if err != nil {
return fmt.Errorf("%w: %s", err, state)
}
stateStr := strings.TrimSpace(string(state))
desiredState := "true"
if stateStr == desiredState {
desiredState = "false"
}
out, err := exec.Command(
"gsettings",
"set",
"org.gnome.settings-daemon.plugins.color",
"night-light-enabled",
desiredState,
).CombinedOutput()
if err != nil {
return fmt.Errorf("%w: %s", err, out)
}
return nil
}
func DumpInitFiles() error {
home := os.Getenv("HOME")
elispThemeDir := home + "/.workspace/elisp-themes"
if _, err := os.Stat(elispThemeDir); os.IsNotExist(err) {
err = os.MkdirAll(elispThemeDir, 0755)
if err != nil {
return fmt.Errorf(
"Failed to create elisp theme dir in %v: %w",
elispThemeDir,
err,
)
}
}
files := map[string]string{
home + "/.emacs": initLisp,
home + "/.custom.el": customLisp,
home + "/.bash_aliases": bashAliases,
elispThemeDir + "/epaper-theme.el": elispEpaperTheme,
home + "/.gitconfig": gitConfig,
home + "/.gitignore": gitIgnore,
}
for file, contents := range files {
fmt.Fprintln(os.Stderr, "Dumping to "+file)
err := DumpStringToFile(contents, file)
if err != nil {
return err
}
}
return nil
}
func main() {
var cmd string
if len(os.Args) > 1 {
@ -307,37 +380,16 @@ func main() {
os.Exit(1)
}
case "dump-init-files":
home := os.Getenv("HOME")
elispThemeDir := home + "/.workspace/elisp-themes"
if _, err := os.Stat(elispThemeDir); os.IsNotExist(err) {
err = os.MkdirAll(elispThemeDir, 0755)
if err != nil {
fmt.Fprintln(
os.Stderr,
"Failed to create elisp theme dir in"+elispThemeDir,
)
os.Exit(1)
}
}
files := map[string]string{
home + "/.emacs": initLisp,
home + "/.custom.el": customLisp,
home + "/.bash_aliases": bashAliases,
elispThemeDir + "/epaper-theme.el": elispEpaperTheme,
home + "/.gitconfig": gitConfig,
home + "/.gitignore": gitIgnore,
err := DumpInitFiles()
if err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
for file, contents := range files {
fmt.Fprintln(os.Stderr, "Dumping to "+file)
err := DumpStringToFile(contents, file)
if err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
case "toggle-nightlight":
err := ToggleNightLight()
if err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
default:
fmt.Println(usage)

Loading…
Cancel
Save