Anyone who's been using computers for a while (any OS, not just Linux) will be aware that uninstalling an app doesn't always remove all data associated
For fun, a shell script for the same functionality:
#!/bin/sh
br="$(printf "\n")" # Obtain a line-break
# If RM_CMD is unset, use trash-cli
if [ -z ${RM_CMD+y} ]; then RM_CMD="trash"; fi
# List of apps. The leading br is necessary for later pattern matching
apps="$br$(flatpak list --columns=application)" || exit 1
cd ~/.var/app || exit 1
for app in *; do
case "$apps" in
*"$br$app$br"*) ;; # Matches if $app is in the list (installed)
*)
printf 'Removing app data %s\n' "${app}"
"$RM_CMD" "./${app}"
;;
esac
done
#!/bin/bash
# List contents of ~/.var/app/
files=$(ls -1 ~/.var/app/)
# Loop through each element of the folder
for file in $files; do
# Set the name as a variable
app_name="${file##*/}"
# Check if a flatpak app of that name is installed
if ! flatpak list 2> /dev/null | grep -qw $app_name; then
# Ask the user to delete the folder
read -p "The app $app_name is not installed. Do you want to delete its folder? (y/n): " choice
case "$choice" in
[Yy]* )
# Remove the folder recursively
rm -rf ~/.var/app/$file;;
[Nn]* )
echo "Skipping deletion of $app_name folder.";;
* )
echo "Invalid input. Skipping deletion of $app_name folder.";;
esac
fi
done
echo "All Apps checked."
For fun, a shell script for the same functionality:
(May eat your files)
Pretty complicated
The check for if a package is installed can be simplified using
flatpak info
.