Сайт | Скачать | Видео | Wiki

Автор Тема: Скрипт для подключения SFS и запуска программ  (Прочитано 3722 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн bicyclist56

  • Ветеран
  • *****
  • Сообщений: 502
  • Репутация: +20/-1
  • Автор темы
  • Не дай мозгам засохнуть!
    • Мой блог
Сначала просто выкладываю скрипт, понимающие в комментариях не очень нуждаются, а читать легче:
Код
#!/bin/bash

SFS="Kino-1.3.4-Lucid_528"
DFNAME="Kino"
CMD="/usr/bin/kino"
SERVICE="kino"

DF="/usr/share/applications/"$DFNAME".desktop"
SFS0="/mnt/home/SFS_START/"$SFS.sfs
SFS1="/mnt/home/SFS/"$SFS.sfs

if ps -r | pgrep $SERVICE > /dev/null
   then Xdialog --title "$SERVICE" --msgbox "Программа работает!\n
Завершите работу, если нужно."  6 0; exit;
fi
if [ -e $DF ] && [ -e $SFS0 ]
  then $CMD; exit;
fi
if [ -e $SFS0 ]
  then /usr/sbin/mnt_sfs $SFS0; exit;
fi
if [ -e $SFS1 ]
  then /usr/sbin/mnt_sfs $SFS1; exit;
fi
Xdialog --title "$CMD" --msgbox "Программа не найдена. Проверьте наличие $SFS.sfs\n в /mnt/home/SFS/ или /mnt/home/SFS_START/"  6 0;
exit;
У меня работает с новым initrd.gz, который позволяет автоподключение до 32 SFS, находящихся в папке, указанной в параметре загрузчика sfsdir=...
А теперь то же самое с комментариями:
Код
#!/bin/bash

#Пример скрипта для подключения SFS и запуска программ. Можно назначать кнопкам запуска в дополнительной панели XFCE (альтернативное меню с расширенными возможностями), делать ярлыки запуска на раб.столе и т.п. У меня все такие скрипты расположены в /root/MyApps/Start/

# имя файла SFS, без расширения:
SFS="Kino-1.3.4-Lucid_528"
# Имя файла DESKTOP в /usr/share/applications без расширения, нужно открыть в текст.редакторе соответствующий файл, имя будет показано в заголовке окна редактора:
DFNAME="Kino"
# исполняемый файл программы, читаем в строке Exec=...
CMD="/usr/bin/kino"
# главный процесс, который можно вычислить с помощью, например, lxtask:
SERVICE="kino"
# полное имя SFS, если он находится в папке /mnt/home/SFS_START/ - эта папка указана в menu.lst загрузчика, параметр sfsdir=../SFS_START (рядом с сист.папкой):
SFS0="/mnt/home/SFS_START/"$SFS.sfs
# полное имя файла DESKTOP:
DF="/usr/share/applications/"$DFNAME".desktop"
# полное имя SFS, если он находится в папке /mnt/home/SFS/ - здесь находятся остальные SFS, подключаемые вручную по мере надобности:
SFS1="/mnt/home/SFS/"$SFS.sfs
# проверка наличия процесса в памяти (запущена ли программа):
if ps -r | pgrep $SERVICE > /dev/null
# сообщение, в заголовке окна имя процесса:
   then Xdialog --title "$SERVICE" --msgbox "Программа работает!\n
Завершите работу, если нужно."  6 0; exit;
fi
# если файл DESKTOP имеется (программа установлена, или подключен SFS с ней) И если SFS в папке автоподключаемых:
if [ -e $DF ] && [ -e $SFS0 ]
# запустить исполняемый файл программы:
  then $CMD; exit;
fi
#если же файла DESKTOP нет, а SFS в папке автоподключаемых (в случае запуска другой сохраненки, со своей sfsdir, или вовсе без нее):
if [ -e $SFS0 ]
# подключить/отключить SFS
  then /usr/sbin/mnt_sfs $SFS0; exit;
fi
# если SFS в папке с поключаемыми вручную:
if [ -e $SFS1 ]
# подключить/отключить SFS
  then /usr/sbin/mnt_sfs $SFS1; exit;
fi
# если ни одно из вышеприведенных условий не выполнено, то сообщение, в заголовке окна исп.файл программы:
Xdialog --title "$CMD" --msgbox "Программа не найдена. Проверьте наличие $SFS.sfs\n в /mnt/home/SFS/ или /mnt/home/SFS_START/"  6 0;
exit;

# иконку для кнопки запуска нужно выбирать такую, которая появляется только при подключенном SFS, тогда сразу будет видно, в каком состоянии находится SFS
# можно свободно перемещать SFS из одной папки в другую, найдется все равно
« Последнее редактирование: 03 Май 2012, 06:51:04 от bicyclist56 »
Неттоп Eglobal Intel Core i5 3317U 8 GB RAM 128 GB SSD + 120 GB SSD, Slax 9

Оффлайн Zay

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 1536
  • Репутация: +25/-0
У меня работает с новым initrd.gz
Уточню, речь идёт только о новых системах на основе LupuRus (конкретно о LupuRus Bit, сборках KillBill и Иванна Se2), в PuppyRus 2 (Snow Dog) и в оригинальных Puppy это не будет работать.

Оффлайн bicyclist56

  • Ветеран
  • *****
  • Сообщений: 502
  • Репутация: +20/-1
  • Автор темы
  • Не дай мозгам засохнуть!
    • Мой блог
Zay, благодарю за уточнение, а то я уже запутался, где какие initrd используются :)
Затратил несколько часов, но сделал себе 76 скриптов для подключения SFS и запуска программ. Libre Office, к счастью, имеет общий стартовый файл. По-моему, стоило потратить время. Теперь не нужно задумываться, в каком состоянии находятся SFS, все видно по наличию иконок на кнопках запуска. Скрипт load_sfs дополнен, как в puppyrus, предложением запуска программы после подключения SFS, что делает процесс еще более удобным.
Для lupu_devx_528-4_528.sfs и аналогичных не стоит заморачиваться, просто сообщаем пользователю, чтобы запускал нужное из меню:
Код
#!/bin/bash

SFS="lupu_devx_528-4_528"
DFNAME="glade-3"
CMD="glade-3"
SERVICE="glade-3"

DF="/usr/share/applications/"$DFNAME".desktop"
SFS0="/mnt/home/SFS_START/"$SFS.sfs
SFS1="/mnt/home/SFS/"$SFS.sfs

#if [ ps -r | pgrep $SERVICE > /dev/null ]
#   then Xdialog --title "$SERVICE" --msgbox "Программа работает!\n
#Завершите работу, если нужно."  6 0; exit;
#fi
#if [ -e $DF ] && [ -e $SFS0 ]
#  then $CMD; exit;
#fi
if [ ! -e $DF ] && [ -e $SFS0 ]
  then Xdialog --title "$CMD" --msgbox "Запуск только из меню! См. в разделе Разработка"  6 0; /usr/sbin/mnt_sfs $SFS1; exit;
fi
if [ -e $SFS1 ]
  then Xdialog --title "$CMD" --msgbox "Запуск только из меню! См. в разделе Разработка"  6 0; /usr/sbin/mnt_sfs $SFS1; exit;
fi
Xdialog --title "$CMD" --msgbox "Программа не найдена. Проверьте наличие $SFS.sfs\n в /mnt/home/SFS/ или /mnt/home/SFS_START/"  6 0;
exit;
« Последнее редактирование: 03 Май 2012, 06:58:05 от bicyclist56 »
Неттоп Eglobal Intel Core i5 3317U 8 GB RAM 128 GB SSD + 120 GB SSD, Slax 9