parent
dd95d0d39c
commit
f6e8a3d6ea
@ -1,22 +1,66 @@
|
||||
#!/bin/sh
|
||||
#!/usr/bin/env bash
|
||||
|
||||
ENABLED=yes
|
||||
[ "$ENABLED" != "yes" ] && exit 0
|
||||
[[ ${ENABLED} != yes ]] && exit 0
|
||||
|
||||
. /usr/lib/ublinux/functions
|
||||
. /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)
|
||||
cd $HOME
|
||||
# ARG1: AUTOEXEC[user-1,%wheel]="xbindkeys;kde:yakuake;gnome:guake;lxde:guake;xfce:plank"
|
||||
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)
|
||||
[ "$EXEC" != "" -a "$AUTOEXEC" != "" ] && DELIM=,
|
||||
# ARG1: AUTOEXEC[superadmin]=
|
||||
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)
|
||||
PROGRAM=${a/*:/}
|
||||
[ "$NEEDDE" -a "$NEEDDE" != "$DE" ] && continue
|
||||
[ -z "$PROGRAM" ] || bash -c "$PROGRAM" &
|
||||
done
|
||||
################
|
||||
##### MAIN #####
|
||||
################
|
||||
|
||||
if [[ -z $@ || $1 == set ]]; then
|
||||
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