Terminator shell not working

27 September 2019
My preferred terminal emulator program is Terminator, since it supports tabs and split windows, and it not tied to any partcular desktop enviornment. For some reason it was not working on my company workstation, but it was working on my personal system — rather odd considering they have what should be identical operating system installations. Originally I put this down to Terminator being for Python 2, but it the end I finally snapped and dug a little deeper.

The error & the fix

When clicking on the launch icon nothing was happening, so I tried launching Termainator from a xterm — upon doing this I was getting the following error:

Traceback (most recent call last): File "/usr/bin/terminator", line 47, in <module> import terminatorlib.optionparse File "/usr/lib64/python2.7/site-packages/terminatorlib/optionparse.py", line 25, in <module> import config File "/usr/lib64/python2.7/site-packages/terminatorlib/config.py", line 83, in <module> import gconf File "/usr/lib64/python2.7/site-packages/gconf/__init__.py", line 15 _merged_dict: dict = {} ^ SyntaxError: invalid syntax

Eventually I decided to dig into the problem myself, and noticed that the error was within gconf rather than Terminator itself. Suspecting the package was broken I deinstalled it, as shown below:

[remy ~]$ sudo pip uninstall gconf Uninstalling gconf-0.6.2: Would remove: /usr/lib64/python2.7/site-packages/gconf-0.6.2.dist-info/* /usr/lib64/python2.7/site-packages/gconf/* /usr/lib64/python2.7/site-packages/test/* Proceed (y/n)? y Successfully uninstalled gconf-0.6.2

With gconf-0.6.2 gone Terminator ran fine, and reinstalling it bought back the error. I can only guess that gconf no longer supports Python 2, but thankfully Terminator does not strictly require it.

Future support?

Terminator uses PyGTK that is deprecated with Python 3, so it looks like Terminator is stuck being a Python 2 program. I did have a quick go porting it myself, but I decided that messing around with library replacements was too much.