mirror of
https://invent.kde.org/plasma/plasma-desktop.git
synced 2026-11-03 14:49:44 -09:00
50-krunner-activate-typing.sh contains bashisms, so the shebang should ask env for bash, not sh. When /bin/sh is linked to a shell other than bash, the script won't work.
72 lines
3 KiB
Bash
Executable file
72 lines
3 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
# SPDX-FileCopyrightText: 2026 Guillermo Steren <gstkein@gmail.com>
|
|
#
|
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
# kconf update script to migrate users who previously disabled
|
|
# activateWhenTypingOnDesktop for KRunner. This script only flips
|
|
# users who explicitly set the key to "false" to "true" and
|
|
# leaves unset keys untouched.
|
|
|
|
# Minimal behavior:
|
|
# - Locate the user config file (prefer $HOME/.config/krunnerrc)
|
|
# - If the file exists and contains the key ActivateWhenTypingOnDesktop,
|
|
# set that key to "true" (make a backup first). Do not create the key.
|
|
|
|
|
|
# Locate config file
|
|
if [ -f "$HOME/.config/krunnerrc" ]; then
|
|
CONFIG_FILE="$HOME/.config/krunnerrc"
|
|
elif [ -n "${XDG_CONFIG_HOME:-}" ] && [ -f "${XDG_CONFIG_HOME}/krunnerrc" ]; then
|
|
CONFIG_FILE="${XDG_CONFIG_HOME}/krunnerrc"
|
|
else
|
|
# No existing user config found; nothing to do.
|
|
exit 0
|
|
fi
|
|
|
|
# Only modify if the key exists in the file
|
|
if grep -q '^[[:space:]]*ActivateWhenTypingOnDesktop[[:space:]]*=' "$CONFIG_FILE"; then
|
|
# Read the current value so we can react if it was explicitly "false"
|
|
OLDVAL=$(awk -F= '/^[[:space:]]*ActivateWhenTypingOnDesktop[[:space:]]*=/{gsub(/^[[:space:]]+|[[:space:]]+$/,"",$2); print $2; exit}' "$CONFIG_FILE")
|
|
|
|
cp -a "$CONFIG_FILE" "$CONFIG_FILE".bak 2>/dev/null || true
|
|
# Remove the key entirely from the user's config (migrate to default behavior).
|
|
sed -i '/^[[:space:]]*ActivateWhenTypingOnDesktop[[:space:]]*=.*/d' "$CONFIG_FILE"
|
|
|
|
# If the user explicitly disabled activateWhenTypingOnDesktop, also enable
|
|
# the containment/plasmoid option `useTypeAhead` where present.
|
|
if [ "${OLDVAL:-}" = "false" ]; then
|
|
SEARCH_DIR="${XDG_CONFIG_HOME:-$HOME/.config}"
|
|
|
|
# Prefer the standard applets file in $HOME/.config if present
|
|
candidates=()
|
|
if [ -f "$HOME/.config/plasma-org.kde.plasma.desktop-appletsrc" ]; then
|
|
candidates+=("$HOME/.config/plasma-org.kde.plasma.desktop-appletsrc")
|
|
fi
|
|
if [ -n "${XDG_CONFIG_HOME:-}" ] && [ -f "${XDG_CONFIG_HOME}/plasma-org.kde.plasma.desktop-appletsrc" ]; then
|
|
candidates+=("${XDG_CONFIG_HOME}/plasma-org.kde.plasma.desktop-appletsrc")
|
|
fi
|
|
|
|
# If none of the standard locations exist, search the config dir for matching files
|
|
if [ ${#candidates[@]} -eq 0 ]; then
|
|
while IFS= read -r -d '' f; do
|
|
candidates+=("$f")
|
|
done < <(find "$SEARCH_DIR" -type f -name 'plasma-org.kde.plasma.desktop-appletsrc*' -print0 2>/dev/null)
|
|
fi
|
|
|
|
for f in "${candidates[@]:-}"
|
|
do
|
|
if [ -z "$f" ] || [ ! -f "$f" ]; then
|
|
continue
|
|
fi
|
|
if grep -q '^[[:space:]]*useTypeAhead[[:space:]]*=' "$f" 2>/dev/null; then
|
|
cp -a "$f" "$f".bak 2>/dev/null || true
|
|
# Set any existing useTypeAhead assignments to true
|
|
sed -i 's/^[[:space:]]*useTypeAhead[[:space:]]*=.*/useTypeAhead=true/g' "$f"
|
|
fi
|
|
done
|
|
fi
|
|
fi
|
|
|
|
exit 0
|