diff options
Diffstat (limited to 'source/x/x11-skel')
-rw-r--r-- | source/x/x11-skel/manpages/imconfig.1 | 25 | ||||
-rw-r--r-- | source/x/x11-skel/scripts/imconfig | 146 | ||||
-rwxr-xr-x | source/x/x11-skel/x11-skel.SlackBuild | 4 |
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 |