From 144e7cd63c93b9b4fe28a9fb9c04dea76844ad9a Mon Sep 17 00:00:00 2001 From: thisiszeev Date: Sat, 16 May 2026 04:57:17 +0200 Subject: [PATCH] Upload files to "create-standalone-app-from-webapp" --- .../setting-up-pwas.md | 296 ++++++++++++++++++ .../whatsapp.zip | Bin 0 -> 29746 bytes 2 files changed, 296 insertions(+) create mode 100644 create-standalone-app-from-webapp/setting-up-pwas.md create mode 100644 create-standalone-app-from-webapp/whatsapp.zip diff --git a/create-standalone-app-from-webapp/setting-up-pwas.md b/create-standalone-app-from-webapp/setting-up-pwas.md new file mode 100644 index 0000000..d151553 --- /dev/null +++ b/create-standalone-app-from-webapp/setting-up-pwas.md @@ -0,0 +1,296 @@ +# Setting up PWAs + +This document steps you through turning a WebApp into a standalone PWA (Progressive Web App). Run all steps from your home folder `/home/{your-username}`. + +> This document references KDE Plasma as that is what everything was testing in, however it should also work for other major Desktop Environments such as GNOME, XFCE, Cinnamon, etc. + +## 1. Install Google Chome with Flatpak + +*This step is only required if Google Chrome is not installed. If it is installed another way then uninstall it and install using Flatpak to ensure the latest PWA features and support.* + +`flatpak install flathub com.google.Chrome` + +> Run as root if you want Google Chrome to be install for all users + +## 2. Create required folders for PWAs + +*This step is only required when creating the first PWA.* + +``` +mkdir -p ~/.chrome-profiles +mkdir -p ~/.local/bin +mkdir -p ~/.local/share/applications +mkdir -p ~/.local/share/desktop-directories +mkdir -p ~/.local/share/icons/hicolor/16x16/apps +mkdir -p ~/.local/share/icons/hicolor/32x32/apps +mkdir -p ~/.local/share/icons/hicolor/48x48/apps +mkdir -p ~/.local/share/icons/hicolor/128x128/apps +mkdir -p ~/.local/share/icons/hicolor/256x256/apps +``` + +## 3. Give Google Chrome read and write access to required folders + +*This step is only required when creating the first PWA.* + +`flatpak override --user --filesystem=$HOME/.local/share/applications:create --filesystem=$HOME/.local/share/icons:create --filesystem=$HOME/.chrome-profiles:create com.google.Chrome` + +## 4. Create a Custom Submenu in KDE Plasma for the PWA. + +*This step is only required when you want a custom submenu for the PWA.* + +`nano {unique-name-for-subdirectory}.directory` + +Enter in the following text: + +``` +[Desktop Entry] +Type=Directory +Name={unique-name-for-subdirectory} +Icon={unique-name-for-subdirectory-icon} +``` + +> {unique-name-for-subdirectory-icon} can only contain lowercase, digits and dashs (-) and must not have a file extension. KDE Plasma will load the correct size {unique-name-for-subdirectory-icon}.png file in `~/.local/share/icons/hicolor/...`. + +Press CTRL+X, then Y, then ENTER. + +## 5. Create a Custom Icon Set for the Custom Submenu in KDE Plasma + +*This step is only required when you carry out step 4.* + +Create a PNG image with transparent background at a resolution of 256px X 256px and save it to `~/.local/share/icons/hicolor/256x256/apps/{unique-name-for-subdirectory-icon}.png`. + +Resize the PNG image to 128px X 128px and save it to `~/.local/share/icons/hicolor/128x128/apps/{unique-name-for-subdirectory-icon}.png`. + +Resize the PNG image to 48px X 48px and save it to `~/.local/share/icons/hicolor/48x48/apps/{unique-name-for-subdirectory-icon}.png`. + +Resize the PNG image to 32px X 32px and save it to `~/.local/share/icons/hicolor/32x32/apps/{unique-name-for-subdirectory-icon}.png`. + +Resize the PNG image to 16px X 16px and save it to `~/.local/share/icons/hicolor/16x16/apps/{unique-name-for-subdirectory-icon}.png`. + +## 6. Create a folder for the PWA + +`mkdir -p ~/.chrome-profiles/{unique-name-for-pwa}` + +> {unique-name-for-pwa} can only contain lowercase, digits and dashes (-). + +## 7. Create Launch Script for the PWA + +`nano ~/.local/bin/{unique-name-for-pwa}` + +Enter the following text: + +``` +#!/bin/bash +exec flatpak run com.google.Chrome \ + --user-data-dir=$HOME/.chrome-profiles/{unique-name-for-pwa} \ + --class={unique-name-for-pwa} \ + --app={full-url-to-webapp} +``` + +Press CTRL+X, then Y, then ENTER. + +`chmod +x ~/.chrome-profiles/{unique-name-for-pwa}` + +## 7. Create Application Launcher for PWA + +`nano ~/.local/share/applications/{unique-name-for-pwa}.desktop` + +Enter the following text: + +``` +[Desktop Entry] +Name={unique-title-for-pwa-as-it-is-to-appear-in-menu} +Exec=/home/{your-username}/.local/bin/{unique-name-for-pwa} +Icon={unique-name-for-pwa} +Type=Application +Categories={category};{category}; +StartupWMClass={unique-name-for-pwa} +``` + +Press CTRL+X, then Y, then ENTER. + +> {your-username} must be substituted with your actual login user name. If you are not sure then type `pwd` from your home folder and it is the string that follows the last slash (/). + +> {unique-name-for-pwa} for Icon must not contain a file extension. KDE Plasma will automatically load the correct size {unique-name-for-subdirectory-icon}.png file in `~/.local/share/icons/hicolor/...`. + +> For Categories you can define one or more category titles. These are used to place the PWA in the relevant submenus. If you are using a custom submenu then use a category name that matches {unique-name-for-subdirectory}. They are also used for easy search of the menu. + +### Main Standard Categories + +| Category | Meaning | +| --- | --- | +| AudioVideo | Multimedia Apps | +| Audio | Audio-only Apps | +| Video | Video-only Apps | +| Development | Programming / Development | +| Education | Educational Software | +| Game | Games | +| Graphics | Graphics / Image Editing | +| Network | Internet / Network | +| Office | Office / Productivity | +| Science | Scientific Apps | +| Settings | Settings / Configuration | +| System | System tools | +| Utility | General utilities | + +### Office Related Categories + +- Calendar +- ContactManagement +- Database +- Dictionary +- Email +- Finance +- FlowChart +- PDA +- ProjectManagement +- Presentation +- Spreadsheet +- WordProcessor + +### Network Related Categories + +- Chat +- Dialup +- Email +- Feed +- FileTransfer +- HamRadio +- InstantMessaging +- IRCClient +- News +- P2P +- RemoteAccess +- Telephony +- VideoConference +- WebBrowser + +### Development Related Categories + +- Building +- Debugger +- IDE +- GUIDesigner +- Profiling +- RevisionControl +- Translation + +### Graphics Related Categories + +- 2DGraphics +- 3DGraphics +- OCR +- Photography +- Publishing +- RasterGraphics +- Scanning +- VectorGraphics +- Viewer + +### Audio/Video Related Categories + +- Midi +- Mixer +- Music +- Player +- Recorder +- Sequencer +- TV +- Tuner +- VideoEditing + +### System Related Categories + +- Emulator +- FileManager +- Filesystem +- Monitor +- PackageManager +- Security +- TerminalEmulator + +## 8. Create a Custom Icon Set for the PWA + +Create a PNG image with transparent background at a resolution of 256px X 256px and save it to `~/.local/share/icons/hicolor/256x256/apps/{unique-name-for-pwa}.png`. + +Resize the PNG image to 128px X 128px and save it to `~/.local/share/icons/hicolor/128x128/apps/{unique-name-for-pwa}.png`. + +Resize the PNG image to 48px X 48px and save it to `~/.local/share/icons/hicolor/48x48/apps/{unique-name-for-pwa}.png`. + +Resize the PNG image to 32px X 32px and save it to `~/.local/share/icons/hicolor/32x32/apps/{unique-name-for-pwa}.png`. + +Resize the PNG image to 16px X 16px and save it to `~/.local/share/icons/hicolor/16x16/apps/{unique-name-for-pwa}.png`. + +## 9. Reload KDE Plasma + +> This step only applies to KDE Plasma. If you are using a different Desktop Environment then you will need to Google it or simply log out and log back in. Failing that, restart your system. + +`kbuildsycoca6 && kquitapp6 plasmashell && kstart plasmashell` + +Now you can launch your PWA from the Menu. + +> If the WebApp has a different URL for signing in than what you use for launching then close the PWA if it is running and type `flatpak run com.google.Chrome --user-data-dir=$HOME/.chrome-profiles/{unique-name-for-pwa} {full-url-for-signing-in}` then sign in, close Google Chrome and relaunch the PWA. + +## 10. Set PWA Permissions + +Google Chrome will not always give you an option to allow permissions for things like Notifications, Webcam, Microphone, etc, when running a PWA. To by pass this you can follow this step. + +*First close the PWA if it is running.* + +`flatpak run com.google.Chrome --user-data-dir=$HOME/.chrome-profiles/{unique-name-for-pwa} {full-url-to-webapp}` + +When Google Chrome has loaded the Web App, to the left of the URL you will find a small icon that looks like two lines with two small circles, orientated opposite to each other. Click the icon and then click Site Settings. A new page will open. Scroll down to Permissions and set your permissions are you require. + +Here are some common examples: + +- **Camera = Allow** - This will allow the PWA to use your WebCam +- **Microphone = Allow** - This will allow the PWA to use your Microphone +- **Notifications = Allow** - This will allow the PWA to provide Notifications to your Desktop Environment (Good for Popups in WebApps like Outlook and WhatsApp Web) +- **Javascript = Allow** - This will allow the PWA to run Javascript (Most PWAs will need this) +- **Images = Allow** - This will allow the PWA to download and display images +- **Pop-ups And Redirects = Allow** - This will allow the PWA to open Pop-ups and Redirects (Good for Links in WebApps like Outlook and WhatsApp Web) +- **Background Sync = Allow** - This will allow the PWA to continue running in the backgound if the window is not currently active +- **Sound = Allow** - This will allow the PWA to play sounds (Good for Alerts and Notification Sounds) +- **Automatic Downloads = Allow** - This will allow the PWA to Download Automatically without asking first (Downloads should be saved to `~/Downloads/`) +- **Clipboard = Allow** - This will allow the PWA to use your Clipboard + +When you have set your permissions, close Google Chrome and you can relaunch the PWA with the chosen permissions set. + +## BONUS - An Example PWA for WhatsApp Web + +You can download the zip file included in the folder of this document and unzip it to your home folder. But you will need to complete steps 1 to 3 first. + +**IMPORTANT STEP AFTER UNZIPPING** + +Edit the file `~/.local/share/applications/whatsapp.desktop` and replace the text {your-username} with your actual login user name. If you are not sure then type `pwd` from your home folder and it is the string that follows the last slash (/). + +Then run `chmod +x ~/.local/bin/whatsapp`. + +Then reload KDE Plasma. + +> This step only applies to KDE Plasma. If you are using a different Desktop Environment then you will need to Google it or simply log out and log back in. Failing that, restart your system. + +`kbuildsycoca6 && kquitapp6 plasmashell && kstart plasmashell` + +Now you can launch Whatsapp from the Menu. + +Please note that no permissions will be set for WhatsApp by default. You can set them by first closing WhatsApp and then running this command: + +`flatpak run com.google.Chrome --user-data-dir=$HOME/.chrome-profiles/whatsapp https://web.whatsapp.com` + +Refer to step 10 (Set PWA Permissions) for further information. + +## DONATIONS + +If you found this guide useful then please consider making a small donation. Even though my scripts are open source and free to use, I still need to eat. And the occasional bottle of wine also goes down well. + +- $5 buys me a cup of coffee +- $10 buys me a nice burger +- $20 buys me a bottle of wine +- Anything above that will be awesome as well. + +You can send me a donation via Paypal https://www.paypal.com/paypalme/thisiszeev + +Drop me a message on Reddit if you do make a donation. u/thisiszeev + +Support is only offered freely to those who donate $20 or more. diff --git a/create-standalone-app-from-webapp/whatsapp.zip b/create-standalone-app-from-webapp/whatsapp.zip new file mode 100644 index 0000000000000000000000000000000000000000..ec67cbe50445d36c97e31768bcb6bd82e663c1f0 GIT binary patch literal 29746 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 E0xSf}SO5S3 literal 0 HcmV?d00001