Libxklavier has been integrated into a dock application (Cairo-Dock). In 32-bits it seems to work fine. In 64-bits, there is a problem with function 'xkl_engine_get_state'. When changing languages from the applet of Cairo-Dock, line 'xkl_engine_get_state (pEngine, Xid, &state)' returns a group value that does not make sense. It returns the following: 'group : -1 -> 46140237 ; indic : 0 -> 0 ' Tested on openSUSE 11.2 64-bits, but some other distros had the same problem, all under 64-bits.
That is very strange indeed. I run gnome with ubuntu/x86_64 for years and did not have any issues. Could you run your app with XKL_DEBUG=160 and attach the output?
Hum, maybe it's distro specific and does not affect Ubuntu. Let's see, after typing the command 'cairo-dock -cl debug XKL_DEBUG=160' (I run it without openGL on my virtual test machine, but I also tried it with openGL on another real non-virtual installation of same distro and I get the same problem) it returns the following: --- message : (cairo-dock-dock-manager.c:cairo_dock_stop_quick_hide:562) debug : (cairo-dock-callbacks.c:cairo_dock_on_button_press:1316) clicked on keyboard debug : (cairo-dock-callbacks.c:cairo_dock_on_button_press:1211) activate Keyboard (Keyboard) debug : (cairo-dock-callbacks.c:cairo_dock_notification_click_icon:1158) no action here debug : (applet-xklavier.c:cd_xkbd_set_prev_next_group:39) keyboard current state : 7417872;0 +1 warning : (cairo-dock.c:_cairo_dock_intercept_signal:181) Cairo-Dock has crashed (sig 11) ---
Oops, forgot to mention that the code it returned was just after I clicked on the applet to switch languages.
> 'cairo-dock -cl debug XKL_DEBUG=160' Sorry for being unclear. XKL_DEBUG is environment variable. So please do export XKL_DEBUG=160 cairo-dock -cl debug
I must be missing a step somewhere, I get the same result in the terminal screen. Is there a log file somewhere?
(In reply to comment #5) > I must be missing a step somewhere, I get the same result in the terminal > screen. Is there a log file somewhere? That is quite odd. XKL_DEBUG sends all stuff to stdout. Are you sure there is no child process with inhibited stdout?
Do you properly initialize libxklavier?
I must say I have no idea. I use KDE4.3.1 btw. I don't know how libxklavier is initialized neither how to verify if it is. I can tell the standard country flags in the systray are always working well, but beyond that it's all new to me. Maybe those systray country flags (of KDE/distro) have nothing to do with libxklavier, I can't tell that either. :(
Try to build libxklavier. There are some test apps inside. Try to run them (with XKL_DEBUG=160), if they work for you
Child processes... not sure if openSUSE does something about that, quite possible. I will uninstall libxklavier (if not too many dependencies), download the latest tarball from http://sourceforge.net/projects/gswitchit/files/libxklavier/ and compile it. Hoping to have something within the next few days.
Hi, I have not had time yet to look into compiling libxklavier for debugging, but I want to bring up front a similar issue in Ubuntu Lucid 32-bits (which makes this even more interesting). The dev of Cairo-Dock now has a new problem with libxklavier. It's actually his first. The first time he calls 'xkl_engine_get_state()', it returns the value 'FALSE', which for him means the function did not do its job. But calling 'xkl_engine_get_num_groups()' works. Doing so does not bring the keyboard's state at startup, though. So my original problem is that get_state returns weird values and here in Cairo-Dock dev's situation the same function returns nothing on start-up, we wonder if it could be related somehow. If you want debugging details on that one too, let me know. tnx
Ok I have uninstalled 4.0 and compiled 5.0. Then I did 'export XKL_DEBUG=160' and 'cairo-dock -ol debug' (I run it with opengl now). Now I click on the icon to switch the locale. I have an error msg I haven't seen before: [1273347018,150,xklavier_toplevel.c:xkl_engine_get_toplevel_window_state/] Appwin 2a00b4d, 'Yakuake' does not have state cd_xkbd_set_prev_next_group: assertion `bSuccess' failed Trying right-clicking on the icon, browsing through the menu and selecting my second locale which is listed and I get: [1273347146,150,xklavier_toplevel.c:xkl_engine_get_toplevel_window_state/] Appwin a0002e, '' does not have state cd_xkbd_set_group: assertion `bSuccess' failed
That explains. Some windows are ignored by libxklavier (they are "transparent") - for that window the statis not defined, the xkl_engine_get_state returns false - you should not look at the group field in that case, there can be any rubbish.
Ok. So what is the solution? If we don't look at the group field, what should we be looking for? I understand there is no bug in libxklavier here, am I correct? If yes, and assuming there is currently no other way to get the required info, is there a feature I can ask for so that we would get the required info? Let me know what you suggest to either workaround this or have an enhancement filled. tnx
I would like precise one point: The active window at the time the problem occurs is not transparent. We can edit inside and change locale-language.
I cannot tell you exactly without looking at the code. First of all, how do you initialize the XklEngine? What are the parameters passed to xkl_engine_start_listen? There must be XKLL_MANAGE_WINDOW_STATES | XKLL_MANAGE_LAYOUTS, at least
There is no xkl_engine_start_listen. The code is : ============= XklEngine *pEngine = xkl_engine_get_instance (display); XklState state; gboolean bSuccess = xkl_engine_get_state (pEngine, Xid, &state); ============= Important NB: It works ok in 32-bits, but does not in 64-bits. Also it seems the doc is unclear, for example xkl_engine_stop_listen() takes 2 args, not 1. The developer tried modifying something but got the following msg: ==== The backend does not require manual layout management ==== Can you explain how to initialize the library?
That message is just an information, can be ignored. The stop_listen function takes the same arguments as start_listen. The docs perhaps are quite poor indeed.
Some code changes have been tested. It appears the 'init/stop' does nothing and that in 64-bits I systematically get the function 'cd_xkbd_set_group' returning 'FALSE'. Unread_message_signal cd_xkbd_set_group: assertion `bSuccess' failed
Start-stop functions initialize listener. After that, your application is responsible for calling even handling function in X event loop (xkl_engine_filter_events). See the sample code in tests/test_monitor.c
Ok. We already retrieve ourselves XKLAVIER_STATE events. All we want is that the function 'XklGetState()' returns current state. The function does it this way: (XGetWindowProperty( dpy, appWin, XKLAVIER_STATE, 0L, PROP_LENGTH, False, XA_INTEGER, &type_ret, &format_ret, &nitems, &rest, &prop ) == Success ) && ( type_ret == XA_INTEGER ) && ( format_ret == 8 ) The only places where it can return FALSE is if 'XGetWindowProperty' doesn't go through or if the return type or format is wrong. Again this exact function works perfectly in 32-bits mode, there must be something handled differently in 64-bits.
Sorry, that bug somehow got lost in my inbox First of all, would you try running test_monitor app from libxklavier? Does it display proper group number? Second, using that app, you could add more debug (just printf, if you like) to the library code, straight after XGetWindowProperty and see what it returns. Additionally, you can always check every window's properties using xprop. Would you see any mismatch between xprop results - and the results of the XGetWindowProperties call?
Ok I have to start over again, since last may I have cleaned up my distro, I need to re-compile v5.0 and use latest version of Cairo-dock with the debug options and see what I get now.
Hi Sergey, This has been a long time I know. I had to stop testing due to old distro and could not upgrade until recently. I have now moved from openSUSE KDE 11.2 to Kubuntu 11.10. I get the same problem with libxklavier. Latest version included in Kubuntu 11.10. I think it's version 6. Would it be good if the developer of Cairo-Dock could join the discussion? tnx
Everybody is free to join, this is bugzilla ;)
I have exactly the same problem. Xubuntu 12.10, 64 bit Cairo-dock 3.10 The same error message: [1355392250,150,xklavier_toplevel.c:xkl_engine_get_toplevel_window_state/] Appwin 4e00004, 'Terminal - vas.pup@aaa: ~' does not have state cd_xkbd_set_group: assertion `bSuccess' failed
Yes absolutely, still there with recent version of libxklavier. I didn't know XFCE would have it as well, probably uses the same libs as KDE. So who is supporting libxklavier, now? Plz let's team up to fix this, we are unable to use one of Cairo-Dock's function because of this. For the bug report and discussion on Cairo-Dock's forums, see here (we could continue the discussion in English if more people join): http://glx-dock.org/bg_topic.php?t=4261 Vasya, if you want to join the discussion and help fixing this, plz join in on glx.dock.org and we will switch the discussion to English. :) I really want that keyboard applet to work!
I am still trying to support it. But I cannot reproduce the issue in GNOME environment. Going to read glx-dock forum
Did anyone really tried test_monitor in 64-bit mode?
Also, to help debuggin the situation, please insert (patching libxklavier) the following after XGetWindowProperty: xkl_debug(0, "type: %d, format: %d\n", (int)type_ret, format_ret);
Another idea. Change CARD32 *prop = NULL; to long *prop = NULL; (I am still talking about xkl_engine_get_toplevel_window_state) The idea is based on http://www.x.org/releases/X11R7.5/doc/man/man3/XGetWindowProperty.3.html: If the returned format is 32, the property data will be stored as an array of longs (which in a 64-bit application will be 64-bit values that are padded in the upper 4 bytes). If that helps - I will patch libxklavier
I will restart my validations from scratch and come back. Glad to see you are still there, Sergey. :) I do not know much about developments, so I may need a little help at some point, but we'll see. Vasya, are you able to try something on your end as well?
Hi Frank, I would like to see this plugin working too :) I left the comment on the glx-dock forum. Be honest the first time I met the name of the LibXklavier it was today when I googled for the possible solution for this problem. Sorry if I totally wrong, but it makes me no sense that problem is in this library, since on the same machine when I'm running the same application (which I guess uses the same binary for libxklavier) - everything works ok. Am I wrong? Anyway, I will try to build / patch the libxklavier, probably tomorrow to see if it helps. thanks
ups, forgot to mention in previous comment: -- when I run the same application (cairo-dock) on the same machine, with the same library, on DIFFERENT shell (Unity and Gnome) everything is working as expected.
Ok that's normal, on Unity and Gnome it works, cuz I think Unity/Gnome does not use libxklavier. Libxklavier is intended to support XFree86 (X.Org), which I think it not used on Gnome/Unity, but I am not positive on that... I have tried KDE on 2 distros, 2 versions of each and also under VBOX and every single time it was not working. All in 64-bits, in 32-bits it works perfectly. This week-end I will restart my testing with test_monitor and possibly that patch too if I can compile libxklavier.
> Ok that's normal, on Unity and Gnome it works, cuz I think Unity/Gnome does They are not using libxklavier (well, GNOME does not use it since 3.6) > not use libxklavier. Libxklavier is intended to support XFree86 (X.Org), > which I think it not used on Gnome/Unity, but I am not positive on that... GNOME is using XKB API directly, without libxklavier layer. > This week-end I will restart my testing with test_monitor and possibly that > patch too if I can compile libxklavier. Please do. That should work.
Hi, What are expected results from test_monitor? I compiled the package and run test_monitor with -l1 -l2 and -l3 options. I tried to switch layouts, open new windows etc. - and saw no output. Additional question - what is the safest way to replace the original package with the compiled one, and revert back to the original? Thanks, V.P.
another question: grep -n "CARD32 \*prop" *.c xklavier_toplevel.c:295: CARD32 *prop = NULL; xklavier_toplevel.c:384: CARD32 *prop = NULL; Is it correct file to patch, should I replace both declarations? thx
you can try test_monitor -h also use -d 255 option. Mainly, -l1 -l2 is of interest, they should manage keyboard layouts per-window. But, most of all, I would be interested in replacing CARD32 with long - and see if your application work with that.
yes. both.
Sergey, Before installing the patch I'd like to know how to revert back (in case of disaster with given patch) to original package. I'm using Ubuntu, so I guess it should be something like apt-get install -f or by Synaptic. Anyway, I cannot afford to reinstall the whole system because of this package. I read the test_monitor help and have to say that it is not too informative to me (once again, I'm completely new in this domain). So, right now with -l3 option there is no output... Thanks, V.P.
probably: sudo make uninstall - should revert (or at least uninstall) the patched package?
Just backup /usr/lib/libxklavier* and /usr/lib64/libxklavier*
Unfortunately, seems like it doesn't work: debug : (/build/buildd/cairo-dock-3.1.2/src/cairo-dock-user-interaction.c:cairo_dock_notification_click_icon:263) no action here [1355529915,150,xklavier_toplevel.c:xkl_engine_get_toplevel_window_state/] Appwin 4401288, 'Terminal - vas@pup: ~/Downl' does not have state cd_xkbd_set_prev_next_group: assertion `bSuccess' failed Here is a patch I made for testing: --- xklavier_toplevel.c 2010-01-11 02:57:51.000000000 +0200 +++ ../../../libxklavier-5.0/libxklavier/xklavier_toplevel.c 2012-12-15 01:43:51.794924977 +0200 @@ -292,7 +292,7 @@ Atom type_ret; int format_ret; unsigned long nitems, rest; - CARD32 *prop = NULL; + long *prop = NULL; gboolean ret = FALSE; gint grp = -1; @@ -305,6 +305,8 @@ &format_ret, &nitems, &rest, (unsigned char **) (void *) &prop) == Success) && (type_ret == XA_INTEGER) && (format_ret == 32)) { + + xkl_debug(0, "type: %d, format: %d\n", (int)type_ret, format_ret); grp = prop[0]; if (grp >= xkl_engine_get_num_groups(engine) || grp < 0) grp = 0; @@ -381,7 +383,7 @@ Atom type_ret; int format_ret; unsigned long nitems, rest; - CARD32 *prop = NULL; + long *prop = NULL; if ((XGetWindowProperty (xkl_engine_get_display(engine), toplevel_win, xkl_engine_priv(engine, atoms)[XKLAVIER_TRANSPARENT], 0L, 1, I also notice, that original package was named: libxklavier.16.2.0.0, and the version I donwloaded was 16.0.0. I think that the problem is not there, but still worth to mention. The test_monitor is working fine when I switch with the xfce-kbd-pugin (with the standard xfce4 panel). Here is the output: [1355530342,000,test_monitor.c:main/] Xklavier initialized [1355530342,000,test_monitor.c:main/] Group: [us] [1355530342,000,test_monitor.c:main/] Group: [il] [1355530342,000,test_monitor.c:main/] Group: [ru] [1355530342,000,test_monitor.c:main/] Now, listening: 2... [1355530387,000,test_monitor.c:state_changed/] State changed: 0,2,0 [1355530393,000,test_monitor.c:state_changed/] State changed: 0,1,0 [1355530396,000,test_monitor.c:state_changed/] State changed: 0,0,0 However, with cairo-dock keyboard plugin it has no output. Hope it helps.
> Appwin 4401288, 'Terminal - vas@pup: ~/Downl' does not have state > cd_xkbd_set_prev_next_group: assertion `bSuccess' failed Can you try again? And when you get that error, please run "xprop | grep XKL" - and point mouse pointer to that terminal window that "does not have state". > I also notice, that original package was named: libxklavier.16.2.0.0, and > the version I donwloaded was 16.0.0. I think that the problem is not there, > but still worth to mention. When you build libxklavier properly from tarball, you should get libxklavier.so.16.2.0. That is important - because your applications are most probably using it. In case of doubt, check by running "ldd /whatever/your/path/is/cairo-doc"
Where can I find the latest tarball?
The latest I could find here is 5.0, which is older than what I have installed. loll http://www.freedesktop.org/wiki/Software/LibXklavier http://sourceforge.net/projects/gswitchit/files/libxklavier/ But here 5.3 seems the latest: http://cgit.freedesktop.org/libxklavier/ Could not find more recent. I'll give a try anyway. I've got the 5.1 installed, which came in Kubuntu 11.10.
Vasya, where did you get test_monitor app from?
> http://www.freedesktop.org/wiki/Software/LibXklavier Thanks, will update it. > http://sourceforge.net/projects/gswitchit/files/libxklavier/ VEEEEERY old. > But here 5.3 seems the latest: http://cgit.freedesktop.org/libxklavier/ > Could not find more recent. Yes, please either use 5.3 tarball or take the stuff from git.
I am currently as we speak patching. grep -n "CARD32 \*prop" *.c xklavier_toplevel.c:295: CARD32 *prop = NULL; xklavier_toplevel.c:384: CARD32 *prop = NULL; Changed lines 295 and 384 for: Atom type_ret; int format_ret; unsigned long nitems, rest; long *prop = NULL; gboolean ret = FALSE; grep -n "long \*prop" *.c xklavier_toplevel.c:295: long *prop = NULL; xklavier_toplevel.c:384: long *prop = NULL; Now I need to check how to compile. I believe no special options?
I guess # ./configure # make # make install ?
Do I need to unsinstall my packaged version of libxklavier first?
No special options required. Just make sure you specify --prefix proper for your distribution
Do, do not uninstall. Just backup /usr/lib/libxklavier*
(In reply to comment #53) > No special options required. Just make sure you specify --prefix proper for > your distribution Crap, I do not know what it is, will have to look. tnx I will backup /libxklavier*
That should do it: $ kde4-config --prefix /usr So --prefix=/USR
mkdir $HOME/libxklavier.backup cp /usr/lib/libxklavier* $HOME/libxklavier.backup (if you have 64-bit system, may be /usr/lib64, please check) cd (wherever you unpacked libxklavier) ./configure --prefix=/usr make sudo make install
(In reply to comment #57) > mkdir $HOME/libxklavier.backup > cp /usr/lib/libxklavier* $HOME/libxklavier.backup > > (if you have 64-bit system, may be /usr/lib64, please check) > > cd (wherever you unpacked libxklavier) > ./configure --prefix=/usr > make > sudo make install /usr/lib is the folder for my distro. Just 4 files in there. Backped up, but I don't care about breaking up the system, cuz I use dd to restore my partition and I use 2 independent hard drives (TEST and PROD), so even if nothing works I can restore my entire hard drive no problem. But it is faster to copy the backed up files and recompile. :)
Ok currently looking into a compiling issue. /libxklavier-5.3$ ./configure --prefix=/usr bash: ./configure: No such file or directory I do compile cairo-dock and it works and the make and cmake packages are installed. Googling for an answer.
/libxklavier-5.3$ ls -l total 124 -rw-rw-r-- 1 frank frank 47 2012-09-21 20:36 AUTHORS -rwxrwxr-x 1 frank frank 759 2012-09-21 20:36 autogen.sh -rw-rw-r-- 1 frank frank 64 2012-09-21 20:36 ChangeLog -rw-rw-r-- 1 frank frank 31184 2012-09-21 20:36 ChangeLog.cvs -rw-rw-r-- 1 frank frank 6673 2012-09-21 20:36 configure.ac -rw-rw-r-- 1 frank frank 25275 2012-09-21 20:36 COPYING.LIB -rw-rw-r-- 1 frank frank 69 2012-09-21 20:36 CREDITS drwxrwxr-x 3 frank frank 4096 2012-09-21 20:36 doc drwxrwxr-x 2 frank frank 4096 2012-12-15 09:52 libxklavier -rw-rw-r-- 1 frank frank 1446 2012-09-21 20:36 libxklavier.anjuta -rw-rw-r-- 1 frank frank 256 2012-09-21 20:36 libxklavier.pc.in -rw-rw-r-- 1 frank frank 1434 2012-09-21 20:36 libxklavier.spec.in drwxrwxr-x 2 frank frank 4096 2012-09-21 20:36 m4 -rw-rw-r-- 1 frank frank 396 2012-09-21 20:36 Makefile.am -rw-rw-r-- 1 frank frank 2702 2012-09-21 20:36 NEWS -rw-rw-r-- 1 frank frank 75 2012-09-21 20:36 README drwxrwxr-x 2 frank frank 4096 2012-09-21 20:36 tests Am I missing files?
Ok 'test_monitor.c' is part of the libxklavier package, I see those files. But I am trying the patch first. Except I think there is no 'configure' script in the package I extracted, or I have a different problem, but './configure' is not finding any files to run.
Should I use 'autogen.sh'?
If you took the stuff from git, yes, autogen.sh
Good. Gotta work on the dependencies. 'gtk-doc' for instance. Trying to find the package and install it.
Yes I took it from git, from http://cgit.freedesktop.org/libxklavier/ that's why.
autogen seems to have work: ********************************************************** Libxklavier is configured with the following backends: XKB, libxkbfile is NOT present xmodmap, default ruleset: base base: /usr/share/xmodmap gtk-doc disabled **********************************************************
And to make sure the compiling worked, here's the 'make' output: $ make make all-recursive make[1]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3' Making all in libxklavier make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier' `/usr/bin/pkg-config --variable=glib_genmarshal glib-2.0` --prefix=xkl_engine ./marshal.list --header > xkl_engine_marshal.h (cd . \ && glib-mkenums \ --fhead "#ifndef __XKL_ENUM_TYPES_H__\n#define __XKL_ENUM_TYPES_H__\n" \ --fprod "/* enumerations from \"@filename@\" */\n" \ --vhead "GType @enum_name@_get_type (void);\n#define XKL_TYPE_@ENUMSHORT@ (@enum_name@_get_type())\n" \ --ftail "#endif /* __XKL_ENUM_TYPES_H__ */" \ xkl_engine.h xkl_config_item.h xkl_config_registry.h xkl_config_rec.h xkl_engine_marshal.h xklavier.h) > new-xkl-enum-types.h \ && (cmp -s new-xkl-enum-types.h xkl-enum-types.h || cp new-xkl-enum-types.h xkl-enum-types.h) \ && rm -f new-xkl-enum-types.h \ && echo timestamp > stamp-xkl-enum-types.h (cd . \ && glib-mkenums \ --fhead "#include <libxklavier/xklavier.h>" \ --fprod "\n/* enumerations from \"@filename@\" */" \ --vhead "GType\n@enum_name@_get_type (void)\n{\n static GType etype = 0;\n if (etype == 0) {\n static const G@Type@Value values[] = {" \ --vprod " { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \ --vtail " { 0, NULL, NULL }\n };\n etype = g_@type@_register_static (\"@EnumName@\", values);\n }\n return etype;\n}\n" \ xkl_engine.h xkl_config_item.h xkl_config_registry.h xkl_config_rec.h xkl_engine_marshal.h xklavier.h) > new-xkl-enum-types.c \ && cp new-xkl-enum-types.c xkl-enum-types.c \ && rm -f new-xkl-enum-types.c make all-am make[3]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier' CC xkl-enum-types.lo CC xklavier.lo CC xklavier_evt.lo CC xklavier_config.lo CC xklavier_config_iso.lo CC xklavier_xkb.lo CC xklavier_evt_xkb.lo CC xklavier_config_xkb.lo CC xklavier_toplevel.lo CC xklavier_xmm.lo CC xklavier_xmm_opts.lo CC xklavier_evt_xmm.lo CC xklavier_config_xmm.lo CC xklavier_util.lo CC xklavier_props.lo CC xklavier_dump.lo `/usr/bin/pkg-config --variable=glib_genmarshal glib-2.0` --prefix=xkl_engine ./marshal.list --body > xkl_engine_marshal.c CC xkl_engine_marshal.lo CCLD libxklavier.la make[3]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier' make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier' Making all in doc make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc' Making all in reference make[3]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc/reference' make[3]: Nothing to be done for `all'. make[3]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc/reference' make[3]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc' make[3]: Nothing to be done for `all-am'. make[3]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc' make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc' Making all in tests make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/tests' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/tests' make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3' make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3' make[1]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3'
And now 'sudo make install': $ sudo make install Making install in libxklavier make[1]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier' make install-am make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier' make[3]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier' test -z "/usr/lib" || /bin/mkdir -p "/usr/lib" /bin/bash ../libtool --mode=install /usr/bin/install -c libxklavier.la '/usr/lib' libtool: install: /usr/bin/install -c .libs/libxklavier.so.16.3.0 /usr/lib/libxklavier.so.16.3.0 libtool: install: (cd /usr/lib && { ln -s -f libxklavier.so.16.3.0 libxklavier.so.16 || { rm -f libxklavier.so.16 && ln -s libxklavier.so.16.3.0 libxklavier.so.16; }; }) libtool: install: (cd /usr/lib && { ln -s -f libxklavier.so.16.3.0 libxklavier.so || { rm -f libxklavier.so && ln -s libxklavier.so.16.3.0 libxklavier.so; }; }) libtool: install: /usr/bin/install -c .libs/libxklavier.lai /usr/lib/libxklavier.la libtool: install: /usr/bin/install -c .libs/libxklavier.a /usr/lib/libxklavier.a libtool: install: chmod 644 /usr/lib/libxklavier.a libtool: install: ranlib /usr/lib/libxklavier.a libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin:/sbin" ldconfig -n /usr/lib ---------------------------------------------------------------------- Libraries have been installed in: /usr/lib If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the `-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the `LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the `LD_RUN_PATH' environment variable during linking - use the `-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to `/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- test -z "" || /bin/mkdir -p "" test -z "" || /bin/mkdir -p "" test -z "/usr/include/libxklavier" || /bin/mkdir -p "/usr/include/libxklavier" /usr/bin/install -c -m 644 xkl_engine.h xkl_config_item.h xkl_config_registry.h xkl_config_rec.h xkl_engine_marshal.h xklavier.h xkl-enum-types.h '/usr/include/libxklavier' make[3]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier' make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier' make[1]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier' Making install in doc make[1]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc' Making install in reference make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc/reference' make[3]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc/reference' make[3]: Nothing to be done for `install-exec-am'. Nothing to install make[3]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc/reference' make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc/reference' make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc' make[3]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc' make[3]: Nothing to be done for `install-exec-am'. make[3]: Nothing to be done for `install-data-am'. make[3]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc' make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc' make[1]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc' Making install in tests make[1]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/tests' make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/tests' make[2]: Nothing to be done for `install-exec-am'. make[2]: Nothing to be done for `install-data-am'. make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/tests' make[1]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/tests' make[1]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3' make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3' make[2]: Nothing to be done for `install-exec-am'. test -z "/usr/lib/pkgconfig" || /bin/mkdir -p "/usr/lib/pkgconfig" /usr/bin/install -c -m 644 libxklavier.pc '/usr/lib/pkgconfig' make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3' make[1]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3' Is all ok?
> XKB, libxkbfile is NOT present You are missing important files. Further build does not make sense. You need libxkbfile
Tnx for pointing that out. I knew something was wrong, as the indicator in cairo-dock only shows US keyboard, and I got also CA keyboard. Installed 'libxkbfile-devel'.
After you got libxkbfile, rerun configure/make/make install parts
Sorry I reran before you posted. :( Did a 'sudo make uninstall'. Now autogen.sh: $ ./autogen.sh --prefix=/usr autoreconf: Entering directory `.' autoreconf: running: autopoint --force autoreconf: running: aclocal --force -I m4 ${ACLOCAL_FLAGS} autoreconf: configure.ac: tracing autoreconf: running: libtoolize --install --copy --force libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, `build-aux'. libtoolize: copying file `build-aux/config.guess' libtoolize: copying file `build-aux/config.sub' libtoolize: copying file `build-aux/install-sh' libtoolize: copying file `build-aux/ltmain.sh' libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'. libtoolize: copying file `m4/libtool.m4' libtoolize: copying file `m4/ltoptions.m4' libtoolize: copying file `m4/ltsugar.m4' libtoolize: copying file `m4/ltversion.m4' libtoolize: copying file `m4/lt~obsolete.m4' autoreconf: running: /usr/bin/autoconf --force autoreconf: running: /usr/bin/autoheader --force autoreconf: running: automake --add-missing --copy --force-missing Makefile.am:3: AM_GNU_GETTEXT used but `po' not in SUBDIRS autoreconf: Leaving directory `.' checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... no checking for mawk... mawk checking whether make sets $(MAKE)... yes checking whether to disable maintainer-specific portions of Makefiles... yes checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking for style of include used by make... GNU checking dependency style of gcc... gcc3 checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking for ld used by GCC... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for shared library run path origin... done checking for iconv... yes checking for working iconv... yes checking for iconv declaration... extern size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); checking how to print strings... printf checking for a sed that does not truncate output... /bin/sed checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for fgrep... /bin/grep -F checking for ld used by gcc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B checking the name lister (/usr/bin/nm -B) interface... BSD nm checking whether ln -s works... yes checking the maximum length of command line arguments... 1572864 checking whether the shell understands some XSI constructs... yes checking whether the shell understands "+="... yes checking how to convert x86_64-unknown-linux-gnu file names to x86_64-unknown-linux-gnu format... func_convert_file_noop checking how to convert x86_64-unknown-linux-gnu file names to toolchain format... func_convert_file_noop checking for /usr/bin/ld option to reload object files... -r checking for objdump... objdump checking how to recognize dependent libraries... pass_all checking for dlltool... no checking how to associate runtime and link libraries... printf %s\n checking for ar... ar checking for archiver @FILE support... @ checking for strip... strip checking for ranlib... ranlib checking command to parse /usr/bin/nm -B output from gcc object... ok checking for sysroot... no checking for mt... mt checking if mt is a manifest tool... no checking how to run the C preprocessor... gcc -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking for dlfcn.h... yes checking for objdir... .libs checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC -DPIC checking if gcc PIC flag -fPIC -DPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking if gcc supports -c -o file.o... (cached) yes checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes checking whether NLS is requested... yes checking for msgfmt... /usr/bin/msgfmt checking for gmsgfmt... /usr/bin/msgfmt checking for xgettext... /usr/bin/xgettext checking for msgmerge... /usr/bin/msgmerge checking for CFPreferencesCopyAppValue... no checking for CFLocaleCopyCurrent... no checking for GNU gettext in libc... yes checking whether to use NLS... yes checking where the gettext function comes from... libc checking for pkg-config... /usr/bin/pkg-config checking pkg-config is at least version 0.9.0... yes checking for gobject-introspection... no checking for gtkdoc-check... /usr/bin/gtkdoc-check checking for gtkdoc-rebase... /usr/bin/gtkdoc-rebase checking for gtkdoc-mkpdf... /usr/bin/gtkdoc-mkpdf checking whether to build gtk-doc documentation... no checking langinfo.h usability... yes checking langinfo.h presence... yes checking for langinfo.h... yes checking for nl_langinfo... yes checking for nl_langinfo and CODESET... yes checking for setlocale... yes checking for X... yes checking for xkbcomp... /usr/bin/xkbcomp checking for X11/extensions/XKBrules.h... yes checking whether at least one libxklavier backend is enabled... yes checking for XML... yes checking for GLIB... yes checking for XINPUT... yes checking whether iso-codes exists... yes configure: creating ./config.status config.status: creating Makefile config.status: creating libxklavier/Makefile config.status: creating libxklavier.spec config.status: creating doc/Makefile config.status: creating doc/reference/Makefile config.status: creating tests/Makefile config.status: creating libxklavier.pc config.status: creating config.h config.status: config.h is unchanged config.status: executing depfiles commands config.status: executing libtool commands config.status: executing po-directories commands ********************************************************** Libxklavier is configured with the following backends: XKB, libxkbfile is present default ruleset: base base: /usr/share/X11/xkb xkbcomp is used from: /usr/bin xinput available: yes xmodmap, default ruleset: base base: /usr/share/xmodmap gtk-doc disabled ********************************************************** make: $ make make all-recursive make[1]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3' Making all in libxklavier make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier' make all-am make[3]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier' make[3]: Nothing to be done for `all-am'. make[3]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier' make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier' Making all in doc make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc' Making all in reference make[3]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc/reference' make[3]: Nothing to be done for `all'. make[3]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc/reference' make[3]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc' make[3]: Nothing to be done for `all-am'. make[3]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc' make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc' Making all in tests make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/tests' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/tests' make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3' make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3' make[1]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3' sudo make install: $ sudo make install Making install in libxklavier make[1]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier' make install-am make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier' make[3]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier' test -z "/usr/lib" || /bin/mkdir -p "/usr/lib" /bin/bash ../libtool --mode=install /usr/bin/install -c libxklavier.la '/usr/lib' libtool: install: /usr/bin/install -c .libs/libxklavier.so.16.3.0 /usr/lib/libxklavier.so.16.3.0 libtool: install: (cd /usr/lib && { ln -s -f libxklavier.so.16.3.0 libxklavier.so.16 || { rm -f libxklavier.so.16 && ln -s libxklavier.so.16.3.0 libxklavier.so.16; }; }) libtool: install: (cd /usr/lib && { ln -s -f libxklavier.so.16.3.0 libxklavier.so || { rm -f libxklavier.so && ln -s libxklavier.so.16.3.0 libxklavier.so; }; }) libtool: install: /usr/bin/install -c .libs/libxklavier.lai /usr/lib/libxklavier.la libtool: install: /usr/bin/install -c .libs/libxklavier.a /usr/lib/libxklavier.a libtool: install: chmod 644 /usr/lib/libxklavier.a libtool: install: ranlib /usr/lib/libxklavier.a libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin:/sbin" ldconfig -n /usr/lib ---------------------------------------------------------------------- Libraries have been installed in: /usr/lib If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the `-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the `LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the `LD_RUN_PATH' environment variable during linking - use the `-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to `/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- test -z "" || /bin/mkdir -p "" test -z "" || /bin/mkdir -p "" test -z "/usr/include/libxklavier" || /bin/mkdir -p "/usr/include/libxklavier" /usr/bin/install -c -m 644 xkl_engine.h xkl_config_item.h xkl_config_registry.h xkl_config_rec.h xkl_engine_marshal.h xklavier.h xkl-enum-types.h '/usr/include/libxklavier' make[3]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier' make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier' make[1]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier' Making install in doc make[1]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc' Making install in reference make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc/reference' make[3]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc/reference' make[3]: Nothing to be done for `install-exec-am'. Nothing to install make[3]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc/reference' make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc/reference' make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc' make[3]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc' make[3]: Nothing to be done for `install-exec-am'. make[3]: Nothing to be done for `install-data-am'. make[3]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc' make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc' make[1]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc' Making install in tests make[1]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/tests' make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/tests' make[2]: Nothing to be done for `install-exec-am'. make[2]: Nothing to be done for `install-data-am'. make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/tests' make[1]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/tests' make[1]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3' make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3' make[2]: Nothing to be done for `install-exec-am'. test -z "/usr/lib/pkgconfig" || /bin/mkdir -p "/usr/lib/pkgconfig" /usr/bin/install -c -m 644 libxklavier.pc '/usr/lib/pkgconfig' make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3' make[1]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3' I still only see US as the kbd. I must have done something wrong. I will revert to older version and untar again the package, restarting from scratch.
Here we go again. :) But before compiling, I tested the display of the kbd indicator of cairo-dock. It was showing 'English (US)' and 'French (Canada)'. So that was good. Of course the switch does not work, but libxklavier shows both. Now the compile. autogen.sh: $ ./autogen.sh --prefix=/usr autoreconf: Entering directory `.' autoreconf: running: autopoint --force Copying file ABOUT-NLS Creating directory build-aux Copying file build-aux/config.rpath Copying file m4/codeset.m4 Copying file m4/gettext.m4 Copying file m4/glibc2.m4 Copying file m4/glibc21.m4 Copying file m4/iconv.m4 Copying file m4/intdiv0.m4 Copying file m4/intl.m4 Copying file m4/intldir.m4 Copying file m4/intlmacosx.m4 Copying file m4/intmax.m4 Copying file m4/inttypes-pri.m4 Copying file m4/inttypes_h.m4 Copying file m4/lcmessage.m4 Copying file m4/lib-ld.m4 Copying file m4/lib-link.m4 Copying file m4/lib-prefix.m4 Copying file m4/lock.m4 Copying file m4/longlong.m4 Copying file m4/nls.m4 Copying file m4/po.m4 Copying file m4/printf-posix.m4 Copying file m4/progtest.m4 Copying file m4/size_max.m4 Copying file m4/stdint_h.m4 Copying file m4/uintmax_t.m4 Copying file m4/visibility.m4 Copying file m4/wchar_t.m4 Copying file m4/wint_t.m4 Copying file m4/xsize.m4 Creating directory po Copying file po/Makefile.in.in Copying file po/Makevars.template Copying file po/Rules-quot Copying file po/boldquot.sed Copying file po/en@boldquot.header Copying file po/en@quot.header Copying file po/insert-header.sin Copying file po/quot.sed Copying file po/remove-potcdate.sin autoreconf: running: aclocal --force -I m4 ${ACLOCAL_FLAGS} autoreconf: configure.ac: tracing autoreconf: running: libtoolize --install --copy --force libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, `build-aux'. libtoolize: copying file `build-aux/config.guess' libtoolize: copying file `build-aux/config.sub' libtoolize: copying file `build-aux/install-sh' libtoolize: copying file `build-aux/ltmain.sh' libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'. libtoolize: copying file `m4/libtool.m4' libtoolize: copying file `m4/ltoptions.m4' libtoolize: copying file `m4/ltsugar.m4' libtoolize: copying file `m4/ltversion.m4' libtoolize: copying file `m4/lt~obsolete.m4' autoreconf: running: /usr/bin/autoconf --force autoreconf: running: /usr/bin/autoheader --force autoreconf: running: automake --add-missing --copy --force-missing configure.ac:13: installing `build-aux/missing' libxklavier/Makefile.am: installing `build-aux/depcomp' Makefile.am: installing `./INSTALL' Makefile.am:3: AM_GNU_GETTEXT used but `po' not in SUBDIRS autoreconf: Leaving directory `.' checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... no checking for mawk... mawk checking whether make sets $(MAKE)... yes checking whether to disable maintainer-specific portions of Makefiles... yes checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking for style of include used by make... GNU checking dependency style of gcc... gcc3 checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking for ld used by GCC... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for shared library run path origin... done checking for iconv... yes checking for working iconv... yes checking for iconv declaration... extern size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); checking how to print strings... printf checking for a sed that does not truncate output... /bin/sed checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for fgrep... /bin/grep -F checking for ld used by gcc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B checking the name lister (/usr/bin/nm -B) interface... BSD nm checking whether ln -s works... yes checking the maximum length of command line arguments... 1572864 checking whether the shell understands some XSI constructs... yes checking whether the shell understands "+="... yes checking how to convert x86_64-unknown-linux-gnu file names to x86_64-unknown-linux-gnu format... func_convert_file_noop checking how to convert x86_64-unknown-linux-gnu file names to toolchain format... func_convert_file_noop checking for /usr/bin/ld option to reload object files... -r checking for objdump... objdump checking how to recognize dependent libraries... pass_all checking for dlltool... no checking how to associate runtime and link libraries... printf %s\n checking for ar... ar checking for archiver @FILE support... @ checking for strip... strip checking for ranlib... ranlib checking command to parse /usr/bin/nm -B output from gcc object... ok checking for sysroot... no checking for mt... mt checking if mt is a manifest tool... no checking how to run the C preprocessor... gcc -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking for dlfcn.h... yes checking for objdir... .libs checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC -DPIC checking if gcc PIC flag -fPIC -DPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking if gcc supports -c -o file.o... (cached) yes checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes checking whether NLS is requested... yes checking for msgfmt... /usr/bin/msgfmt checking for gmsgfmt... /usr/bin/msgfmt checking for xgettext... /usr/bin/xgettext checking for msgmerge... /usr/bin/msgmerge checking for CFPreferencesCopyAppValue... no checking for CFLocaleCopyCurrent... no checking for GNU gettext in libc... yes checking whether to use NLS... yes checking where the gettext function comes from... libc checking for pkg-config... /usr/bin/pkg-config checking pkg-config is at least version 0.9.0... yes checking for gobject-introspection... no checking for gtkdoc-check... /usr/bin/gtkdoc-check checking for gtkdoc-rebase... /usr/bin/gtkdoc-rebase checking for gtkdoc-mkpdf... /usr/bin/gtkdoc-mkpdf checking whether to build gtk-doc documentation... no checking langinfo.h usability... yes checking langinfo.h presence... yes checking for langinfo.h... yes checking for nl_langinfo... yes checking for nl_langinfo and CODESET... yes checking for setlocale... yes checking for X... yes checking for xkbcomp... /usr/bin/xkbcomp checking for X11/extensions/XKBrules.h... yes checking whether at least one libxklavier backend is enabled... yes checking for XML... yes checking for GLIB... yes checking for XINPUT... yes checking whether iso-codes exists... yes configure: creating ./config.status config.status: creating Makefile config.status: creating libxklavier/Makefile config.status: creating libxklavier.spec config.status: creating doc/Makefile config.status: creating doc/reference/Makefile config.status: creating tests/Makefile config.status: creating libxklavier.pc config.status: creating config.h config.status: executing depfiles commands config.status: executing libtool commands config.status: executing po-directories commands ********************************************************** Libxklavier is configured with the following backends: XKB, libxkbfile is present default ruleset: base base: /usr/share/X11/xkb xkbcomp is used from: /usr/bin xinput available: yes xmodmap, default ruleset: base base: /usr/share/xmodmap gtk-doc disabled ********************************************************** make: $ make make all-recursive make[1]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3' Making all in libxklavier make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier' `/usr/bin/pkg-config --variable=glib_genmarshal glib-2.0` --prefix=xkl_engine ./marshal.list --header > xkl_engine_marshal.h (cd . \ && glib-mkenums \ --fhead "#ifndef __XKL_ENUM_TYPES_H__\n#define __XKL_ENUM_TYPES_H__\n" \ --fprod "/* enumerations from \"@filename@\" */\n" \ --vhead "GType @enum_name@_get_type (void);\n#define XKL_TYPE_@ENUMSHORT@ (@enum_name@_get_type())\n" \ --ftail "#endif /* __XKL_ENUM_TYPES_H__ */" \ xkl_engine.h xkl_config_item.h xkl_config_registry.h xkl_config_rec.h xkl_engine_marshal.h xklavier.h) > new-xkl-enum-types.h \ && (cmp -s new-xkl-enum-types.h xkl-enum-types.h || cp new-xkl-enum-types.h xkl-enum-types.h) \ && rm -f new-xkl-enum-types.h \ && echo timestamp > stamp-xkl-enum-types.h (cd . \ && glib-mkenums \ --fhead "#include <libxklavier/xklavier.h>" \ --fprod "\n/* enumerations from \"@filename@\" */" \ --vhead "GType\n@enum_name@_get_type (void)\n{\n static GType etype = 0;\n if (etype == 0) {\n static const G@Type@Value values[] = {" \ --vprod " { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \ --vtail " { 0, NULL, NULL }\n };\n etype = g_@type@_register_static (\"@EnumName@\", values);\n }\n return etype;\n}\n" \ xkl_engine.h xkl_config_item.h xkl_config_registry.h xkl_config_rec.h xkl_engine_marshal.h xklavier.h) > new-xkl-enum-types.c \ && cp new-xkl-enum-types.c xkl-enum-types.c \ && rm -f new-xkl-enum-types.c make all-am make[3]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier' CC xkl-enum-types.lo CC xklavier.lo CC xklavier_evt.lo CC xklavier_config.lo CC xklavier_config_iso.lo CC xklavier_xkb.lo CC xklavier_evt_xkb.lo CC xklavier_config_xkb.lo CC xklavier_toplevel.lo CC xklavier_xmm.lo CC xklavier_xmm_opts.lo CC xklavier_evt_xmm.lo CC xklavier_config_xmm.lo CC xklavier_util.lo CC xklavier_props.lo CC xklavier_dump.lo `/usr/bin/pkg-config --variable=glib_genmarshal glib-2.0` --prefix=xkl_engine ./marshal.list --body > xkl_engine_marshal.c CC xkl_engine_marshal.lo CCLD libxklavier.la make[3]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier' make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier' Making all in doc make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc' Making all in reference make[3]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc/reference' make[3]: Nothing to be done for `all'. make[3]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc/reference' make[3]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc' make[3]: Nothing to be done for `all-am'. make[3]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc' make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc' Making all in tests make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/tests' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/tests' make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3' make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3' make[1]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3' sudo make install: $ sudo make install Making install in libxklavier make[1]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier' make install-am make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier' make[3]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier' test -z "/usr/lib" || /bin/mkdir -p "/usr/lib" /bin/bash ../libtool --mode=install /usr/bin/install -c libxklavier.la '/usr/lib' libtool: install: /usr/bin/install -c .libs/libxklavier.so.16.3.0 /usr/lib/libxklavier.so.16.3.0 libtool: install: (cd /usr/lib && { ln -s -f libxklavier.so.16.3.0 libxklavier.so.16 || { rm -f libxklavier.so.16 && ln -s libxklavier.so.16.3.0 libxklavier.so.16; }; }) libtool: install: (cd /usr/lib && { ln -s -f libxklavier.so.16.3.0 libxklavier.so || { rm -f libxklavier.so && ln -s libxklavier.so.16.3.0 libxklavier.so; }; }) libtool: install: /usr/bin/install -c .libs/libxklavier.lai /usr/lib/libxklavier.la libtool: install: /usr/bin/install -c .libs/libxklavier.a /usr/lib/libxklavier.a libtool: install: chmod 644 /usr/lib/libxklavier.a libtool: install: ranlib /usr/lib/libxklavier.a libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin:/sbin" ldconfig -n /usr/lib ---------------------------------------------------------------------- Libraries have been installed in: /usr/lib If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the `-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the `LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the `LD_RUN_PATH' environment variable during linking - use the `-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to `/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- test -z "" || /bin/mkdir -p "" test -z "" || /bin/mkdir -p "" test -z "/usr/include/libxklavier" || /bin/mkdir -p "/usr/include/libxklavier" /usr/bin/install -c -m 644 xkl_engine.h xkl_config_item.h xkl_config_registry.h xkl_config_rec.h xkl_engine_marshal.h xklavier.h xkl-enum-types.h '/usr/include/libxklavier' make[3]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier' make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier' make[1]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/libxklavier' Making install in doc make[1]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc' Making install in reference make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc/reference' make[3]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc/reference' make[3]: Nothing to be done for `install-exec-am'. Nothing to install make[3]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc/reference' make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc/reference' make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc' make[3]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc' make[3]: Nothing to be done for `install-exec-am'. make[3]: Nothing to be done for `install-data-am'. make[3]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc' make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc' make[1]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/doc' Making install in tests make[1]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/tests' make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/tests' make[2]: Nothing to be done for `install-exec-am'. make[2]: Nothing to be done for `install-data-am'. make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/tests' make[1]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3/tests' make[1]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3' make[2]: Entering directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3' make[2]: Nothing to be done for `install-exec-am'. test -z "/usr/lib/pkgconfig" || /bin/mkdir -p "/usr/lib/pkgconfig" /usr/bin/install -c -m 644 libxklavier.pc '/usr/lib/pkgconfig' make[2]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3' make[1]: Leaving directory `/home/frank/stuff/Downloads/Test/libxklavier/libxklavier-5.3' Ok compile worked! But switching does not work. Here's a debug from cairo-dock: g_object_unref: assertion `G_IS_OBJECT (object)' failed _cairo_dock_search_icon_from_subdock (Mail) _cairo_dock_search_icon_from_subdock (Shortcuts) _cairo_dock_search_icon_from_subdock (Script) _cairo_dock_search_icon_from_subdock (dolphin) _cairo_dock_search_icon_from_subdock (_MainDock_) _cairo_dock_search_icon_from_subdock (Mail) _cairo_dock_search_icon_from_subdock (Shortcuts) _cairo_dock_search_icon_from_subdock (Script) _cairo_dock_search_icon_from_subdock (dolphin) _cairo_dock_search_icon_from_subdock (_MainDock_) _cairo_dock_search_icon_from_subdock (Mail) _cairo_dock_search_icon_from_subdock (Shortcuts) _cairo_dock_search_icon_from_subdock (Script) _cairo_dock_search_icon_from_subdock (dolphin) _cairo_dock_search_icon_from_subdock (_MainDock_) _cairo_dock_search_icon_from_subdock (Mail) _cairo_dock_search_icon_from_subdock (Shortcuts) _cairo_dock_search_icon_from_subdock (Script) _cairo_dock_search_icon_from_subdock (dolphin) _cairo_dock_search_icon_from_subdock (_MainDock_) _cairo_dock_search_icon_from_subdock (Mail) _cairo_dock_search_icon_from_subdock (Shortcuts) _cairo_dock_search_icon_from_subdock (Script) _cairo_dock_search_icon_from_subdock (dolphin) _cairo_dock_search_icon_from_subdock (_MainDock_) _cairo_dock_search_icon_from_subdock (Mail) _cairo_dock_search_icon_from_subdock (Shortcuts) _cairo_dock_search_icon_from_subdock (Script) _cairo_dock_search_icon_from_subdock (dolphin) _cairo_dock_search_icon_from_subdock (_MainDock_) cd_xkbd_set_group: assertion `bSuccess' failed
CD developers think 'gboolean bSuccess = xkl_engine_get_state (pEngine, Xid, &state);' runs false. https://bazaar.launchpad.net/~cairo-dock-team/cairo-dock-plug-ins/plug-ins/view/head:/keyboard-indicator/src/applet-xklavier.c#L38
> /usr/lib/libxklavier.so.16.3.0 Are you sure cairo-doc is using the right version? Can you do "ldd /usr/bin/cairo-dock | grep xkl " ? Well, if your cairo-dock is in different location, change the path? Also, please provide here "ls -l /usr/lib/libxklavier*"
It's in /usr/bin. I get no result at all. $ ldd /usr/bin/cairo-dock | grep xkl $
Well, may be it is one of cairo-dock plugins then. You have to find out which of them is using libxklavier (using ldd)
On my system: ldd /usr/lib64/cairo-dock/libcd-keyboard-indicator.so | grep xkl libxklavier.so.16 => /lib64/libxklavier.so.16 (0x00007f30a7907000)
Then, $ ldd /usr/lib/cairo-dock/libcd-keyboard-indicator.so | grep xkl libxklavier.so.16 => /usr/lib/libxklavier.so.16 (0x00007f97ccf23000)
great. So, what do you get from ls -l /usr/lib/libxklavier*
This: $ ls -l /usr/lib/libxklavier* -rw-r--r-- 1 root root 1105822 2012-12-15 11:12 /usr/lib/libxklavier.a -rwxr-xr-x 1 root root 1145 2012-12-15 11:12 /usr/lib/libxklavier.la lrwxrwxrwx 1 root root 21 2012-12-15 11:12 /usr/lib/libxklavier.so -> libxklavier.so.16.3.0 lrwxrwxrwx 1 root root 21 2012-12-15 11:12 /usr/lib/libxklavier.so.16 -> libxklavier.so.16.3.0 -rw-r--r-- 1 root root 115440 2011-05-17 04:55 /usr/lib/libxklavier.so.16.1.0 -rwxr-xr-x 1 root root 538608 2012-12-15 11:12 /usr/lib/libxklavier.so.16.3.0
Great. That proves that cairo-doc is using right library. Now, you can try "export XKL_DEBUG=150" before executing cairo-doc. You should see massive output
I didn't see any output after the EXPORT command. Then I loaded 'cairo-dock -l debug' from my Yakuake window I tried to switch and here is the different msg: [1355595717,150,xklavier_toplevel.c:xkl_engine_get_toplevel_window_state/] Appwin 240000b, 'Yakuake' does not have state cd_xkbd_set_group: assertion `bSuccess' failed
I recompiled cairo-dock. Launched with 'cairo-dock -cl debug XKL_DEBUG=150' Was in Yakuake, tried to switch languages using the mouse on the cairo-dock indicator: g_object_unref: assertion `G_IS_OBJECT (object)' failed _cairo_dock_search_icon_from_subdock (Mail) _cairo_dock_search_icon_from_subdock (Shortcuts) _cairo_dock_search_icon_from_subdock (Script) _cairo_dock_search_icon_from_subdock (dolphin) _cairo_dock_search_icon_from_subdock (_MainDock_) _cairo_dock_search_icon_from_subdock (Mail) _cairo_dock_search_icon_from_subdock (Shortcuts) _cairo_dock_search_icon_from_subdock (Script) _cairo_dock_search_icon_from_subdock (dolphin) _cairo_dock_search_icon_from_subdock (_MainDock_) _cairo_dock_search_icon_from_subdock (Mail) _cairo_dock_search_icon_from_subdock (Shortcuts) _cairo_dock_search_icon_from_subdock (Script) _cairo_dock_search_icon_from_subdock (dolphin) _cairo_dock_search_icon_from_subdock (_MainDock_) _cairo_dock_search_icon_from_subdock (Mail) _cairo_dock_search_icon_from_subdock (Shortcuts) _cairo_dock_search_icon_from_subdock (Script) _cairo_dock_search_icon_from_subdock (dolphin) _cairo_dock_search_icon_from_subdock (_MainDock_) _cairo_dock_search_icon_from_subdock (Mail) _cairo_dock_search_icon_from_subdock (Shortcuts) _cairo_dock_search_icon_from_subdock (Script) _cairo_dock_search_icon_from_subdock (dolphin) _cairo_dock_search_icon_from_subdock (_MainDock_) _cairo_dock_search_icon_from_subdock (Mail) _cairo_dock_search_icon_from_subdock (Shortcuts) _cairo_dock_search_icon_from_subdock (Script) _cairo_dock_search_icon_from_subdock (dolphin) _cairo_dock_search_icon_from_subdock (_MainDock_) [1355596251,150,xklavier_toplevel.c:xkl_engine_get_toplevel_window_state/] Appwin 240000b, 'Yakuake' does not have state cd_xkbd_set_group: assertion `bSuccess' failed Right-click gives the _cairo_dock_search_icon* msgs. Left-click gives the [1355* and below lines.
XKL_DEBUG is environment variable that has to be set before cairo-dock is executed. That way libxklaiver is producing a lot of xkl_debug messages. Actually, you can add more of them to xkl_engine_get_toplevel_window_state function if you like, rebuild and reinstall libxklavier. Or you can add just printf, for simplicity... Perhaps at that stage you have all instruments on your hands, try to add debug and find out why xkl_engine_get_toplevel_window_state returns FALSE... Unfortunately I do not see that issue locally. BTW, what is your distro name?
Kubuntu 11.10, will upgrade to 12.10 by month-end. I will see with cairo-dock devs what they can do.
XKL_DEBUG does not seem very efficient. I did that before and I did it again and the result is the same: g_object_unref: assertion `G_IS_OBJECT (object)' failed _cairo_dock_search_icon_from_subdock (Mail) _cairo_dock_search_icon_from_subdock (Shortcuts) _cairo_dock_search_icon_from_subdock (Script) _cairo_dock_search_icon_from_subdock (dolphin) _cairo_dock_search_icon_from_subdock (_MainDock_) _cairo_dock_search_icon_from_subdock (Mail) _cairo_dock_search_icon_from_subdock (Shortcuts) _cairo_dock_search_icon_from_subdock (Script) _cairo_dock_search_icon_from_subdock (dolphin) _cairo_dock_search_icon_from_subdock (_MainDock_) _cairo_dock_search_icon_from_subdock (Mail) _cairo_dock_search_icon_from_subdock (Shortcuts) _cairo_dock_search_icon_from_subdock (Script) _cairo_dock_search_icon_from_subdock (dolphin) _cairo_dock_search_icon_from_subdock (_MainDock_) _cairo_dock_search_icon_from_subdock (Mail) _cairo_dock_search_icon_from_subdock (Shortcuts) _cairo_dock_search_icon_from_subdock (Script) _cairo_dock_search_icon_from_subdock (dolphin) _cairo_dock_search_icon_from_subdock (_MainDock_) _cairo_dock_search_icon_from_subdock (Mail) _cairo_dock_search_icon_from_subdock (Shortcuts) _cairo_dock_search_icon_from_subdock (Script) _cairo_dock_search_icon_from_subdock (dolphin) _cairo_dock_search_icon_from_subdock (_MainDock_) _cairo_dock_search_icon_from_subdock (Mail) _cairo_dock_search_icon_from_subdock (Shortcuts) _cairo_dock_search_icon_from_subdock (Script) _cairo_dock_search_icon_from_subdock (dolphin) _cairo_dock_search_icon_from_subdock (_MainDock_) [1355599042,150,xklavier_toplevel.c:xkl_engine_get_toplevel_window_state/] Appwin 240000b, 'Yakuake' does not have state cd_xkbd_set_group: assertion `bSuccess' failed If I try printf, I add it on top of every line with xkl_engine_get_toplevel_window_state in the .c file?
Since I am still looking on how to use prtinf, I would like to check test_monitor.c. I guess it uses CMAKE? There is no CMakeLists.txt file in the folder so cmake . -DCMAKE_INSTALL_PREFIX=/usr does not work.
The problem is it's not that xkl_engine_get_toplevel_window_state does not return a result, it does return a result but that result is invalid. What would printf do more? It may tell why the result is invalid?
Of course it does not use cmake, God forbid! It uses autotools + make printf inside get_state function would allow to print the results of XGetWindowProerty, that would explain the false return value
Ok, but isn't the below debug helpful in some way? [1355605203,150,xklavier.c:xkl_engine_one_switch_to_secondary_group_performed/] Resetting allow_one_switch_to_secondary_group flag [1355605203,150,xklavier.c:xkl_engine_constructor/] Trying all backends: [1355605203,150,xklavier.c:xkl_engine_constructor/] Trying XKB backend [1355605203,160,xklavier_xkb.c:xkl_xkb_init/] xkbEvenType: 77, xkbError: A8, display: 0x1d5bdc0, root: 15a [1355605203,100,xklavier_config_xkb.c:xkl_xkb_multiple_layouts_supported/] !!! Checking multiple layouts support (...) What the cairo-dock dev says it that xkl_engine_get_state returns a boolean (which seems to be false for us, which means that there is a problem) and modifies the state variable (which is used to know if capslock, numlock, etc. is enabled or not). Hopefully printf can help, but so far I have failed to understand how to implement it in the .c, so it will take some time...
Well, xkl_debug works ok, no need in sprintf. Yes, all those debug statements provide plenty of information. And I asked to add one more xkl_debug into get_state function. It should explain the results of XGetProperty call. So could you pls redirect that output to some file and attach it here?
My guess is I have to add another xkl_debug somewhere here: if (ret) xkl_debug(150, "Appwin " WINID_FORMAT ", '%s' has the group %d, indicators %X\n", toplevel_win, xkl_get_debug_window_title(engine, toplevel_win), grp, inds); else xkl_debug(150, "Appwin " WINID_FORMAT ", '%s' does not have state\n", toplevel_win, xkl_get_debug_window_title(engine, toplevel_win)); Vasya, do you know where and how to add that other xkl_debug?
Or maybe here in: if (!ignore_existing_state) { gboolean have_state = xkl_engine_get_toplevel_window_state(engine, toplevel_win, &state); Or here: if (transient_for) { XklState trans_state; gboolean have_state = xkl_engine_get_toplevel_window_state(engine, transient_for, &trans_state); if (have_state) { default_group_to_use = trans_state.group; Vasya, any idea?
Vasya already did proper patch for debugging, see comment #44
Ok I get it, sorry. So I will have to use XKL_DEBUG=0. I am patching and will recompile.
You can use bigger XKL_DEBUG values, they will include all messages with lower parameters (when you specify 150, all messages 0-150 are displayed)
Well I must have done something wrong, I think I didn't do the patch right: g_object_unref: assertion `G_IS_OBJECT (object)' failed _cairo_dock_search_icon_from_subdock (Mail) _cairo_dock_search_icon_from_subdock (Shortcuts) _cairo_dock_search_icon_from_subdock (Script) _cairo_dock_search_icon_from_subdock (_MainDock_) _cairo_dock_search_icon_from_subdock (Mail) _cairo_dock_search_icon_from_subdock (Shortcuts) _cairo_dock_search_icon_from_subdock (Script) _cairo_dock_search_icon_from_subdock (_MainDock_) _cairo_dock_search_icon_from_subdock (Mail) _cairo_dock_search_icon_from_subdock (Shortcuts) _cairo_dock_search_icon_from_subdock (Script) _cairo_dock_search_icon_from_subdock (_MainDock_) _cairo_dock_search_icon_from_subdock (Mail) _cairo_dock_search_icon_from_subdock (Shortcuts) _cairo_dock_search_icon_from_subdock (Script) _cairo_dock_search_icon_from_subdock (_MainDock_) _cairo_dock_search_icon_from_subdock (Mail) _cairo_dock_search_icon_from_subdock (Shortcuts) _cairo_dock_search_icon_from_subdock (Script) _cairo_dock_search_icon_from_subdock (_MainDock_) [1355676291,150,xklavier_toplevel.c:xkl_engine_get_toplevel_window_state/] Appwin 2600016, 'Yakuake' does not have state cd_xkbd_set_group: assertion `bSuccess' failed I will retry.
I can't get more info with Vasya's patch, I don't understand what I may be doing wrong.
I suspect you do not actually set XKL_DEBUG environment variable before running your app
Maybe. I did do export XKL_DEBUG=150. I did launch with cairo-dock -l debug after. I also tried launching with cairo-dock -l XKL_DEBUG=150. I will retry this week, I have more time during the w-e on Saturdays, though.
Same result. :( export XKL_DEBUG=150 env XKL_DEBUG=150 cairo-dock debug [1355785536,150,xklavier_toplevel.c:xkl_engine_get_toplevel_window_state/] Appwin 3a0001a, '' does not have state cd_xkbd_set_group: assertion `bSuccess' failed When launching cairo-dock I have seen some debug when it gets the kbd information. Not sure if that can help: [1355785482,150,xklavier.c:xkl_engine_one_switch_to_secondary_group_performed/] Resetting allow_one_switch_to_secondary_group flag [1355785482,150,xklavier.c:xkl_engine_constructor/] Trying all backends: [1355785482,150,xklavier.c:xkl_engine_constructor/] Trying XKB backend [1355785482,100,xklavier_config_xkb.c:xkl_xkb_multiple_layouts_supported/] !!! Checking multiple layouts support [1355785482,100,xklavier_config.c:xkl_engine_get_ruleset_name/] Rules set: [evdev] [1355785482,100,xklavier_config_xkb.c:xkl_xkb_multiple_layouts_supported/] !!! Multiple layouts ARE supported [1355785482,150,xklavier.c:xkl_engine_constructor/] Actual backend: XKB [1355785482,150,xklavier_toplevel.c:xkl_engine_get_toplevel_window_state/] Appwin 3a0001a, '' does not have state warning : (/build/buildd/cairo-dock-plug-ins-3.1.0/keyboard-indicator/src/applet-xklavier.c:cd_xkbd_keyboard_state_changed:106) xkl_engine_get_state() failed, we use the first keyboard layout as a workaround (60817434, 0) [1355785482,100,xklavier_xkb.c:xkl_xkb_lock_group/] Posted request for change the group to 0 ##
Could you move (see line around 309) xkl_debug(0, "type: %d, format: %d\n", (int)type_ret, format_ret); 15 lines lower, just before the line if (ret)
With pleasure. Here is the new *.c: if (state_out != NULL) { state_out->group = grp; state_out->indicators = inds; } if (prop != NULL) XFree(prop); ret = TRUE; } xkl_debug(0, "type: %d, format: %d\n", (int)type_ret, format_ret); if (ret) xkl_debug(150, "Appwin " WINID_FORMAT ", '%s' has the group %d, indicators %X\n", toplevel_win, xkl_get_debug_window_title(engine, toplevel_win), grp, inds); else xkl_debug(150, "Appwin " WINID_FORMAT ", '%s' does not have state\n", toplevel_win, xkl_get_debug_window_title(engine, toplevel_win)); return ret; } And again same result. Let'see... $ ldd /usr/lib/x86_64-linux-gnu/cairo-dock/libcd-keyboard-indicator.so | grep xkl libxklavier.so.16 => /usr/lib/libxklavier.so.16 (0x00007fb2ce9e1000) $ ls -l /usr/lib/libxkla* -rw-r--r-- 1 root root 1241902 Dec 17 18:18 /usr/lib/libxklavier.a -rwxr-xr-x 1 root root 1013 Dec 17 18:18 /usr/lib/libxklavier.la lrwxrwxrwx 1 root root 21 Dec 17 18:18 /usr/lib/libxklavier.so -> libxklavier.so.16.3.0 lrwxrwxrwx 1 root root 21 Dec 17 18:18 /usr/lib/libxklavier.so.16 -> libxklavier.so.16.3.0 -rw-r--r-- 1 root root 107264 Oct 5 06:39 /usr/lib/libxklavier.so.16.2.0 -rwxr-xr-x 1 root root 610138 Dec 17 18:18 /usr/lib/libxklavier.so.16.3.0 That looks good. BTW I switched to Kubuntu 12.10 under VBox. I still got my other installation, but it is quicker to test (no switch of HD). I don't believe the environment change is causing any issue, here. Cairo-dock I am using is now the deb package from Canonical, version 3.1, not the bzr version.
I want to see that: type: %d, format: %d In the output, with XKL_DEBUG=150
Ok, I will try the debug code on different lines until I get the TYPE and FORMAT.
Hi again, I installed 5.0.3 version (which produces the library - so.16.3.0) and patched the xklavier_toplevel.c with CARD32 *p = NULL replacement to long, and also added the debug printing "just before if(RET)". After running with XKL_DEBUG=150 - I got the following result: [1355911388,000,xklavier_toplevel.c:xkl_engine_get_toplevel_window_state/] type: 0, format: 0 [1355911388,150,xklavier_toplevel.c:xkl_engine_get_toplevel_window_state/] Appwin 3200101, 'Cairo-Dock configuration' does not have state cd_xkbd_set_prev_next_group: assertion `bSuccess' failed BTW - probably kind of remote debugging could be more efficient? I have no problem to provide you Sergey the access to my desktop (and burn out my identity :) ) Thanks.
> [1355911388,000,xklavier_toplevel.c:xkl_engine_get_toplevel_window_state/] > type: 0, format: 0 There is REALLY no status on that window, it seems. Can you check by executing "xprop | grep XKL" and pointing the mouse cursor to that window? One more question. When the app initialises the engine and starts listening, what parameters are passed? > BTW - probably kind of remote debugging could be more efficient? I have no > problem to provide you Sergey the access to my desktop (and burn out my > identity :) ) Well, I would prefer not to intrude:)
xprop | grep XKL - Returns nothing on cairo-configuration window, on XFCE terminal window, on AbiWord, on LeafPad etc. >> When the app initialises the engine and starts listening, what parameters are >> passed? Please instruct how to check this. Thanks.
Somewhere in cairo-dock source code (or keyboard plugin?) there must be a call to xkl_engine_start_listen. I am asking about the 2nd parameter of that call.
Hi Sergey, I downloaded sources with the following command: apt-get source cairo-dock cairo-dock-plug-ins and tried to find references to "xkl_engine_start_listen". Unfortunately, the plugin itself and also cairo-dock don't contain such call. I noticied, however that there engine is initialized with the method xkl_engine_get_instance : :~/cairo-dock-plug-ins-3.1.2$ grep -n -R "xkl_engine_get_instance" . ./keyboard-indicator/src/applet-xklavier.c:33: XklEngine *pEngine = xkl_engine_get_instance (dsp); // const ./keyboard-indicator/src/applet-xklavier.c:66: XklEngine *pEngine = xkl_engine_get_instance (dsp); // const ./keyboard-indicator/src/applet-xklavier.c:101: XklEngine *pEngine = xkl_engine_get_instance (dsp); // const ./keyboard-indicator/src/applet-notifications.c:66: XklEngine *pEngine = xkl_engine_get_instance (cairo_dock_get_Xdisplay ()); // singleton. You can browse the code here: https://bazaar.launchpad.net/~cairo-dock-team/cairo-dock-plug-ins/plug-ins/view/head:/keyboard-indicator/src/applet-xklavier.c thx
On my end I have asked the cairo-dock dev about this function. Once I get an answer I'll post back.
M.b. the problem is in absents of the call to the function "start_listen"?
Quite possible - there must be call to xkl_engine_start_listen. Also, the function xkl_engine_filter_events should be added to X11 events processing loop. I am sure cairo-doc developers will understand.
FIXED!!!!!!!!! :) The cairo-dock developers changed something and in their latest bzr it works!!! I guess you were right, some misused of the API. Is it clear how to use it I dunno and it doesn't matter they fixed it! :) Tnx so much Sergey for your immense patience and tnx Vasya for joining and helping! :)
Good to know! Happy new year:)
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.