Skip to content

Commit

Permalink
tools: Add ibus im-module command
Browse files Browse the repository at this point in the history
ibus im-module command can retrive gtk-im-module value from an
instance of GtkIMMultiContext.
The GTK version can be specified by --type option and the default
is --type=gtk3 and GTK3 im-ibus.so is dlopened.
  • Loading branch information
fujiwarat committed Jul 19, 2022
1 parent ab0d176 commit 965567d
Show file tree
Hide file tree
Showing 9 changed files with 308 additions and 40 deletions.
20 changes: 20 additions & 0 deletions client/gtk2/ibusim.c
Expand Up @@ -77,3 +77,23 @@ im_module_list (const GtkIMContextInfo ***contexts,
*n_contexts = G_N_ELEMENTS (info_list);
}

G_MODULE_EXPORT const char *
im_get_context_id (int *argc,
char ***argv)
{
GtkIMContext *context;
char *preedit_string = NULL;
PangoAttrList *preedit_attrs = NULL;
const char *context_id;

gtk_init (argc, argv);
context = gtk_im_multicontext_new ();
gtk_im_context_get_preedit_string (context,
&preedit_string,
&preedit_attrs,
0);
context_id = gtk_im_multicontext_get_context_id (
GTK_IM_MULTICONTEXT (context));
return context_id;
}

20 changes: 20 additions & 0 deletions client/gtk4/ibusim.c
Expand Up @@ -50,3 +50,23 @@ g_io_im_ibus_unload (GTypeModule *type_module)
g_type_module_unuse (type_module);
}

G_MODULE_EXPORT const char *
im_get_context_id (int *argc,
char ***argv)
{
GtkIMContext *context;
char *preedit_string = NULL;
PangoAttrList *preedit_attrs = NULL;
const char *context_id;

gtk_init ();
context = gtk_im_multicontext_new ();
gtk_im_context_get_preedit_string (context,
&preedit_string,
&preedit_attrs,
0);
context_id = gtk_im_multicontext_get_context_id (
GTK_IM_MULTICONTEXT (context));
return context_id;
}

47 changes: 28 additions & 19 deletions po/ibus10.pot
Expand Up @@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: ibus 1.5.26\n"
"Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n"
"POT-Creation-Date: 2022-07-06 22:08+0900\n"
"PO-Revision-Date: 2022-07-06 22:08+0900\n"
"POT-Creation-Date: 2022-07-07 00:32+0900\n"
"PO-Revision-Date: 2022-07-07 00:32+0900\n"
"Last-Translator: Takao Fujiwara <takao.fujiwara1@gmail.com>\n"
"Language-Team: Source\n"
"Language: \n"
Expand Down Expand Up @@ -3099,6 +3099,11 @@ msgstr ""
msgid "Supplementary Private Use Area-B"
msgstr ""

#: tools/ibusimmodule.c:10
msgid ""
"Type im-module TYPE = \"gtk2\", \"gtk3\", \"gtk4\". Default is \"gtk3\"."
msgstr ""

#: tools/main.vala:182
msgid "List engine name only"
msgstr ""
Expand Down Expand Up @@ -3170,74 +3175,78 @@ msgstr ""
msgid "Done"
msgstr ""

#: tools/main.vala:691
#: tools/main.vala:700
msgid "Set or get engine"
msgstr ""

#: tools/main.vala:692
#: tools/main.vala:701
msgid "Exit ibus-daemon"
msgstr ""

#: tools/main.vala:693
#: tools/main.vala:702
msgid "Show available engines"
msgstr ""

#: tools/main.vala:694
#: tools/main.vala:703
msgid "(Not implemented)"
msgstr ""

#: tools/main.vala:695
#: tools/main.vala:704
msgid "Restart ibus-daemon"
msgstr ""

#: tools/main.vala:696
#: tools/main.vala:705
msgid "Start ibus-daemon"
msgstr ""

#: tools/main.vala:697
#: tools/main.vala:706
msgid "Show version"
msgstr ""

#: tools/main.vala:698
#: tools/main.vala:707
msgid "Show the content of registry cache"
msgstr ""

#: tools/main.vala:699
#: tools/main.vala:708
msgid "Create registry cache"
msgstr ""

#: tools/main.vala:700
#: tools/main.vala:709
msgid "Print the D-Bus address of ibus-daemon"
msgstr ""

#: tools/main.vala:701
#: tools/main.vala:710
msgid "Show the configuration values"
msgstr ""

#: tools/main.vala:702
#: tools/main.vala:711
msgid "Reset the configuration values"
msgstr ""

#: tools/main.vala:704
#: tools/main.vala:713
msgid "Save emoji on dialog to clipboard"
msgstr ""

#: tools/main.vala:706
#: tools/main.vala:715
msgid "Retrieve im-module value from GTK instance"
msgstr ""

#: tools/main.vala:717
msgid "Show this information"
msgstr ""

#: tools/main.vala:713
#: tools/main.vala:724
#, c-format
msgid ""
"Usage: %s COMMAND [OPTION...]\n"
"\n"
msgstr ""

#: tools/main.vala:714
#: tools/main.vala:725
msgid "Commands:\n"
msgstr ""

#: tools/main.vala:744
#: tools/main.vala:755
#, c-format
msgid "%s is unknown command!\n"
msgstr ""
Expand Down
1 change: 1 addition & 0 deletions tools/IBusIMModule-1.0.metadata
@@ -0,0 +1 @@
IBusIMModule cheader_filename="ibusimmodule.h" name="IBusIMModule"
116 changes: 95 additions & 21 deletions tools/Makefile.am
Expand Up @@ -24,9 +24,19 @@
NULL =

libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la
libibusimmodule = libibusimmodule.la
ibusimmodule_gir = IBusIMModule-1.0.gir
ibus_immodule_vapi = ibus-immodule-1.0.vapi
libibus_emoji_dialog = \
$(top_builddir)/ui/gtk3/libibus-emoji-dialog-@IBUS_API_VERSION@.la

noinst_LTLIBRARIES = $(libibusimmodule)
noinst_DATA =
INTROSPECTION_GIRS =
MAINTAINERCLEANFILES =
DISTCLEANFILES =
VAPIGEN_VAPIS =

# force include config.h before gi18n.h.
AM_CPPFLAGS = \
-I$(top_srcdir)/src \
Expand All @@ -47,22 +57,26 @@ AM_CFLAGS = \
$(NULL)

AM_LDADD = \
@GOBJECT2_LIBS@ \
@GLIB2_LIBS@ \
@GIO2_LIBS@ \
@GTHREAD2_LIBS@ \
$(libibus) \
$(NULL)
@GOBJECT2_LIBS@ \
@GLIB2_LIBS@ \
@GIO2_LIBS@ \
@GTHREAD2_LIBS@ \
$(libibus) \
$(libibusimmodule) \
$(NULL)

AM_VALAFLAGS = \
--vapidir=$(top_builddir)/bindings/vala \
--vapidir=$(top_srcdir)/bindings/vala \
--pkg=gio-2.0 \
--pkg=ibus-1.0 \
--pkg=posix \
--pkg=config \
--target-glib="$(VALA_TARGET_GLIB_VERSION)" \
$(NULL)
--vapidir=$(top_builddir)/bindings/vala \
--vapidir=$(top_srcdir)/bindings/vala \
--vapidir=$(builddir) \
--vapidir=$(srcdir) \
--pkg=gio-2.0 \
--pkg=ibus-1.0 \
--pkg=ibus-immodule-1.0 \
--pkg=posix \
--pkg=config \
--target-glib="$(VALA_TARGET_GLIB_VERSION)" \
$(NULL)

bin_PROGRAMS = ibus

Expand All @@ -79,9 +93,27 @@ bash_completion_DATA= \
$(NULL)
bash_completiondir=@datadir@/bash-completion/completions

libibusimmodule_la_SOURCES = \
ibusimmodule.c \
ibusimmodule.h \
$(NULL)
libibusimmodule_la_CFLAGS = \
@GLIB2_CFLAGS@ \
-DGTK2_IM_MODULEDIR=\"$(GTK2_IM_MODULEDIR)\" \
-DGTK3_IM_MODULEDIR=\"$(GTK3_IM_MODULEDIR)\" \
-DGTK4_IM_MODULEDIR=\"$(GTK4_IM_MODULEDIR)\" \
$(NULL)
libibusimmodule_la_LIBADD = \
@GLIB2_LIBS@ \
$(NULL)
libibusimmodule_la_LDFLAGS = \
-no-undefined \
-export-symbols-regex "ibus_.*" \
$(NULL)

man_one_in_files = ibus.1.in
man_one_files = $(man_one_in_files:.1.in=.1)
man_one_DATA =$(man_one_files:.1=.1.gz)
man_one_DATA =$(man_one_files:.1=.1.gz)
man_onedir = $(mandir)/man1
%.1: %.1.in
$(AM_V_GEN) sed \
Expand All @@ -91,14 +123,17 @@ man_onedir = $(mandir)/man1
$(AM_V_GEN) gzip -c $< > $@.tmp && mv $@.tmp $@

EXTRA_DIST = \
$(man_one_in_files) \
ibus.bash \
$(NULL)
$(ibus_immodule_vapi) \
$(ibusimmodule_gir) \
$(man_one_in_files) \
ibus.bash \
IBusIMModule-1.0.metadata \
$(NULL)

CLEANFILES = \
$(man_one_DATA) \
$(man_one_files) \
$(NULL)
$(man_one_DATA) \
$(man_one_files) \
$(NULL)

if ENABLE_EMOJI_DICT
if ENABLE_UI
Expand All @@ -108,4 +143,43 @@ AM_VALAFLAGS += \
endif
endif

if HAVE_INTROSPECTION
BUILT_SOURCES = $(INTROSPECTION_GIRS) $(VAPIGEN_VAPIS)

-include $(INTROSPECTION_MAKEFILE)
INTROSPECTION_SCANNER_ARGS =
INTROSPECTION_COMPILER_ARGS = \
--includedir=$(srcdir) \
--includedir=. \
$(NULL)

IBusIMModule-1.0.gir: $(libibusimmodule) Makefile
IBusIMModule_1_0_gir_SCANNERFLAGS = \
--pkg=glib-2.0 \
$(IBUS_GIR_SCANNERFLAGS) \
$(NULL)
IBusIMModule_1_0_gir_INCLUDES = GLib-2.0
IBusIMModule_1_0_gir_LIBS = $(libibusimmodule)
IBusIMModule_1_0_gir_FILES = ibusimmodule.h
IBusIMModule_1_0_gir_CFLAGS = \
-I$(srcdir) \
-I$(builddir) \
$(NULL)

INTROSPECTION_GIRS += $(ibusimmodule_gir)
noinst_DATA += $(ibusimmodule_gir)
MAINTAINERCLEANFILES += $(ibusimmodule_gir)
DISTCLEANFILES += $(ibusimmodule_gir)

-include $(VAPIGEN_MAKEFILE)
ibus-immodule-1.0.vapi: $(ibusimmodule_gir) IBusIMModule-1.0.metadata
ibus_immodule_1_0_vapi_DEPS = glib-2.0
ibus_immodule_1_0_vapi_METADATADIRS = $(srcdir)
ibus_immodule_1_0_vapi_FILES = IBusIMModule-1.0.gir
VAPIGEN_VAPIS += $(ibus_immodule_vapi)
noinst_DATA += $(ibus_immodule_vapi)
MAINTAINERCLEANFILES += $(ibus_immodule_vapi)
DISTCLEANFILES += $(ibus_immodule_vapi)
endif

-include $(top_srcdir)/git.mk
10 changes: 10 additions & 0 deletions tools/ibus.1.in
Expand Up @@ -128,6 +128,16 @@ option enables to match annotations with a partial string. These settings
are available with
.B ibus\-setup (1)
utility.
.TP
\fBim-module\fR [\fB\-\-type=TYPE|\-\-help\fR]
Show an internal im-module value in a virtual GTK application. If IBus is
installed and configured properly, the output is "ibus". This sub-command
is useful for some users who build IBus from the source codes and check
the configurations. Currently the sub-command supports GTK applications only
and the default is GTK3. If you wish to check a GTK4 application, you can
specify
.B \-\-type=gtk4
option and you can choose one of "gtk2", "gtk3" and "gtk4".

.SH BUGS
If you find a bug, please report it at https://github.com/ibus/ibus/issues
Expand Down

0 comments on commit 965567d

Please sign in to comment.