38 lines
820 B
Go
38 lines
820 B
Go
package desktop
|
|
|
|
import (
|
|
"os"
|
|
"path"
|
|
"path/filepath"
|
|
"strings"
|
|
)
|
|
|
|
func DataDirs() []string {
|
|
var dataDirs []string
|
|
|
|
homeDir := os.Getenv("HOME")
|
|
if strings.TrimSpace(homeDir) == "" {
|
|
homeDir = "~/"
|
|
}
|
|
dataHomeSetting := os.Getenv("XDG_DATA_HOME")
|
|
if dataHomeSetting == "" {
|
|
dataHomeSetting = path.Join(homeDir, ".local/share")
|
|
}
|
|
dataDirs = append(dataDirs, filepath.Join(dataHomeSetting, "applications"))
|
|
|
|
dataDirsSetting := strings.Split(os.Getenv("XDG_DATA_DIRS"), ":")
|
|
for _, dataDir := range dataDirsSetting {
|
|
dataDir = strings.TrimSpace(dataDir)
|
|
if dataDir == "" {
|
|
continue
|
|
}
|
|
|
|
dataDirs = append(dataDirs, filepath.Join(dataDir, "applications"))
|
|
}
|
|
if len(dataDirs) == 1 {
|
|
dataDirs = append(dataDirs, "/usr/local/share/applications", "/usr/share/applications")
|
|
}
|
|
|
|
return dataDirs
|
|
}
|