mirror of
git://slackware.nl/current.git
synced 2024-12-30 10:24:23 +01:00
147 lines
4.2 KiB
Text
147 lines
4.2 KiB
Text
|
#!/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
|