diff options
author | Kali Kaneko (leap communications) <kali@leap.se> | 2019-01-12 18:39:45 +0100 |
---|---|---|
committer | Ruben Pollan <meskio@sindominio.net> | 2019-01-17 12:30:32 +0100 |
commit | b1247d2d0d51108c910a73891ff3116e5f032ab1 (patch) | |
tree | e9948964f0bfb1ad2df3bc7bad02aa1f41ccfbd8 /vendor/github.com/ProtonMail/go-autostart/autostart_xdg.go | |
parent | efcb8312e31b5c2261b1a1e95ace55b322cfcc27 (diff) |
[pkg] all your deps are vendored to us
Diffstat (limited to 'vendor/github.com/ProtonMail/go-autostart/autostart_xdg.go')
-rw-r--r-- | vendor/github.com/ProtonMail/go-autostart/autostart_xdg.go | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/vendor/github.com/ProtonMail/go-autostart/autostart_xdg.go b/vendor/github.com/ProtonMail/go-autostart/autostart_xdg.go new file mode 100644 index 0000000..39306a5 --- /dev/null +++ b/vendor/github.com/ProtonMail/go-autostart/autostart_xdg.go @@ -0,0 +1,69 @@ +// +build !windows,!darwin + +package autostart + +import ( + "os" + "path/filepath" + "text/template" +) + +const desktopTemplate = `[Desktop Entry] +Type=Application +Name={{.DisplayName}} +Exec={{.Exec}} +{{- if .Icon}} +Icon={{.Icon}}{{end}} +X-GNOME-Autostart-enabled=true +` + +var autostartDir string + +func init() { + if os.Getenv("XDG_CONFIG_HOME") != "" { + autostartDir = os.Getenv("XDG_CONFIG_HOME") + } else { + autostartDir = filepath.Join(os.Getenv("HOME"), ".config") + } + autostartDir = filepath.Join(autostartDir, "autostart") +} + +func (a *App) path() string { + return filepath.Join(autostartDir, a.Name+".desktop") +} + +// Check if the app is enabled on startup. +func (a *App) IsEnabled() bool { + _, err := os.Stat(a.path()) + return err == nil +} + +type app struct { + *App +} + +// Override App.Exec to return a string. +func (a *app) Exec() string { + return quote(a.App.Exec) +} + +// Enable this app on startup. +func (a *App) Enable() error { + t := template.Must(template.New("desktop").Parse(desktopTemplate)) + + if err := os.MkdirAll(autostartDir, 0777); err != nil { + return err + } + f, err := os.Create(a.path()) + if err != nil { + return err + } + defer f.Close() + + return t.Execute(f, &app{a}) +} + +// Disable this app on startup. +func (a *App) Disable() error { + return os.Remove(a.path()) +} |