summary refs log tree commit diff
path: root/bin/xdg-open
diff options
context:
space:
mode:
Diffstat (limited to 'bin/xdg-open')
-rwxr-xr-xbin/xdg-open27
1 files changed, 27 insertions, 0 deletions
diff --git a/bin/xdg-open b/bin/xdg-open
new file mode 100755
index 0000000..c26df0f
--- /dev/null
+++ b/bin/xdg-open
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+set -e
+
+arg0="$(basename "$0")"
+
+container=${container:-}
+if [ ! "${container}" = "firejail" ]; then
+	exec /usr/bin/"${arg0}" $@
+fi
+
+portal() {
+	if [ $# -lt 1 ]; then
+		printf "missing argument\n" >&2
+		exit 1
+	fi
+	exec gdbus call --session \
+		--dest org.freedesktop.portal.Desktop \
+		--object-path "/org/freedesktop/portal/desktop" \
+		--method org.freedesktop.portal.OpenURI.OpenURI \
+		"" "$1" "{}"
+}
+
+case "$(basename "$0")" in
+xdg-open) portal $@ ;;
+gio) if [ ! "$1" = "open" ]; then exec /usr/bin/$arg0 $@; else portal "${2}"; fi ;;
+esac