diff options
Diffstat (limited to 'app-eselect/eselect-lightdm')
-rw-r--r-- | app-eselect/eselect-lightdm/Manifest | 2 | ||||
-rw-r--r-- | app-eselect/eselect-lightdm/eselect-lightdm-0.2.ebuild | 25 | ||||
-rw-r--r-- | app-eselect/eselect-lightdm/files/lightdm-0.2.eselect | 176 |
3 files changed, 203 insertions, 0 deletions
diff --git a/app-eselect/eselect-lightdm/Manifest b/app-eselect/eselect-lightdm/Manifest new file mode 100644 index 00000000..28551431 --- /dev/null +++ b/app-eselect/eselect-lightdm/Manifest @@ -0,0 +1,2 @@ +AUX lightdm-0.2.eselect 4393 SHA256 3953380345fcb011f6f6786a1b3800f0e06ff05f7b3abd93eb734a71980bdd25 SHA512 1908ad4f363d2e7cc74ead0d52a90bc87f4752d7140b0e1098935f8f4446cc260ed73b629c895dda3afa3449718077ed70253a9becb60820d94cc2e278aeacc9 WHIRLPOOL be3248dee97a416ad84db3f080673edb7bfcffe08b4d24f9f97307a917bfb4f8cd3c132f5a59cf971ca8c00a1f9379caf328f93f9379643925288f7150283349 +EBUILD eselect-lightdm-0.2.ebuild 497 SHA256 46b5b60218693e53db3a98dcfcebc1c13a44fec4cc2a7d7b7b8ef2e33f2fee5d SHA512 3f46dd3b7ac03d93d416696f03cbeb54cbaaacecec0fbeaff446d19e47175988dddd0c264d7015c38bf70d7808cdf1dd96a7aa643632b809bf957bac15f20a3f WHIRLPOOL e1e14d07473480e70673c4ea3a5b0ada4e93eda083f78e4bf9906724d0bc0cb335fa1d3a332250a3b36056542d1707db6f06e3cdb1568b33172fe05cf9968be9 diff --git a/app-eselect/eselect-lightdm/eselect-lightdm-0.2.ebuild b/app-eselect/eselect-lightdm/eselect-lightdm-0.2.ebuild new file mode 100644 index 00000000..7e1ef10b --- /dev/null +++ b/app-eselect/eselect-lightdm/eselect-lightdm-0.2.ebuild @@ -0,0 +1,25 @@ +# Copyright 1999-2013 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +EAPI=4 + +SRC_URI="" +KEYWORDS="~amd64 ~arm ~x86" + +DESCRIPTION="Eselect module for making easy to switch between LightDM greeters" +HOMEPAGE="http://www.sabayon.org" + +LICENSE="GPL-2" +SLOT="0" +IUSE="" + +S="${WORKDIR}" + +RDEPEND="app-admin/eselect" +DEPEND="${RDEPEND}" + +src_install() { + insinto /usr/share/eselect/modules + newins "${FILESDIR}/lightdm-${PV}.eselect" lightdm.eselect +} diff --git a/app-eselect/eselect-lightdm/files/lightdm-0.2.eselect b/app-eselect/eselect-lightdm/files/lightdm-0.2.eselect new file mode 100644 index 00000000..00cf7e1d --- /dev/null +++ b/app-eselect/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 +} |