#! /bin/bash

# The script starts lxpolkit or gnome-policykit in window managers
# installed via APTus Desktop, Minimal ISO and so.
# Copyright Paweł Pijanowski 2017-2025 under GNU GPL 3
# Last update 2025/12/22

GNOMEPOLKIT="`pidof polkit-gnome-authentication-agent-1`"
LXDEPOLKIT="`pidof lxpolkit`"
LXQTPOLKIT="`pidof lxqt-policykit-agent`"

CHECKLXDEPOLKIT="`which lxpolkit`"
if [ -f /usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1 ]; then
	CHECKGNOMEPOLKIT="`/usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1`"
else
	CHECKGNOMEPOLKIT=""
fi

if [ "$CHECKLXDEPOLKIT" != "" ]; then
	SPOLKIT=`lxpolkit`
	echo "polkit is lxpolkit"
elif [ "$CHECKGNOMEPOLKIT" != "" ]; then
	SPOLKIT=`/usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1`
	echo "polkit is gnome polkit"
else
	SPOLKIT="no polkit installed, exiting..."
	exit 0
fi

LXDE="`pidof lxsession`"
OPENBOX="`pidof openbox`"
AWESOME="`pidof awesome`"
BSPWM="`pidof bspwm`"
ENLIGHTENMENT="`pidof enlightenment`"
FLUXBOX="`pidof fluxbox`"
I3="`pidof i3`"
ICEWM="`pidof icewm`"
JWM="`pidof jwm`"
MLVWM="`pidof mlvwm`"
PEKWM="`pidof pekwm`"
SWAY="`pidof sway`"
WMAKER="`pidof wmaker`"

# launch polkit on openbox
# it should not be launched on desktop environments
if [ "$OPENBOX" != "" ]; then
	# lxqt exit
	if [ "$LXQTPOLKIT" != "" ]; then
		echo "lxqt polkit is running, exiting..."
		exit 0
	# lxde exit
	elif [ "$LXDE" != "" ]; then
		echo "lxde polkit is running on lxde, exiting..."
		exit 0
	fi
	if [ "$CHECKLXDEPOLKIT" != "" ]; then
		echo "lxde polkit is running, exiting..."
		exit 0
	elif [ "$CHECKGNOMEPOLKIT" != "" ]; then
		echo "gnome polkit is running, exinting..."
		exit 0		
	fi
fi

# launch polkit on other small window managers
if [ "$AWESOME" != "" ]; then
	$SPOLKIT
	echo "$SPOLKIT is running on awesome"
elif [ "$BSPWM" != "" ]; then
	$SPOLKIT
	echo "$SPOLKIT is running on bspwm"
elif [ "$ENLIGHTENMENT" != "" ]; then
	$SPOLKIT
	echo "$SPOLKIT is running on enlightenment"
elif [ "$FLUXBOX" != "" ]; then
	$SPOLKIT
	echo "$SPOLKIT is running on fluxbox"
elif [ "$I3" != "" ]; then
	$SPOLKIT
	echo "$SPOLKIT is running on i3"
elif [ "$ICEWM" != "" ]; then
	$SPOLKIT
	echo "$SPOLKIT is running on icewm"
elif [ "$JWM" != "" ]; then
	$SPOLKIT
	echo "$SPOLKIT is running on jwm"
elif [ "$MLVWM" != "" ]; then
	$SPOLKIT
	echo "$SPOLKIT is running on mlvwm"
elif [ "$PEKWM" != "" ]; then
	$SPOLKIT
	echo "$SPOLKIT is running on pekwm"
elif [ "$SWAY" != "" ]; then
	$SPOLKIT
	echo "$SPOLKIT is running on sway"
elif [ "$WMAKER" != "" ]; then
	$SPOLKIT
	echo "$SPOLKIT is running on windowmaker"
else
	echo "no sparky supported window manager is running, exiting..."
	exit 0
fi

exit 0
