#!/bin/bash

# MX Linux pkexec wrapper to retain QT environment
# Usage:
#        mx-pkexec mx-apps ...
# original code by fehlix for MX-Linux

if test "$EUID" != 0; then
    # normal user
    QTENV="/tmp/mx-pkexec-qtenv.$EUID.$PPID.$$.$RANDOM$RANDOM"
    env | grep -E '^QT_|^LANG='  | sed -e 's/^/export /' 2>/dev/null  > "$QTENV"
    echo "CURRENT_WORK_DIR=$PWD" >> "$QTENV"
    chmod +r "$QTENV"
    pkexec /usr/bin/mx-pkexec "--qtenv" "$QTENV" "${@}"
    if [ -f "$QTENV" ] ; then
        rm  $QTENV
    fi
fi
if test "$EUID" == 0; then
    # root user
    # set XDG_RUNTIME_DIR - do nothing if already set
    if [ x"$XDG_RUNTIME_DIR" = "x" ]; then
      XDG_RUNTIME_DIR=/run/user/0
      export XDG_RUNTIME_DIR
      [ -d $XDG_RUNTIME_DIR ] || mkdir -p $XDG_RUNTIME_DIR
      chmod 700 $XDG_RUNTIME_DIR
      chown 0:0 $XDG_RUNTIME_DIR
    fi
    if  [ "x$1" = "x--qtenv" ]; then
        QTENV="$2"
        shift
        shift
        if [ -r "$QTENV" -a  "$QTENV" != "${QTENV#/tmp/mx-pkexec-qtenv.}" ] ; then 
            . $QTENV
            rm  $QTENV
            cd "${CURRENT_WORK_DIR}" 
            unset CURRENT_WORK_DIR
        fi
        PATH="/usr/local/bin:$PATH"
    fi
    eval set "$@"
    RUN="$1"
    shift
    echo Starting  "$RUN" "${@}"
    command -v "$RUN" >/dev/null || { echo "mx-pkexec: Command '$RUN' not found"; exit 1; }
    exec "$RUN" "${@}"
fi
exit

