Allow removing apps from folders too

This commit is contained in:
David Heinemeier Hansson
2025-05-17 22:19:20 +02:00
parent 77f3fd5c78
commit e6b358eb4e

View File

@@ -80,13 +80,13 @@ web2app-remove() {
app2folder() {
if [ "$#" -ne 2 ]; then
local FOLDERS=$(gsettings get org.gnome.desktop.app-folders folder-children | tr -d "[],'")
echo "Usage: app2folder <folder_name> <desktop_file.desktop>"
echo "Usage: app2folder <desktop_file.desktop> <folder_name>"
echo "Folders: $FOLDERS"
return 1
fi
local FOLDER="$1"
local DESKTOP_FILE="$2"
local DESKTOP_FILE="$1"
local FOLDER="$2"
local SCHEMA="org.gnome.desktop.app-folders.folder:/org/gnome/desktop/app-folders/folders/$FOLDER/"
local CURRENT_APPS=$(gsettings get "$SCHEMA" apps)
@@ -96,6 +96,39 @@ app2folder() {
fi
}
# Rewmove desktop app from folder
app2folder-remove() {
if [ "$#" -ne 2 ]; then
local FOLDERS=$(gsettings get org.gnome.desktop.app-folders folder-children | tr -d "[],'")
echo "Usage: app2folder-remove <desktop_file.desktop> <folder_name>"
echo "Folders: $FOLDERS"
return 1
fi
local DESKTOP_FILE="$1"
local FOLDER="$2"
local SCHEMA="org.gnome.desktop.app-folders.folder:/org/gnome/desktop/app-folders/folders/$FOLDER/"
local CURRENT_APPS=$(gsettings get "$SCHEMA" apps)
if [[ "$CURRENT_APPS" == *"$DESKTOP_FILE"* ]]; then
local RAW_LIST=$(echo "$CURRENT_APPS" | tr -d "[]'")
IFS=',' read -ra APPS_ARRAY <<< "$RAW_LIST"
# Filter out the app to be removed
local NEW_APPS=()
for app in "${APPS_ARRAY[@]}"; do
app=$(echo "$app" | xargs) # trim spaces
if [[ "$app" != "$DESKTOP_FILE" && -n "$app" ]]; then
NEW_APPS+=("'$app'")
fi
done
# Join list again
local NEW_LIST=$(IFS=, ; echo "${NEW_APPS[*]}")
gsettings set "$SCHEMA" apps "[$NEW_LIST]"
fi
}
# Ensure that external keyboards that use an fn key has the F keys as the default
alias fix_fkeys='echo 2 | sudo tee /sys/module/hid_apple/parameters/fnmode'