Kirjoittaja Aihe: Ohjelmat käyntiin skriptillä valituille työpöydille ?  (Luettu 3048 kertaa)

vesa_turp

  • Käyttäjä
  • Viestejä: 16
    • Profiili
Käynnistelen skripteillä ohjelmia - siis multimediaa: qjackctl, ardour, muse jne.
Onko olemassa kikka kakkosta jolla ne sijoittuisivat omille työpöydilleen jo tuossa käynnistysvaiheessa.

Heikki Ketoharju

  • Käyttäjä
  • Viestejä: 716
  • Tee enemmän, harmittaa vähemmän!
    • Profiili
    • heikki.ketoharju.info
Vs: Ohjelmat käyntiin skriptillä valituille työpöydille ?
« Vastaus #1 : 03.12.17 - klo:19.20 »
Nyt vasta huomasin viestisi, ja siksi siis vastaus tulee hieman pitkällä viiveellä. Minulla on ollut täsmälleen sama ongelma musasoftien kanssa, ja olen ratkonut sitä vaihtelevasti.

Suosittelisin ensimmäisenä kokeilemaan helppoa ratkaisua. Jos olet Gnome-työpöydällä, asenna lisäosa nimeltä Auto Move Windows. Sillä voit käskeä tietyt ohjelmat aukeamaan aina tietyille työpöydille. Toinen kätevä lisäosa Gnomeen on Put Windows. Sillä voit säätää ikkunan kokoa ja sijaintia.

KDE:ssa vastaava asetus löytyy oletuksena. Tässä lyhyet ohjeet: https://unix.stackexchange.com/questions/45674/kde-how-to-bind-permanently-an-application-to-a-desktop-activity


...mutta tällaisten helppojen ratkaisujen sijasta voit tietysti tehdä asiat skriptaamalla!

Yhdessä vaiheessa kirjoitin skriptejä, joka vaihtoivat työpöytää, sitten käynnistivät ohjelman, nukkuivat tarvittavat pari sekuntia, vaihtoivat taas työpöytää jne. Vähän tehoton ja purkanmakuinenkin viritelmä, mutta kyllä se toimi.

Tässä esimerkikssi skripti, jota käytin progebändini kanssa livekeikoilla. Skriptin alkuosa käynnistää eri ohjelmat omille työpöydilleen. Työpöytää vaihdetaan xdotool -komennolla. Se pitää siis asentaa järjestelmään, jotta homma toimii.
Koodia: [Valitse]
#vaihda ensimmäiselle työpöydälle:
xdotool set_desktop 0
#toinen työpöytä:
xdotool set_desktop 1
#jne...

Käynnistettyään eri ohjelmat skripti menee looppiin, jonka avulla käynnistettyjä softia voi hallita. Jos keikalla tai treeneissä sattui tilanne, että jokin softa kaatui, pystyin tuolla "livekonsolilla" suhteellisen nopeasti korjaamaan ongelman.

Painamalla R-näppäintä midikytkennät käynnistettiin uudelleen. M-näppäin taas käynnisti uudelleen mididingsin.

Koodia: [Valitse]
#!/bin/bash

cd /media/data/archtest-home/heikki/

#a2jmidid dbus service with hardware ports enabled
a2j -e &

#this starts the Mididings script
./studio/harmainvalta_livesetup.mididings &
MIDIDINGS_PID=$!

xdotool set_desktop 1
#mididings-gui. Option -T makes it look better ;-)
livedings -T &
LIVEDINGS_PID=$!

sleep 1

xdotool set_desktop 4

linuxsampler&
LINUXSAMPLER_PID=$!

qsampler synat/GIGS/harmainvalta2.lscp &
QSAMPLER_PID=$!

qsynth --midi-driver=jack &
QSYNTH_PID=$!

sleep 1

xdotool set_desktop 1

echo -e "\n\n\n####################################################"
echo -e "#  WELCOME TO HARMAINVALTA LIVE SETUP CONSOLE!     #"
echo -e "#################################################### \n\n"

while [ 1 ]; do

echo -e "\n\nPress q to quit, p to see current processes"
echo -e "r to restart a2jmidid, m to restart mididings, a to run start sequence ";
# lets read the key press to $key variable:
# -e means that after input comes a line feed and
# -n 1 reads just one key without waiting enter.
read -e -n 1 key
echo -e "\n\n"

if [ $key == "q" ] || [ $key == "Q" ]; then
echo "Are you sure you want to quit? [y/n]"
read -e -n 1 key
if [ $key == "y" ]; then
break;
fi
elif [ $key == "p" ] || [ $key == "P" ]; then
jobs
elif [ $key == "r" ] || [ $key == "R" ]; then
killall -9 a2jmidid
a2j -e &
sleep 1
elif [ $key == "m" ] || [ $key == "M" ]; then
kill $MIDIDINGS_PID
./studio/harmainvalta_livesetup.mididings &
sleep 1
MIDIDINGS_PID=$!
elif [ $key == "a" ] || [ $key == "A" ]; then
echo "Are you sure you want to run start sequence? [y/n]"
read -e -n 1 key
if [ $key == "y" ]; then
mplayer -ao jack -volume 35 "./samplet/MINA LAHDEN YKSIN.wav"
fi
fi

done

killall -9 a2jmidid
kill $QSYNTH_PID
kill $LINUXSAMPLER_PID
kill $QSAMPLER_PID
kill $LIVEDINGS_PID
kill $MIDIDINGS_PID

echo -e "\nLivesetup terminated! Have a nice day!"

Aika hieno kikka muuten skriptissä on myös, että se ottaa talteen viimeisimmän ajetun komennon PID:n omaan muuttujaansa. Esimerkiksi Mididingsin käynnistämisen jälkeen on tällainen rivi:
Koodia: [Valitse]
MIDIDINGS_PID=$!Tuossa luetaan viimeisimmän käynnistetyn ohjelman, eli siis mididingsin PID muuttujasta $! ja tallennetaan muuttujaan MIDIDINGS_PID. Näin myöhemmin skriptissä on helppo tappaa kaatunut Mididings komennolla
Koodia: [Valitse]
kill MIDIDINGS_PID
Tuo skripti muuten osasi myös soittaa meidän bändille keikan loppuun hienot loppufanfaarit, kun painoi A-näppäintä. Soittamiseen käytettiin mplayer-ohjelmaa, jota kylläkään en voi suositella. Se on tarkoitettu normaaliksi mediasoittimeksi, ei mihinkään livekäyttöön.
« Viimeksi muokattu: 03.12.17 - klo:19.31 kirjoittanut Heikki Ketoharju »
-
Minä kirjoittelen suomenkielisiä ohjeita Linux-musiikintekoon:
http://linux.fi/wiki/Musiikinteko_Linuxilla
-
Kansainvälinen Linux-audio -wiki, sovellusluettelo ja äänikorttitietokanta:
http://wiki.linuxaudio.org

retu

  • Käyttäjä
  • Viestejä: 949
    • Profiili
Vs: Ohjelmat käyntiin skriptillä valituille työpöydille ?
« Vastaus #2 : 03.12.17 - klo:20.07 »
Ja xfce-työpöytää käyttäessä voi uloskirjautumisen yhteydessä ruksia "Tallenna istunto". Jatkossa tuolloin auki olleet ohjelmat käynnistyvät omille työpöydilleen aina, kun kirjaudut sisään.

vesa_turp

  • Käyttäjä
  • Viestejä: 16
    • Profiili
Vs: Ohjelmat käyntiin skriptillä valituille työpöydille ?
« Vastaus #3 : 06.12.17 - klo:07.12 »
Kiitoksia vihjeistä
minulle tuo "xdotool" on uutta tietoa.
Kun laitan kotistudion käyntiin scriptillä, käynnistyksellä ei ole kiireen häivääkään - elikä tuo työpöydän vaihto/käynnistys, vaihto/käynnistys jne toimii varmasti hyvin.
perus litania usein on: qjackctl, a2jmidid, qmidinet, qmidiroute (ehkä * 4),  muse ja ehkä ardour
Soittimet ovat rautaa ja kytketyt aidolla midillä tietokoneisiin. Ja koskapa kotiverkossa on useita myllyjä samoissa hommissa, helpottavat nämä scriptit elämää kummasti.
ryhdymma testaamaan - kiitos !