aboutsummaryrefslogtreecommitdiff
path: root/bin/rofi
diff options
context:
space:
mode:
Diffstat (limited to 'bin/rofi')
-rwxr-xr-xbin/rofi30
1 files changed, 30 insertions, 0 deletions
diff --git a/bin/rofi b/bin/rofi
new file mode 100755
index 0000000..cfa5a8f
--- /dev/null
+++ b/bin/rofi
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+# GNOME on Wayland does not support the layer-shell protocol that rofi's
+# native Wayland backend requires, so fall back to Xwayland there.
+
+self_path=$(readlink -f "$0" 2>/dev/null || printf '%s\n' "$0")
+rofi_bin=""
+
+for candidate in /usr/bin/rofi /bin/rofi; do
+ candidate_path=$(readlink -f "$candidate" 2>/dev/null || printf '%s\n' "$candidate")
+ if [ -x "$candidate" ] && [ "$candidate_path" != "$self_path" ]; then
+ rofi_bin="$candidate"
+ break
+ fi
+done
+
+if [ -z "$rofi_bin" ]; then
+ printf '%s\n' "rofi: unable to find the system rofi binary" >&2
+ exit 127
+fi
+
+if [ "${XDG_SESSION_TYPE:-}" = "wayland" ] && [ -n "${WAYLAND_DISPLAY:-}" ]; then
+ case "${XDG_CURRENT_DESKTOP:-}:${DESKTOP_SESSION:-}" in
+ *GNOME*:*|*:gnome|GNOME:*|gnome:*)
+ set -- -x11 "$@"
+ ;;
+ esac
+fi
+
+exec "$rofi_bin" "$@"
nihil fit ex nihilo