#!/bin/sh # This script is to make unlocking using OpenRC/Consolekit easier when the KDE Screenlocker breaks. # # Version: 0.2 # Date written: February 2, 2018 # Last modification: February 17, 2018 # # Copyright (C) 2018 Daniel Frey # Copyright (C) 2018 Lars Wendler # # This script is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This script is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # # Some notes: # -The switch processing/argument handling is very basic. # -This script assumes session names start with "Session" when listing # sessions. This is settable via a variable. # # Possible actions: # -h : Show help screen # -l : List current consolekit sessions # -u : Unlock specified session (one parameter required - the session name) # -a : Attempt to unlock all sessions # Return code documentation # # 0: Script executed normally # 1: Root access is not present for script # 2: No arguments passed # 3: Multiple actions requested, can only do one at a time # 4: Argument passed was not recognized # 5: Multiple arguments passed for unlock single session, only one needed # 6: The argument required for unlocksession() is missing (internal error) SCRIPTNAME="$(basename $0)" # Return code constants readonly ERR_NORMAL_OPERATION=0 readonly ERR_NO_ROOT=1 readonly ERR_NO_ARGS=2 readonly ERR_TOO_MANY_ACTIONS=3 readonly ERR_INVALID_ARGUMENTS=4 readonly ERR_TOO_MANY_ARGS=5 readonly ERR_INTERNAL_ARG_MISSING=6 # Action parameter constants readonly ACTION_NONE=0 readonly ACTION_HELP=1 readonly ACTION_LIST=2 readonly ACTION_UNLOCKALL=3 readonly ACTION_UNLOCK=4 # This is what's used to look for a session via consolekit. # By default, assume it is prefixed with "Session". SESSION_SEARCH_PREFIX="Session" # Check to make sure script has root access, if not... abort now! if [ "$(id -u)" -ne 0 ]; then echo "This script must be run as root." exit ${ERR_NO_ROOT} fi showhelp() { cat <