Favourite Lesser Known Programs

I use the recommended way, as in the Joplin website, which is:

wget -O - https://raw.githubusercontent.com/laurent22/joplin/master/Joplin_install_and_update.sh | bash

See the webpage at : https://joplinapp.org/

2 Likes

In the meantime I downloaded the zip file from https://github.com/laurent22/joplin to have a look. There is an install script which install the appimage to ~/.joplin/*.AppImage and a desktop file to ~/.local/share/applications/joplin.desktop

Joplin_install_and_update.sh

#!/bin/bash
set -e

#-----------------------------------------------------

Variables

#-----------------------------------------------------
COLOR_RED=tput setaf 1
COLOR_GREEN=tput setaf 2
COLOR_YELLOW=tput setaf 3
COLOR_BLUE=tput setaf 4
COLOR_RESET=tput sgr0
SILENT=false
ALLOW_ROOT=false
SHOW_CHANGELOG=false
INCLUDE_PRE_RELEASE=false

print() {
if [[ “${SILENT}” == false ]] ; then
echo -e “$@”
fi
}

showLogo() {
print “${COLOR_BLUE}”
print " _ _ _ "
print " | | ___ _ __ | () __ "
print " _ | |/ _ | '_ | | | '_ \ "
print “| || | () | |) | | | | | |"
print " _/ _/| .__/|
||| ||"
print " |
|”
print “”
print “Linux Installer and Updater”
print “${COLOR_RESET}”
}

showHelp() {
showLogo
print “Available Arguments:”
print “\t” “–help” “\t” “Show this help information” “\n”
print “\t” “–allow-root” “\t” “Allow the install to be run as root”
print “\t” “–changelog” “\t” “Show the changelog after installation”
print “\t” “–force” “\t” “Always download the latest version”
print “\t” “–silent” “\t” “Don’t print any output”
print “\t” “–prerelease” “\t” “Check for new Versions including Pre-Releases”

if [[ ! -z $1 ]]; then
    print "\n" "${COLOR_RED}ERROR: " "$*" "${COLOR_RESET}" "\n"
else
    exit 0
fi

}

#-----------------------------------------------------

PARSE ARGUMENTS

#-----------------------------------------------------

optspec=“:h-:”
while getopts “${optspec}” OPT; do
[ “${OPT}” = " " ] && continue
if [ “${OPT}” = “-” ]; then # long option: reformulate OPT and OPTARG
OPT="${OPTARG%%=}" # extract long option name
OPTARG=“${OPTARG#$OPT}” # extract long option argument (may be empty)
OPTARG=“${OPTARG#=}” # if long option argument, remove assigning =
fi
case “${OPT}” in
h | help ) showHelp ;;
allow-root ) ALLOW_ROOT=true ;;
silent ) SILENT=true ;;
force ) FORCE=true ;;
changelog ) SHOW_CHANGELOG=true ;;
prerelease ) INCLUDE_PRE_RELEASE=true ;;
[^?]
) showHelp “Illegal option --${OPT}”; exit 2 ;;
? ) showHelp “Illegal option -${OPTARG}”; exit 2 ;;
esac
done
shift $((OPTIND-1)) # remove parsed options and args from $@ list

Check and warn if running as root.

if [[ $EUID = 0 ]] && [[ “${ALLOW_ROOT}” != true ]]; then
showHelp “It is not recommended (nor necessary) to run this script as root. To do so anyway, please use ‘–allow-root’”
exit 1
fi

#-----------------------------------------------------

START

#-----------------------------------------------------
showLogo

#-----------------------------------------------------
print “Checking architecture…”

uname actually gives more information than needed, but it contains all architectures (hardware and software)

ARCHITECTURE=$(uname -m -p -i || echo “NO CHECK”)

if [[ $ARCHITECTURE = “NO CHECK” ]] ; then
print “${COLOR_YELLOW}WARNING: Can’t get system architecture, skipping check${COLOR_RESET}”
elif [[ $ARCHITECTURE =~ .aarch.|.arm. ]] ; then
showHelp “Arm systems are not officially supported by Joplin, please search the forum (https://discourse.joplinapp.org/) for more information”
exit 1
elif [[ $ARCHITECTURE =~ .i386.|.i686. ]] ; then
showHelp “32-bit systems are not supported by Joplin, please search the forum (https://discourse.joplinapp.org/) for more information”
exit 1
fi

#-----------------------------------------------------

Download Joplin

#-----------------------------------------------------

Get the latest version to download

if [[ “$INCLUDE_PRE_RELEASE” == true ]]; then
RELEASE_VERSION=$(wget -qO - “https://api.github.com/repos/laurent22/joplin/releases” | grep -Po ‘“tag_name”: ?“v\K.?(?=")’ | head -1)
else
RELEASE_VERSION=$(wget -qO - “https://api.github.com/repos/laurent22/joplin/releases/latest” | grep -Po '“tag_name”: ?"v\K.
?(?=”)’)
fi

Check if it’s in the latest version

if [[ -e ~/.joplin/VERSION ]] && [[ $(< ~/.joplin/VERSION) == “${RELEASE_VERSION}” ]]; then
print “${COLOR_GREEN}You already have the latest version${COLOR_RESET} ${RELEASE_VERSION} ${COLOR_GREEN}installed.${COLOR_RESET}”
([[ “$FORCE” == true ]] && print “Forcing installation…”) || exit 0
else
[[ -e ~/.joplin/VERSION ]] && CURRENT_VERSION=$(< ~/.joplin/VERSION)
print “The latest version is ${RELEASE_VERSION}, but you have ${CURRENT_VERSION:-no version} installed.”
fi

#-----------------------------------------------------
print ‘Downloading Joplin…’
TEMP_DIR=$(mktemp -d)
wget -qnv --show-progress -O ${TEMP_DIR}/Joplin.AppImage https://github.com/laurent22/joplin/releases/download/v${RELEASE_VERSION}/Joplin-${RELEASE_VERSION}.AppImage
wget -qnv --show-progress -O ${TEMP_DIR}/joplin.png https://joplinapp.org/images/Icon512.png

#-----------------------------------------------------
print ‘Installing Joplin…’

Delete previous version (in future versions joplin.desktop shouldn’t exist)

rm -f ~/.joplin/*.AppImage ~/.local/share/applications/joplin.desktop ~/.joplin/VERSION

Creates the folder where the binary will be stored

mkdir -p ~/.joplin/

Download the latest version

mv ${TEMP_DIR}/Joplin.AppImage ~/.joplin/Joplin.AppImage

Gives execution privileges

chmod +x ~/.joplin/Joplin.AppImage

print “${COLOR_GREEN}OK${COLOR_RESET}”

#-----------------------------------------------------
print ‘Installing icon…’
mkdir -p ~/.local/share/icons/hicolor/512x512/apps
mv ${TEMP_DIR}/joplin.png ~/.local/share/icons/hicolor/512x512/apps/joplin.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

#-----------------------------------------------------
echo ‘Create Desktop icon…’
if [[ $DESKTOP =~ .gnome.|.kde.|.xfce.|.mate.|.lxqt.|.unity.|.x-cinnamon.|.deepin.|.pantheon.|.lxde. ]]
then
: “${TMPDIR:=$TEMP_DIR}”
# 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 && ~/.joplin/Joplin.AppImage --appimage-extract joplin.desktop &> /dev/null)
APPIMAGE_VERSION=$(grep “^X-AppImage-Version=” $TMPDIR/squashfs-root/joplin.desktop | head -n 1 | cut -d “=” -f 2)
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}/.joplin/Joplin.AppImage\nIcon=joplin\nStartupWMClass=Joplin\nType=Application\nCategories=Office;\n#${APPIMAGE_VERSION}" >> ~/.local/share/applications/appimagekit-joplin.desktop
# Update application icons
[[ `command -v update-desktop-database` ]] && update-desktop-database ~/.local/share/applications && update-desktop-database ~/.local/share/icons
print "${COLOR_GREEN}OK${COLOR_RESET}"

else
print “${COLOR_RED}NOT DONE, unknown desktop ‘${DESKTOP}’${COLOR_RESET}”
fi

#-----------------------------------------------------

FINISH INSTALLATION

#-----------------------------------------------------

Informs the user that it has been installed

print “${COLOR_GREEN}Joplin version${COLOR_RESET} ${RELEASE_VERSION} ${COLOR_GREEN}installed.${COLOR_RESET}”

Record version

echo $RELEASE_VERSION > ~/.joplin/VERSION

#-----------------------------------------------------
if [[ “$SHOW_CHANGELOG” == true ]]; then
NOTES=$(wget -qO - https://api.github.com/repos/laurent22/joplin/releases/latest | grep -Po ‘“body”: “\K.*(?=”)’)
print “${COLOR_BLUE}Changelog:${COLOR_RESET}\n${NOTES}”
fi

#-----------------------------------------------------
print “Cleaning up…”
rm -rf $TEMP_DIR
print “${COLOR_GREEN}OK${COLOR_RESET}”

Thanks for posting the info! I did it a bit differently (see above) but the end result is the same I guess. But of course
wget -O - https://raw.githubusercontent.com/laurent22/joplin/master/Joplin_install_and_update.sh | bash
is more efficient.

By the way, is there a way to configure the sync for Google Drive rather than Dropbox.

1 Like
1 Like

Syncthing may be of interest to you. It’s how I am sharing notes between my phone and computers.

9 Likes

That’s great, thanks! Looks like a good solution!

That’s insane.

laurent22 - Due to the coming changes in Google Drive policy, sync with this service unfortunately will not be possible. We fall under section 4 of this document, which means the app would need an independent Google-approved audit to be allowed. And that would cost “from $15,000 to $75,000 (or more) depending on the size and complexity of the application.”

Glad google makes it easy for independent devs to hook up to their services. :roll_eyes:

Joplin makes my brain hurt. I wish I could get the hang of it.


My contribution is probably not that lesser known.

Kindd - just a simple frontend for good ole Disk Destroyer.

I also very much like Avvie for quick image editing, nothing complicated. But it’s only available as a Flatpak. Don’t hurt me! :wink:

3 Likes

xclip

get the content of terminal output directly to clipboard

hwinfo --short | xclip -sel clip

ventoy

USB ISO boot made easy - https://www.ventoy.net

7 Likes

xsel can do that too

hwinfo --short | xsel -ib

this saves to clipboard

It can also append and output clipboard content

1 Like

So, I have to admit, I use simplenote-electron-bin currently to sync my notes across my phone/computers. But damn Joplin looks good. It only requires an email address to sync, but I’ve really been meaning to get a google play card and pay the $5 to properly sync my calendar/notes with nextcloud anyway. I may be another Joplin convert with that.

The other program I use extensively is android-messages-desktop which is exactly as it sounds. It syncs my text messages to my computer. Great and simple. I’ve tried I feel like literally every freaking messenger on the planet at this point, but everything requires some extra account, and/or for others to use the same application as well. This is literally like android’s version of iMessage. I started using it years ago when the google play store became available on my chromebook. One of the honest to goodness reasons I started using Arch based distros. . . Arch was the ONLY Linux area where this used to exist. So, as I moved away from my Chromebook and back to Linux this program was a big deciding factor for me since I LOVE texting from my computer.

8 Likes

Easy encryption which doesn’t need containers, encrypts each file individually. I have all important documents encrypted with it and saved on Nextcloud where I also have access with cryptomator app.

9 Likes

That’s slick. Thanks for pointing that out! :+1:t2:

1 Like

:pray:t2: for that share … it nice but it not like my large collection , it freeze alot. Think i’ll stay with cmus as it fast no matter dir size.

1 Like

How big is your collection? It is smooth for me but I have less than 40,000 tracks.

1 Like

2TB :blush: it grow every year. i enjoy western music … well all music

2 Likes

I’ve had that problem in the past with a couple of music players (Clemetine being the biggest offender), also with my current player Lollypop.
I finally tracked down the problem of massive hangs and total lock ups.
The tags for my enormous music collection. Some of the tags were so messed up the player just choked on them over and over.

Might not be your problem but something to look into.

SInce then I’ve been very picky about getting my tags setup. :slight_smile:

6 Likes

i the same over tags plus album art.

My favorite lesser known program is one named PC-Write. It was an early word processor that ran on DOS. It was in color, no mouse but you could use the arrow keys. I loved it. Bob Wallace, the creator and a friend of mine, released it in 1983, Bob Wallace was the 9th employee hired at MS. Oh, Bob wrote the Pascal compiler while at MS and was very involved in LISP.

This little early shareware word processor saved me many times.

6 Likes

You may take a look at Quodlibet. I have nearly 2Tb of music in Flac format, and each time I add some tracks it takes less than 5 secs. Never had a freeze.

3 Likes

:pray:t2: i will @pierrep56

1 Like

Typora. It’s a markdown editor used for writing, whether it’s simple notes, or oneshot stories, or full novels. It’s similar to Ulysses on the Mac.

Currently it’s flagged as out of date on the AUR for a couple of days now and I can’t post a screenshot of it on my system because … yeahhhh I can’t. But it’s a fantastic program and you guys should look into it when you can.

Edit: It just got updated on the AUR

13 Likes