diff --git a/main.go b/main.go index 29be04b..52882bf 100644 --- a/main.go +++ b/main.go @@ -243,7 +243,10 @@ func main() { // Copy default style sheet if not found if !pathExists(filepath.Join(configDirectory, "drawer.css")) { - copyFile(filepath.Join(getDataHome(), "nwg-drawer/drawer.css"), filepath.Join(configDirectory, "drawer.css")) + err := copyFile("/usr/share/nwg-drawer/drawer.css", filepath.Join(configDirectory, "drawer.css")) + if err != nil { + log.Errorf("Failed copying 'drawer.css' file: %s", err) + } } cacheDirectory := cacheDir() @@ -312,7 +315,11 @@ func main() { log.Infof("User demanded theme: %s", *gtkTheme) } } else { - settings.SetProperty("gtk-application-prefer-dark-theme", true) + err := settings.SetProperty("gtk-application-prefer-dark-theme", true) + if err != nil { + log.Error("Error setting 'gtk-application-prefer-dark-theme' property") + return + } log.Info("Preferring dark theme variants") } diff --git a/tools.go b/tools.go index 7a29af7..ff08045 100644 --- a/tools.go +++ b/tools.go @@ -7,7 +7,6 @@ import ( "fmt" "io" "io/fs" - "io/ioutil" "os" "os/exec" "path" @@ -143,7 +142,7 @@ func tempDir() string { } func readTextFile(path string) (string, error) { - bytes, err := ioutil.ReadFile(path) + bytes, err := os.ReadFile(path) if err != nil { return "", err } @@ -197,12 +196,22 @@ func copyFile(src, dst string) error { if srcfd, err = os.Open(src); err != nil { return err } - defer srcfd.Close() + defer func(srcfd *os.File) { + err := srcfd.Close() + if err != nil { + log.Errorf("Error closing file: %v", srcfd) + } + }(srcfd) if dstfd, err = os.Create(dst); err != nil { return err } - defer dstfd.Close() + defer func(dstfd *os.File) { + err := dstfd.Close() + if err != nil { + log.Errorf("Error closing file: %v", dstfd) + } + }(dstfd) if _, err = io.Copy(dstfd, srcfd); err != nil { return err @@ -213,13 +222,6 @@ func copyFile(src, dst string) error { return os.Chmod(dst, srcinfo.Mode()) } -func getDataHome() string { - if os.Getenv("XDG_DATA_HOME") != "" { - return os.Getenv("XDG_DATA_HOME") - } - return "/usr/share/" -} - func getAppDirs() []string { var dirs []string xdgDataDirs := "" @@ -261,12 +263,20 @@ func loadPreferredApps(path string) (map[string]interface{}, error) { if err != nil { return nil, err } - defer jsonFile.Close() + defer func(jsonFile *os.File) { + err := jsonFile.Close() + if err != nil { + log.Errorf("Error closing file: %v", jsonFile) + } + }(jsonFile) - byteValue, _ := ioutil.ReadAll(jsonFile) + byteValue, _ := io.ReadAll(jsonFile) var result map[string]interface{} - json.Unmarshal([]byte(byteValue), &result) + err = json.Unmarshal(byteValue, &result) + if err != nil { + return nil, err + } if len(result) == 0 { return nil, errors.New("json invalid or empty") @@ -275,8 +285,8 @@ func loadPreferredApps(path string) (map[string]interface{}, error) { return result, nil } -func listFiles(dir string) ([]fs.FileInfo, error) { - files, err := ioutil.ReadDir(dir) +func listFiles(dir string) ([]fs.DirEntry, error) { + files, err := os.ReadDir(dir) if err == nil { return files, nil } @@ -300,12 +310,12 @@ func listDesktopFiles() []string { } func setUpCategories() { - path := filepath.Join(getDataHome(), "nwg-drawer/desktop-directories") var other category for _, cName := range categoryNames { fileName := fmt.Sprintf("%s.directory", cName) - lines, err := loadTextFile(filepath.Join(path, fileName)) + fp := filepath.Join("/usr/share/nwg-drawer/desktop-directories", fileName) + lines, err := loadTextFile(fp) if err == nil { var cat category cat.Name = cName @@ -350,6 +360,8 @@ func setUpCategories() { } else { other = cat } + } else { + log.Errorf("Couldn't open %s", fp) } } sort.Slice(categories, func(i, j int) bool { @@ -463,7 +475,7 @@ func pathExists(name string) bool { } func loadTextFile(path string) ([]string, error) { - bytes, err := ioutil.ReadFile(path) + bytes, err := os.ReadFile(path) if err != nil { return nil, err } @@ -514,14 +526,19 @@ func savePinned() { log.Fatal(err) } - defer f.Close() + defer func(f *os.File) { + err := f.Close() + if err != nil { + log.Errorf("Error closing file: %v", f) + } + }(f) for _, line := range pinned { if line != "" { _, err := f.WriteString(line + "\n") if err != nil { - log.Errorf("Error saving pinned", err) + log.Error("Error saving pinned", err) } } }