Forum Programmation.shell [TMUX] Choisir dans quelle session ouvrir une fenêtre.

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
0
18
juin
2017

Bonjour à toutes et à tous.
Voilà le topo. Je cherche, par l'intermédiaire d'un script Bash, à :
- créer une session tmux (ça c'est OK)
- ouvrir un certain nombre de fenêtres dans cette session, les nommer et exécuter une commande (OK je sais faire)
- créer une autre session (toujours OK)
- et ouvrir d'autres fenêtres dans cette nouvelle session, et pas dans la première : c'est là que ça cloche. Les nouvelles fenêtres s'ouvrent dans la première :<

Voici le script que j'ai pondu :

#!/bin/env bash
commande="./launch.sh"
delay=15

session_name=$(basename $(pwd))

flag="0"
for file in *.config; do
    pre=$(echo $file | cut -d'-' -f2)
    post=$(echo $file | cut -d'-' -f1)
    if [[ "$flag" = "0" ]]; then
        tmux -2 new-session -d -s $session_name -n $pre "$commande $pre $post"
        flag="1"
    else
        tmux -2 new-window -d -n $pre "$commande $pre $post"
    fi
    printf "Launching %s %s " "$post" "$pre"
    for i in $(seq 1 $delay); do
        echo -n "."
        sleep 1
    done
    echo
done

echo Done
tmux ls

Ce script ouvre bien les sessions avec une fenêtre, celle avec le flag=0.
J'ai beau avoir lu et relu man tmux, posé la question (mauvaise requête, mauvaise réponse) à Google et consort, fouillé StackOverflow, je sèche.

D'où la question : Comment choisir dans quelle session ouvrir mes fenêtres ?

Merci.

  • # tmuxify

    Posté par  (site web personnel) . Évalué à 1.

    Bonjour,

    Regarde du côté de tmuxify sur github.
    Tu y trouveras peut-être un exemple.

    • [^] # Re: tmuxify

      Posté par  (site web personnel) . Évalué à 1.

      Pas con, faut que je creuse. Je viens d'essayé avec tmuxinator et ça marche. Il me créé bien les fenêtres dans les bonnes sessions. Je vais potasser tmuxifier qui devrait me permettre de scripter ça.
      Merci.

      J'aurais préféré ne pas ajouter de dépendance à mon projet.

      « Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. »

  • # je ne sais pas

    Posté par  . Évalué à 2.

    dans mon usage de tmux, j'ai generalement une seule session et plusieurs fenetres
    car sinon il faut se souvenir qu'on a plusieurs sessions ouvertes pour aller chercher ce qu'il y a dedans.

    sinon l'astuce ca reste de basculer sur la session, puis d'ouvrir ce qui a besoin de l'etre.
    mais chez toi ca ne semble pas le faire.

    • [^] # Re: je ne sais pas

      Posté par  (site web personnel) . Évalué à 1.

      Merci de ta non-réponse ;)
      J'ai besoin de scripter le bousin et d'avoir des sessions différentes.
      Sinon je pensais ouvrir toutes les fenêtres dans une session détachée, puis créer mes sessions utiles et envoyer les fenêtres dans ces sessions. Est-ce possible et comment ?

      « Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. »

  • # L’option -s ?

    Posté par  . Évalué à 2. Dernière modification le 19 juin 2017 à 19:15.

    Depuis la page de man :

    « This section contains a list of the commands supported by tmux. Most commands accept the optional -t (and sometimes -s) argument with one of target-client, target-session target-window, or target-pane. »

    Tu l’utilises déjà -_- moinssez-moi.

    • [^] # Re: L’option -s ?

      Posté par  (site web personnel) . Évalué à 1.

      Le truc c'est qu'on ne peut utiliser cette option pour la création de fenêtre ! Pfff !
      new-window [-adkP] [-c start-directory] [-F format] [-n window-name] [-t target-window] [shell-command]
      Après je ne comprends pas trop :
      target-window represents the window to be created; if the target already exists an error is shown …
      puisque l'option -n nomme la fenêtre.

      Merci d'avoir essayer.

      « Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. »

      • [^] # Re: L’option -s ?

        Posté par  . Évalué à 2.

        Après je ne comprends pas trop :
        target-window represents the window to be created; if the target already exists an error is shown …

        to be created = qui devra etre créé
        if the target already exists an error is shown= si la cible existe deja, une erreur sera montrée

        donc tu ne peux pas te servir de cela pour rattacher une commande à une fenetre existante, mais par contre tu peux creer une nouvelle fenetre

        • [^] # Re: L’option -s ?

          Posté par  (site web personnel) . Évalué à 1. Dernière modification le 20 juin 2017 à 13:17.

          Merci, j'avais bien compris ce que tu dis. Mais quelle est la différence entre -n et -t, si ce n'est qu'avec -t si la fenêtre existe un message d'erreur est émis ?

          « Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. »

          • [^] # Re: L’option -s ?

            Posté par  . Évalué à 2.

            dans ma page de man tmux

            le -t et -s vont avec le new-session

             new-session [-AdDP] [-c start-directory] [-F format] [-n window-name] [-s session-name] [-t target-session] [-x width] [-y height] [shell-command]
                               (alias: new)
                         Create a new session with name session-name.
            
                         The new session is attached to the current terminal unless -d is given.  window-name and shell-command are the name of and shell command to execute in the initial window.  If -d is used, -x and -y specify the size of
                         the initial window (80 by 24 if not given).
            
                         If run from a terminal, any termios(4) special characters are saved and used for new windows in the new session.
            
                         The -A flag makes new-session behave like attach-session if session-name already exists; in the case, -D behaves like -d to attach-session.
            
                         If -t is given, the new session is grouped with target-session.  
            This means they share the same set of windows - all windows from target-session are linked to the new session and any subsequent new windows or windows being closed are applied to both sessions.
            The current and previous window and any session options remain independent and either session may be killed without affecting the other.  Giving -n or shell-command are invalid if -t is used.
                         The -P option prints information about the new session after it has been created.  By default, it uses the format ‘#{session_name}:’ but a different format may be specified with -F.

            il faut peut-etre switcher de client avant d'ouvrir ta session

            switch-client [-lnpr] [-c target-client] [-t target-session]
                               (alias: switchc)
                         Switch the current session for client target-client to target-session.  If -l, -n or -p is used, the client is moved to the last, next or previous session respectively.  -r toggles whether a client is read-only (see
                         the attach-session command).
            • [^] # Re: L’option -s ?

              Posté par  (site web personnel) . Évalué à 1.

              le -t et -s vont avec le new-session

              Hé ! j'avais bien pigé ;)
              Par contre l'histoire du client et des groupes, rien compris. Quand j'ouvre une ou plusieurs sessions et tmux list-clients il ne me renvoie rien !
              Zut ! je viens de m’apercevoir qu'il faut que la/les sessions soit attachées. Mais du coup comment j'insère ça dans mon script ?

              « Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. »

              • [^] # Re: L’option -s ?

                Posté par  . Évalué à 2.

                Zut ! je viens de m’apercevoir qu'il faut que la/les sessions soit attachées. Mais du coup comment j'insère ça dans mon script ?

                tmux attach devrait t'aider

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.