diff options
Diffstat (limited to 'bin/rofi')
| -rwxr-xr-x | bin/rofi | 30 |
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" "$@" |
