Add always-visible Plasma unlock prompt
This commit is contained in:
+97
@@ -0,0 +1,97 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user