Rewrite option AUTOEXEC

master v2.32
Dmitry Razumov 3 years ago
parent dd95d0d39c
commit f6e8a3d6ea

@ -223,6 +223,14 @@ allow_only_root(){
# Hotkeys functions #
#####################
notify-send(){
local FIND_DISPLAY=":$(ls /tmp/.X11-unix/* | sed 's#/tmp/.X11-unix/X##' | head -n 1)"
local FIND_USER=$(who | grep '('${FIND_DISPLAY}')' | awk '{print $1}' | head -n 1) #'
local FIND_UID=$(id -u ${FIND_USER})
[[ -n ${FIND_DISPLAY} && -n ${FIND_USER} && -n ${FIND_UID} ]] || return 1
sudo -u ${FIND_USER} DISPLAY=${FIND_DISPLAY} DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/${FIND_UID}/bus notify-send "$@"
}
show_run(){
DE=$(detectDE)
if [ "$DE" = "kde" -o "$DE" = "plasma" ] ; then
@ -272,8 +280,9 @@ show_hotkeys(){
show_info(){
. /etc/os-release
FILE_INFO="/tmp/info.txt"
LIVECDNAME="$NAME"
UPTIME=$(uptime | awk '{print "time - "$1", up - "$3}')
UPTIME=$(uptime | awk '{print "time - "$1", up - "$3}').
RAM=$(free -m | grep Mem | awk '{ print "total - "$2", free - "$4}')
SWAP=$(free -m | grep Swap | awk '{ print "total - "$2", free - "$4}')
CPU="$(cat /proc/cpuinfo | sed -e '/model name/!d' -e 's/^.*://')"
@ -289,21 +298,25 @@ show_info(){
else
PROF_SIZE=$(df -h / |grep aufs | awk '{print " ["$5"] total - "$2", free - "$4}')
fi
echo "$LIVECDNAME ($VERSION)" > ~/info.txt
echo "UPTIME: $UPTIME" >> ~/info.txt
echo "KERNEL: $KERNEL" >> ~/info.txt
echo "RAM: $RAM" >> ~/info.txt
echo "SWAP: $SWAP" >> ~/info.txt
[ "$(cat /proc/cmdline | grep changes= )" ] && echo "PROFILE: $PROF_SIZE" >> ~/info.txt
echo -e "CPU: ($CPUARCH) \n$CPU" >> ~/info.txt
echo "VIDEO: $VIDEO" >> ~/info.txt
echo "$GLXINFO" >> ~/info.txt
echo "AUDIO: $AUDIO" >> ~/info.txt
echo "CMDLINE: $CMDLINE" >> ~/info.txt
echo "MODULES:" >> ~/info.txt
grep squashfs /proc/mounts | awk '{print $2}' | sort >> ~/info.txt
mdialog --textbox $HOME/info.txt
rm -f $HOME/info.txt
echo "$LIVECDNAME ($VERSION)" > "${FILE_INFO}"
echo "UPTIME: $UPTIME" >> "${FILE_INFO}"
echo "KERNEL: $KERNEL" >> "${FILE_INFO}"
echo "RAM: $RAM" >> "${FILE_INFO}"
echo "SWAP: $SWAP" >> "${FILE_INFO}"
[ "$(cat /proc/cmdline | grep changes= )" ] && echo "PROFILE: $PROF_SIZE" >> "${FILE_INFO}"
echo -e "CPU: ($CPUARCH) \n$CPU" >> "${FILE_INFO}"
echo "VIDEO: $VIDEO" >> "${FILE_INFO}"
echo "$GLXINFO" >> "${FILE_INFO}"
echo "AUDIO: $AUDIO" >> "${FILE_INFO}"
echo "CMDLINE: $CMDLINE" >> "${FILE_INFO}"
echo "MODULES:" >> "${FILE_INFO}"
grep squashfs /proc/mounts | awk '{print $2}' | sort >> "${FILE_INFO}"
zenity --text-info \
--width=640 \
--height=480 \
--title="Show info" \
--filename="${FILE_INFO}"
rm -f "${FILE_INFO}"
}
touchpad(){
@ -399,4 +412,4 @@ screen_scale(){
fi
}
[ "$(basename $0)" = "functions" ] && $@ || true
[[ $(basename $0) == functions ]] && $@ || true

@ -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

@ -68,13 +68,12 @@ NEEDEDUSERS='superadmin:1000:x:Администратор'
## extra_groups # Дополнительные группы пользователя
## optional # Дополнительные опции, например: '--shell /usr/bin/bash --create-home --no-create-home --no-user-group --non-unique'
## -s, --shell /usr/bin/bash # Регистрационная оболочка новой учётной записи
## -m, --create-home # Создать домашний каталог пользователя
## -M, --no-create-home # Не создавать домашний каталог пользователя
## -N, --no-user-group # Не создавать группу с тем же именем что и у пользователя
## -o, --non-unique # Разрешить создание пользователей с повторяющимися (не уникальными) UID
## password_hash|x # Хеш пароля пользователя, если выбрано 'x', то 'password_hash=DEFAULTPASSWD'
## ADDUSER[superadmin:1000:Администратор:]=x
## ADDUSER[user-1:x:Пользователь-1::vboxusers,libvirt]='$6$E7stRhRS8fCKk7UU$Qoqw62AUaUa5uLIc2KC7WV3MUThhrR8kjXtCODmnKCzKe2zHu1/wmsiWBHZEIk/IQnk/aELQYbUK93OUtrwg60'
## ADDUSER[superadmin:1000:Администратор]=x
## ADDUSER[user-1:x:Пользователь-1:x:vboxusers,libvirt:-s /usr/bin/bash -o]='$6$E7stRhRS8fCKk7UU$Qoqw62AUaUa5uLIc2KC7WV3MUThhrR8kjXtCODmnKCzKe2zHu1/wmsiWBHZEIk/IQnk/aELQYbUK93OUtrwg60'
## Добавить пользователя с ID 1000 в группу Администраторов 'whell'
## ADDADM=*yes|no
@ -156,7 +155,6 @@ MACHINEID=hardware
## Режим работы клавиатуры Num Lock (yes|no). По умолчанию включено, если нет тачпада.
#NUMLOCK=no
## Настройка принтера
## PRINTERADD=manual (default)
#PRINTERADD=auto
@ -174,9 +172,6 @@ DEPMOD=yes
#TMPFS=no
#VARTMPFS=no
## Перечень программ для автозагрузки под пользователем
#AUTOEXEC="xbindkeys;kde:yakuake;gnome:guake;lxde:guake;xfce:plank"
## Включение pulseaudio (yes, no)
#PULSEAUDIO=yes
@ -719,6 +714,13 @@ NSSWITCHWINBIND=yes
#DESKTOP=xfce
#DISPLAYMANAGER_DEFAULTUSER=user-1
## Перечень программ для автозагрузки под указанным пользователем или группой
## AUTOEXEC[user1,usern,%group1,%groupn]="%cmd1%;%de1%:%cmd2%;%de2%:%cmd3%,%cmd4%"
## user,%group # Пользователи и группы, если не указан, то применяется для всех пользователей
## %de% # Среда рабочего стола (Desktop environment): kde,gnome,xfce,lxde,lxqt. Не обязательный параметр.
## %cmd% # Команда запуска
#AUTOEXEC[user-1,%wheel]="xbindkeys;kde:yakuake;gnome:guake;lxde:guake;xfce:plank"
## Простой режим мульти рабочего места MultiSeat, когда в ПК установлено два независимых графических контроллера
## Посмотреть все устройства loginctl seat-status seat0
## lsusb lspci
@ -795,7 +797,7 @@ NSSWITCHWINBIND=yes
## =none # Отключить сборку векторных фирменных обоев /usr/share/backgrounds/background.jpg
## =%файл% # Выбранный файл установить как обою
## =%путь_доаталога% # Из каталога, выбрать случайную картинку для обоев
## =#002d55 # Установить сплошным цветом выбранный шестнадцатеричный код цвета
## ='#002d55' # Установить сплошным цветом выбранный шестнадцатеричный код цвета
## Если параметр не задан, то фирменная обоя по умолчанию собирается в /usr/share/backgrounds/background.jpg
#BACKGROUND_DE=/mnt/livedata/ublinux-data/backgrounds/wallpapers/
@ -810,7 +812,7 @@ NSSWITCHWINBIND=yes
## =none # Отключить сборку векторных фирменных обоев /usr/share/backgrounds/dm.jpg
## =%файл% # Выбранный файл установить как обою
## =%путь_доаталога% # Из каталога, выбрать случайную картинку для обоев
## =#002d55 # Установить сплошным цветом выбранный шестнадцатеричный код цвета
## ='#002d55' # Установить сплошным цветом выбранный шестнадцатеричный код цвета
## Если параметр не задан, то фирменная обоя по умолчанию собирается в /usr/share/backgrounds/dm.jpg
#BACKGROUND_DM=/mnt/livedata/ublinux-data/backgrounds/wallpapers/

@ -68,13 +68,12 @@ NEEDEDUSERS='superadmin:1000:x:Администратор'
## extra_groups # Дополнительные группы пользователя
## optional # Дополнительные опции, например: '--shell /usr/bin/bash --create-home --no-create-home --no-user-group --non-unique'
## -s, --shell /usr/bin/bash # Регистрационная оболочка новой учётной записи
## -m, --create-home # Создать домашний каталог пользователя
## -M, --no-create-home # Не создавать домашний каталог пользователя
## -N, --no-user-group # Не создавать группу с тем же именем что и у пользователя
## -o, --non-unique # Разрешить создание пользователей с повторяющимися (не уникальными) UID
## password_hash|x # Хеш пароля пользователя, если выбрано 'x', то 'password_hash=DEFAULTPASSWD'
## ADDUSER[superadmin:1000:Администратор:]=x
## ADDUSER[user-1:x:Пользователь-1::vboxusers,libvirt]='$6$E7stRhRS8fCKk7UU$Qoqw62AUaUa5uLIc2KC7WV3MUThhrR8kjXtCODmnKCzKe2zHu1/wmsiWBHZEIk/IQnk/aELQYbUK93OUtrwg60'
## ADDUSER[superadmin:1000:Администратор]=x
## ADDUSER[user-1:x:Пользователь-1:x:vboxusers,libvirt:-s /usr/bin/bash -o]='$6$E7stRhRS8fCKk7UU$Qoqw62AUaUa5uLIc2KC7WV3MUThhrR8kjXtCODmnKCzKe2zHu1/wmsiWBHZEIk/IQnk/aELQYbUK93OUtrwg60'
## Добавить пользователя с ID 1000 в группу Администраторов 'whell'
## ADDADM=*yes|no
@ -156,7 +155,6 @@ MACHINEID=hardware
## Режим работы клавиатуры Num Lock (yes|no). По умолчанию включено, если нет тачпада.
#NUMLOCK=no
## Настройка принтера
## PRINTERADD=manual (default)
#PRINTERADD=auto
@ -174,9 +172,6 @@ DEPMOD=yes
#TMPFS=no
#VARTMPFS=no
## Перечень программ для автозагрузки под пользователем
#AUTOEXEC="xbindkeys;kde:yakuake;gnome:guake;lxde:guake;xfce:plank"
## Включение pulseaudio (yes, no)
#PULSEAUDIO=yes
@ -719,6 +714,13 @@ NSSWITCHWINBIND=yes
#DESKTOP=xfce
#DISPLAYMANAGER_DEFAULTUSER=user-1
## Перечень программ для автозагрузки под указанным пользователем или группой
## AUTOEXEC[user1,usern,%group1,%groupn]="%cmd1%;%de1%:%cmd2%;%de2%:%cmd3%,%cmd4%"
## user,%group # Пользователи и группы, если не указан, то применяется для всех пользователей
## %de% # Среда рабочего стола (Desktop environment): kde,gnome,xfce,lxde,lxqt. Не обязательный параметр.
## %cmd% # Команда запуска
#AUTOEXEC[user-1,%wheel]="xbindkeys;kde:yakuake;gnome:guake;lxde:guake;xfce:plank"
## Простой режим мульти рабочего места MultiSeat, когда в ПК установлено два независимых графических контроллера
## Посмотреть все устройства loginctl seat-status seat0
## lsusb lspci
@ -795,7 +797,7 @@ NSSWITCHWINBIND=yes
## =none # Отключить сборку векторных фирменных обоев /usr/share/backgrounds/background.jpg
## =%файл% # Выбранный файл установить как обою
## =%путь_доаталога% # Из каталога, выбрать случайную картинку для обоев
## =#002d55 # Установить сплошным цветом выбранный шестнадцатеричный код цвета
## ='#002d55' # Установить сплошным цветом выбранный шестнадцатеричный код цвета
## Если параметр не задан, то фирменная обоя по умолчанию собирается в /usr/share/backgrounds/background.jpg
#BACKGROUND_DE=/mnt/livedata/ublinux-data/backgrounds/wallpapers/
@ -810,7 +812,7 @@ NSSWITCHWINBIND=yes
## =none # Отключить сборку векторных фирменных обоев /usr/share/backgrounds/dm.jpg
## =%файл% # Выбранный файл установить как обою
## =%путь_доаталога% # Из каталога, выбрать случайную картинку для обоев
## =#002d55 # Установить сплошным цветом выбранный шестнадцатеричный код цвета
## ='#002d55' # Установить сплошным цветом выбранный шестнадцатеричный код цвета
## Если параметр не задан, то фирменная обоя по умолчанию собирается в /usr/share/backgrounds/dm.jpg
#BACKGROUND_DM=/mnt/livedata/ublinux-data/backgrounds/wallpapers/

Loading…
Cancel
Save