Files
fedora-tools/plasma-always-show-unlock/plasma-always-show-unlock
T

98 lines
2.1 KiB
Bash
Executable File

#!/usr/bin/env bash
# SPDX-License-Identifier: MIT
set -euo pipefail
root=${PLASMA_ALWAYS_SHOW_UNLOCK_ROOT:-/}
patch_file=${PLASMA_ALWAYS_SHOW_UNLOCK_PATCH:-/usr/share/plasma-always-show-unlock/LockScreenUi.patch}
target_dir="$root/usr/share/plasma/shells/org.kde.plasma.desktop"
target="$target_dir/contents/lockscreen/LockScreenUi.qml"
usage() {
printf 'Usage: %s {apply|revert|status}\n' "${0##*/}" >&2
}
patch_options=(
--silent
--force
--fuzz=0
--no-backup-if-mismatch
-p1
-d "$target_dir"
)
run_patch() {
patch "${patch_options[@]}" "$@" < "$patch_file"
}
check_patch() {
run_patch --dry-run "$@" >/dev/null 2>&1
}
apply_patch() {
if check_patch --reverse; then
printf 'Plasma unlock prompt patch is already applied.\n'
return
fi
if ! check_patch; then
printf 'Error: %s is not a supported unmodified Plasma lock screen.\n' "$target" >&2
return 1
fi
run_patch
printf 'Applied the Plasma unlock prompt patch.\n'
}
revert_patch() {
if check_patch; then
printf 'Plasma unlock prompt patch is not applied.\n'
return
fi
if ! check_patch --reverse; then
printf 'Error: %s is neither the supported original nor patched file.\n' "$target" >&2
return 1
fi
run_patch --reverse
printf 'Reverted the Plasma unlock prompt patch.\n'
}
if (( $# != 1 )); then
usage
exit 2
fi
if [[ ! -f $target ]]; then
printf 'Error: Plasma lock screen not found at %s.\n' "$target" >&2
exit 1
fi
if [[ ! -r $patch_file ]]; then
printf 'Error: patch file not found at %s.\n' "$patch_file" >&2
exit 1
fi
case $1 in
apply)
apply_patch
;;
revert)
revert_patch
;;
status)
if check_patch --reverse; then
printf 'Plasma unlock prompt patch is applied.\n'
elif check_patch; then
printf 'Plasma unlock prompt patch is not applied.\n'
exit 1
else
printf 'Plasma lock screen is not supported by this patch.\n' >&2
exit 2
fi
;;
*)
usage
exit 2
;;
esac