98 lines
2.1 KiB
Bash
Executable File
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
|