From 073df3d7eb59ea73f652927a637e2a3f99a584a2 Mon Sep 17 00:00:00 2001
From: Andrea Pappacoda <andrea@pappacoda.it>
Date: Thu, 28 Apr 2022 23:24:19 +0200
Subject: [PATCH] dist: add AppStream metadata

The AppStream file is mostly copied from the one already used by the
Flatpak yuzu build:
https://github.com/flathub/org.yuzu_emu.yuzu/blob/62fc225acfa0178ddf61be68ad9be60841077263/org.yuzu_emu.yuzu.metainfo.xml

As it already defines the application id as org.yuzu_emu.yuzu I renamed
the yuzu.desktop and yuzu.xml files so that they match.

I've also made some minor tweaks to it, like fixing the capitalization
of "yuzu", adding a few keys and sorting them as presented in the
documentation.

Lastly, I added PrefersNonDefaultGPU=true to the .desktop file so that
yuzu is launched with the dedicated graphics card on Linux.
---
 CMakeLists.txt                                | 22 ++++----
 ...yuzu.desktop => org.yuzu_emu.yuzu.desktop} |  4 +-
 dist/org.yuzu_emu.yuzu.metainfo.xml           | 51 +++++++++++++++++++
 dist/{yuzu.xml => org.yuzu_emu.yuzu.xml}      | 10 ++--
 4 files changed, 71 insertions(+), 16 deletions(-)
 rename dist/{yuzu.desktop => org.yuzu_emu.yuzu.desktop} (85%)
 create mode 100644 dist/org.yuzu_emu.yuzu.metainfo.xml
 rename dist/{yuzu.xml => org.yuzu_emu.yuzu.xml} (85%)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index dcd4011a5..fe12f3d23 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -639,14 +639,18 @@ endif()
 # =========================
 
 # Install freedesktop.org metadata files, following those specifications:
-# http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html
-# http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html
-# http://standards.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html
+# https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html
+# https://specifications.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html
+# https://specifications.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html
+# https://www.freedesktop.org/software/appstream/docs/
 if(ENABLE_QT AND UNIX AND NOT APPLE)
-    install(FILES "${PROJECT_SOURCE_DIR}/dist/yuzu.desktop"
-            DESTINATION "${CMAKE_INSTALL_PREFIX}/share/applications")
-    install(FILES "${PROJECT_SOURCE_DIR}/dist/yuzu.svg"
-            DESTINATION "${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/scalable/apps")
-    install(FILES "${PROJECT_SOURCE_DIR}/dist/yuzu.xml"
-            DESTINATION "${CMAKE_INSTALL_PREFIX}/share/mime/packages")
+    install(FILES "dist/org.yuzu_emu.yuzu.desktop"
+            DESTINATION "share/applications")
+    install(FILES "dist/yuzu.svg"
+            DESTINATION "share/icons/hicolor/scalable/apps"
+            RENAME "org.yuzu_emu.yuzu.svg")
+    install(FILES "dist/org.yuzu_emu.yuzu.xml"
+            DESTINATION "share/mime/packages")
+    install(FILES "dist/org.yuzu_emu.yuzu.metainfo.xml"
+            DESTINATION "share/metainfo")
 endif()
diff --git a/dist/yuzu.desktop b/dist/org.yuzu_emu.yuzu.desktop
similarity index 85%
rename from dist/yuzu.desktop
rename to dist/org.yuzu_emu.yuzu.desktop
index 6cc0704d2..3652a3abc 100644
--- a/dist/yuzu.desktop
+++ b/dist/org.yuzu_emu.yuzu.desktop
@@ -4,9 +4,9 @@ Type=Application
 Name=yuzu
 GenericName=Switch Emulator
 Comment=Nintendo Switch video game console emulator
-Icon=yuzu
+Icon=org.yuzu_emu.yuzu
 TryExec=yuzu
 Exec=yuzu %f
 Categories=Game;Emulator;Qt;
 MimeType=application/x-nx-nro;application/x-nx-nso;application/x-nx-nsp;application/x-nx-xci;
-Keywords=Switch;Nintendo;
\ No newline at end of file
+Keywords=Nintendo;Switch;
diff --git a/dist/org.yuzu_emu.yuzu.metainfo.xml b/dist/org.yuzu_emu.yuzu.metainfo.xml
new file mode 100644
index 000000000..5f366137b
--- /dev/null
+++ b/dist/org.yuzu_emu.yuzu.metainfo.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<component type="desktop-application">
+  <id>org.yuzu_emu.yuzu</id>
+  <metadata_license>CC0-1.0</metadata_license>
+  <name>yuzu</name>
+  <summary>Nintendo Switch emulator</summary>
+  <description>
+    <p>yuzu is the world's most popular, open-source, Nintendo Switch emulator — started by the creators of Citra.</p>
+    <p>The emulator is capable of running most commercial games at full speed, provided you meet the necessary hardware requirements.</p>
+    <p>For a full list of games yuzu support, please visit our Compatibility page.</p>
+    <p>Check out our website for the latest news on exciting features, monthly progress reports, and more!</p>
+  </description>
+  <categories>
+    <category>Game</category>
+    <category>Emulator</category>
+  </categories>
+  <keywords>
+    <keyword>switch</keyword>
+    <keyword>emulator</keyword>
+  </keywords>
+  <url type="homepage">https://yuzu-emu.org/</url>
+  <url type="bugtracker">https://github.com/yuzu-emu/yuzu/issues</url>
+  <url type="faq">https://yuzu-emu.org/wiki/faq/</url>
+  <url type="help">https://yuzu-emu.org/wiki/home/</url>
+  <url type="donation">https://yuzu-emu.org/donate/</url>
+  <url type="translate">https://www.transifex.com/projects/p/yuzu</url>
+  <url type="contact">https://community.citra-emu.org/</url>
+  <url type="vcs-browser">https://github.com/yuzu-emu/yuzu</url>
+  <url type="contribute">https://yuzu-emu.org/wiki/contributing/</url>
+  <launchable type="desktop-id">org.yuzu_emu.yuzu.desktop</launchable>
+  <provides>
+    <binary>yuzu</binary>
+    <binary>yuzu-cmd</binary>
+  </provides>
+  <requires>
+    <memory>8192</memory>
+  </requires>
+  <recommends>
+    <memory>16384</memory>
+  </recommends>
+  <project_license>GPL-3.0-or-later</project_license>
+  <developer_name>yuzu Emulator Team</developer_name>
+  <content_rating type="oars-1.0"/>
+  <screenshots>
+    <screenshot type="default">https://raw.githubusercontent.com/yuzu-emu/yuzu-emu.github.io/master/images/screenshots/001-Super%20Mario%20Odyssey%20.png</screenshot>
+    <screenshot>https://raw.githubusercontent.com/yuzu-emu/yuzu-emu.github.io/master/images/screenshots/004-The%20Legend%20of%20Zelda%20Skyward%20Sword%20HD.png</screenshot>
+    <screenshot>https://raw.githubusercontent.com/yuzu-emu/yuzu-emu.github.io/master/images/screenshots/007-Pokemon%20Sword.png</screenshot>
+    <screenshot>https://raw.githubusercontent.com/yuzu-emu/yuzu-emu.github.io/master/images/screenshots/010-Hyrule%20Warriors%20Age%20of%20Calamity.png</screenshot>
+    <screenshot>https://raw.githubusercontent.com/yuzu-emu/yuzu-emu.github.io/master/images/screenshots/039-Pok%C3%A9mon%20Mystery%20Dungeon%20Rescue%20Team%20DX.png.png.png</screenshot>
+  </screenshots>
+</component>
diff --git a/dist/yuzu.xml b/dist/org.yuzu_emu.yuzu.xml
similarity index 85%
rename from dist/yuzu.xml
rename to dist/org.yuzu_emu.yuzu.xml
index dd1e30a6b..b52acecc4 100644
--- a/dist/yuzu.xml
+++ b/dist/org.yuzu_emu.yuzu.xml
@@ -3,7 +3,7 @@
     <mime-type type="application/x-nx-nro">
         <comment>Nintendo Switch homebrew executable</comment>
         <acronym>NRO</acronym>
-        <icon name="yuzu"/>
+        <icon name="org.yuzu_emu.yuzu"/>
         <glob pattern="*.nro"/>
         <magic><match value="NRO" type="string" offset="16"/></magic>
     </mime-type>
@@ -11,7 +11,7 @@
     <mime-type type="application/x-nx-nso">
         <comment>Nintendo Switch homebrew executable</comment>
         <acronym>NSO</acronym>
-        <icon name="yuzu"/>
+        <icon name="org.yuzu_emu.yuzu"/>
         <glob pattern="*.nso"/>
         <magic><match value="NSO" type="string" offset="0"/></magic>
     </mime-type>
@@ -19,7 +19,7 @@
     <mime-type type="application/x-nx-nsp">
         <comment>Nintendo Switch Package</comment>
         <acronym>NSP</acronym>
-        <icon name="yuzu"/>
+        <icon name="org.yuzu_emu.yuzu"/>
         <glob pattern="*.nsp"/>
         <magic><match value="PFS" type="string" offset="0"/></magic>
     </mime-type>
@@ -27,7 +27,7 @@
     <mime-type type="application/x-nx-xci">
         <comment>Nintendo Switch Card Image</comment>
         <acronym>XCI</acronym>
-        <icon name="yuzu"/>
+        <icon name="org.yuzu_emu.yuzu"/>
         <glob pattern="*.xci"/>
     </mime-type>
-</mime-info>
\ No newline at end of file
+</mime-info>