diff --git a/terminator b/terminator index c7ab0e78..21eaec7d 100755 --- a/terminator +++ b/terminator @@ -90,6 +90,12 @@ if __name__ == '__main__': import dbus try: dbus_service = ipc.DBusService() + + if(OPTIONS.reload): + # Reload only is executed when exist at least one window, + # if not there is nothing to reload + sys.exit() + except ipc.DBusException: dbg('Unable to become master process, operating via DBus') # get rid of the None and True types so dbus can handle them (empty @@ -105,6 +111,11 @@ if __name__ == '__main__': elif OPTIONS.toggle_visibility: dbg('requesting to toggle windows visibility') ipc.toggle_visibility_cmdline(optionslist) + + if OPTIONS.reload: + dbg('requesting to reload configuration for all windows') + ipc.reload_configuration() + elif OPTIONS.unhide: print('requesting to unhide windows') ipc.unhide_cmdline(optionslist) diff --git a/terminatorlib/ipc.py b/terminatorlib/ipc.py index 5f30ad99..310a2325 100644 --- a/terminatorlib/ipc.py +++ b/terminatorlib/ipc.py @@ -130,6 +130,12 @@ class DBusService(Borg, dbus.service.Object): """Create a new tab""" return self.new_terminal(uuid, 'tab') + @dbus.service.method(BUS_NAME) + def reload_configuration(self): + """Reload configuration for all terminals""" + self.terminator.config.base.reload() + self.terminator.reconfigure() + @dbus.service.method(BUS_NAME) def bg_img_all (self,options=dbus.Dictionary()): for terminal in self.terminator.terminals: @@ -353,6 +359,10 @@ def new_tab_cmdline(session, options): def toggle_visibility_cmdline(session,options): session.toggle_visibility_cmdline(options) +def reload_configuration(session): + """Call the dbus method to reload configuration for all windows""" + session.reload_configuration() + @with_proxy def unhide_cmdline(session,options): session.unhide_cmdline(options) diff --git a/terminatorlib/optionparse.py b/terminatorlib/optionparse.py index da8d0a97..cd20ff8b 100644 --- a/terminatorlib/optionparse.py +++ b/terminatorlib/optionparse.py @@ -39,6 +39,9 @@ def parse_options(): parser = argparse.ArgumentParser() + parser.add_argument('-R', '--reload', action='store_true', dest='reload', + help=_('Reload terminator configuration')) + parser.add_argument('-v', '--version', action='store_true', dest='version', help=_('Display program version')) parser.add_argument('-m', '--maximise', action='store_true', dest='maximise',