Historique: Scripts bash par Tumulte
Aperçu de cette version: 10
Table des matières
Concrtement, j'avais besoin d'un petit script qui me permette de lancer les logiciels que je veux, avec les sauvegardes correspondantes, pour enfin charger les connections qui vont bien. Le tout en graphique et en pas trop compliqu.
Le script lance ensuite un terminal et chaque application sera lance dans l'un de ses onglet.
- Le script est fait pour fonctionner sous gnome. Il faudra l'adapter aux autres interfaces... Sinon en installant gnome-terminal a devrait marcher
- Vous aurez besoin de Zenity, un petit programme qui permet d'insrer des boites de dialogues dans un script bash
➡️ Vous trouverez un petit rcapitulatif ici
- Tout les fichiers de sauvegardes d'un mme logiciel devront tre dans un mme dossier (un dossier par soft)
- vitez les espaces dans le chemin et les noms de fichier
❗ Attention, ici, jack est DEJA lanc au moment de l'execution du script... mais rien n'empche de le lancer via ce dernier.
Le script
Copy to clipboard
#!/bin/sh #le chemin vers le dossier des sauvegardes the_path=/home/user/Musique #Liste des softwares softwares_list=$(zenity --width=400 --height=300 --list --text "TOOLS #!" --checklist --column "Pick" --column "among those :" FALSE "Hydrogen" FALSE "SooperLooper" FALSE "Seq24" FALSE "Phasex" FALSE "Yoshimi" FALSE "Jack-Rack" --separator=" "); #Options pour chaque soft #SOOPERLOOPER case $softwares_list in *SooperLooper*) sooper_file=$(zenity --width=500 --height=150 --entry --text "Wanna load a loop session?" `ls $the_path/Sooperlooper/*.slsess` ); sooper_launcher=(--tab -e "sooperlooper --load-session=$(printf %q "$sooper_file")") ; slgui_launcher=(--tab -e "slgui") ; ;; esac #PHASEX case $softwares_list in *Phasex*) phasex_synth=$(zenity --width=500 --height=150 --entry --text "[Phasex] Wanna load a sound?" `ls /home/tch/.phasex/user-patches/*.phx` ); phasex_launcher=(--tab -e "phasex -m 11 $(printf %q "$phasex_synth")") ; ;; esac #YOSHIMI case $softwares_list in *Yoshimi*) yoshimi_synth=$(zenity --width=500 --height=150 --entry --text "[Yoshimi] Wanna load a sound?" `ls $the_path/Yoshimi/*.xiz` ); yoshimi_launcher=(--tab -e "yoshimi -K -L $(printf %q "$yoshimi_synth")") ; ;; esac #HYDROGEN case $softwares_list in *Hydrogen*) h2_song=$(zenity --width=500 --height=150 --entry --text "[H2] Wanna load a drum track?" `ls $the_path/Hydrogen/*.h2song` ); h2_launcher=(--tab -e "hydrogen -s $(printf %q "$h2_song")") ; ;; esac #SEQ24 case $softwares_list in *Seq24*) seq24_song=$(zenity --width=500 --height=150 --entry --text "[SEQ24] Wanna load a song?" `ls $the_path/Seq24/*`); seq24_launcher=(--tab -e "seq24 --file $(printf %q "$seq24_song")") ; ;; esac #JACK-RACK case $softwares_list in *Jack-Rack*) fx_rack=$(zenity --width=500 --height=150 --entry --text "[Jack-Rack] Wanna load a song?" `ls $the_path/JackRack/*`); jackrack_launcher=(--tab -e "jack-rack $(printf %q "$fx_rack")"); ;; esac #Choix de la baie de brassage patchbay=$(zenity --width=500 --height=150 --entry --text "[QjackCTL] What connections would fit?" `ls $the_path/QJackCTL/*.xml`); #THE LAUNCHER gnome-terminal --tab -e "a2j" "${sooper_launcher[@]}" "${slgui_launcher[@]}" "${phasex_launcher[@]}" "${yoshimi_launcher[@]}" "${h2_launcher[@]}" "${seq24_launcher[@]}" "${jackrack_launcher[@]}" & #On attend avant de lancer qjackCTL sleep 10; qjackctl -a "${patchbay}"
Utilisation
Une fois les valeurs (chemin, logiciels etc...) adapts pour votre config, il suffit de vous placer dans le rpertoire o se trouve le script et de faire :
Copy to clipboard
sh nomduscript
Explication
Copy to clipboard
softwares_list=$(zenity --width=400 --height=300 --list --text "TOOLS #!" --checklist --column "Pick" --column "among those :" FALSE "Hydrogen");
On dfinit la liste des softwares la main dans une boite case cocher.
Il suffit de mettre FALSE/TRUE (suivant si vous voulez que le logiciel soit choisi par dfaut ou non) puis le nom du logiciel entre guillemets.
Copy to clipboard
#HYDROGEN 35 . case $softwares_list in *Hydrogen*) 36 . h2_song=$(zenity --width=500 --height=150 --entry --text "[H2] Wanna load a drum track?" `ls $the_path/Hydrogen/*.h2song` ); 37 . h2_launcher=(--tab -e "hydrogen -s $(printf %q "$h2_song")") ; 38 . ;; 39 . esac
Voila le gros morceau en gros voila ce qu'il se passe :
Si jamais il trouve "Hydrogen" dans la variable $softwares_list renvoye par la fentre prcdente.
On cre une autre variable h2_song pour accueillir le morceau charger dans Hydrogen. Pour ce faire, on utilise une menu droulant fournit par zenity.
Vous l'aurez remarqu, les valeurs du menu droulant ne sont pas listes la main, mais gnre automatiquement par lexcution d'un ls dans le rpertoire o se trouve les morceaux d'hydrogen.
Enfin en cre la variable h2_launcher avec la commande pour lancer le soft dans le terminal
--tab : cre un nouvel onglet
-e : indique qu'il faut excuter une commande
Il est possible de lancer le logiciel avec n'importe quelle option. Ici je n'utilise que "-s" qui indique le morceau charger.
❓le printf %q permet de s'assurer que la variable arrive bien interprte... mais j'en sais pas plus
Copy to clipboard
gnome-terminal --tab -e "a2j" "${h2_launcher[@]}" &
Ensuite on lance le terminal avec tout ses onglets. Ici, j'ai mis "a2j" en dur, parce que je le lance tout le temps, donc il n'est pas dans la liste des options. J'aurais aussi pu le mettre dans la liste des logiciels avec un TRUE devant.
La syntaxe pour appeler la variable de lancement est importante : "${h2_launcher@}"
Mettez bien les guillemets et le @.
Le & la fin du launcher permet de lancer une autre commande aprs.
Copy to clipboard
sleep 10; qjackctl -a "${patchbay}"
On dis d'attendre 10 secondes (le temps que tout se lance) puis on lance qjackCTL avec la baie de brassage active qu'on aura choisi au pralable. Les connections sont ainsi restaures...
Ce code pourrait sans doutes tre grandement simplifi... Et on peut imaginer quelques options, comme par exemple ne lister que les XML des baies de brassages contenant les noms des logiciels qu'on aurait choisi...
N'hsitez pas amliorer le code prsent ici ou poster des versions alternatives!
[+]