diff --git a/index.html b/index.html
index 6aa12834f..7f61cbd07 100644
--- a/index.html
+++ b/index.html
@@ -7,7 +7,8 @@
LXD UI
-
+
+
diff --git a/public/assets/img/LXD-screenshot.png b/public/assets/img/LXD-screenshot.png
new file mode 100644
index 000000000..719cc9ccc
Binary files /dev/null and b/public/assets/img/LXD-screenshot.png differ
diff --git a/public/assets/img/LXD-screenshot2.png b/public/assets/img/LXD-screenshot2.png
new file mode 100644
index 000000000..0ba9d2585
Binary files /dev/null and b/public/assets/img/LXD-screenshot2.png differ
diff --git a/public/assets/img/LXD-screenshot3.png b/public/assets/img/LXD-screenshot3.png
new file mode 100644
index 000000000..9a93383bf
Binary files /dev/null and b/public/assets/img/LXD-screenshot3.png differ
diff --git a/public/assets/img/canonical-lxd-512.png b/public/assets/img/canonical-lxd-512.png
new file mode 100644
index 000000000..7f3d27e82
Binary files /dev/null and b/public/assets/img/canonical-lxd-512.png differ
diff --git a/public/assets/js/manifest.js b/public/assets/js/manifest.js
new file mode 100644
index 000000000..613c82377
--- /dev/null
+++ b/public/assets/js/manifest.js
@@ -0,0 +1,47 @@
+var screenshot = window.location.origin + "/ui/assets/img/";
+
+const manifestElement = document.getElementById("manifest");
+const dynamicManifest = JSON.stringify({
+ short_name: "LXD " + window.location.origin,
+ name: "LXD-UI - " + window.location.origin,
+ icons: [
+ {
+ src: window.location.origin + "/ui/assets/img/canonical-lxd-512.png",
+ type: "image/png",
+ sizes: "512x512",
+ },
+ ],
+ id: "LXDID-" + window.location.origin,
+ start_url: window.location.origin,
+ background_color: "#E95420",
+ display: "standalone",
+ scope: window.location.origin,
+ theme_color: "#262626",
+ shortcuts: [],
+ description:
+ "LXD provides a unified user experience for managing system containers and virtual machines.",
+ screenshots: [
+ {
+ src: screenshot + "LXD-screenshot.png",
+ type: "image/png",
+ sizes: "954x953",
+ form_factor: "wide",
+ },
+ {
+ src: screenshot + "LXD-screenshot2.png",
+ type: "image/png",
+ sizes: "954x953",
+ form_factor: "wide",
+ },
+ {
+ src: screenshot + "LXD-screenshot3.png",
+ type: "image/png",
+ sizes: "1920x1075",
+ },
+ ],
+});
+
+manifestElement?.setAttribute(
+ "href",
+ "data:application/json;charset=utf-8," + encodeURIComponent(dynamicManifest),
+);