X-GNOME-
"Оддеса очень велика!"
этот префикс нельзя рассматривать как самостоятельный и он означает, что вся конструкция выполняется только DE GNOME, так что это хоть и отхождение от стандарта, но тольуо в рамках определеной среды
----------------------
я всегда говорил - читайте МАНУАЛЫ
// но их ни кто не читает, и поэтому начинают блуждать
-- все оказалось тривиально просто - исходный скрипт работает, только есть маленький ньюанс - параметры YAD взяты из версии 1.0+
а запустили на версии 0.40 и естественно выдача была неверная..
Пользователь добавил сообщение 23 Января 2025, 05:53:14:
Irshat, -- "грузите аппельсины бочками"
--- или читайте МАНУАЛЫ -----
#!/bin/bash
# yauto: Mabox XDG auto GUI script
# Copyright (C) 2019 napcok <napcok@gmail.com>
#
TITLE="Mabox XDG auto Editor"
DESC="Choose apps/services to auto with OpenBox session.\n<a href='https://manual.maboxlinux.org/en/configuration/autocstart/'>Info (online)</a>"
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}
results=$(mktemp --tmpdir auto.XXXXXXXXXX)
# Copy only new files from /etc/xdg/auto*****/
mkdir -p $config_dir/auto
#remove pamac-tray-budgie
#rm $config_dir/auto/pamac-tray-budgie.desktop
rsync -aq --ignore-existing --exclude="pamac-tray-budgie.desktop" /etc/xdg/autostart/ $config_dir/auto/
#Создаем поток для диалога
for f in $config_dir/auto/*.desktop; do
#Извлекаем из параметр Hidden
chk=$(grep -m 1 -e '^[[:blank:]]*Hidden' "$f")
if [[ -z "$chk" ]]; then
#Если Hidden нет, то вставляем его со значением false
chk="Hidden=false"
echo "$chk" >> $f;
fi
#Инвертируем значение параметра Hidden и передаем в поток
[ $( echo $chk | cut -d = -f 2) == "true" ] && echo false || echo true
#имя файла передаем в поток
echo "$f"
#Извлекаем из параметра Name (имя) значение, декорируем и передаем в поток
name=$(grep -m 1 -e '^[[:blank:]]*Name=' "$f" | cut -d = -f 2)
echo "<b>$name</b>"
#Извлекаем из параметра Comment(коментарий) значение, декорируем и передаем в поток
comment=$(grep -m 1 -e '^[[:blank:]]*Comment=' "$f" | cut -d = -f 2)
[ -n "$comment" ] && echo "<i>$comment</i>" || echo "$NO_DESC"
done | yad --window-icon=distributor-logo-mabox \
--width=800 --height=500 --title="$TITLE" \
--image="gtk-execute" --text="$DESC" \
--list --print-all --bool-fmt="T" \
--checklist --column="$ENABLE:CHK" --column="$FILE:HD" \
--column="$NAME" --column="$COMMENT" --tooltip-column=2 \
--center $CANCEL $OK > $results
#echo ${PIPESTATUS[1]}
#cat $results
#rm -f $results
#exit 0
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
exit 0
скрипт притащили из версии YAD 1.0+ и почему то решили, что ор ОБЯЗАН работать в более ранних версиях
-- а это не так и Ты поймешь если раскоментируешь выдачу резкльтата, перед его обновлением.
Кароче - параметра
--bool-fmt в YAD версии 0.40 из репов нет и результат чекбокса выдается в виде всегда как строка либо "TRUE", либо "FALSE"; и заметь что здесь прописные буквы. Параметр
--bool-fmt был введен, чтобы определять форму выдачи позже.
Так что измени на
[ $HIDDEN == "TRUE" ]
с прописными буквами и все будет работать.
*** сам понимаешь что я заменил папку
autostart(для отладки)
auto. Вернешь сам
*** из мана YAD 1.0+
--bool-fmt=TYPE
Set the output type of boolean values to TYPE. Possible types are T,
t, Y, y, O, o and 1.
T and t - for true/false pair in appropriate case.
Y and y - for yes/no pair in appropriate case.
O and o - for on/off pair in appropriate case.
1 - for 1/0 pair.
. Чтобы в версии 1.0+ тоже выдача была прописными буквами - значение этого параметра должно быть
--bool-fmt="T" , т.е прописной буквой
*** ну и наконец я оптимизировал скрипт... ЯТД ты не будешь против))))))