From e6b358eb4e560460e76a22f5c8c35da5c3049712 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 17 May 2025 22:19:20 +0200 Subject: [PATCH] Allow removing apps from folders too --- defaults/bash/functions | 39 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/defaults/bash/functions b/defaults/bash/functions index 707e612..d668618 100644 --- a/defaults/bash/functions +++ b/defaults/bash/functions @@ -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 " + echo "Usage: app2folder " 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 " + 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'