mirror of
https://github.com/Snigdha-OS/snigdhaos-pkgbuilds.git
synced 2025-09-21 12:04:59 +02:00
feat(poll): terminal executer for Snigdha OS
This commit is contained in:
27
snigdhaos-launcher/PKGBUILD
Normal file
27
snigdhaos-launcher/PKGBUILD
Normal file
@@ -0,0 +1,27 @@
|
||||
# Maintainer: Eshan Roy <eshan@snigdhaos.org>
|
||||
|
||||
pkgname=snigdhaos-launcher
|
||||
org=Snigdha-OS
|
||||
pkgdesc="Terminal Executer for Snigdha OS"
|
||||
pkgver=1
|
||||
pkgrel=1
|
||||
arch=('any')
|
||||
license=('MIT')
|
||||
depends=(
|
||||
'linotify'
|
||||
)
|
||||
source=(
|
||||
"launch-terminal"
|
||||
)
|
||||
sha256sums=(
|
||||
'SKIP'
|
||||
)
|
||||
|
||||
pkgver(){
|
||||
printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
|
||||
}
|
||||
|
||||
package() {
|
||||
install -Dm755 launch-terminal "$pkgdir"/usr/lib/snigdhaos/launch-terminal
|
||||
install -d "$pkgdir"/var/lib/snigdhaos/tmp
|
||||
}
|
96
snigdhaos-launcher/launch-terminal
Normal file
96
snigdhaos-launcher/launch-terminal
Normal file
@@ -0,0 +1,96 @@
|
||||
#!/usr/bin/bash
|
||||
set -e
|
||||
|
||||
LAUNCH_TERMINAL_SHELL=bash
|
||||
|
||||
usage() {
|
||||
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
|
||||
done
|
||||
|
||||
shift $(($OPTIND - 1))
|
||||
|
||||
initfile="$(mktemp)"
|
||||
codefile="$initfile"
|
||||
echo "#!/usr/bin/env bash" >"$initfile"
|
||||
if [ "$LAUNCH_TERMINAL_SHELL" != "bash" ]; then
|
||||
codefile="$(mktemp)"
|
||||
echo "$LAUNCH_TERMINAL_SHELL $codefile" >>"$initfile"
|
||||
fi
|
||||
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")
|
||||
|
||||
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
|
||||
;;
|
||||
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
|
||||
fi
|
||||
|
||||
# Special kgx, thanks gnome
|
||||
if [ "$terminal" == "kgx" ]; then
|
||||
sed -i '2i sleep 0.1' $initfile
|
||||
echo 'kill -SIGINT $PPID' >>$initfile
|
||||
fi
|
||||
|
||||
eval "${terminals[${terminal}]}" || {
|
||||
exitcode=$?
|
||||
}
|
||||
|
||||
rm "$initfile"
|
||||
if [ "$codefile" != "$initfile" ]; then
|
||||
rm "$codefile"
|
||||
fi
|
||||
|
||||
if [ ! -z "$exitcode" ] && [ "$exitcode" != 130 ]; then
|
||||
exit 2
|
||||
fi
|
Reference in New Issue
Block a user