Blob Blame Raw
diff -Naur a/ChangeLog b/ChangeLog
--- a/ChangeLog	2015-09-08 17:27:00.000000000 +0200
+++ b/ChangeLog	2015-10-10 11:55:37.000000000 +0200
@@ -1,3 +1,11 @@
+terminator trunk:
+  * Features
+  * Enhancements
+  * Bug fixes
+    * Fix for those not running IBus, where the IBus workaround caused
+      broken keys in other keymaps set with non-IBus tools (Steve
+      Boddy, LP#1494606)
+
 terminator 0.98:
   * Features
     * Layout launcher with option or shortcut (Steve Boddy)
diff -Naur a/debian/changelog b/debian/changelog
--- a/debian/changelog	2015-09-08 17:27:00.000000000 +0200
+++ b/debian/changelog	2015-10-10 11:55:37.000000000 +0200
@@ -1,3 +1,9 @@
+terminator (0.98) trusty; urgency=low
+
+  * New upstream release of 0.98
+
+ -- Stephen Boddy <stephen.j.boddy@gmail.com>  Wed, 26 Aug 2015 20:28:10 +0200
+
 terminator (0.97~ppa3) saucy; urgency=low
 
   * No-change upload for saucy
diff -Naur a/debian/control b/debian/control
--- a/debian/control	2015-09-08 17:27:00.000000000 +0200
+++ b/debian/control	2015-10-10 11:55:37.000000000 +0200
@@ -14,7 +14,7 @@
 
 Package: terminator
 Architecture: all
-Depends: ${python:Depends}, ${misc:Depends}, python-vte, python-gobject, python-gtk2 (>= 2.14.0), gconf2, libgtk2.0-bin, hicolor-icon-theme
+Depends: ${python:Depends}, ${misc:Depends}, python-vte, python-gobject, python-gtk2 (>= 2.14.0), python-psutil, gconf2, libgtk2.0-bin, hicolor-icon-theme
 XB-Python-Version: ${python:Versions}
 Provides: x-terminal-emulator
 Recommends: xdg-utils, python-gnome2, python-keybinder
diff -Naur a/remotinator b/remotinator
--- a/remotinator	2015-09-08 17:27:00.000000000 +0200
+++ b/remotinator	2015-10-10 11:55:37.000000000 +0200
@@ -29,7 +29,7 @@
     sys.exit(1)
 
 APP_NAME='remotinator'
-APP_VERSION='0.97'
+APP_VERSION='0.98'
 
 COMMANDS={
         'hsplit': ['terminal_hsplit', 'Split the current terminal horizontally'],
diff -Naur a/terminator b/terminator
--- a/terminator	2015-09-08 17:27:00.000000000 +0200
+++ b/terminator	2015-10-10 11:55:37.000000000 +0200
@@ -20,6 +20,8 @@
 
 import sys
 import os
+import psutil
+import pwd
 try:
     ORIGCWD = os.getcwd()
 except OSError:
@@ -57,7 +59,11 @@
     # Workaround for IBus intefering with broadcast when using dead keys
     # Environment also needs IBUS_DISABLE_SNOOPER=1, or double chars appear
     # in the receivers.
-    os.environ['IBUS_DISABLE_SNOOPER']='1'
+    username = pwd.getpwuid(os.getuid()).pw_name
+    ibus_running = [p for p in psutil.process_iter() if p.name == 'ibus-daemon' and p.username == username]
+    ibus_running = len(ibus_running) > 0
+    if ibus_running:
+        os.environ['IBUS_DISABLE_SNOOPER']='1'
 
     dbus_service = None
 
@@ -69,7 +75,6 @@
         # launch gui, return selection
         LAYOUTLAUNCHER=LayoutLauncher()
     else:
-        
         # Attempt to import our dbus server. If one exists already we will just
         # connect to that and ask for a new window. If not, we will create one and
         # continue. Failure to import dbus, or the global config option "dbus"
@@ -112,6 +117,7 @@
         TERMINATOR.set_origcwd(ORIGCWD)
         TERMINATOR.set_dbus_data(dbus_service)
         TERMINATOR.reconfigure()
+        TERMINATOR.ibus_running = ibus_running
 
         try:
             dbg('Creating a terminal with layout: %s' % OPTIONS.layout)
diff -Naur a/terminatorlib/terminal.py b/terminatorlib/terminal.py
--- a/terminatorlib/terminal.py	2015-09-08 17:27:00.000000000 +0200
+++ b/terminatorlib/terminal.py	2015-10-10 11:55:37.000000000 +0200
@@ -844,13 +844,14 @@
             dbg('Terminal::on_keypress: Called on %s with no event' % widget)
             return(False)
 
-        # Workaround for IBus intefering with broadcast when using dead keys
+        # Workaround for IBus interfering with broadcast when using dead keys
         # Environment also needs IBUS_DISABLE_SNOOPER=1, or double chars appear
         # in the receivers.
-        if (event.state | gtk.gdk.MODIFIER_MASK ) ^ gtk.gdk.MODIFIER_MASK != 0:
-            dbg('Terminal::on_keypress: Ingore processed event with event.state %d' % event.state)
-            return(False)
-
+        if self.terminator.ibus_running:
+            if (event.state | gtk.gdk.MODIFIER_MASK ) ^ gtk.gdk.MODIFIER_MASK != 0:
+                dbg('Terminal::on_keypress: Ignore processed event with event.state %d' % event.state)
+                return(False)
+        
         # FIXME: Does keybindings really want to live in Terminator()?
         mapping = self.terminator.keybindings.lookup(event)
 
diff -Naur a/terminatorlib/terminator.py b/terminatorlib/terminator.py
--- a/terminatorlib/terminator.py	2015-09-08 17:27:00.000000000 +0200
+++ b/terminatorlib/terminator.py	2015-10-10 11:55:37.000000000 +0200
@@ -32,6 +32,7 @@
     pid_cwd = None
     gnome_client = None
     debug_address = None
+    ibus_running = None
 
     doing_layout = None
     layoutname = None