Added -e option to execute a command inside terminal (LP: #184921)

This commit is contained in:
Nicolas Valcárcel 2008-01-27 23:27:18 -05:00
parent a2aff21472
commit 95bba138f9
1 changed files with 17 additions and 8 deletions

View File

@ -24,6 +24,7 @@ Usage: terminator [OPTION] ...
-f, --fullscreen Place the window in its fullscreen state when it starts -f, --fullscreen Place the window in its fullscreen state when it starts
-b, --borderless Draw the terminator window without a window border (useful with -m) -b, --borderless Draw the terminator window without a window border (useful with -m)
-p, --profile=PROFILE Take settings from gnome-terminal profile PROFILE -p, --profile=PROFILE Take settings from gnome-terminal profile PROFILE
-e, --execute=COMMAND Executes the command on the opened terminal window
""" """
# import standard python libs # import standard python libs
@ -92,12 +93,13 @@ class TerminatorTerm:
matches = {} matches = {}
def __init__ (self, term, profile): def __init__ (self, term, profile, command):
self.defaults['profile_dir'] = self.defaults['_profile_dir']%(self.defaults['gt_dir']) self.defaults['profile_dir'] = self.defaults['_profile_dir']%(self.defaults['gt_dir'])
self.defaults['link_user'] = self.defaults['_link_user']%(self.defaults['link_userchars'], self.defaults['link_passchars']) self.defaults['link_user'] = self.defaults['_link_user']%(self.defaults['link_userchars'], self.defaults['link_passchars'])
self.term = term self.term = term
self.gconf_client = gconf.client_get_default () self.gconf_client = gconf.client_get_default ()
self.command = command
if profile == None: if profile == None:
profile = self.gconf_client.get_string (self.defaults['gt_dir'] + '/global/default_profile') profile = self.gconf_client.get_string (self.defaults['gt_dir'] + '/global/default_profile')
@ -167,7 +169,10 @@ class TerminatorTerm:
update_records = self.gconf_client.get_bool (self.profile + "/update_records") or True update_records = self.gconf_client.get_bool (self.profile + "/update_records") or True
login = self.gconf_client.get_bool (self.profile + "/login_shell") or False login = self.gconf_client.get_bool (self.profile + "/login_shell") or False
if self.gconf_client.get_bool (self.profile + "/use_custom_command") == True: if self.command:
args = self.command
shell = self.command
elif self.gconf_client.get_bool (self.profile + "/use_custom_command") == True:
args = self.gconf_client.get_string (self.profile + "/custom_command").split () args = self.gconf_client.get_string (self.profile + "/custom_command").split ()
shell = args[0] shell = args[0]
else: else:
@ -439,9 +444,10 @@ class TerminatorTerm:
return self._box return self._box
class Terminator: class Terminator:
def __init__ (self, profile): def __init__ (self, profile, command):
self.profile = profile self.profile = profile
self.gconf_client = gconf.client_get_default () self.gconf_client = gconf.client_get_default ()
self.command = command
self._fullscreen = False self._fullscreen = False
@ -458,7 +464,7 @@ class Terminator:
# Start out with just one terminal # Start out with just one terminal
# FIXME: This should be really be decided from some kind of profile # FIXME: This should be really be decided from some kind of profile
term = (TerminatorTerm (self, self.profile)) term = (TerminatorTerm (self, self.profile, self.command))
self.term_list = [term] self.term_list = [term]
self.window.add (term.get_box ()) self.window.add (term.get_box ())
@ -541,7 +547,7 @@ class Terminator:
""" Split the provided widget on the horizontal or vertical axis. """ """ Split the provided widget on the horizontal or vertical axis. """
# create a new terminal and parent pane. # create a new terminal and parent pane.
terminal = TerminatorTerm (self, self.profile) terminal = TerminatorTerm (self, self.profile, None)
pane = (vertical) and gtk.VPaned () or gtk.HPaned () pane = (vertical) and gtk.VPaned () or gtk.HPaned ()
# get the parent of the provided terminal # get the parent of the provided terminal
@ -658,8 +664,8 @@ def usage ():
if __name__ == '__main__': if __name__ == '__main__':
# define the options # define the options
short_opts = "hdmfbp:" short_opts = "hdmfbp:e:"
long_opts = ["help", "debug", "maximise", "fullscreen", "borderless", "profile="] long_opts = ["help", "debug", "maximise", "fullscreen", "borderless", "profile=", "execute="]
# parse the options # parse the options
try: try:
@ -674,6 +680,7 @@ if __name__ == '__main__':
maximise = False maximise = False
fullscreen = False fullscreen = False
borderless = False borderless = False
command = None
# check the options # check the options
for opt, arg in opts: for opt, arg in opts:
@ -690,8 +697,10 @@ if __name__ == '__main__':
borderless = True borderless = True
if opt in ("-p", "--profile"): if opt in ("-p", "--profile"):
profile = arg profile = arg
if opt in ("-e", "--execute"):
command = arg
term = Terminator (profile) term = Terminator (profile, command)
# Set the Terminator in fullscreen state or maximize it. # Set the Terminator in fullscreen state or maximize it.
# Fullscreen and maximise are mutually exclusive, with # Fullscreen and maximise are mutually exclusive, with