diff --git a/deployment.pri b/deployment.pri
new file mode 100644
index 0000000000000000000000000000000000000000..5e28d19a8201b8c691cda2d40498f8bd2e131d82
--- /dev/null
+++ b/deployment.pri
@@ -0,0 +1,21 @@
+unix:!android {
+    isEmpty(PREFIX) {
+        PREFIX = /usr/local
+    }
+
+    SRCDIR = src
+    BINDIR = $${PREFIX}/bin
+    DATADIR = $${PREFIX}/share
+
+    target.path = $${BINDIR}
+
+    desktopentry.files = $${SRCDIR}/desktop/$${TARGET}.desktop
+    desktopentry.path = $${DATADIR}/applications
+
+    icon.files = $${SRCDIR}/desktop/$${TARGET}.svg
+    icon.path = $${DATADIR}/icons/hicolor/scalable/apps
+
+    INSTALLS += target desktopentry icon
+}
+
+export(INSTALLS)
diff --git a/rpath.pri b/rpath.pri
new file mode 100644
index 0000000000000000000000000000000000000000..b3cd65e83d8e1df1c1d7bc94254dc152a2a91226
--- /dev/null
+++ b/rpath.pri
@@ -0,0 +1,5 @@
+unix:!android {
+    QMAKE_LFLAGS += -Wl,-rpath=\\\$\$ORIGIN
+    QMAKE_LFLAGS += -Wl,-rpath=/usr/lib/$${TARGET}
+    QMAKE_RPATH =
+}
diff --git a/xdgurl.pro b/xdgurl.pro
new file mode 100644
index 0000000000000000000000000000000000000000..be39082479dd2786abeec75585e72bbe24b7d996
--- /dev/null
+++ b/xdgurl.pro
@@ -0,0 +1,43 @@
+TARGET = xdgurl
+
+TEMPLATE = app
+
+QT += \
+    core \
+    gui \
+    widgets \
+    qml \
+    quick \
+    svg \
+    network
+
+CONFIG += \
+    c++11
+
+SOURCES += \
+    src/main.cpp \
+    src/core/config.cpp \
+    src/core/network.cpp \
+    src/handlers/item.cpp \
+    src/utility/file.cpp \
+    src/utility/json.cpp
+
+HEADERS += \
+    src/core/config.h \
+    src/core/network.h \
+    src/handlers/item.h \
+    src/utility/file.h \
+    src/utility/json.h
+
+RESOURCES += \
+    src/qml.qrc \
+    src/configs.qrc
+
+DISTFILES += \
+    README.md
+
+# Additional RPATH
+#include(rpath.pri)
+
+# Deployment rules
+include(deployment.pri)