Linux за българи: Форуми

Linux секция за начинаещи => Настройка на програми => Темата е започната от: VladSun в Aug 26, 2011, 09:39



Титла: Пускане на няколко програми с едно действие
Публикувано от: VladSun в Aug 26, 2011, 09:39
Имам следния проблем - работя по няколко проекта едновременно, като разработката на всеки проект се нуждае от няколко софтуерни продукта - прим. NetBeans IDE, MysqlWorkBench, FF + FireBug, различни документации отворени в браузер. Малко досадно ми е всеки път като трябва да си  приготвя обкръжението да ги отварям едно по едно, след това да отварям в тях нужните местоположения на файлове/проекти/линкове.

Дойде ми идеята за десктоп икони, които да стартират гореизброените неща и да подават нужните параметри.

Тъй като съм малко бос в десктоп областта, си реших проблема по мой си начин:

/usr/local/bin/multirun
Код
GeSHi (Perl):
  1. #!/usr/bin/perl
  2. use POSIX;
  3.  
  4. sub afork (\@$&)
  5. {
  6. my ($data, $max, $code) = @_;
  7. my $c = 0;
  8. foreach my $data (@$data)
  9. {
  10. wait unless ++ $c <= $max;
  11. die "Fork failed: $!\n" unless defined (my $pid = fork);
  12. exit $code -> ($data) unless $pid;
  13. }
  14. 1 until -1 == wait;
  15. }
  16.  
  17.  
  18.  
  19. afork (@ARGV,10,\&run);
  20.  
  21. sub run
  22. {
  23. my $data = $_[0];
  24. `$data`;
  25. }
  26.  
  27. exit();

За всеки проект си създавам bash скрипт (може и в иконата ама е много дълго). Прим.:

Код
GeSHi (Bash):
  1. #!/bin/bash
  2.  
  3.  
  4. /usr/local/bin/multirun \
  5. "/usr/local/netbeans-7.0.1/bin/netbeans /www/site/site1" \
  6. "/usr/bin/mysql-workbench /www/site/site1/site1.mwb" \
  7. "firefox -new-window http://site1.work" \
  8. "opera http://dev.sencha.com/deploy/ext-3.3.1/docs/"

И накрая правя икона сочеща към този скрипт.

Решението работи, но се чудех дали няма някакво по-елегантно решение с инструментите на Windows manager-a (Gnome в моя случай).


Титла: Re: Пускане на няколко програми с едно действие
Публикувано от: laskov в Aug 26, 2011, 19:16
Май че такова нещо е Plasma ($2), но е за KDE


Титла: Re: Пускане на няколко програми с едно действие
Публикувано от: tonitochev в Aug 26, 2011, 22:26
В настройките на мениджера за сесиите задаваш да се запомнят отворените приложения. Като изключваш комп/търа си оставяш отворени приложенията. Като стартираш системата ти се зареждат и приложенията където са си били.
Тая опция я има при всички графични среди, само трябва да я намериш в настройките.


Титла: Re: Пускане на няколко програми с едно действие
Публикувано от: task_struct в Aug 26, 2011, 22:44
В КДЕ на това му викат активности и се настройва с обикновен .desktop файл или java script.


В общи линии представлява Активността представлява отделен работен плот, който може да спира и пуска. Той има отделни настройки и може да се направи при стартирането му да се пускат дадени приложения с дадени опции.

За повече инфо тук: http://techbase.kde.org/KDE_System_Administration/PlasmaDesktopScripting


Титла: Re: Пускане на няколко програми с едно действие
Публикувано от: VladSun в Aug 29, 2011, 10:16
Благодаря за отговорите.

@tonitochev - това го правех преди, но не е точно това, което искам. Все пак не мога да пускам *всичко*, което ми трябва за *всички* активни проекти при стартиране.

@task_struct - това звучи много добре. А как се оправя "Активността" с приложенията, които не пускат нова инстанция в случай на съществуваща такава? Прим. NetBeans IDE май не може да пусне втори проект в нова инстанция - просто зарежда проекта в текущата инстанция?

Мислех си, че моя скрипт може да се направи реверсивен - при втори клик на иконата да затваря всички spawn-ати процеси.