You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
127 lines
3.8 KiB
127 lines
3.8 KiB
4 years ago
|
#!/usr/bin/env sh
|
||
|
|
||
|
# ©2021 Brainwrecked Tech
|
||
|
|
||
|
# This program is free software: you can redistribute it and/or modify
|
||
|
# it under the terms of the GNU General Public License as published by
|
||
|
# the Free Software Foundation, either version 2 of the License, or
|
||
|
# (at your option) any later version.
|
||
|
|
||
|
# This program is distributed in the hope that it will be useful,
|
||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
# GNU General Public License for more details.
|
||
|
|
||
|
# For a copy of this license, see <https://www.gnu.org/licenses/>.
|
||
|
|
||
|
APPS_DIR="${HOME}/.local/share/applications/ssb"
|
||
|
WAPPDIRF="${HOME}/.local/share/desktop-directories/web-applications.directory"
|
||
|
WAPPMENF="${HOME}/.config/menus/applications-merged/web-applications.menu"
|
||
|
WAPPNAME="${1}"
|
||
|
WAPPDESC="${2}"
|
||
|
WAPPADDR="${3}"
|
||
|
WAPPICON="${4}"
|
||
|
|
||
|
### MAKE SURE THE WEB APP DIRECTORY ENTRY EXISTS
|
||
|
|
||
|
if [ ! -e "${WAPPDIRF}" ]; then
|
||
|
|
||
|
cat << EOF > "${WAPPDIRF}"
|
||
|
[Desktop Entry]
|
||
|
Type=Directory
|
||
|
Encoding=UTF-8
|
||
|
Name=Web Applications
|
||
|
EOF
|
||
|
|
||
|
fi
|
||
|
|
||
|
### MAKE SURE THE WEB APP MENU ENTRY EXISTS
|
||
|
|
||
|
if [ ! -e "${WAPPMENF}" ]; then
|
||
|
|
||
|
cat << EOF > "${WAPPMENF}"
|
||
|
<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
|
||
|
"http://www.freedesktop.org/standards/menu-spec/1.0/menu.dtd">
|
||
|
<Menu>
|
||
|
<Name>Applications</Name>
|
||
|
<Menu>
|
||
|
<Name>Web Applications</Name>
|
||
|
<Directory>web-applications.directory</Directory>
|
||
|
<Include>
|
||
|
<Category>WebApplications</Category>
|
||
|
</Include>
|
||
|
</Menu>
|
||
|
</Menu>
|
||
|
EOF
|
||
|
|
||
|
fi
|
||
|
|
||
|
### MAKE SURE THE DIRECTORY FOR WEB APPS EXISTS
|
||
|
mkdir -p "${APPS_DIR}"
|
||
|
|
||
|
### ASK FOR AN APPLICATION NAME IF $1 WASN'T SPECIFIED
|
||
|
|
||
|
if [ -z "${WAPPNAME}" ]; then
|
||
|
printf 'Application Name: '
|
||
|
read -r WAPPNAME
|
||
|
fi
|
||
|
|
||
|
### ASK FOR A DESCRIPTION IF $2 WASN'T SPECIFIED
|
||
|
|
||
|
if [ -z "${WAPPDESC}" ]; then
|
||
|
printf 'Description: '
|
||
|
read -r WAPPDESC
|
||
|
fi
|
||
|
|
||
|
### ASK FOR AN APPLICATION URL IF $3 WASN'T SPECIFIED
|
||
|
|
||
|
if [ -z "${WAPPADDR}" ]; then
|
||
|
printf '\nMake sure this is the address that you want to initially show.'
|
||
|
printf '\nThis is usually NOT the address of the login screen.\n'
|
||
|
printf '\nApplication Addr: '
|
||
|
read -r WAPPADDR
|
||
|
fi
|
||
|
|
||
|
### ASK FOR AN APPLICATION ICON IF $4 WASN'T SPECIFIED
|
||
|
|
||
|
if [ -z "${WAPPICON}" ]; then
|
||
|
printf '\nNo need to download an icon -- give the URL to an image and this script'
|
||
|
printf '\nwill grab it, rename it, and put it in the right place.\n'
|
||
|
printf '\nApplication Icon: '
|
||
|
read -r WAPPICON
|
||
|
printf '\n'
|
||
|
fi
|
||
|
|
||
|
ICON_LOC="${APPS_DIR}/${WAPPNAME,,}.${WAPPICON##*.}"
|
||
|
DSKTPFIL="${APPS_DIR}/${WAPPNAME,,}.desktop"
|
||
|
|
||
|
### CREATE DIRECTORY FOR FIREFOX CACHE
|
||
|
printf -- ':: ' && mkdir -pv "/run/user/${UID}/${WAPPNAME,,}-ssb"
|
||
|
|
||
|
### GRAB THE ICON AND WRITE IT TO THE WEB APP ICON DIRECTORY
|
||
|
curl -s "${WAPPICON}" -o "${ICON_LOC}" -w ':: curl: wrote "%{url_effective}" to "%{filename_effective}"\n'
|
||
|
|
||
|
### CREATE A NEW PROFILE FOR THIS WEB APP
|
||
|
/usr/bin/firefox -CreateProfile "${WAPPNAME,,}-ssb" -no-remote
|
||
|
|
||
|
### FIND THE DIRECTORY FIREFOX CREATED
|
||
|
FFPFDIR="$(find "${HOME}/.mozilla/firefox" -type d -name '*'."${WAPPNAME,,}-ssb")"
|
||
|
|
||
|
### INJECT PREFERENCES
|
||
|
echo 'user_pref("browser.cache.disk.parent_directory", "/run/user/'"${UID}"'/'"${WAPPNAME}"'-ssb");' >> "${FFPFDIR}/user.js"
|
||
|
echo 'user_pref("browser.ssb.enabled", true);' >> "${FFPFDIR}/user.js"
|
||
|
echo 'user_pref("extensions.pocket.enabled", false);' >> "${FFPFDIR}/user.js"
|
||
|
echo 'user_pref("privacy.donottrackheader.enabled", true);' >> "${FFPFDIR}/user.js"
|
||
|
|
||
|
### CREATE A DESKTOP ENTRY FOR THE WEB APP
|
||
|
echo "[Desktop Entry]
|
||
|
Name=${WAPPNAME} (SSB)
|
||
|
GenericName=${WAPPDESC}
|
||
|
Exec=firefox -P ${WAPPNAME,,}-ssb --class ${WAPPNAME,,}-ssb --no-remote --ssb ${WAPPADDR}
|
||
|
StartupNotify=true
|
||
|
Terminal=false
|
||
|
Type=Application
|
||
|
Categories=WebApplications
|
||
|
Icon=${ICON_LOC}
|
||
|
StartupWMClass=${WAPPNAME,,}-ssb" > "${DSKTPFIL}" && printf -- ':: echo: created %s\n' "${DSKTPFIL}"
|