use BEX;
my $queue_name;
+my $screen_session = 'BEX';
my $text_mode;
GetOptions(
"q|queue=s" => \$queue_name,
+ "session=s" => \$screen_session,
"text!" => \$text_mode,
) or die <<AMEN ;
Usage: bprun [<options>] [[!]<machine-or-class> ...]
Options:
-q, --queue=<name> Run jobs in the given queue
+ --session=<name> Job windows should be opened within the given screen
+ session (default: BEX)
--text Use textual user interface instead of curses
AMEN
-$ENV{'STY'} or die "Please run me under Screen\n";
+system 'screen', '-S', $screen_session, '-X', 'select', '.';
+!$? or die "Screen session $screen_session not found\n";
+
my @machines = BEX::Config::parse_machine_list(@ARGV ? @ARGV : '*');
my $queue = BEX::Queue->new($queue_name);
my @jobs = $queue->scan($mach);
@jobs or next;
$ui->update($mach, undef, 'START');
- system 'screen', '-t', $mach, './brun', "--status-fifo=$fifo_name", $mach;
+ my @scr = ('screen', '-t', $mach);
+ push @scr, '-S', $screen_session if defined $screen_session;
+ push @scr, '-X', 'screen', './brun', "--status-fifo=$fifo_name", $mach;
+ system @scr;
!$? or $ui->update($mach, undef, 'INTERR');
$running{$mach} = 'START';
next;
$C->keypad(1);
$C->meta(1);
$C->clear;
+ init_pair(1, COLOR_YELLOW, COLOR_BLUE);
$nrows = $C->getmaxy - 2;
if ($BEX::Config::max_parallel_jobs > $nrows) {
$BEX::Config::max_parallel_jobs = $nrows;
my $jid = $s->{'Job'} // "";
my $jname = ($jid eq "" ? "" : $queue->job_name($jid));
my $text = sprintf("%-20s %-10s %s", $mach, $stat, $jname);
+ if ($stat eq 'DONE') {
+ $C->bkgdset(0);
+ } else {
+ $C->bkgdset(COLOR_PAIR(1) | A_BOLD);
+ }
$C->addnstr($s->{'Row'}, 0, $text, $C->getmaxx);
$C->clrtoeol;
$C->refresh;