diff --git a/main.go b/main.go index 907f27a..5a90852 100644 --- a/main.go +++ b/main.go @@ -189,7 +189,7 @@ func main() { // Otherwise the command may behave in two ways: // 1. kill the running non-residennt instance and exit; // 2. die if a resident instance found. - lockFilePath := path.Join(tempDir(), "nwg-drawer.lock") + lockFilePath := path.Join(dataDir(), "nwg-drawer.lock") lockFile, err := singleinstance.CreateLockFile(lockFilePath) if err != nil { pid, err := readTextFile(lockFilePath) diff --git a/tools.go b/tools.go index 973208a..1a9d958 100644 --- a/tools.go +++ b/tools.go @@ -131,17 +131,6 @@ func cacheDir() string { return "" } -func tempDir() string { - if os.Getenv("TMPDIR") != "" { - return os.Getenv("TMPDIR") - } else if os.Getenv("TEMP") != "" { - return os.Getenv("TEMP") - } else if os.Getenv("TMP") != "" { - return os.Getenv("TMP") - } - return "/tmp" -} - func readTextFile(path string) (string, error) { bytes, err := os.ReadFile(path) if err != nil { @@ -177,6 +166,20 @@ func configDir() string { return dir } +func dataDir() string { + var dir string + if os.Getenv("XDG_DATA_HOME") != "" { + dir = path.Join(os.Getenv("XDG_DATA_HOME"), "nwg-drawer") + } else if os.Getenv("HOME") != "" { + dir = path.Join(os.Getenv("HOME"), ".local/share/nwg-drawer") + } + + log.Infof("Data dir: %s", dir) + createDir(dir) + + return dir +} + func createDir(dir string) { if _, err := os.Stat(dir); os.IsNotExist(err) { err := os.MkdirAll(dir, os.ModePerm)