summaryrefslogtreecommitdiffstats
path: root/source/x/x11-skel
diff options
context:
space:
mode:
Diffstat (limited to 'source/x/x11-skel')
-rw-r--r--source/x/x11-skel/manpages/imconfig.125
-rw-r--r--source/x/x11-skel/scripts/imconfig146
-rwxr-xr-xsource/x/x11-skel/x11-skel.SlackBuild4
3 files changed, 174 insertions, 1 deletions
diff --git a/source/x/x11-skel/manpages/imconfig.1 b/source/x/x11-skel/manpages/imconfig.1
new file mode 100644
index 000000000..7ca95108a
--- /dev/null
+++ b/source/x/x11-skel/manpages/imconfig.1
@@ -0,0 +1,25 @@
+.\" -*- nroff -*-
+.ds g \" empty
+.ds G \" empty
+.\" Like TP, but if specified indent is more than half
+.\" the current line-length - indent, use the default indent.
+.de Tp
+.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
+.el .TP "\\$1"
+..
+.TH IMCONFIG 1 "01 June 2022" "Slackware Version 15.1.0"
+.SH NAME
+imconfig \- choose a default input method for X/Wayland.
+.SH SYNOPSIS
+.B imconfig
+.SH DESCRIPTION
+.B imconfig
+provides a menu of the input methods available on the machine so that you
+may choose one of them to use within an XDG compliant desktop environment.
+
+imconfig writes out $HOME/.profile.d/input-method.{sh,csh} files, allowing
+the user to choose their own default input method (possibly overriding the
+one chosen as a system default).
+.SH AUTHOR
+Patrick J. Volkerding <volkerdi@slackware.com>
+Heinz Wiesinger <pprkut@slackware.com>
diff --git a/source/x/x11-skel/scripts/imconfig b/source/x/x11-skel/scripts/imconfig
new file mode 100644
index 000000000..a576b2732
--- /dev/null
+++ b/source/x/x11-skel/scripts/imconfig
@@ -0,0 +1,146 @@
+#!/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
diff --git a/source/x/x11-skel/x11-skel.SlackBuild b/source/x/x11-skel/x11-skel.SlackBuild
index 07451e767..18daa38fa 100755
--- a/source/x/x11-skel/x11-skel.SlackBuild
+++ b/source/x/x11-skel/x11-skel.SlackBuild
@@ -24,7 +24,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=x11-skel
VERSION=7.7
-BUILD=${BUILD:-8}
+BUILD=${BUILD:-9}
# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
@@ -73,6 +73,7 @@ chown -R root:root etc/X11
find etc/X11 -type f -exec chmod 644 {} \+
cp -a $CWD/scripts/xorgsetup usr/bin
cp -a $CWD/scripts/xwmconfig usr/bin
+cp -a $CWD/scripts/imconfig usr/bin
chown root:root usr/bin/*
chmod 755 usr/bin/*
sed -i -e "s#lib/#lib${LIBDIRSUFFIX}/#g" usr/bin/*
@@ -80,6 +81,7 @@ cp -a $CWD/scripts/setup.xwmconfig var/log/setup
chown root:root var/log/setup/setup.xwmconfig
chmod 755 var/log/setup/setup.xwmconfig
cat $CWD/manpages/xwmconfig.1 | gzip -9c > $PKG/usr/man/man1/xwmconfig.1.gz
+cat $CWD/manpages/imconfig.1 | gzip -9c > $PKG/usr/man/man1/imconfig.1.gz
cp -a $CWD/scripts/xwmconfig.desktop usr/share/xsessions
chown root:root usr/share/xsessions/xwmconfig.desktop
chmod 644 usr/share/xsessions/xwmconfig.desktop