summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--pkg/background/set.go24
1 files changed, 19 insertions, 5 deletions
diff --git a/pkg/background/set.go b/pkg/background/set.go
index fa95f6f..2badc48 100644
--- a/pkg/background/set.go
+++ b/pkg/background/set.go
@@ -1,13 +1,27 @@
 package background
 
-import "os/exec"
+import (
+	"fmt"
+	"os"
+	"os/exec"
+)
 
 // Set calls feh to set the background
 func Set(path string) error {
-	feh, err := exec.LookPath("feh")
-	if err != nil {
+	switch os.Getenv("XDG_CURRENT_DESKTOP") {
+	case "GNOME", "Unity", "Pantheon":
+		path = fmt.Sprintf("%s%s", "file://", path)
+		err = exec.Command("gsettings", "set org.gnome.desktop.background picture-uri", path).Run()
+		return err
+	case "LXDE":
+		err = exec.Command("pcmanfm", "-w", path).Run()
+		return err
+	default:
+		feh, err := exec.LookPath("feh")
+		if err != nil {
+			return err
+		}
+		err = exec.Command(feh, "--bg-fill", path).Run()
 		return err
 	}
-	err = exec.Command(feh, "--bg-fill", path).Run()
-	return err
 }