Script de lancement de Tmux
#1

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 :
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à  Wink

« 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
Répondre
#2

Joli ! :p

GPG:Fingerprint ed25519 : 072A 4DA2 8AFD 868D 74CF  9EA2 B85E 9ADA C377 5E8E
GPG:Fingerprint rsa4096 : 4E0D 4AF7 77F5 0FAE A35D  5B62 D0FF 7361 59BF 1733
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)