#!/bin/sh # Copyright 2022 Heinz Wiesinger, Amsterdam, The Netherlands # Copyright 2022 Patrick J. Volkerding, Sebeka, MN, USA # All rights reserved. # # Redistribution and use of this script, with or without modification, is # permitted provided that the following conditions are met: # # 1. Redistributions of this script must retain the above copyright # notice, this list of conditions and the following disclaimer. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # TMP=$HOME/.imconfig if [ ! -d $TMP ]; then mkdir -p $TMP chmod 700 $TMP fi # Set up some background information: BACKTITLE="--backtitle \"Setting default input method in $HOME/.profile.d/input-method.sh\"" # This stops --backtitle from cluttering the initial install: if [ ! -r /proc/kcore ]; then BACKTITLE="" fi # Do we already have an existing default? unset PRESELECT if [ -f "$HOME/.profile.d/input-method.sh" ]; then CURRENT="$(grep QT_IM_MODULE "$HOME/.profile.d/input-method.sh" | cut -d '=' -f 2)" if ! [ "$CURRENT" = "" ]; then PRESELECT=" --default-item $CURRENT " fi fi # Remove any previous script: rm -f $TMP/tmpscript.sh # Add the top of the script: cat << EOF > $TMP/tmpscript.sh dialog $BACKTITLE --title "SELECT DEFAULT INPUT METHOD FOR X/WAYLAND" $PRESELECT --menu \\ "Please select the default input method to use. This will define the application that is \\ being used to type non-latin characters in a desktop environment." 12 74 0 \\ EOF # Add default "none" option to disable input methods: echo "\"none\" \"Do not use input methods\" \\" >> $TMP/tmpscript.sh # Add fcitx as the first and default entry: if [ -r /usr/bin/fcitx5-autostart ]; then echo "\"fcitx\" \"Fcitx5: Flexible Context-aware Input Tool with eXtension support\" \\" >> $TMP/tmpscript.sh elif [ -r /usr/bin/fcitx-autostart ]; then echo "\"fcitx\" \"Fcitx: Flexible Context-aware Input Tool with eXtension support\" \\" >> $TMP/tmpscript.sh fi # Add ibus: if [ -r /usr/bin/ibus-autostart ]; then echo "\"ibus\" \"IBus: Intelligent Input Bus\" \\" >> $TMP/tmpscript.sh fi # Add uim: if [ -r /usr/bin/uim-autostart ]; then echo "\"uim\" \"uim: Universal Input Method\" \\" >> $TMP/tmpscript.sh fi # Add scim: if [ -r /usr/bin/scim-autostart ]; then echo "\"scim\" \"SCIM: Smart Common Input Method\" \\" >> $TMP/tmpscript.sh fi # Then, the tail end: cat << EOF >> $TMP/tmpscript.sh 2> $TMP/output if [ ! \$? = 0 ]; then rm -f $TMP/output echo "Canceled." exit fi dialog $BACKTITLE --title "SELECT DEFAULT INPUT METHOD FOR X/WAYLAND" --msgbox \\ "Changes will take effect after a re-login." 0 0 EOF sh $TMP/tmpscript.sh if [ ! -r $TMP/output ]; then rm -f $TMP/tmpscript.sh exit fi OUTPUT=$(cat $TMP/output) # Create $HOME/.profile.d if it doesn't exist yet if ! [ -e "$HOME/.profile.d" ]; then mkdir "$HOME/.profile.d" fi if [ "$OUTPUT" = "none" ]; then # Create the bash profile script cat << EOF > "$HOME/.profile.d/input-method.sh" # File auto-generated by imconfig EOF cat << EOF > "$HOME/.profile.d/input-method.csh" # File auto-generated by imconfig EOF else # Create the bash profile script cat << EOF > "$HOME/.profile.d/input-method.sh" # File auto-generated by imconfig export XMODIFIERS="@im=$OUTPUT" export XIM=$OUTPUT export XIM_PROGRAM=$OUTPUT export GTK_IM_MODULE=$OUTPUT export QT_IM_MODULE=$OUTPUT EOF # Create the csh profile script cat << EOF > "$HOME/.profile.d/input-method.csh" # File auto-generated by imconfig setenv XMODIFIERS "@im=$OUTPUT" setenv XIM $OUTPUT setenv XIM_PROGRAM $OUTPUT setenv GTK_IM_MODULE $OUTPUT setenv QT_IM_MODULE $OUTPUT EOF fi rm -f $TMP/tmpscript.sh $TMP/output