xpra icon
Bug tracker and wiki

Opened 5 weeks ago

Last modified 5 days ago

#2359 assigned task

switch input method to ibus?

Reported by: Antoine Martin Owned by: Antoine Martin
Priority: major Milestone: 4.0
Component: server Version: 2.5.x
Keywords: Cc:

Description

Looks like "xim" is being deprecated fast.
Worse, this leaves some applications unusable: eclipse via xpra problem.

Change History (4)

comment:1 Changed 5 weeks ago by Antoine Martin

Status: newassigned

There's a note in the configure_imsettings_env function:
the default: set DISABLE_IMSETTINGS=1, fallback to xim, that's because the 'ibus' 'immodule' breaks keyboard handling unless its daemon is also running - and we don't know if it is..
So it looks like ibus has its own problems... maybe those have been fixed? Or maybe we can figure out if the daemon is running somehow? Or start it ourselves if it is not?

comment:2 Changed 3 weeks ago by Antoine Martin

On the plus side, I can switch the keyboard layout using the systray tool.
Problems:

  • I'm not sure how to test this
  • the systray gets too many click (annoying appindicator API strikes again)
  • needs testing with win32 and macos
  • we'll need a new configuration option to run ibus-daemon --xim -v
  • the default shortcut for changing the layout is intercepted by gnome for its own ibus

The only useful documentation that I could find:

comment:3 Changed 3 weeks ago by Antoine Martin

I don't see anything wrong with the way we handle the tray clicks:

2019-08-06 10:34:06,273 activate_menu(<Gtk.StatusIcon object at 0x7f774692f780 (GtkStatusIcon at 0x55fff9bca830)>) modifiers_mask=<flags GDK_MOD2_MASK of type Gdk.ModifierType>
2019-08-06 10:34:06,273 handle_click(1, 0)
2019-08-06 10:34:06,273 may_guess() GUESS_GEOMETRY=False, current guess=None
2019-08-06 10:34:06,273 tray_click(1, 1, 0) tray=ClientTray(3:IBus Panel)
2019-08-06 10:34:06,273 button_packet=['button-action', 3, 1, 1, (1781, 21), ['mod2']]
2019-08-06 10:34:06,274 GTKStatusIconTray.get_geometry() <Gtk.StatusIcon object at 0x7f774692f780 (GtkStatusIcon at 0x55fff9bca830)>.get_geometry()=(True, screen=<GdkX11.X11Screen object at 0x7f7746856b40 (GdkX11Screen at 0x55fff88a4050)>, area=<Gdk.Rectangle object at 0x7f774685c360 (GdkRectangle at 0x55fff8971d00)>, orientation=<enum GTK_ORIENTATION_HORIZONTAL of type Gtk.Orientation>)
2019-08-06 10:34:06,274 GTKStatusIconTray.get_geometry() geometry area rectangle=(1771, 5, 24, 24)
2019-08-06 10:34:06,274 ClientTray(3:IBus Panel).reconfigure(False) geometry=(1771, 5, 24, 24)
2019-08-06 10:34:06,274 tray_click(1, 0, 0) tray=ClientTray(3:IBus Panel)
2019-08-06 10:34:06,275 button_packet=['button-action', 3, 1, 0, (1781, 21), ['mod2']]
2019-08-06 10:34:06,275 GTKStatusIconTray.get_geometry() <Gtk.StatusIcon object at 0x7f774692f780 (GtkStatusIcon at 0x55fff9bca830)>.get_geometry()=(True, screen=<GdkX11.X11Screen object at 0x7f7746856aa0 (GdkX11Screen at 0x55fff88a4050)>, area=<Gdk.Rectangle object at 0x7f774685c280 (GdkRectangle at 0x55fff8971d00)>, orientation=<enum GTK_ORIENTATION_HORIZONTAL of type Gtk.Orientation>)
2019-08-06 10:34:06,275 GTKStatusIconTray.get_geometry() geometry area rectangle=(1771, 5, 24, 24)
2019-08-06 10:34:06,275 ClientTray(3:IBus Panel).reconfigure(False) geometry=(1771, 5, 24, 24)

The GTKStatusIconTray backend receives the activate_menu event and fires a button press + release.
So we would have to run without the panel: ibus-daemon --xim -v -r --panel=disable.

comment:4 Changed 5 days ago by Antoine Martin

Milestone: 3.04.0

Too late for v3

Note: See TracTickets for help on using tickets.