XIM=ibus
# imsettings does not support "ibus start" yet.
XIM_PROGRAM="/usr/bin/ibus-daemon"
ICON="ibus"
XIM_ARGS="-r --xim"
PREFERENCE_PROGRAM=/usr/bin/ibus-setup
SHORT_DESC="IBus"
GTK_IM_MODULE=ibus
NOT_RUN=gnome3
# IMSETTINGS_IGNORE_SESSION concatenate the current session name and type x11 or
# wayland. The current session name is calculated by get_destop()
# in /usr/libexec/imsettings-functions and the value is case-sensitive.
#IMSETTINGS_IGNORE_SESSION=KDE-wayland
RUN_WAYLAND_PROGRAM=1
WAYLAND_CACHEFILE="${XDG_CONFIG_HOME:-$HOME/.cache}/imsettings/wayland.log"
VERBOSE=1

if test -f /usr/lib64/qt6/plugins/platforminputcontexts/libibusplatforminputcontextplugin.so || \
   test -f /usr/lib/qt6/plugins/platforminputcontexts/libibusplatforminputcontextplugin.so || \
   test -f /usr/lib64/qt5/plugins/platforminputcontexts/libibusplatforminputcontextplugin.so || \
   test -f /usr/lib/qt5/plugins/platforminputcontexts/libibusplatforminputcontextplugin.so || \
   test -f /usr/lib64/qt4/plugins/inputmethods/libqtim-ibus.so || \
   test -f /usr/lib/qt4/plugins/inputmethods/libqtim-ibus.so;
then
    QT_IM_MODULE=ibus
else
    QT_IM_MODULE=xim
fi

# This file is called by some scripts several times and XDG_SESSION_TYPE is
# sometimes reset so use `ibus` comamnd to check if Wayland is available.
if which ibus >/dev/null 2>/dev/null && ibus display --type wayland >/dev/null 2>/dev/null ; then
    # imsettings does not support QT_IM_MODULES environment yet.
    if test "x$QT_IM_MODULE" = "xibus" ; then
        unset QT_IM_MODULE
    fi
    GTK_IM_MODULE='wayland:ibus'
    unset XIM_PROGRAM
    if test "x$RUN_WAYLAND_PROGRAM" = "x1" ; then
        IBUS_ADDRESS=$(ibus address)
        if test "x$IBUS_ADDRESS" = "x(null)" || test "x$IBUS_ADDRESS" = "x" ; then
            mkdir -p -m 0700 $(dirname "$WAYLAND_CACHEFILE")
            ibus start $([ "x$VERBOSE" = "x1" ] && echo "--verbose") >"$WAYLAND_CACHEFILE" 2>"$WAYLAND_CACHEFILE"
        fi
    fi
fi

if which gsettings >/dev/null 2>/dev/null && \
   [ -f '/usr/share/glib-2.0/schemas/org.gnome.desktop.interface.gschema.xml' ] ; then
    gsettings reset org.gnome.desktop.interface gtk-im-module
fi
