Ами да. И после още четири разбоболечване. Окончателната версия:
GeSHi (Bash):
#!/bin/bash
unset obin ofile osh ok opr
obin=$(which opera)
ofile="/home/$(whoami)/sh/etc/operageo"
osh="/home/$(whoami)/sh/opera"
ok=$(echo "ok" > /dev/null)
opr=$(basename $obin)
pkill -9 $(echo $opr)
if [ -f "$ofile" ]
then
$ok
else
mkdir -p ~/sh/etc
touch ~/sh/etc/operageo
fi
if [ -x "$osh" ]
then
$ok
else
cp $0 $osh
chmod +x $osh
echo "export PATH=\"/home/`whoami`/sh/:$PATH\"" >> ~/.bashrc
# source ~/.bashrc
$osh $@ &
exit
fi
$obin $@ &
unset owind owind2 owid opid ox oy ow oh ogeo ostart
ogeo=$(cat $ofile)
if [ -z "$ogeo" ]; then
$ok
else
ostart=1
fi
for (( ; ; ))
do
if [ -z "$owind" ]; then
owind=$(wmctrl -lp | grep -i "$(echo $opr)" | tail -1)
else
owid=$(echo $owind | cut -f1 -d" ")
opid=$(echo $owind | cut -f3 -d" ")
if [ -z "$ostart" ];
then
$ok
else
wmctrl -i -r $owid -e 0,$ogeo
ostart=''
fi
break
fi
sleep 2
done
for (( ; ; ))
do
owind2=$(wmctrl -lG | grep -i "$(echo $owid)")
ox=$(echo $owind2 | cut -f3 -d" ")
oy=$(echo $owind2 | cut -f4 -d" ")
ow=$(echo $owind2 | cut -f5 -d" ")
oh=$(echo $owind2 | cut -f6 -d" ")
ogeo=$(echo "$ox,$oy,$ow,$oh")
if (ps ax|grep $opid|grep -v grep > /dev/null);then
echo "$ogeo" > $ofile
else
exit
fi
sleep 2
done
Не ти писах, защото започваше Черешката… и жена ми ме повлече към хола. После гледахме филм.
Слагаш във файл и го изпълняваш. Веднъж.
От тук нататък, когато извикаш Опера, вместо нея ще се изпълнява горното.
По принцип може да е за всякаква команда, като реда obin=$(which opera) се смени примерно на $1, но тогава ще трябва въпросната да е първи параметър. И сигурно тук-там ще трябва да се пипне ($@).
Какво прави? Създава каталог ~/sh, ако нямаш. Изсипва съдържанието си вътре. (Само)Кръщава се opera, като се набучва на пътя най-отпред. Така всекипът, когато пожелаеш да извикаш Опера, идва вместо нея горния низ.
Съответно стартира Опера (първата, която имаш). Това е независимо дали подаваш или не подаваш адрес/и. След това проверява има ли записани настройки. Ако има ги прилага след около две секунди. Накрая има безкраен цикъл пак през две секунди да записва настройките.
Направено е с цел да не се товари излишно машината.
Циклите реално са два, но нямаше как да мина само с един.
И да има една особеност. Не можеш да стартираш повече от една истанция на Опера, защото настава хаос.
Решението е грозно, но просто. Толкова си може Баш.
п.п. А пък аз съм калпазанин, затова моля не показвай този код на някой, който разбира от Баш, че ще ми се смее и на оня свят. Е казват смеха лекувал… Може пък да е за добро.