Script de Comando de Sequência Musical Hot Corners

1

Estou escrevendo um script que usa cantos quentes para tocar notas musicais específicas ao passar o mouse em cantos e, dependendo da seqüência musical, executar um comando específico.

O script é chamado com o parâmetro -d da parte inferior esquerda, -e de b-right, -g da parte superior esquerda, -b da parte superior direita, acrescenta a sequência em um arquivo (~ / bin / for_hot) e compara a sequência com meu array associativo. Reproduz um musical B de sucesso quando a sequência é reconhecida.

2 problemas:

Às vezes, os comandos não são executados, mesmo que o som bem-sucedido seja reproduzido;

Eu não consigo desligar. [RESOLVIDO]

Acho que não estou monitorando os processos adequadamente depois (kill, background), e também o arquivo (~ / bin / for_hot) que estou anexando pode não ser gravado no momento.

Aqui está o script, por favor note que eu sou um noob no Linux, então não odeie meu código, minha pergunta, eu demais:

#!/bin/bash

#switch###############################
case "$1" in
-d) play -q -n synth 3 pluck 293.665 &
sleep 0.5
echo -n "d" >> ~/bin/for_hot;
;;
-e) play -q -n synth 3 pluck 311.127 &
sleep 0.5
echo -n "e" >> ~/bin/for_hot;
;;
-g) play -q -n synth 3 pluck 391.995 &
sleep 0.5
echo -n "g" >> ~/bin/for_hot;
;;
-b) play -q -n synth 3 pluck 466.164 &
sleep 0.5
echo -n "b" >> ~/bin/for_hot;
;;
esac
######################################

#midi mappings########################
declare -A commands
commands=( 
["egbd"]="firefox -n" 
["ebgb"]="idea" 
["ebb"]="notify-send "$instr "" 
["egdgb"]="echo pass | sudo -S poweroff"
["ee"]="nemo /home/mintbwoy");
######################################


s=$(<~/bin/for_hot);

for pattern in "${!commands[@]}";
do
echo "$pattern - ${commands["$pattern"]}";

if [[ "$s" == *"$pattern"* ]]
then
echo -n "" > ~/bin/for_hot;
play -q -n synth 3 pluck 932.328 &
var=$(${commands["$s"]});
$var;
notify-send "[$pattern] = ${commands["$pattern"]} "$var"";
fi

done
######################################
    
por Andrei Ciurea 03.05.2016 / 13:24

1 resposta

0

Eu usei o eval para executar o comando e:

var = $ ($ {commands ["$ s"]}) foi alterado para

var = $ ($ {commands ["$ padrão"]}) porque eu estava referenciando o conteúdo do arquivo em vez do padrão atual.

    
por Andrei Ciurea 16.05.2016 / 20:27