diff --git a/pkg/snap/setup/gui/ocs-url.desktop b/pkg/snap/setup/gui/ocs-url.desktop
index c3e2453e0998af2fce580146a64ee5e7cd39a144..f0b1b9c5d6b16e05f07a6f01beb76ed3c7b89509 100644
--- a/pkg/snap/setup/gui/ocs-url.desktop
+++ b/pkg/snap/setup/gui/ocs-url.desktop
@@ -6,4 +6,4 @@ Type=Application
 Terminal=false
 NoDisplay=true
 Categories=Network;Utility;
-MimeType=x-scheme-handler/ocs;x-scheme-handler/ocss;
+MimeType=x-scheme-handler/ocs;x-scheme-handler/ocss;x-scheme-handler/xdg;x-scheme-handler/xdgs;
diff --git a/src/app/handlers/ocsurlhandler.cpp b/src/app/handlers/ocsurlhandler.cpp
index f3f1aae0ca14889ed8a28684b7b55593d9f02b73..547c6c528c6a7275b0924d0f88dafcf1c12bd803 100644
--- a/src/app/handlers/ocsurlhandler.cpp
+++ b/src/app/handlers/ocsurlhandler.cpp
@@ -54,7 +54,8 @@ bool OcsUrlHandler::isValid()
     QString type = metadata_["type"].toString();
     QString filename = metadata_["filename"].toString();
 
-    if ((scheme == "ocs" || scheme == "ocss")
+    // Still support xdg and xdgs schemes for backward compatibility
+    if ((scheme == "ocs" || scheme == "ocss" || scheme == "xdg" || scheme == "xdgs")
             && (command == "download" || command == "install")
             && QUrl(url).isValid()
             && destinations_.contains(type)
diff --git a/src/desktop/ocs-url.desktop b/src/desktop/ocs-url.desktop
index 7e1c16d254383c34f6eb92518c81dc040dfd5e50..9f41684b00e845c044647dd453caad61181874a3 100644
--- a/src/desktop/ocs-url.desktop
+++ b/src/desktop/ocs-url.desktop
@@ -6,4 +6,4 @@ Type=Application
 Terminal=false
 NoDisplay=true
 Categories=Network;Utility;
-MimeType=x-scheme-handler/ocs;x-scheme-handler/ocss;
+MimeType=x-scheme-handler/ocs;x-scheme-handler/ocss;x-scheme-handler/xdg;x-scheme-handler/xdgs;