#!/bin/sh
# Copyright (C) 2012-2026 Osamu Aoki <osamu@debian.org>
# Copyright (C) 2012 Aron Xu <aron@debian.org>
# GNU General Public License version 2 or later.
#
# IM (Input Method) launcher hook at 70 used in /etc/X11/Xsession.d/
# This script should be executed before the dbus-launch hook at 75.
# These hook scripts changes $STARTUP string used at 90.

# system sets $XDG_SESSION_TYPE", "$XDG_CURRENT_DESKTOP"
# Minimized code for key variables
#############################################################
#############################################################
# GLOBAL variables (initial)
#############################################################
IM_CONFIG_VERBOSE="${IM_CONFIG_VERBOSE:-1}"
IM_CONFIG_DEFAULT="${IM_CONFIG_DEFAULT:-/etc/default/im-config}"
IM_CONFIG_USR_BASE="${IM_CONFIG_USR_BASE:-/usr/share/im-config}"
IM_CONFIG_DATA_BASE="${IM_CONFIG_DATA_BASE:-/usr/share/im-config/data}"
IM_CONFIG_CONF_FILE=".xinputrc"
IM_CONFIG_CONF_PATH="$HOME/$IM_CONFIG_CONF_FILE"
IMLAUNCH="/usr/bin/im-launch"
# shellcheck disable=SC1091
. "${IM_CONFIG_USR_BASE}/logger_function"
IM_CONFIG_ENVIROMENT_KEY=""
export IM_CONFIG_ENVIROMENT_KEY
IM_CONFIG_LAUNCH=""
export IM_CONFIG_LAUNCH
if [ ! -x "$IMLAUNCH" ]; then
  logger_info "W: Skip since im-config has been removed.  Purge im-config to stop this message."
  IMLAUNCH=""
elif [ "$XDG_SESSION_TYPE" != "x11" ]; then
  logger_info "W: Skip /etc/X11/Xsession.d/70im-config_launch since XDG_SESSION_TYPE ='$XDG_SESSION_TYPE' (ERROR)"
  IMLAUNCH=""
else
  # im-config is installed.  Check situation
  if [ -z "$XMODIFIERS" ] &&
    [ -z "$GTK_IM_MODULE" ] &&
    [ -z "$QT_IM_MODULE" ] &&
    [ -z "$CLUTTER_IM_MODULE" ] &&
    [ -z "$SDL_IM_MODULE" ]; then
    # if fresh, set environments
    # shellcheck disable=SC1091
    . "${IM_CONFIG_USR_BASE}/common_function"
    logger_info "I: Set environment variables from /etc/X11/Xsession.d/70im-config_launch (all empty strings)"
    if [ -r "$IM_CONFIG_CONF_PATH" ]; then
      logger_debug "D: Source ~/$IM_CONFIG_CONF_FILE"
      . "$IM_CONFIG_CONF_PATH"
    else
      logger_debug "D: Execute 'run_im auto' since no ~/$IM_CONFIG_CONF_FILE"
      run_im auto
    fi
    logger_info "I: >>> GTK_IM_MODULE='$GTK_IM_MODULE' QT_IM_MODULE='$QT_IM_MODULE' XMODIFIERS='$XMODIFIERS' CLUTTER_IM_MODULE='$CLUTTER_IM_MODULE' SDL_IM_MODULE='$SDL_IM_MODULE'"
    IM_CONFIG_ENVIROMENT_KEY="$GTK_IM_MODULE:$QT_IM_MODULE:$XMODIFIERS:$CLUTTER_IM_MODULE:$SDL_IM_MODULE"
    #
    export XMODIFIERS
    export GTK_IM_MODULE
    export QT_IM_MODULE
    export CLUTTER_IM_MODULE
    export SDL_IM_MODULE
    export IM_CONFIG_LAUNCH
    export IM_CONFIG_ENVIROMENT_KEY
  else
    # already tweaked, keep hands off :-)
    logger_info "W: Skip setting environment variables from /etc/X11/Xsession.d/70im-config_launch (some already set)"
  fi

  # Change $STARTUP string to im-launch while keeping the old $STARTUP string
  # as its arguments
  STARTUP="$IMLAUNCH $STARTUP"
  logger_debug "D:  STARTUP='$STARTUP'"
fi

