You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by se...@apache.org on 2021/10/16 23:46:22 UTC

[openmeetings] branch feature/OPENMEETINGS-2683-manifest-file-for-saving-to-home-screen created (now 8f94d1d)

This is an automated email from the ASF dual-hosted git repository.

sebawagner pushed a change to branch feature/OPENMEETINGS-2683-manifest-file-for-saving-to-home-screen
in repository https://gitbox.apache.org/repos/asf/openmeetings.git.


      at 8f94d1d  OPENMEETINGS-2683 Add manifest file for adding icon, splash screen and browser settings for when adding to home screen on mobile.

This branch includes the following new commits:

     new 8f94d1d  OPENMEETINGS-2683 Add manifest file for adding icon, splash screen and browser settings for when adding to home screen on mobile.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


[openmeetings] 01/01: OPENMEETINGS-2683 Add manifest file for adding icon, splash screen and browser settings for when adding to home screen on mobile.

Posted by se...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

sebawagner pushed a commit to branch feature/OPENMEETINGS-2683-manifest-file-for-saving-to-home-screen
in repository https://gitbox.apache.org/repos/asf/openmeetings.git

commit 8f94d1d73d1b6a36d1996a6bbae0743632b9125f
Author: Sebastian Wagner <se...@gmail.com>
AuthorDate: Sun Oct 17 12:45:39 2021 +1300

    OPENMEETINGS-2683 Add manifest file for adding icon, splash screen and browser settings for when adding to home screen on mobile.
---
 .../apache/openmeetings/web/pages/BasePage.html    |  29 +++++++++++++++
 .../main/webapp/images/icons/apple-icon-180.png    | Bin 0 -> 10696 bytes
 .../webapp/images/icons/apple-splash-1125-2436.jpg | Bin 0 -> 66463 bytes
 .../webapp/images/icons/apple-splash-1136-640.jpg  | Bin 0 -> 24945 bytes
 .../webapp/images/icons/apple-splash-1170-2532.jpg | Bin 0 -> 69906 bytes
 .../webapp/images/icons/apple-splash-1242-2208.jpg | Bin 0 -> 72120 bytes
 .../webapp/images/icons/apple-splash-1242-2688.jpg | Bin 0 -> 75659 bytes
 .../webapp/images/icons/apple-splash-1284-2778.jpg | Bin 0 -> 78823 bytes
 .../webapp/images/icons/apple-splash-1334-750.jpg  | Bin 0 -> 31010 bytes
 .../webapp/images/icons/apple-splash-1536-2048.jpg | Bin 0 -> 88952 bytes
 .../webapp/images/icons/apple-splash-1620-2160.jpg | Bin 0 -> 95661 bytes
 .../webapp/images/icons/apple-splash-1668-2224.jpg | Bin 0 -> 99240 bytes
 .../webapp/images/icons/apple-splash-1668-2388.jpg | Bin 0 -> 101273 bytes
 .../webapp/images/icons/apple-splash-1792-828.jpg  | Bin 0 -> 32864 bytes
 .../webapp/images/icons/apple-splash-2048-1536.jpg | Bin 0 -> 83104 bytes
 .../webapp/images/icons/apple-splash-2048-2732.jpg | Bin 0 -> 130068 bytes
 .../webapp/images/icons/apple-splash-2160-1620.jpg | Bin 0 -> 89441 bytes
 .../webapp/images/icons/apple-splash-2208-1242.jpg | Bin 0 -> 60178 bytes
 .../webapp/images/icons/apple-splash-2224-1668.jpg | Bin 0 -> 92538 bytes
 .../webapp/images/icons/apple-splash-2388-1668.jpg | Bin 0 -> 92578 bytes
 .../webapp/images/icons/apple-splash-2436-1125.jpg | Bin 0 -> 50367 bytes
 .../webapp/images/icons/apple-splash-2532-1170.jpg | Bin 0 -> 53274 bytes
 .../webapp/images/icons/apple-splash-2688-1242.jpg | Bin 0 -> 57573 bytes
 .../webapp/images/icons/apple-splash-2732-2048.jpg | Bin 0 -> 121595 bytes
 .../webapp/images/icons/apple-splash-2778-1284.jpg | Bin 0 -> 60820 bytes
 .../webapp/images/icons/apple-splash-640-1136.jpg  | Bin 0 -> 30165 bytes
 .../webapp/images/icons/apple-splash-750-1334.jpg  | Bin 0 -> 37214 bytes
 .../webapp/images/icons/apple-splash-828-1792.jpg  | Bin 0 -> 44404 bytes
 .../images/icons/manifest-icon-192.maskable.png    | Bin 0 -> 11489 bytes
 .../images/icons/manifest-icon-512.maskable.png    | Bin 0 -> 40763 bytes
 .../openmeetings/webservice/InfoWebService.java    |  41 +++++++++++++++++++++
 31 files changed, 70 insertions(+)

diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.html
index 72b547a..2220592 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.html
@@ -23,6 +23,35 @@
 <head>
 	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
 	<meta name="viewport" content="height=device-height, initial-scale=1, width=device-width, initial-scale=1" />
+	<link rel="apple-touch-icon" href="images/icons/apple-icon-180.png">
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <link rel="apple-touch-startup-image" href="images/icons/apple-splash-2048-2732.jpg" media="(device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
+    <link rel="apple-touch-startup-image" href="images/icons/apple-splash-2732-2048.jpg" media="(device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
+    <link rel="apple-touch-startup-image" href="images/icons/apple-splash-1668-2388.jpg" media="(device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
+    <link rel="apple-touch-startup-image" href="images/icons/apple-splash-2388-1668.jpg" media="(device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
+    <link rel="apple-touch-startup-image" href="images/icons/apple-splash-1536-2048.jpg" media="(device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
+    <link rel="apple-touch-startup-image" href="images/icons/apple-splash-2048-1536.jpg" media="(device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
+    <link rel="apple-touch-startup-image" href="images/icons/apple-splash-1668-2224.jpg" media="(device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
+    <link rel="apple-touch-startup-image" href="images/icons/apple-splash-2224-1668.jpg" media="(device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
+    <link rel="apple-touch-startup-image" href="images/icons/apple-splash-1620-2160.jpg" media="(device-width: 810px) and (device-height: 1080px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
+    <link rel="apple-touch-startup-image" href="images/icons/apple-splash-2160-1620.jpg" media="(device-width: 810px) and (device-height: 1080px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
+    <link rel="apple-touch-startup-image" href="images/icons/apple-splash-1284-2778.jpg" media="(device-width: 428px) and (device-height: 926px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
+    <link rel="apple-touch-startup-image" href="images/icons/apple-splash-2778-1284.jpg" media="(device-width: 428px) and (device-height: 926px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
+    <link rel="apple-touch-startup-image" href="images/icons/apple-splash-1170-2532.jpg" media="(device-width: 390px) and (device-height: 844px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
+    <link rel="apple-touch-startup-image" href="images/icons/apple-splash-2532-1170.jpg" media="(device-width: 390px) and (device-height: 844px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
+    <link rel="apple-touch-startup-image" href="images/icons/apple-splash-1125-2436.jpg" media="(device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
+    <link rel="apple-touch-startup-image" href="images/icons/apple-splash-2436-1125.jpg" media="(device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
+    <link rel="apple-touch-startup-image" href="images/icons/apple-splash-1242-2688.jpg" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
+    <link rel="apple-touch-startup-image" href="images/icons/apple-splash-2688-1242.jpg" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
+    <link rel="apple-touch-startup-image" href="images/icons/apple-splash-828-1792.jpg" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
+    <link rel="apple-touch-startup-image" href="images/icons/apple-splash-1792-828.jpg" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
+    <link rel="apple-touch-startup-image" href="images/icons/apple-splash-1242-2208.jpg" media="(device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
+    <link rel="apple-touch-startup-image" href="images/icons/apple-splash-2208-1242.jpg" media="(device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
+    <link rel="apple-touch-startup-image" href="images/icons/apple-splash-750-1334.jpg" media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
+    <link rel="apple-touch-startup-image" href="images/icons/apple-splash-1334-750.jpg" media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
+    <link rel="apple-touch-startup-image" href="images/icons/apple-splash-640-1136.jpg" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
+    <link rel="apple-touch-startup-image" href="images/icons/apple-splash-1136-640.jpg" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
+	<link rel="manifest" href="services/info/manifest.webmanifest">
 	<link rel="shortcut icon" href="public/favicon.png" type="image/png"/>
 	<wicket:header-items/>
 	<title wicket:id="pageTitle">[title]</title>
diff --git a/openmeetings-web/src/main/webapp/images/icons/apple-icon-180.png b/openmeetings-web/src/main/webapp/images/icons/apple-icon-180.png
new file mode 100644
index 0000000..eb4a41d
Binary files /dev/null and b/openmeetings-web/src/main/webapp/images/icons/apple-icon-180.png differ
diff --git a/openmeetings-web/src/main/webapp/images/icons/apple-splash-1125-2436.jpg b/openmeetings-web/src/main/webapp/images/icons/apple-splash-1125-2436.jpg
new file mode 100644
index 0000000..d5e6945
Binary files /dev/null and b/openmeetings-web/src/main/webapp/images/icons/apple-splash-1125-2436.jpg differ
diff --git a/openmeetings-web/src/main/webapp/images/icons/apple-splash-1136-640.jpg b/openmeetings-web/src/main/webapp/images/icons/apple-splash-1136-640.jpg
new file mode 100644
index 0000000..495ce3a
Binary files /dev/null and b/openmeetings-web/src/main/webapp/images/icons/apple-splash-1136-640.jpg differ
diff --git a/openmeetings-web/src/main/webapp/images/icons/apple-splash-1170-2532.jpg b/openmeetings-web/src/main/webapp/images/icons/apple-splash-1170-2532.jpg
new file mode 100644
index 0000000..ebbb7d0
Binary files /dev/null and b/openmeetings-web/src/main/webapp/images/icons/apple-splash-1170-2532.jpg differ
diff --git a/openmeetings-web/src/main/webapp/images/icons/apple-splash-1242-2208.jpg b/openmeetings-web/src/main/webapp/images/icons/apple-splash-1242-2208.jpg
new file mode 100644
index 0000000..41d90f6
Binary files /dev/null and b/openmeetings-web/src/main/webapp/images/icons/apple-splash-1242-2208.jpg differ
diff --git a/openmeetings-web/src/main/webapp/images/icons/apple-splash-1242-2688.jpg b/openmeetings-web/src/main/webapp/images/icons/apple-splash-1242-2688.jpg
new file mode 100644
index 0000000..e700992
Binary files /dev/null and b/openmeetings-web/src/main/webapp/images/icons/apple-splash-1242-2688.jpg differ
diff --git a/openmeetings-web/src/main/webapp/images/icons/apple-splash-1284-2778.jpg b/openmeetings-web/src/main/webapp/images/icons/apple-splash-1284-2778.jpg
new file mode 100644
index 0000000..00dc1f5
Binary files /dev/null and b/openmeetings-web/src/main/webapp/images/icons/apple-splash-1284-2778.jpg differ
diff --git a/openmeetings-web/src/main/webapp/images/icons/apple-splash-1334-750.jpg b/openmeetings-web/src/main/webapp/images/icons/apple-splash-1334-750.jpg
new file mode 100644
index 0000000..df9b66a
Binary files /dev/null and b/openmeetings-web/src/main/webapp/images/icons/apple-splash-1334-750.jpg differ
diff --git a/openmeetings-web/src/main/webapp/images/icons/apple-splash-1536-2048.jpg b/openmeetings-web/src/main/webapp/images/icons/apple-splash-1536-2048.jpg
new file mode 100644
index 0000000..0cc0149
Binary files /dev/null and b/openmeetings-web/src/main/webapp/images/icons/apple-splash-1536-2048.jpg differ
diff --git a/openmeetings-web/src/main/webapp/images/icons/apple-splash-1620-2160.jpg b/openmeetings-web/src/main/webapp/images/icons/apple-splash-1620-2160.jpg
new file mode 100644
index 0000000..72d65dc
Binary files /dev/null and b/openmeetings-web/src/main/webapp/images/icons/apple-splash-1620-2160.jpg differ
diff --git a/openmeetings-web/src/main/webapp/images/icons/apple-splash-1668-2224.jpg b/openmeetings-web/src/main/webapp/images/icons/apple-splash-1668-2224.jpg
new file mode 100644
index 0000000..be91316
Binary files /dev/null and b/openmeetings-web/src/main/webapp/images/icons/apple-splash-1668-2224.jpg differ
diff --git a/openmeetings-web/src/main/webapp/images/icons/apple-splash-1668-2388.jpg b/openmeetings-web/src/main/webapp/images/icons/apple-splash-1668-2388.jpg
new file mode 100644
index 0000000..261d074
Binary files /dev/null and b/openmeetings-web/src/main/webapp/images/icons/apple-splash-1668-2388.jpg differ
diff --git a/openmeetings-web/src/main/webapp/images/icons/apple-splash-1792-828.jpg b/openmeetings-web/src/main/webapp/images/icons/apple-splash-1792-828.jpg
new file mode 100644
index 0000000..4ac9f32
Binary files /dev/null and b/openmeetings-web/src/main/webapp/images/icons/apple-splash-1792-828.jpg differ
diff --git a/openmeetings-web/src/main/webapp/images/icons/apple-splash-2048-1536.jpg b/openmeetings-web/src/main/webapp/images/icons/apple-splash-2048-1536.jpg
new file mode 100644
index 0000000..c3e1604
Binary files /dev/null and b/openmeetings-web/src/main/webapp/images/icons/apple-splash-2048-1536.jpg differ
diff --git a/openmeetings-web/src/main/webapp/images/icons/apple-splash-2048-2732.jpg b/openmeetings-web/src/main/webapp/images/icons/apple-splash-2048-2732.jpg
new file mode 100644
index 0000000..e148bca
Binary files /dev/null and b/openmeetings-web/src/main/webapp/images/icons/apple-splash-2048-2732.jpg differ
diff --git a/openmeetings-web/src/main/webapp/images/icons/apple-splash-2160-1620.jpg b/openmeetings-web/src/main/webapp/images/icons/apple-splash-2160-1620.jpg
new file mode 100644
index 0000000..611f94a
Binary files /dev/null and b/openmeetings-web/src/main/webapp/images/icons/apple-splash-2160-1620.jpg differ
diff --git a/openmeetings-web/src/main/webapp/images/icons/apple-splash-2208-1242.jpg b/openmeetings-web/src/main/webapp/images/icons/apple-splash-2208-1242.jpg
new file mode 100644
index 0000000..513dd62
Binary files /dev/null and b/openmeetings-web/src/main/webapp/images/icons/apple-splash-2208-1242.jpg differ
diff --git a/openmeetings-web/src/main/webapp/images/icons/apple-splash-2224-1668.jpg b/openmeetings-web/src/main/webapp/images/icons/apple-splash-2224-1668.jpg
new file mode 100644
index 0000000..36e613c
Binary files /dev/null and b/openmeetings-web/src/main/webapp/images/icons/apple-splash-2224-1668.jpg differ
diff --git a/openmeetings-web/src/main/webapp/images/icons/apple-splash-2388-1668.jpg b/openmeetings-web/src/main/webapp/images/icons/apple-splash-2388-1668.jpg
new file mode 100644
index 0000000..a5ef07c
Binary files /dev/null and b/openmeetings-web/src/main/webapp/images/icons/apple-splash-2388-1668.jpg differ
diff --git a/openmeetings-web/src/main/webapp/images/icons/apple-splash-2436-1125.jpg b/openmeetings-web/src/main/webapp/images/icons/apple-splash-2436-1125.jpg
new file mode 100644
index 0000000..961316c
Binary files /dev/null and b/openmeetings-web/src/main/webapp/images/icons/apple-splash-2436-1125.jpg differ
diff --git a/openmeetings-web/src/main/webapp/images/icons/apple-splash-2532-1170.jpg b/openmeetings-web/src/main/webapp/images/icons/apple-splash-2532-1170.jpg
new file mode 100644
index 0000000..76c6110
Binary files /dev/null and b/openmeetings-web/src/main/webapp/images/icons/apple-splash-2532-1170.jpg differ
diff --git a/openmeetings-web/src/main/webapp/images/icons/apple-splash-2688-1242.jpg b/openmeetings-web/src/main/webapp/images/icons/apple-splash-2688-1242.jpg
new file mode 100644
index 0000000..a42c036
Binary files /dev/null and b/openmeetings-web/src/main/webapp/images/icons/apple-splash-2688-1242.jpg differ
diff --git a/openmeetings-web/src/main/webapp/images/icons/apple-splash-2732-2048.jpg b/openmeetings-web/src/main/webapp/images/icons/apple-splash-2732-2048.jpg
new file mode 100644
index 0000000..a55c6b2
Binary files /dev/null and b/openmeetings-web/src/main/webapp/images/icons/apple-splash-2732-2048.jpg differ
diff --git a/openmeetings-web/src/main/webapp/images/icons/apple-splash-2778-1284.jpg b/openmeetings-web/src/main/webapp/images/icons/apple-splash-2778-1284.jpg
new file mode 100644
index 0000000..2ea3f46
Binary files /dev/null and b/openmeetings-web/src/main/webapp/images/icons/apple-splash-2778-1284.jpg differ
diff --git a/openmeetings-web/src/main/webapp/images/icons/apple-splash-640-1136.jpg b/openmeetings-web/src/main/webapp/images/icons/apple-splash-640-1136.jpg
new file mode 100644
index 0000000..eee3d9b
Binary files /dev/null and b/openmeetings-web/src/main/webapp/images/icons/apple-splash-640-1136.jpg differ
diff --git a/openmeetings-web/src/main/webapp/images/icons/apple-splash-750-1334.jpg b/openmeetings-web/src/main/webapp/images/icons/apple-splash-750-1334.jpg
new file mode 100644
index 0000000..f76bb54
Binary files /dev/null and b/openmeetings-web/src/main/webapp/images/icons/apple-splash-750-1334.jpg differ
diff --git a/openmeetings-web/src/main/webapp/images/icons/apple-splash-828-1792.jpg b/openmeetings-web/src/main/webapp/images/icons/apple-splash-828-1792.jpg
new file mode 100644
index 0000000..05c8946
Binary files /dev/null and b/openmeetings-web/src/main/webapp/images/icons/apple-splash-828-1792.jpg differ
diff --git a/openmeetings-web/src/main/webapp/images/icons/manifest-icon-192.maskable.png b/openmeetings-web/src/main/webapp/images/icons/manifest-icon-192.maskable.png
new file mode 100644
index 0000000..8948225
Binary files /dev/null and b/openmeetings-web/src/main/webapp/images/icons/manifest-icon-192.maskable.png differ
diff --git a/openmeetings-web/src/main/webapp/images/icons/manifest-icon-512.maskable.png b/openmeetings-web/src/main/webapp/images/icons/manifest-icon-512.maskable.png
new file mode 100644
index 0000000..ac55c94
Binary files /dev/null and b/openmeetings-web/src/main/webapp/images/icons/manifest-icon-512.maskable.png differ
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/InfoWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/InfoWebService.java
index 95e5552..a80fbdf 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/InfoWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/InfoWebService.java
@@ -20,6 +20,8 @@ package org.apache.openmeetings.webservice;
 
 import static org.apache.openmeetings.webservice.Constants.TNS;
 
+import java.util.Locale;
+
 import javax.jws.WebMethod;
 import javax.jws.WebService;
 import javax.ws.rs.GET;
@@ -30,10 +32,15 @@ import javax.ws.rs.core.MediaType;
 import org.apache.cxf.feature.Features;
 import org.apache.openmeetings.db.dto.basic.Health;
 import org.apache.openmeetings.db.dto.basic.Info;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
+import org.apache.openmeetings.util.Version;
 import org.apache.openmeetings.webservice.schema.HealthWrapper;
 import org.apache.openmeetings.webservice.schema.InfoWrapper;
 import org.springframework.stereotype.Service;
 
+import com.github.openjson.JSONArray;
+import com.github.openjson.JSONObject;
+
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.media.Content;
 import io.swagger.v3.oas.annotations.media.Schema;
@@ -91,4 +98,38 @@ public class InfoWebService {
 	public Health getHealth() {
 		return Health.INSTANCE;
 	}
+
+	@WebMethod
+	@GET
+	@Path("/manifest.webmanifest")
+	@Produces({"application/manifest+json"})
+	public String getManifest() {
+		JSONObject manifest = new JSONObject();
+		manifest.put("name", OpenmeetingsVariables.getApplicationName() + " " + Version.getVersion());
+		manifest.put("short_name", OpenmeetingsVariables.getApplicationName() + " " + Version.getVersion());
+		manifest.put("description", "Openmeetings provides video conferencing, instant messaging, white board, collaborative document editing and other groupware tools.");
+		manifest.put("start_url", "/" + OpenmeetingsVariables.getApplicationName().toLowerCase(Locale.getDefault()) + "/?pwa=true");
+		manifest.put("scope", "/");
+		manifest.put("background_color", "#ffffff");
+		manifest.put("theme_color", "#ffffff");
+		manifest.put("dir", "auto");
+		manifest.put("display", "standalone");
+		manifest.put("orientation", "landscape");
+		JSONArray icons = new JSONArray();
+		icons.put(generateIcon("manifest-icon-512.maskable.png", "512x512", "maskable"));
+		icons.put(generateIcon("manifest-icon-192.maskable.png", "192x192", "maskable"));
+		manifest.put("icons", icons);
+		manifest.put("prefer_related_applications", "false");
+		return manifest.toString(2);
+	}
+
+	private JSONObject generateIcon(String name, String dimension, String purpose) {
+		JSONObject icon = new JSONObject();
+		icon.put("src", "/" + OpenmeetingsVariables.getApplicationName().toLowerCase(Locale.getDefault()) + "/images/icons/" + name);
+		icon.put("type", "image/png");
+		icon.put("sizes", dimension);
+		icon.put("purpose", purpose);
+		return icon;
+	}
+
 }