Changed shell_open behaviour

(cherry picked from commit 9e57a395cf)
This commit is contained in:
Ev1lbl0w 2020-10-24 16:54:24 +01:00 committed by Rémi Verschelde
parent 94cf0dced2
commit f41cc7d644
No known key found for this signature in database
GPG Key ID: C3336907360768E1

View File

@ -2924,18 +2924,40 @@ String OS_X11::get_name() const {
}
Error OS_X11::shell_open(String p_uri) {
Error ok;
int err_code;
List<String> args;
args.push_back(p_uri);
ok = execute("xdg-open", args, false);
if (ok == OK)
// Agnostic
ok = execute("xdg-open", args, true, NULL, NULL, &err_code);
if (ok == OK && !err_code) {
return OK;
ok = execute("gnome-open", args, false);
if (ok == OK)
} else if (err_code == 2) {
return ERR_FILE_NOT_FOUND;
}
// GNOME
args.push_front("open"); // The command is `gio open`, so we need to add it to args
ok = execute("gio", args, true, NULL, NULL, &err_code);
if (ok == OK && !err_code) {
return OK;
ok = execute("kde-open", args, false);
return ok;
} else if (err_code == 2) {
return ERR_FILE_NOT_FOUND;
}
args.pop_front();
ok = execute("gvfs-open", args, true, NULL, NULL, &err_code);
if (ok == OK && !err_code) {
return OK;
} else if (err_code == 2) {
return ERR_FILE_NOT_FOUND;
}
// KDE
ok = execute("kde-open5", args, true, NULL, NULL, &err_code);
if (ok == OK && !err_code) {
return OK;
}
ok = execute("kde-open", args, true, NULL, NULL, &err_code);
return !err_code ? ok : FAILED;
}
bool OS_X11::_check_internal_feature_support(const String &p_feature) {