%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /snap/lxd/29351/bin/
Upload File :
Create Path :
Current File : //snap/lxd/29351/bin/remote-viewer

#!/bin/sh
run_cmd() {
    CMD="$1"
    shift

    unset LD_LIBRARY_PATH
    export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
    export HOME="${SNAP_REAL_HOME}"
    export USER="${USERNAME}"
    [ -z "${XDG_DATA_HOME:-}" ] && export XDG_DATA_HOME="${HOME}/.local/share/"
    [ -z "${XDG_CONFIG_HOME:-}" ] && export XDG_CONFIG_HOME="${HOME}/.config/"
    [ -z "${XDG_STATE_HOME:-}" ] && export XDG_STATE_HOME="${HOME}/.local/state/"

    exec unshare -U -r chroot "/var/lib/snapd/hostfs/" "${CMD}" "$@"
}

USERNS=1
[ -e /proc/sys/kernel/unprivileged_userns_clone ] && grep -qxF 0 /proc/sys/kernel/unprivileged_userns_clone && USERNS=0
[ -e /proc/sys/kernel/apparmor_restrict_unprivileged_userns ] && grep -qxF 1 /proc/sys/kernel/apparmor_restrict_unprivileged_userns && USERNS=0
[ -e /proc/sys/kernel/apparmor_restrict_unprivileged_unconfined ] && grep -qxF 1 /proc/sys/kernel/apparmor_restrict_unprivileged_unconfined && USERNS=0

find_and_spawn() {
    for path in / /usr/ /usr/local/; do
        if [ -e "/var/lib/snapd/hostfs/${path}bin/remote-viewer" ] || [ -e "${path}sbin/remote-viewer" ]; then
            run_cmd remote-viewer "${1}"
        fi

        if [ -e "/var/lib/snapd/hostfs/${path}bin/spicy" ] || [ -e "${path}sbin/spicy" ]; then
            run_cmd spicy --uri="${1}"
        fi
    done
}

[ "${USERNS}" = "1" ] && find_and_spawn "${1}"

echo "LXD relies on either remote-viewer or spicy to provide VGA console access."
echo "Those can't be bundled with the LXD snap and so need to be manually installed."
echo ""
echo " - \"remote-viewer\" usually comes in a package called virt-viewer"
echo " - \"spicy\" usually comes in a package called spice-client-gtk"
echo ""
echo "Install either of those and they will automatically start."
echo "Alternatively you may use another SPICE client using the following URI:"
echo "  ${1}"

if [ "${USERNS}" = "0" ]; then
    echo ""
    echo "Your system has unprivileged user namespaces disabled, as a result, "
    echo "you will need to manually run one a SPICE client with the URI above."
    exec sleep infinity
else
    while :; do
        find_and_spawn "${1}"
        sleep 5s
    done
fi

Zerion Mini Shell 1.0