diff --git a/src/clj/clojure/java/browse.clj b/src/clj/clojure/java/browse.clj
index 1acda37..76087ac 100644
--- a/src/clj/clojure/java/browse.clj
+++ b/src/clj/clojure/java/browse.clj
@@ -17,7 +17,13 @@
   (-> "os.name" System/getProperty .toLowerCase
     (.startsWith "mac os x")))
 
-(def ^:dynamic *open-url-script* (when (macosx?) "/usr/bin/open"))
+(defn- freedesktop? []
+  (not (.startsWith "which" (:out (sh/sh "which" "xdg-open")))))
+
+(def ^:dynamic *open-url-script*
+  (cond
+    (macosx?) "/usr/bin/open"
+    (freedesktop?) "xdg-open"))
 
 (defn- open-url-in-browser
   "Opens url (a string) in the default system web browser.  May not
