#!/bin/sh
#260201 sfs
[ "`whoami`" != "root" ] && exec pkexec ${0} "${@}"
#4 su-to-root
[ "$1" = "-X" ] && shift
[ "$1" = "-c" ] && shift

if [ -z "$1" ]; then
 echo -e "at least 1 argument required!\n" >> /dev/stderr
 exit 1
fi

X(){
COMMAND=$1

shift #shift first arg

for ARG in "$@"
do
 if [ -z "$ARGS" ]; then
  ARGS="$ARG"
 else
  ARGS="$ARGS $ARG"
 fi 
done

[ "$ARGS" ] && ARGS=\'$ARGS\'
}
COMMAND=''$@''
PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/bin:/sbin
#if [ "`echo $XDG_CURRENT_DESKTOP |grep ':wlroots'`" ] ;then #root user
if [ "`loginctl show-session "$XDG_SESSION_ID" -p Type |grep 'wayland'`" ] ;then #root user
 if [ "$XDG_SESSION_TYPE" = "wayland" ] ;then #user
#https://wiki.archlinux.org/title/Running_GUI_applications_as_root#Using_pkexec
#    eval pkexec --keep-cwd env \
    PATH=$PATH HOME="$HOME" WAYLAND_DISPLAY="$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY" XDG_RUNTIME_DIR=/run/user/0 $COMMAND $ARGS || exit 1
 else #wl root
    #echo "-------" # ; exit
    USER="`loginctl list-sessions --no-legend | awk '$4 ~ /seat[0-9]+/ && ! /root/  {print $3}' | sort -u`"
    u="$(id -u $USER)"
    #HOME=/home/"$USER" WAYLAND_DISPLAY=/run/user/"$u"/wayland-0 
    ##XDG_RUNTIME_DIR=/run/user/"$u"  $COMMAND $ARGS || exit 1
    sudo -u "`sfsusr`" \
  XDG_RUNTIME_DIR=/run/user/"$u" \
  WAYLAND_DISPLAY=/run/user/"$u"/wayland-0  \
  DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/"$u"/bus \
  $COMMAND $ARGS || exit 1
 fi
else #Xorg
    #eval pkexec --keep-cwd env 
        PATH=$PATH DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY $COMMAND $ARGS || exit 1
fi
#exit 0
