Script Bash pour lancer tmux et émettre des commands

Je veux utiliser un script nautilus pour ouvrir un terminal (gnome-) avec une session tmux (ou en démarrer une) à un location spécifique, puis exécuter certaines commands dans ce terminal (par exemple, file nvim $).

J'ai rencontré 2 problèmes cependant: J'ai: "Exécuter une command personnalisée au lieu de mon shell" à "tmux", de sorte que chaque terminal commence dans une session tmux. Cela semble nier la capacité d'ouvrir le terminal à un endroit donné. Ce que j'ai essayé est de mettre un file test.sh exécutable dans ~/.local/share/nautilus/scripts/ with content:

 #!/bin/bash gnome-terminal --working-directory=$NAUTILUS_SCRIPT_CURRENT_URI 

cela fonctionne sur un profil vide. Avec "tmux" en tant que command de démarrage cependant je viens d'get un terminal vide à ~

2: Si j'essaie d'utiliser une command après cela, rien ne se passe.

 nvim some_file_there 

ne fait rien, tout comme echo "hi" et exec echo 'hi'

Quelqu'un pourrait-il m'expliquer le comportement?

Pendant ce time, j'ai désactivé le paramètre "Exécuter une command personnalisée" dans le terminal. Cependant, je ne peux encore que changer le directory de travail (ouvrir le terminal ici), mais je ne peux pas émettre d'autres commands.

Mon nouveau script de test contenant uniquement:

 #!/bin/bash zenity --info --text="$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" gnome-terminal -e "ls" 

Change en quelque sorte le directory de travail à celui, que le script nautilus est lancé! En outre, il montre les résultats de la command ls, mais dans le terminal, une bande de dialog est lancée en bleu en disant: "Le process enfant a quitté normalement avec le statut 0." Et un button Relancer vers la droite. – Je suppose que cela signifie qu'une nouvelle session ou un nouveau terminal est démarré (l'enfant), mais ça ne continue pas, pour que je puisse l'utiliser !?

Quelqu'un peut-il clarifier ce qui se passe ici?

J'ai trouvé la solution en s'appuyant fortement sur tmux. Puisque tmux fonctionne indépendamment du shell et prévaut même après la fermeture des windows, on peut préparer une session tmux et l'attacher ensuite. La chose ne se fermera pas instantanément, puisque la command de pièce jointe ne revient pas sauf si vous la quittez.

Ceci et le fait que vous pouvez nommer et searchr une session donne le script Nautilus suivant:

 #!/bin/bash # nautilus script to start files in nvim under a tmux session # place this script into ~/.local/share/nautilus/scripts/nvimOpen.sh # presented without warranty by mike aka curvi # nvim running in another session? - # TODO tmux rename-session -t $whaever nvim # Tmux session 'nvim' is running neovim always! if tmux has-session -t nvim ; then # test if it is open and split it for selected_file in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS ; do tmux send-keys -t nvim Escape # change to normal mode tmux send-keys -t nvim ";vsp $selected_file" Enter # open file in vsplit done else # or start it up freshly! tmux new-session -d -s nvim ; tmux send-keys -t nvim "nvim -O $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" Enter tmux send-keys -t nvim Escape # change to normal mode fi # after the tmux session is prepared - attach to it in gnome-terminal! gnome-terminal -e "tmux attach-session -d -t nvim" 

Bonus: puisque j'envoie les keys, au lieu d'émettre les commands directement elles apparaissent dans l'historique des terminaux, comme prévu!

Attention: mon nvim / init.vim contient un remappage de ; à:, ce qui signifie que, pour exécuter, il faut vérifier les touches envoyées pour les réglages "réguliers" vim / neovim!