Автор Тема: Пускане на няколко програми с едно действие  (Прочетена 1491 пъти)

VladSun

  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Имам следния проблем - работя по няколко проекта едновременно, като разработката на всеки проект се нуждае от няколко софтуерни продукта - прим. 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 в моя случай).
« Последна редакция: Aug 26, 2011, 16:28 от VladSun »
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

laskov

  • Напреднали
  • *****
  • Публикации: 3166
    • Профил
Май че такова нещо е Plasma, но е за KDE
Активен

Не си мислете, че понеже Вие мислите правилно, всички мислят като Вас! Затова, когато има избори, идете и гласувайте, за да не сте изненадани после от резултата, и за да не твърди всяка партия, че тя е спечелила, а Б.Б. (С.С., ...) е загубил, а трети да управлява.  Наздраве!  [_]3

tonitochev

  • Напреднали
  • *****
  • Публикации: 699
  • Distribution: Kubuntu and Xubuntu
  • Window Manager: KDE 4
    • Профил
    • WWW
В настройките на мениджера за сесиите задаваш да се запомнят отворените приложения. Като изключваш комп/търа си оставяш отворени приложенията. Като стартираш системата ти се зареждат и приложенията където са си били.
Тая опция я има при всички графични среди, само трябва да я намериш в настройките.
Активен

Debian
 http://debian-az-propaganda.blogspot.com/
вестник за GNU/Linux  http://vestnik.hbcom.info/news.php
 http://tonitochev.net16.net/

task_struct

  • Напреднали
  • *****
  • Публикации: 576
  • Distribution: Kubuntu 14.04
  • Window Manager: KDE 4.13
    • Профил
В КДЕ на това му викат активности и се настройва с обикновен .desktop файл или java script.


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

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

"Minds are like parachutes. They only function when they are open." - James Dewar

irc.freenode.net  / #linux-bg

VladSun

  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Благодаря за отговорите.

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

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

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

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P