parent
dd95d0d39c
commit
f6e8a3d6ea
@ -1,22 +1,66 @@
|
|||||||
#!/bin/sh
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
ENABLED=yes
|
ENABLED=yes
|
||||||
[ "$ENABLED" != "yes" ] && exit 0
|
[[ ${ENABLED} != yes ]] && exit 0
|
||||||
|
|
||||||
. /usr/lib/ublinux/functions
|
. /usr/lib/ublinux/functions
|
||||||
. /usr/lib/ublinux/os-config
|
. /usr/lib/ublinux/os-config
|
||||||
|
|
||||||
SOURCE=${SYSCONF}/config; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null
|
SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
|
||||||
|
SOURCE=${SYSCONF}/desktop; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
|
||||||
|
|
||||||
DE=$(detectDE)
|
# ARG1: AUTOEXEC[user-1,%wheel]="xbindkeys;kde:yakuake;gnome:guake;lxde:guake;xfce:plank"
|
||||||
cd $HOME
|
exec_autoexec_set(){
|
||||||
|
local PARAM="$@"
|
||||||
|
[[ -n ${PARAM} ]] && declare -A AUTOEXEC && eval "${PARAM%%=*}='${PARAM#*=}'"
|
||||||
|
[[ -n ${AUTOEXEC[@]} ]] || return
|
||||||
|
CURRENT_DE=$(detectDE)
|
||||||
|
for ITEM_UNIT in "${!AUTOEXEC[@]}"; do
|
||||||
|
local IS_EXEC=
|
||||||
|
while read USER_GROUP; do
|
||||||
|
if [[ ${USER_GROUP} == 0 ]] \
|
||||||
|
|| ( [[ ${USER_GROUP} =~ ^"%" ]] && getent group "${USER_GROUP//%/}" | grep -q "\b${USER}\b" ) \
|
||||||
|
|| getent passwd "${USER_GROUP}" | grep -q ^"\b${USER}\b"; then
|
||||||
|
IS_EXEC=yes
|
||||||
|
fi
|
||||||
|
done < <(echo "${ITEM_UNIT}" | tr ';, ' \\n)
|
||||||
|
if [[ -n ${IS_EXEC} ]]; then
|
||||||
|
while read DE_CMD; do
|
||||||
|
FIND_DE=${DE_CMD%%:*}
|
||||||
|
FIND_CMD=${DE_CMD#*:}
|
||||||
|
[[ ${FIND_DE} != ${FIND_CMD} && ${FIND_DE} != ${CURRENT_DE} ]] && continue
|
||||||
|
[[ -z ${FIND_CMD} ]] || while read EXEC_CMD; do
|
||||||
|
cd ${HOME}
|
||||||
|
if [[ ${EXEC_CMD} =~ ".desktop"$ ]]; then
|
||||||
|
bash -c "$(grep '^Exec' $(find /usr/share/applications ~/local/share/applications -iname ${EXEC_CMD} 2>/dev/null | tail -1) | tail -1 | sed 's/^Exec=//' | sed 's/%.//' | sed 's/^"//g' | sed 's/" *$//g')" &
|
||||||
|
#echo "bash -c $(grep '^Exec' $(find /usr/share/applications ~/local/share/applications -iname ${EXEC_CMD} 2>/dev/null | tail -1) | tail -1 | sed 's/^Exec=//' | sed 's/%.//' | sed 's/^"//g' | sed 's/" *$//g') &"
|
||||||
|
else
|
||||||
|
bash -c "${FIND_CMD}" &
|
||||||
|
#echo "bash -c ${EXEC_CMD} &"
|
||||||
|
fi
|
||||||
|
done < <(echo "${FIND_CMD}" | tr ',' \\n)
|
||||||
|
done < <(echo "${AUTOEXEC[${ITEM_UNIT}]}" | tr ';' \\n)
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
EXEC=$(cmdline_value exec)
|
# ARG1: AUTOEXEC[superadmin]=
|
||||||
[ "$EXEC" != "" -a "$AUTOEXEC" != "" ] && DELIM=,
|
exec_autoexec_remove(){
|
||||||
|
PARAM="$@"
|
||||||
|
[[ -n ${PARAM} ]] && ITEM_UNIT=${PARAM#*[} && ITEM_UNIT=${ITEM_UNIT%%]*} || return 0
|
||||||
|
[[ -n ${ITEM_UNIT} ]] || return 0
|
||||||
|
}
|
||||||
|
|
||||||
echo "$AUTOEXEC$DELIM$EXEC" | tr ',;' \\n | while read a ;do
|
################
|
||||||
NEEDDE=$(echo $a | grep : | awk -F: '{print $1}' | tr A-Z a-z)
|
##### MAIN #####
|
||||||
PROGRAM=${a/*:/}
|
################
|
||||||
[ "$NEEDDE" -a "$NEEDDE" != "$DE" ] && continue
|
|
||||||
[ -z "$PROGRAM" ] || bash -c "$PROGRAM" &
|
if [[ -z $@ || $1 == set ]]; then
|
||||||
done
|
shift
|
||||||
|
exec_autoexec_set $@
|
||||||
|
KERNEL_AUTOEXEC=$(cmdline_value autoexec)
|
||||||
|
[[ ${KERNEL_AUTOEXEC} == "" ]] || exec_autoexec_set set AUTOEXEC=${KERNEL_AUTOEXEC}
|
||||||
|
elif [[ $1 == remove ]]; then
|
||||||
|
shift
|
||||||
|
exec_autoexec_remove $@
|
||||||
|
fi
|
||||||
|
|||||||
Loading…
Reference in new issue