Skip to content

Instantly share code, notes, and snippets.

@kurobeats
Last active July 21, 2020 01:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kurobeats/02ad2797815674ba6d7eb79ea924ded5 to your computer and use it in GitHub Desktop.
Save kurobeats/02ad2797815674ba6d7eb79ea924ded5 to your computer and use it in GitHub Desktop.
joplin to be installed in a nice way
#!/bin/bash
set -e
#-----------------------------------------------------
# Variables
#-----------------------------------------------------
COLOR_RED=`tput setaf 1`
COLOR_GREEN=`tput setaf 2`
COLOR_RESET=`tput sgr0`
SILENT=false
print() {
if [[ "$SILENT" == false ]] ; then
echo $1
fi
}
#-----------------------------------------------------
# ARGUMENTS
#-----------------------------------------------------
# --allow-root
## Check and warn if running as root.
if [[ $EUID = 0 ]] ; then
if [[ $* != *--allow-root* ]] ; then
echo "${COLOR_RED}It is not recommended (nor necessary) to run this script as root. To do so anyway, please use '--allow-root'${COLOR_RESET}"
exit 1
fi
fi
# --silent
## Mutes messages by console
if [[ $* == *--silent* ]] ; then
SILENT=true
fi
#-----------------------------------------------------
# START
#-----------------------------------------------------
# Title
print " _ _ _ "
print " | | ___ _ __ | (_)_ __ "
print " _ | |/ _ \| '_ \| | | '_ \ "
print "| |_| | (_) | |_) | | | | | |"
print " \___/ \___/| .__/|_|_|_| |_|"
print " |_|"
print ""
print "Linux Installer and Updater"
#-----------------------------------------------------
# Download Joplin
#-----------------------------------------------------
# Get the latest version to download
RELEASE_VERSION=$(wget -qO - "https://api.github.com/repos/laurent22/joplin/releases/latest" | grep -Po '"tag_name": "v\K.*?(?=")')
# Check if it's in the latest version
if [[ ! -e ~/.local/share/joplin/VERSION ]] || [[ $(< ~/.local/share/joplin/VERSION) != "$RELEASE_VERSION" ]]; then
print 'Downloading Joplin...'
# Delete previous version (in future versions joplin.desktop shouldn't exist)
rm -f ~/.local/bin/joplin ~/.local/share/applications/joplin.desktop ~/.local/share/joplin/VERSION
# Creates the folder where the binary will be stored
mkdir -p ~/.local/bin/
mkdir -p ~/.local/share/joplin/
# Download the latest version
wget -nv --show-progress -O ~/.local/bin/joplin https://github.com/laurent22/joplin/releases/download/v$RELEASE_VERSION/Joplin-$RELEASE_VERSION.AppImage
# Gives execution privileges
chmod +x ~/.local/bin/joplin
print "${COLOR_GREEN}OK${COLOR_RESET}"
#-----------------------------------------------------
# Icon
#-----------------------------------------------------
# Download icon
print 'Downloading icon...'
mkdir -p ~/.local/share/icons/hicolor/512x512/apps
wget -nv -O ~/.local/share/icons/hicolor/512x512/apps/joplin.png https://joplinapp.org/images/Icon512.png
print "${COLOR_GREEN}OK${COLOR_RESET}"
# Detect desktop environment
if [ "$XDG_CURRENT_DESKTOP" = "" ]
then
DESKTOP=$(echo "$XDG_DATA_DIRS" | sed 's/.*\(xfce\|kde\|gnome\).*/\1/')
else
DESKTOP=$XDG_CURRENT_DESKTOP
fi
DESKTOP=${DESKTOP,,} # convert to lower case
# Create icon for Gnome
echo 'Create Desktop icon.'
if [[ $DESKTOP =~ .*gnome.*|.*kde.*|.*xfce.*|.*mate.*|.*lxqt.*|.*unity.*|.*x-cinnamon.*|.*deepin.* ]]
then
: "${TMPDIR:=/tmp}"
# This command extracts to squashfs-root by default and can't be changed...
# So we run it in the tmp directory and clean up after ourselves
(cd $TMPDIR && ~/.local/bin/joplin --appimage-extract joplin.desktop &> /dev/null)
APPIMAGE_VERSION=$(grep "^X-AppImage-BuildId=" $TMPDIR/squashfs-root/joplin.desktop | head -n 1 | cut -d " " -f 1)
rm -rf $TMPDIR/squashfs-root
# Only delete the desktop file if it will be replaced
rm -f ~/.local/share/applications/appimagekit-joplin.desktop
# On some systems this directory doesn't exist by default
mkdir -p ~/.local/share/applications
echo -e "[Desktop Entry]\nEncoding=UTF-8\nName=Joplin\nComment=Joplin for Desktop\nExec=/home/$USER/.local/bin/joplin\nIcon=joplin\nStartupWMClass=Joplin\nType=Application\nCategories=Office;\n$APPIMAGE_VERSION" >> ~/.local/share/applications/appimagekit-joplin.desktop
print "${COLOR_GREEN}OK${COLOR_RESET}"
else
print "${COLOR_RED}NOT DONE${COLOR_RESET}"
fi
#-----------------------------------------------------
# Finish
#-----------------------------------------------------
# Informs the user that it has been installed and cleans variables
print "${COLOR_GREEN}Joplin version${COLOR_RESET}" $RELEASE_VERSION "${COLOR_GREEN}installed.${COLOR_RESET}"
# Add version
echo $RELEASE_VERSION > ~/.local/share/joplin/VERSION
else
print "${COLOR_GREEN}You already have the latest version${COLOR_RESET}" $version "${COLOR_GREEN}installed.${COLOR_RESET}"
fi
# Goodbye
print 'Bye!'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment