summaryrefslogtreecommitdiff
path: root/app-admin/eselect-lightdm/files/lightdm-0.2.eselect
diff options
context:
space:
mode:
Diffstat (limited to 'app-admin/eselect-lightdm/files/lightdm-0.2.eselect')
-rw-r--r--app-admin/eselect-lightdm/files/lightdm-0.2.eselect176
1 files changed, 176 insertions, 0 deletions
diff --git a/app-admin/eselect-lightdm/files/lightdm-0.2.eselect b/app-admin/eselect-lightdm/files/lightdm-0.2.eselect
new file mode 100644
index 00000000..00cf7e1d
--- /dev/null
+++ b/app-admin/eselect-lightdm/files/lightdm-0.2.eselect
@@ -0,0 +1,176 @@
+# -*-eselect-*- vim: ft=eselect
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2 or later
+# $Id: $
+
+DESCRIPTION="Switch between LightDM greeters"
+MAINTAINER="lxnay@gentoo.org"
+VERSION="0.1"
+
+# Module variables
+GREETERS_DIR="${EROOT}/usr/share/xgreeters"
+GREETER_SYM="${GREETERS_DIR}/default.desktop"
+
+find_targets() {
+ local f fname
+ for f in "${GREETERS_DIR}/"*; do
+ [[ "${f}" == "${GREETER_SYM}" ]] && continue
+ # skip dirs
+ [[ -d "${f}" ]] && continue
+ # skip broken syms etc
+ [[ ! -e "${f}" ]] && continue
+ # skip non reg files
+ [[ ! -f "${f}" ]] && continue
+
+ fname=$(basename "${f}")
+ [[ "${fname}" == *.desktop ]] || continue
+
+ echo "${fname%%.desktop}"
+ done
+}
+
+remove_symlink() {
+ rm "${GREETER_SYM}"
+}
+
+set_symlink() {
+ local target="${1}"
+
+ if is_number "${target}"; then
+ local targets=( $(find_targets) )
+ target=${targets[target-1]}
+ fi
+
+ [[ -z "${target}" || ! -f "${GREETERS_DIR}/${target}.desktop" ]] \
+ && die -q "Target \"${target}\" doesn't appear to be valid!"
+
+ echo "Setting LightDM greeter to ${target}"
+ ln -sf "${target}.desktop" "${GREETER_SYM}" || die "Cannot create symlink"
+}
+
+### show action ###
+
+describe_show() {
+ echo "Show the current LightDM greeter"
+}
+
+describe_show_options() {
+ echo "--quiet : only print the actual symlink value"
+ echo "--silent : same as --quiet"
+}
+
+do_show() {
+ local quiet=""
+
+ while [[ $# -gt 0 ]]; do
+ case ${1##--} in
+ quiet|silent)
+ quiet="1"
+ ;;
+ esac
+ shift
+ done
+
+ [[ -z "${quiet}" ]] && write_list_start "Current greeter:"
+ if [[ -L "${GREETER_SYM}" ]] && [[ -e "${GREETER_SYM}" ]]; then
+ local greeter=$(canonicalise "${GREETER_SYM}")
+ local greeter_bn=$(basename "${greeter%.desktop}")
+ if [[ -n "${quiet}" ]]; then
+ echo "${greeter_bn}"
+ else
+ write_kv_list_entry "${greeter_bn}" ""
+ fi
+ else
+ if [[ -z "${quiet}" ]]; then
+ write_kv_list_entry "(unset)" ""
+ fi
+ fi
+}
+
+### list action ###
+
+describe_list() {
+ echo "List available LightDM greeters"
+}
+
+describe_list_options() {
+ echo "--quiet : only print the actual symlink value"
+ echo "--silent : same as --quiet"
+}
+
+do_list() {
+ local quiet
+
+ while [[ $# -gt 0 ]]; do
+ case ${1##--} in
+ quiet|silent)
+ quiet="1"
+ ;;
+ esac
+ shift
+ done
+
+ local i targets=( $(find_targets) )
+
+ [[ -z "${quiet}" ]] && write_list_start "Available LightDM greeters:"
+ for (( i = 0; i < ${#targets[@]}; i++ )); do
+ if [[ -z "${quiet}" ]]; then
+ # highlight the target where the symlink is pointing to
+ [[ ${targets[i]} = \
+ $(basename "$(canonicalise "${GREETER_SYM}")") ]] \
+ && targets[i]=$(highlight_marker "${targets[i]}")
+ else
+ echo "${targets[i]}"
+ fi
+ done
+ [[ -z "${quiet}" ]] && \
+ write_numbered_list -m "(none found)" "${targets[@]}"
+}
+
+### set action ###
+describe_set() {
+ echo "Set a new LightDM greeter"
+}
+
+describe_set_parameters() {
+ echo "<target>"
+}
+
+describe_set_options() {
+ echo "target : Target name or number (from 'list' action)"
+ echo "--use-old : use the old value if target is already set"
+}
+
+do_set() {
+ local use_old
+ local target="${1}"
+
+ while [[ $# -gt 0 ]]; do
+ case ${1##--} in
+ use-old)
+ use_old="1"
+ ;;
+ esac
+ shift
+ done
+
+ [[ -z "${target}" ]] && \
+ die -q "You didn't tell me what to set the symlink to"
+ [[ ${#} -gt 1 ]] && die -q "Too many parameters"
+
+ if [[ "${use_old}" = "1" ]]; then
+ old_target=$(do_show --quiet)
+ target="${old_target:-${target}}"
+ fi
+
+ if [[ -L "${GREETER_SYM}" ]]; then
+ # existing symlink
+ remove_symlink || die -q "Couldn't remove existing symlink"
+ set_symlink "${target}" || die -q "Couldn't set a new symlink"
+ elif [[ -e "${GREETER_SYM}" ]]; then
+ # we have something strange
+ die -q "${GREETER_SYM} exists but is not a symlink"
+ else
+ set_symlink "${target}" || die -q "Couldn't set a new symlink"
+ fi
+}