|
|
|
@ -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)
|
|
|
|
|