Fix for those not running IBus, where the IBus workaround caused broken keys in other keymaps set with non-IBus tools
(New dependancy added (python-psutil) for detecting the IBus process)
This commit is contained in:
parent
c24eb103bd
commit
4953117023
|
@ -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)
|
||||
|
|
|
@ -14,7 +14,7 @@ Homepage: http://www.tenshu.net/terminator/
|
|||
|
||||
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
|
||||
|
|
|
@ -20,6 +20,8 @@
|
|||
|
||||
import sys
|
||||
import os
|
||||
import psutil
|
||||
import pwd
|
||||
try:
|
||||
ORIGCWD = os.getcwd()
|
||||
except OSError:
|
||||
|
@ -57,6 +59,10 @@ if __name__ == '__main__':
|
|||
# Workaround for IBus intefering with broadcast when using dead keys
|
||||
# Environment also needs IBUS_DISABLE_SNOOPER=1, or double chars appear
|
||||
# in the receivers.
|
||||
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 @@ if __name__ == '__main__':
|
|||
# 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 @@ if __name__ == '__main__':
|
|||
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)
|
||||
|
|
|
@ -844,11 +844,12 @@ class Terminal(gtk.VBox):
|
|||
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 self.terminator.ibus_running:
|
||||
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)
|
||||
dbg('Terminal::on_keypress: Ignore processed event with event.state %d' % event.state)
|
||||
return(False)
|
||||
|
||||
# FIXME: Does keybindings really want to live in Terminator()?
|
||||
|
|
|
@ -32,6 +32,7 @@ class Terminator(Borg):
|
|||
pid_cwd = None
|
||||
gnome_client = None
|
||||
debug_address = None
|
||||
ibus_running = None
|
||||
|
||||
doing_layout = None
|
||||
layoutname = None
|
||||
|
|
Loading…
Reference in New Issue