diff --git a/usr/bin/launch-terminal b/usr/bin/launch-terminal index befb87b..c75e910 100755 --- a/usr/bin/launch-terminal +++ b/usr/bin/launch-terminal @@ -8,93 +8,100 @@ set -e LAUNCH_TERMINAL_SHELL=bash usage() { - echo "Usage: ${0##*/} [cmd]" - echo ' -s [shell] Change shell to [shell]' - echo ' -h This help' - exit 1 + echo "Usage: ${0##*/} [cmd]" + echo ' -s [shell] Change shell to [shell]' + echo ' -h This help' + exit 1 } opts='s:h' while getopts "${opts}" arg; do - case "${arg}" in - s) LAUNCH_TERMINAL_SHELL="$OPTARG" ;; - h | ?) usage 0 ;; - *) - echo "invalid argument '${arg}'" - usage 1 - ;; - esac + case "${arg}" in + s) LAUNCH_TERMINAL_SHELL="$OPTARG" ;; + h | ?) usage 0 ;; + *) + echo "invalid argument '${arg}'" + usage 1 + ;; + esac done shift $(($OPTIND - 1)) -initfile="$(mktemp)" -codefile="$initfile" -echo "#!/usr/bin/env bash" >"$initfile" +initfile=$(mktemp) +codefile=$initfile + +echo "#!/usr/bin/env bash" > "$initfile" + if [ "$LAUNCH_TERMINAL_SHELL" != "bash" ]; then - codefile="$(mktemp)" - echo "$LAUNCH_TERMINAL_SHELL $codefile" >>"$initfile" + codefile=$(mktemp) + echo "$LAUNCH_TERMINAL_SHELL $codefile" >> "$initfile" fi -echo "$1" >>"$codefile" + +echo "$1" >> "$codefile" chmod +x "$initfile" cmd="\"$initfile\"" -terminal="" -declare -A terminals=(["alacritty"]="alacritty -e $cmd || LIBGL_ALWAYS_SOFTWARE=1 alacritty -e $cmd" ["konsole"]="konsole -e $cmd" ["kgx"]="kgx -- $cmd" ["gnome-terminal"]="gnome-terminal --wait -- $cmd" ["xfce4-terminal"]="xfce4-terminal --disable-server --command '$cmd'" ["qterminal"]="qterminal -e $cmd" ["lxterminal"]="lxterminal -e $cmd" ["mate-terminal"]="mate-terminal --disable-factory -e $cmd" ["xterm"]="xterm -e $cmd" ["foot"]="foot -T launch-terminal -e $cmd") -declare -a term_order=("alacritty" "konsole" "kgx" "gnome-terminal" "mate-terminal" "xfce4-terminal" "qterminal" "lxterminal" "xterm" "foot") +declare -A terminals=( + ["alacritty"]="alacritty -e $cmd || LIBGL_ALWAYS_SOFTWARE=1 alacritty -e $cmd" + ["konsole"]="konsole -e $cmd" + ["kgx"]="kgx -- $cmd" + ["gnome-terminal"]="gnome-terminal --wait -- $cmd" + ["xfce4-terminal"]="xfce4-terminal --disable-server --command '$cmd'" + ["qterminal"]="qterminal -e $cmd" + ["lxterminal"]="lxterminal -e $cmd" + ["mate-terminal"]="mate-terminal --disable-factory -e $cmd" + ["xterm"]="xterm -e $cmd" + ["foot"]="foot -T launch-terminal -e $cmd" +) + +declare -a term_order=( + "alacritty" "konsole" "kgx" "gnome-terminal" "mate-terminal" + "xfce4-terminal" "qterminal" "lxterminal" "xterm" "foot" +) case "$XDG_CURRENT_DESKTOP" in -KDE) - terminal=konsole - ;; -GNOME) - if command -v "kgx" &>/dev/null; then - terminal=kgx - else - terminal=gnome-terminal - fi - ;; -XFCE) - terminal=xfce4-terminal - ;; -LXQt) - terminal=qterminal - ;; -MATE) - terminal=mate-terminal - ;; + KDE) terminal=konsole ;; + GNOME) + if command -v "kgx" &> /dev/null; then + terminal=kgx + else + terminal=gnome-terminal + fi + ;; + XFCE) terminal=xfce4-terminal ;; + LXQt) terminal=qterminal ;; + MATE) terminal=mate-terminal ;; + *) + for i in "${term_order[@]}"; do + if command -v "$i" &> /dev/null; then + terminal=$i + break + fi + done + ;; esac -if [ -z "$terminal" ] || ! command -v "$terminal" &>/dev/null; then - for i in ${term_order[@]}; do - if command -v "$i" &>/dev/null; then - terminal="$i" - break - fi - done -fi - if [ -z "$terminal" ]; then - notify-send -t 15000 --app-name=Garuda\ Linux "No terminal installed" "No supported terminal emulator is installed. Please install a terminal emulator like Alacritty." - exit 1 + notify-send -t 15000 --app-name=Snigdha\ OS "No terminal installed" "No supported terminal emulator is installed. Please install a terminal emulator like Alacritty." + exit 1 fi -# Special kgx, thanks gnome -if [ "$terminal" == "kgx" ]; then - sed -i '2i sleep 0.1' $initfile - echo 'kill -SIGINT $PPID' >>$initfile +if [ "$terminal" = "kgx" ]; then + sed -i '2i sleep 0.1' "$initfile" + echo 'kill -SIGINT $PPID' >> "$initfile" fi -eval "${terminals[${terminal}]}" || { - exitcode=$? +eval "${terminals[$terminal]}" || { + exitcode=$? } rm "$initfile" if [ "$codefile" != "$initfile" ]; then - rm "$codefile" + rm "$codefile" fi -if [ ! -z "$exitcode" ] && [ "$exitcode" != 130 ]; then - exit 2 -fi +if [ -n "$exitcode" ] && [ "$exitcode" != 130 ]; then + exit 2 +fi \ No newline at end of file