17-06-2019, 21:02:51
Bonjour,
Sous Debian j'affectionne particulièrement Byobu pour la connexion sur mes serveurs. Malheureusement cet outil n'est pas compatible Obsd.
Après avoir fait mon propre fichier Tmux je voulais retrouver la praticité de son lancement automatique. Du coup je me suis mis en tête de refaire ça et voilà ce que ça donne :
Tout d'abord mettre ce petit ajout dans le .profile :
Puis copier le code suivant dans le fichier $HOME/.tmux/auto_launch.sh :
Et voilà
Sous Debian j'affectionne particulièrement Byobu pour la connexion sur mes serveurs. Malheureusement cet outil n'est pas compatible Obsd.
Après avoir fait mon propre fichier Tmux je voulais retrouver la praticité de son lancement automatique. Du coup je me suis mis en tête de refaire ça et voilà ce que ça donne :
Tout d'abord mettre ce petit ajout dans le .profile :
Code :
if [ -x $HOME/.tmux/auto_launch.sh ]; then
. $HOME/.tmux/auto_launch.sh
fi
Puis copier le code suivant dans le fichier $HOME/.tmux/auto_launch.sh :
Code :
#!/bin/sh -e
# Inspiré du launcher de Byobu (byobu-launch) http://bazaar.launchpad.net/~kirkland/byobu/trunk/view/head:/usr/bin/byobu-launch.in
#Pour le debug
#set -x
################################################################################
# Variables
################################################################################
WHOAMI=`whoami`
SESSION_NAME="auto-launch-$WHOAMI"
SLEEP_TIME=0.3
CONSOLE=$(tty)
SHELL_OPTIONS=$-
################################################################################
# Corp du script
################################################################################
# Le cas du shell non interactif ou déjà dans une session tmux
if [ "${SHELL_OPTIONS#*i}" = "$SHELL_OPTIONS" ] || [ -n "$TMUX" ] || [ "${TERM#screen}" != "$TERM" ]; then
# On sort directement
true
# Le cas de la console
elif [ "${CONSOLE#/dev/tty0}" != "$CONSOLE" ]; then
# Don't autolaunch tmux on serial consoles
echo "INFO: Disabling auto-launch of tmux on this serial console"
echo "INFO: You can still run 'tmux' manually at the command line"
# Le cas ou il existe déjà une session déjà active
elif tmux has-session 2>/dev/null; then
echo -n "Tmux session already active "
# et est déjà connecté
if tmux ls | grep $SESSION_NAME | grep -q attached; then
echo "and attached. Do you want connect ?"
select response in "Yes" "Yes and detach other(s) client(s)" "No" "Create new session"
do
echo "You selected :" $response
case $response in
Yes )
echo "Connecting …";
sleep $SLEEP_TIME;
exec tmux attach -t $SESSION_NAME;
break;;
"Yes and detach other(s) client(s)")
echo "Detaching others client …"
tmux detach-client -s $SESSION_NAME
echo "Connecting …";
sleep $SLEEP_TIME;
exec tmux attach -dt $SESSION_NAME;
break;;
No )
echo "Exit launcher";
break;;
"Create new one" )
echo "Create new session";
sleep $SLEEP_TIME;
exec tmux new;
break;;
esac
done
# alors on se connect
else
echo "connecting …"
sleep $SLEEP_TIME;
exec tmux attach -t $SESSION_NAME
fi
# Le cas ou la session n'existe pas
else
echo "Create new session"
sleep $SLEEP_TIME
exec tmux new -s $SESSION_NAME
fi
unset WHOAMI
unset SESSION_NAME
unset SLEEP_TIME
unset CONSOLE
unset SHELL_OPTIONS
true
# vi: syntax=sh ts=4 noexpandtab
Et voilà

« La perfection est atteinte, non pas lorsqu'il n'y a plus rien à ajouter, mais lorsqu'il n'y a plus rien à retirer. » Antoine de Saint-Exupéry