"- На этом отдельном отрицательном примере, мы мобилизуем общественность, поднимем массы...
- Этих негодяев мы будем судить показательным судом. А Вы приедете на этот процесс действительно, как свидетель."
И так, где расположить и как запустить "некий скрипт".
Пока это рабочий процесс, то вполне подходящее место - рабочий стол.

Но рука не поднимается издеваться над собой, я не мазохист. Есть у меня и "Рабочий стол", но это симлинк на "Desktop". Таким образом, не зависит от языка системы, нет возникает проблемы с "недорустимыми символами" и т.д и т.п.
Скрипт yautostart - это код, приведённый тобой в начале темы. .mc.menu - файл "user menu" MC. Помимо общего меню, может быть своё меню в каждом каталоге. Удобно для проб, тестов, не путаются под руками лишние пункты.
Второй пункт меню - запуск непосредственно скрипта yautostart. Настроены условия видимости, что пункт виден и указатель меню сразу устанавливается на него, если в панели указатель установлен на этот скрипт.
Первый пункт меню - код находится непосредственно в файле .mc.menu, виден всегда. В этом варианте отпадает вопрос с расположением кода-скрипта. А так-же, уже запущен файлменеджер и нет никакой нужды в запуске терминала. И всё будет работать без гуи, в голой консоли.
Файл меню или файл скрипта понадобится редактировать. В MC редактор, опять не надо никаких лишних-внешних, вспоминать как называются, как запускаются с конкретным кодом-скриптом. Для редактирования файла меню в меню MC есть команда, хотя я чаще открываю его как обычный, посторонний файл, клавишей "F4".
Содержимое файла меню:
shell_patterns=1
# ~/Desctop/.mc.menu 25.01.19
<< XDG Autostart Editor
TITLE="Mabox XDG Autostart Editor"
DESC="Choose apps/services to autostart with OpenBox session."
ENABLE="run"
FILE="File"
NAME="Name"
COMMENT="Comment"
NO_DESC=""
CANCEL="--button=Cancel:1"
OK="--button=OK:0"
config_dir=${XDG_CONFIG_HOME:-$HOME/.config}
dest="${XDG_CONFIG_HOME:-$HOME/.config}"; src='/etc/xdg/autostart'
if [ -e /usr/bin/yad ]; then util='yad'; else util='zenity'; fi
# Copy only new files from /etc/xdg/autostart/
[ -e ${dest}/autostart ] || mkdir -p ${dest}/autostart
#remove pamac-tray-budgie
rm $config_dir/autostart/pamac-tray-budgie.desktop
# [ -e ${dest}/autostart/pamac-tray-budgie.desktop ] && rm ${dest}/autostart/pamac-tray-budgie.desktop
# rsync -aq --ignore-existing --exclude="pamac-tray-budgie.desktop" ${src}/ ${dest}/autostart/
# check if line starting with Hidden exist, if not add Hidden=false
# for f in $config_dir/autostart/*.desktop; do
# grep -q "Hidden=" $f && echo "yes" || echo "Hidden=false" >> $f
# done
# results=$(mktemp --tmpdir autostart.XXXXXXXXXX)
# for f in $config_dir/autostart/*.desktop; do
# [ "$(grep -m 1 -e '^[[:blank:]]*Hidden' $f | cut -d = -f 2)" == "true" ] && echo false || echo true
# echo $f
# #grep -m 1 -e '^[[:blank:]]*Name=' $f | cut -d = -f 2
# name=$(grep -m 1 -e '^[[:blank:]]*Name=' $f | cut -d = -f 2)
# echo "<b>$name</b>"
# #grep -m 1 -e '^[[:blank:]]*Exec' $f | cut -d = -f 2
# comment=$(grep -m 1 -e '^[[:blank:]]*Comment=' $f | cut -d = -f 2)
# [ ! -z "$comment" ] && echo "<i>${comment/&/&}</i>" || echo "$NO_DESC"
# done | yad --window-icon=distributor-logo-mabox --width=640 --height=500 --title="$TITLE" --image="gtk-execute" --uri-handler=xdg-open \
# --text="$DESC" --list --print-all --bool-fmt="t" \
# --checklist --column="$ENABLE:CHK" --column="$FILE:HD" --column="$NAME" --column="$COMMENT" --tooltip-column=4 $CANCEL $OK > $results
yad
# ${util} --notification --icon-name=${icon} --timeout=4 --title="avnotify" --text=${msg}
# if [[ ${PIPESTATUS[1]} -eq 0 ]]; then
# i=0
# cat $results | while read line; do
# eval $(echo $line | awk -F'|' '{printf "export HIDDEN=\"%s\" FILENAME=\"%s\"", $1, $2 }')
# [ $HIDDEN == "true" ] && HIDDEN="false" || HIDDEN="true"
# echo "Hidden=$HIDDEN, File: $FILENAME"
# sed -i'.temp' -e 's/^Hidden.*$/Hidden='"$HIDDEN"'/g' $FILENAME
# rm $FILENAME.temp
# ((i++))
# done
# unset NAME HIDDEN FILENAME comment
# fi
# rm -f $results
echo "$version.$ex.$(basename "$0").dbg1: [$results] $util [$key][$opt]$src[$dest]"
+= f yautostart
<< Mabox XDG Autostart Editor (yad)
/home/user/Desktop/yautostart
Второй пункт меню. Сразу заметно "удобство расположения скрипта где попало". ~/Desktop не входит в "стандартные пути". Если запускать скрипт нажатимем Enter, то он запустится, потому что находится в текущем каталоге. В остальных случаях придётся вводить полный путь. Поэтому, в меню написан полный путь, но это не снижает удобство.
Первый пункт меню. Вопрос касательно расположения не возникает впринципе. Помимо этого, не возникает вопроса по интерпретатору, как в теме про "nu". Главное, чтобы текущий интерпретатор понимал то, что есть в коде.
Изначально, это код скрипта yautostart, но я уже внёс некоторые изменения. Удалил выбор языка, большая часть кода закомментирована, чтобы пока не мешались.
По расположению и запуску пожалуй всё. Далее, разработка и отладка.
И сразу, визуально, какая здесь переменная: "$config_dir/autostart"?
Представь, что в скрипте две переменных: conf, config_dir. Формально, это не ошибка, но возможные последствия будет трудно выловить. Поэтому, ${config_dir}. Не откладывать на потом.
config_dir=${XDG_CONFIG_HOME:-$HOME/.config}. В данном случае всё нормально, но представь, в $HOME нечто с пробелом. Поэтому: config_dir="${XDG_CONFIG_HOME:-$HOME/.config}".
yad. Понятно, что об удобстве никто не задумывался. Нет yad, и вот уже сколько бобров себе чуть системы не поломали на этом. А почему-бы не сделать: if [ -e /usr/bin/yad ]; then util='yad'; else util='zenity'; fi. Я правда пока не знаю, возможно-ли в принципе это реализовать через zenity. Лучше-бы, обойтись без него вообще.
Начинаю отладку первого пункта меню. Запуск. Еще ничего не делает, но гадит.
$ /bin/sh /tmp/mc-avn/mcusr2547Z2
rm: cannot remove '/home/avn/.config/autostart/pamac-tray-budgie.desktop': No such file or directory # А зачем удалять то, чего нет?
/tmp/mc-avn/mcusr2547Z2: 37: yad: not found # ошибка в строке 37, нет yad
..mcusr2547Z2.dbg1: [] zenity [][]/etc/xdg/autostart[/home/avn/.config] # последняя строка в коде, вывод отладочной информации
Удаляю тупую строку и раскомментирую следующую за ней строку с проверкой "pamac-tray-budgie.desktop". Аналогично исправлена строка с беспроверочным созданием "$config_dir/autostart". Раскомментирую строку с rsync.
$ /bin/sh /tmp/mc-avn/mcusrKJ67Z2
..mcusrKJ67Z2.dbg1: [] zenity [][]/etc/xdg/autostart[/home/avn/.config]
Почище стало. Десктоп-файлы из системного скопировались в пользовательский autostart, без манипуляций с "hidden". А зачем вообще нужно их изменять? Зато не нужны никакие yad-zenity.
Значительно изменил код пункта меню.
<< XDG Autostart Editor 25.01.21
dest="${XDG_CONFIG_HOME:-$HOME/.config}"; src='/etc/xdg/autostart'; version='25'
key='--height=500 --width=640 --list --checklist'
case ${version} in
25*ya*|25*ze*|25) ;;
*) if [ -e /usr/bin/yad ]
then version='25ya'
elif [ -e /usr/bin/zenity ]; then case $(zenity --version) in
3*) version='25ze3';;
*) version='25ze';;
esac
fi
;;
esac
# Copy only new files from /etc/xdg/autostart/
[ -d ${dest}/autostart ] || mkdir -p ${dest}/autostart
[ -e ${dest}/autostart/pamac-tray-budgie.desktop ] && rm ${dest}/autostart/pamac-tray-budgie.desktop
rsync -aq --ignore-existing --exclude="pamac-tray-budgie.desktop" ${src}/ ${dest}/autostart/
for f in ${dest}/autostart/*.desktop; do
# grep -q "Hidden=" $f && echo "yes" || echo "Hidden=false" >> $f
grep -q "Hidden=" $f && echo "$(basename "${f}") yes" || echo "Hidden=false" >> $f
done
results=$(mktemp --tmpdir autostart.XXXXXXXXXX)
case ${version} in
*ya*) NO_DESC=""; CANCEL="--button=Cancel:1"; OK="--button=OK:0"
for f in ${dest}/autostart/*.desktop; do
[ "$(grep -m 1 -e '^[[:blank:]]*Hidden' $f | cut -d = -f 2)" == "true" ] && echo false || echo true
echo $f
#grep -m 1 -e '^[[:blank:]]*Name=' $f | cut -d = -f 2
name=$(grep -m 1 -e '^[[:blank:]]*Name=' $f | cut -d = -f 2)
echo "<b>$name</b>"
#grep -m 1 -e '^[[:blank:]]*Exec' $f | cut -d = -f 2
comment=$(grep -m 1 -e '^[[:blank:]]*Comment=' $f | cut -d = -f 2)
[ ! -z "$comment" ] && echo "<i>${comment/&/&}</i>" || echo "$NO_DESC"
done | yad ${key} --window-icon=distributor-logo-mabox --title="Mabox XDG Autostart Editor" --image="gtk-execute" --uri-handler=xdg-open \
--text="Choose apps/services to autostart with OpenBox session." --print-all --bool-fmt="t" \
--column="run:CHK" --column="File:HD" --column="Name" --column="Comment" --tooltip-column=4 $CANCEL $OK > $results
if [[ ${PIPESTATUS[1]} -eq 0 ]]
then i=0
cat $results | while read line; do
eval $(echo $line | awk -F'|' '{printf "export HIDDEN=\"%s\" FILENAME=\"%s\"", $1, $2 }')
[ $HIDDEN == "true" ] && HIDDEN="false" || HIDDEN="true"
echo "Hidden=$HIDDEN, File: $FILENAME"
sed -i'.temp' -e 's/^Hidden.*$/Hidden='"$HIDDEN"'/g' $FILENAME
rm $FILENAME.temp
((i++))
done
unset NAME HIDDEN FILENAME comment
fi
;;
*ze3*)
echo "$version.$ex.$(basename "$0").dbg3: [$results] $util [$key][$opt]$src[$dest]"
;;
*ze*)
for f in ${dest}/autostart/*.desktop; do
# [ "$(grep -m 1 -e '^[[:blank:]]*Hidden' $f | cut -d = -f 2)" == "true" ] && echo false || echo true
grep -q 'Autostart-enabled=false' ${f} && echo 'false' || echo 'true'
# echo "$f"
echo "$(basename "${f}" '.desktop')"
#grep -m 1 -e '^[[:blank:]]*Name=' $f | cut -d = -f 2
name=$(grep -m 1 -e '^[[:blank:]]*Name=' $f | cut -d = -f 2)
echo "<b>$name</b>"
#grep -m 1 -e '^[[:blank:]]*Exec' $f | cut -d = -f 2
comment=$(grep -m 1 -e '^[[:blank:]]*Comment=' $f | cut -d = -f 2)
[ ! -z "$comment" ] && echo "<i>${comment/&/&}</i>" || echo "$NO_DESC"
done | zenity ${key} --column="run" --column="File" --column="Name" --column="Comment" --icon='session-properties' --title='XDG Autostart Editor (zenity)' --text='Choose apps/services to autostart with session'
;;
*) for f in ${dest}/autostart/*.desktop; do
[ "$(grep -m 1 -e '^[[:blank:]]*Hidden' ${f} | cut -d = -f 2)" = 'true' ] && hidden=' ' || hidden='hidden'
name=$(grep -m 1 -e '^[[:blank:]]*Name=' $f | cut -d = -f 2)
grep -q 'Autostart-enabled=false' ${f} && run=' ' || run='run'
echo "${run} ${hidden} $(basename "${f}" '.desktop')\t${name}"
done
;;
esac
rm -f ${results}
echo "$version.$ex.$(basename "$0").dbg1: [$results] $util [$key][$opt]$src[$dest]"
Пока еще, только копирует десктоп-файлы из системного в пользовательский autostart.
Изменяя переменную "version", можно переключать на yad, zenity или другой вариант.
Yad. Его у меня нет, поэтому, о нём ничего.
Zenity. Добавлена проверка версии и "заглушка" для запуска другой версии. Для текущей версии 4.* получается "segmentation fault". Что-то похожее на правду удалось получить только заменив строку с проверкой "Hidden", на строку с "Autostart-enabled".

Другой вариант. Без всяких гуев. Фрагмент вывода в этом режиме:
~/Desktop$ /bin/sh /tmp/mc-avn/mcusrZ7LN02
indicator-multiload.desktop yes
run hidden at-spi-dbus-bus AT-SPI D-Bus Bus
hidden indicator-multiload System Load Indicator
run hidden nm-applet NetworkManager Applet
...
Первая строка. Перед "yes" добавил имя файла, а то вообше непонятно чего "yes", только засоряет вывод. По моему, эта индикация вообще не нужна, лучше убрать.
Далее, примерно то, что должен изобразить yad-zenity. "run" - включен autostart, "hidden" - скрыть показ в гуи-программах.