%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /bin/
Upload File :
Create Path :
Current File : //bin/x-terminal-emulator

#! /usr/bin/perl -w

sub exists_in_path {
    my $command = shift;
    my @path = split ':', $ENV{PATH};

    foreach my $dir (@path) {
	if (-x "$dir/$command") {
	    return 1;
	}
    }

    return 0;
}

# GNOME Terminal now uses a dbus-activated service, so calling it would exit
# immediately, while we're supposed to mimic xterm behavior and so to wait
# until the terminal is explicitly closed, so always use the wait argument
push(@args, '--wait');

while ($opt = shift(@ARGV))
{
    if ($opt eq '-display')
    {
	$ENV{'DISPLAY'} = shift(@ARGV);
    }
    elsif ($opt eq '-name')
    {
	$arg = shift(@ARGV);
	push(@args, "--window-with-profile=$arg");
    }
    elsif ($opt eq '-n')
    {
	# Accept but ignore
	print STDERR "$0: to set an icon, please use -name <profile> and set a profile icon\n"
    }
    elsif ($opt eq '-T' || $opt eq '-title')
    {
	push(@args, '-t', shift(@ARGV));
    }
    elsif ($opt eq '-ls')
    {
	die "$0: Requested to be used as a login shell, but it's not supported\n"
    }
    elsif ($opt eq '+ls')
    {
	print STDERR "$0: gnome-terminal is always a non-login shell\n"
    }
    elsif ($opt eq '-geometry')
    {
	$arg = shift(@ARGV);
	push(@args, "--geometry=$arg");
    }
    elsif ($opt eq '-fn')
    {
	$arg = shift(@ARGV);
	push(@args, "--font=$arg");
    }
    elsif ($opt eq '-fg')
    {
	$arg = shift(@ARGV);
	push(@args, "--foreground=$arg");
    }
    elsif ($opt eq '-bg')
    {
	$arg = shift(@ARGV);
	push(@args, "--background=$arg");
    }
    elsif ($opt eq '-tn')
    {
	$arg = shift(@ARGV);
	push(@args, "--termname=$arg");
    }
    elsif ($opt eq '-e')
    {
	# Debian Policy says we would be free to translate this into:
	# push(@args, '--', @ARGV);
	# but let's be nice to people with local scripts that rely on
	# xterm -e having a special case for a singular argument.
	$arg = shift(@ARGV);
	if (@ARGV)
	{
	    push(@args, '--', $arg, @ARGV);
	    last;
	}
	else
	{
	    # Emulate xterm's special case for a single argument: if it
	    # isn't something we can execute directly, pass it to a shell
	    my $executable;

	    if ($arg =~ m{/})
	    {
		$executable = -x $arg;
	    }
	    else
	    {
		$executable = exists_in_path($arg);
	    }

	    if ($executable)
	    {
		push(@args, '--', $arg);
	    }
	    else
	    {
		# Historically, we used the now-deprecated gnome-terminal -e
		# for this case, which would split the command line up as if
		# by a shell, but didn't support shell constructs like "if"
		# and pipes. But this is easier, and matches what xterm does.
		push(@args, '--', 'sh', '-c', $arg);
	    }
	}
	last;
    }
    elsif ($opt eq '-h' || $opt eq '--help')
    {
	push(@args, '--help');
    }
}

exec('gnome-terminal',@args);

Zerion Mini Shell 1.0