## ibusshare ibusshare — Shared utility functions and definition. |

## Stability Level

Stable, unless otherwise indicated

## Synopsis

    #define             IBUS_DEPRECATED
    #define             IBUS_SERVICE_IBUS
    #define             IBUS_SERVICE_PANEL
    #define             IBUS_SERVICE_CONFIG
    #define             IBUS_SERVICE_NOTIFICATIONS
    #define             IBUS_PATH_IBUS
    #define             IBUS_PATH_FACTORY
    #define             IBUS_PATH_PANEL
    #define             IBUS_PATH_CONFIG
    #define             IBUS_PATH_NOTIFICATIONS
    #define             IBUS_PATH_INPUT_CONTEXT
    #define             IBUS_INTERFACE_IBUS
    #define             IBUS_INTERFACE_INPUT_CONTEXT
    #define             IBUS_INTERFACE_FACTORY
    #define             IBUS_INTERFACE_ENGINE
    #define             IBUS_INTERFACE_PANEL
    #define             IBUS_INTERFACE_CONFIG
    #define             IBUS_INTERFACE_NOTIFICATIONS
    const gchar *       ibus_get_local_machine_id           (void);
    void                ibus_set_display                    (const gchar *display);
    const gchar *       ibus_get_address                    (void);
    void                ibus_write_address                  (const gchar *address);
    const gchar *       ibus_get_user_name                  (void);
    glong               ibus_get_daemon_uid                 (void);
    const gchar *       ibus_get_socket_path                (void);
    gint                ibus_get_timeout                    (void);
    void                ibus_free_strv                      (gchar **strv);
    const gchar *       ibus_key_event_to_string            (guint keyval,
                                                             guint modifiers);
    gboolean            ibus_key_event_from_string          (const gchar *string,
                                                             guint *keyval,
                                                             guint *modifiers);
    void                ibus_init                           (void);
    void                ibus_main                           (void);
    void                ibus_quit                           (void);
    void                ibus_set_log_handler                (gboolean verbose);
    void                ibus_unset_log_handler              (void);

## Description

This file defines some utility functions and definition which are shared among ibus component and services.

## Details

### IBUS_DEPRECATED

    #define IBUS_DEPRECATED

### IBUS_SERVICE_IBUS

    #define IBUS_SERVICE_IBUS       "org.freedesktop.IBus"

Address of IBus service.

### IBUS_SERVICE_PANEL

    #define IBUS_SERVICE_PANEL      "org.freedesktop.IBus.Panel"

Address of IBus panel service.

### IBUS_SERVICE_CONFIG

    #define IBUS_SERVICE_CONFIG     "org.freedesktop.IBus.Config"

Address of IBus config service.

### IBUS_SERVICE_NOTIFICATIONS

    #define IBUS_SERVICE_NOTIFICATIONS    "org.freedesktop.IBus.Notifications"

Address of IBus notification service.

### IBUS_PATH_IBUS

    #define IBUS_PATH_IBUS          "/org/freedesktop/IBus"

D-Bus path for IBus

### IBUS_PATH_FACTORY

    #define IBUS_PATH_FACTORY       "/org/freedesktop/IBus/Factory"

D-Bus path for IBus factory.

### IBUS_PATH_PANEL

    #define IBUS_PATH_PANEL         "/org/freedesktop/IBus/Panel"

D-Bus path for IBus panel.

### IBUS_PATH_CONFIG

    #define IBUS_PATH_CONFIG        "/org/freedesktop/IBus/Config"

D-Bus path for IBus config.

### IBUS_PATH_NOTIFICATIONS

    #define IBUS_PATH_NOTIFICATIONS "/org/freedesktop/IBus/Notifications"

D-Bus path for IBus notifications.

### IBUS_PATH_INPUT_CONTEXT

    #define IBUS_PATH_INPUT_CONTEXT "/org/freedesktop/IBus/InputContext_%d"

Template of D-Bus path for IBus input context.

### IBUS_INTERFACE_IBUS

    #define IBUS_INTERFACE_IBUS     "org.freedesktop.IBus"

D-Bus interface for IBus.

### IBUS_INTERFACE_INPUT_CONTEXT

    #define             IBUS_INTERFACE_INPUT_CONTEXT

D-Bus interface for IBus input context.

### IBUS_INTERFACE_FACTORY

    #define IBUS_INTERFACE_FACTORY  "org.freedesktop.IBus.Factory"

D-Bus interface for IBus factory.

### IBUS_INTERFACE_ENGINE

    #define IBUS_INTERFACE_ENGINE   "org.freedesktop.IBus.Engine"

D-Bus interface for IBus engine.

### IBUS_INTERFACE_PANEL

    #define IBUS_INTERFACE_PANEL    "org.freedesktop.IBus.Panel"

D-Bus interface for IBus panel.

### IBUS_INTERFACE_CONFIG

    #define IBUS_INTERFACE_CONFIG   "org.freedesktop.IBus.Config"

D-Bus interface for IBus config.

### IBUS_INTERFACE_NOTIFICATIONS

    #define IBUS_INTERFACE_NOTIFICATIONS    "org.freedesktop.IBus.Notifications"

D-Bus interface for IBus notifications.

### ibus_get_local_machine_id ()

    const gchar *       ibus_get_local_machine_id           (void);

Obtains the machine UUID of the machine this process is running on.

Returns : | A newly allocated string that shows the UUID of the machine.

### ibus_set_display ()

    void                ibus_set_display                    (const gchar *display);

Set the display address.

`display` : | Display address, as in DISPLAY environment for X.

### ibus_get_address ()

    const gchar *       ibus_get_address                    (void);

Return the D-Bus address of IBus. It will find the address from following source:

1. Environment variable IBUS_ADDRESS

2. Socket file under ~/.config/ibus/bus/

See also: `ibus_write_address()`.

Returns : | D-Bus address of IBus. `NULL` for not found.

### ibus_write_address ()

    void                ibus_write_address                  (const gchar *address);

Write D-Bus address to socket file.

See also: `ibus_get_address()`.

`address` : | D-Bus address of IBus.

### ibus_get_user_name ()

    const gchar *       ibus_get_user_name                  (void);

Get the current user name. It is determined by:

1. `getlogin()`

2. Environment variable SUDO_USER

3. Environment variable USERHELPER_UID

4. Environment variable USERNAME

5. Environment variable LOGNAME

6. Environment variable USER

7. Environment variable LNAME

Returns : | A newly allocated string that stores current user name.

### ibus_get_daemon_uid ()

    glong               ibus_get_daemon_uid                 (void);

### Warning

`ibus_get_daemon_uid` is deprecated and should not be used in newly-written code. This function has been deprecated and should not be used in newly written code.

Get UID of ibus-daemon.

Returns : | UID of ibus-daemon; or 0 if UID is not available.

### ibus_get_socket_path ()

    const gchar *       ibus_get_socket_path                (void);

Get the path of socket file.

Returns : | A newly allocated string that stores the path of socket file.

### ibus_get_timeout ()

    gint                ibus_get_timeout                    (void);

Get the GDBus timeout in milliseconds. The timeout is for clients (e.g. im-ibus.so), not for ibus-daemon. Note that the timeout for ibus-daemon could be set by --timeout command line option of the daemon.

Returns : | A GDBus timeout in milliseconds. -1 when default timeout for GDBus should be used.

### ibus_free_strv ()

    void                ibus_free_strv                      (gchar **strv);

### Warning

`ibus_free_strv` is deprecated and should not be used in newly-written code. This function has been deprecated and should not be used in newly written code.

Free a list of strings.

`strv` : | List of strings.

### ibus_key_event_to_string ()

    const gchar *       ibus_key_event_to_string            (guint keyval,
                                                             guint modifiers);

Return the name of a key symbol and modifiers.

For example, if press ctrl, shift, and enter, then this function returns: Shift+Control+enter.

`keyval` : | Key symbol.
`modifiers` : | Modifiers such as Ctrl or Shift.
Returns : | The name of a key symbol and modifier.

### ibus_key_event_from_string ()

    gboolean            ibus_key_event_from_string          (const gchar *string,
                                                             guint *keyval,
                                                             guint *modifiers);

Parse key event string and return key symbol and modifiers.

`string` : | Key event string.
`keyval` : | Variable that hold key symbol result.
`modifiers` : | Variable that hold modifiers result.
Returns : | TRUE for succeed; FALSE if failed.

### ibus_init ()

    void                ibus_init                           (void);

Initialize the ibus types.

### ibus_main ()

    void                ibus_main                           (void);

Runs an IBus main loop until `ibus_quit()` is called in the loop.

See also: `ibus_quit()`.

### ibus_quit ()

    void                ibus_quit                           (void);

Stops an IBus from running.

Any calls to `ibus_quit()` for the loop will return. See also: `ibus_main()`.

### ibus_set_log_handler ()

    void                ibus_set_log_handler                (gboolean verbose);

Sets GLIB's log handler to ours. Our log handler adds time info including hour, minute, second, and microsecond, like:

(ibus-daemon:7088): IBUS-DEBUG: 18:06:45.822819: ibus-daemon started

If `verbose` is `TRUE`, all levels of messages will be logged. Otherwise, DEBUG and WARNING messages will be ignored. The function is used in ibus-daemon, but can be useful for IBus client programs as well for debugging. It's totally fine for not calling this function. If you don't set a custom GLIB log handler, the default GLIB log handler will be used.

`verbose` : | TRUE for verbose logging.

### ibus_unset_log_handler ()

    void                ibus_unset_log_handler              (void);

Remove the log handler which is set by ibus_set_log_handler.