Ubuntu Suomen keskustelualueet

Ubuntun käyttö => Ubuntu tietokoneissa => Aiheen aloitti: redu - 11.09.18 - klo:16.03

Otsikko: [RATKAISTU] monen sovelluksen käynnistys scriptillä
Kirjoitti: redu - 11.09.18 - klo:16.03
"Vanhaan hyvään aikaan"
saatoin käynnistää kerralla monta sovellusta desktopissa tekstifilulla, periaatteessa näin:

Code:
#!/bin/bash
firefox &
evolution &
gedit myfiles &
exit 0

Mutta uusissa Ubuissa (eg. 18.04) käynnistyy vain tekstifilun editori.  Miten näissä uusissa Ubuissa käynnistetään scriptillä kerralla useita sovelluksia?

Huomasin, että koneen startuppiin voi tehdä multikäynnistyksen, mutta ei enää käynnissä olevaan koneeseen?

redu
Otsikko: Vs: monen sovelluksen käynnistys scriptillä
Kirjoitti: nm - 11.09.18 - klo:16.52
Nautilus avaa nykyisin skriptitiedostot oletuksena tekstieditoriin. Voit asettaa ne suoritettaviksi asetuksissa. Käynnistä tiedostoselain ja avaa yläpaneelin pudostusvalikko Tiedostot. Valitse sieltä Asetukset ja välilehti Toiminta. Valitse Suoritettavat tekstitiedostot -> Suorita ne


Yleisesti toimiva ja suositeltava vaihtoehto on luoda skriptille desktop-tiedosto: https://linuxconfig.org/how-to-create-desktop-shortcut-launcher-on-ubuntu-18-04-bionic-beaver-linux
Otsikko: Vs: monen sovelluksen käynnistys scriptillä
Kirjoitti: redu - 11.09.18 - klo:19.59
Kiitos nm,
mutta 16.04:n ja 18.04:n filemanagereitten alasvetovalikoissa ei ole mitää asetuksia? Tekstifiluissa on kyllä mahdollisuus muuttaa ne runnattaviksi, mutta silti ne aukeavat vain editoriin.

desktop-tiedosto kai sitten on tehtävä? Vaikuttaa hankalalta.

redu
Otsikko: Vs: monen sovelluksen käynnistys scriptillä
Kirjoitti: Tomin - 11.09.18 - klo:20.18
mutta 16.04:n ja 18.04:n filemanagereitten alasvetovalikoissa ei ole mitää asetuksia? Tekstifiluissa on kyllä mahdollisuus muuttaa ne runnattaviksi, mutta silti ne aukeavat vain editoriin.

Katsoitko nyt varmasti oikeasta paikasta? 18.04:ssä yläpaneelissa on tuo aktiivisen ohjelman kuvake ja nimi. Siitä klikkaamalla saat pudotusvalikon, jossa Tiedostot-ohjelmaa käytettäessä pitäisi näkyä Asetukset-kohta.
Otsikko: Vs: monen sovelluksen käynnistys scriptillä
Kirjoitti: redu - 11.09.18 - klo:20.39
Selitän, mihin pyrin:
Haluaisin tehdä naamatauluun kuvakkeen, jolla käynnistyisi kerralla kokonainen digisoitin = jack, zynaddsubfx,        midi-keyboard.
       a2midid pakottaa systeemin jack-moodiin
       qjackctl starttaa jack panelin
       pbay4work.xml on jack:in patchbay-filu
       choir.xmz on Zynaddsubfx:n preset-filu

Vanhaan hyvään aikaan joku tämmönen scripti olisi tehnyt homman:

#! /bin/bash
a2jmidid –export-hw &
qjackctl –active-patchbay=pbay4work.xml &
jack_connect &
zynaddsubfx –auto-connect –load="/home/steve/bin/choir.xmz"

Appien järjestys ja syntaksi saattavat olla viallisia, kun en ole päässyt kikeilemaan...


Tomin:in sanomaa yläpalkin aktiivisen ohjelman kuvaketta en näe missään?

redu
Otsikko: Vs: monen sovelluksen käynnistys scriptillä
Kirjoitti: nm - 11.09.18 - klo:21.07
Vanhaan hyvään aikaan joku tämmönen scripti olisi tehnyt homman:

#! /bin/bash
a2jmidid –export-hw &
qjackctl –active-patchbay=pbay4work.xml &
jack_connect &
zynaddsubfx –auto-connect –load="/home/steve/bin/choir.xmz"

Appien järjestys ja syntaksi saattavat olla viallisia, kun en ole päässyt kikeilemaan...

Voihan sen skriptin käynnistää päätteen kautta kokeilua varten. :)

Tuollaisten skriptien ajaminen työpöydän kautta on edelleen tuettua, kunhan muutat sen oletusasetuksen. Suosittelisin kuitenkin valitsemaan skriptien ajamiseen vaihtoehdon "Kysy aina" ja tekemään erillisen desktop-tiedoston työpöytä- tai käynnistinkuvaketta varten.


Tomin:in sanomaa yläpalkin aktiivisen ohjelman kuvaketta en näe missään?

Esimerkiksi tässä kuvakaappauksessa Files-valikko (suomeksi Tiedostot) näkyy yläpaneelin vasemmassa laidassa, kun tiedostoselain on auki ja fokuksessa:

(https://www.omgubuntu.co.uk/wp-content/uploads/2018/04/nautilus-in-ubuntu-18.04.jpg)
Otsikko: Vs: monen sovelluksen käynnistys scriptillä
Kirjoitti: redu - 12.09.18 - klo:12.43
Kiitos pirusti nn!
Nyt homma alkoi sujua.
Etsitty "Files"-alasvetovalikko onkin siis Ubun desktopin yläpalkissa. Olen tyhmä!
Files / Preferences / Behavior / Executable text files   "Run them"

redu
Otsikko: Vs: monen sovelluksen käynnistys scriptillä
Kirjoitti: redu - 27.09.18 - klo:14.55
Nautilus avaa nykyisin skriptitiedostot oletuksena tekstieditoriin. Voit asettaa ne suoritettaviksi asetuksissa. Käynnistä tiedostoselain ja avaa yläpaneelin pudostusvalikko Tiedostot. Valitse sieltä Asetukset ja välilehti Toiminta. Valitse Suoritettavat tekstitiedostot -> Suorita ne


Yleisesti toimiva ja suositeltava vaihtoehto on luoda skriptille desktop-tiedosto: https://linuxconfig.org/how-to-create-desktop-shortcut-launcher-on-ubuntu-18-04-bionic-beaver-linux

nm,
kokeilin tätä desktop-tiedostoa scriptin sijasta, koska tähän saa mukaan oman ikoninkin. Esimerkki on antamassasi linkissä:

#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=/snap/bin/skype
Name=Skype
Comment=Skype
Icon=/snap/skype/23/usr/share/icons/hicolor/256x256/apps/skypeforlinux.png

Toimii muuten kivasti, mutta tuo Exec-komento sallii näämmäs vain yhden terminaalikomennon, enkä saa millään konstilla kahta peräkkäistä komentoa peliin.


Scriptiversiossa saatan lisätä useita komentoja esimerkiksi & välimerkillä erotellen, mutta tässä desktop-tiedostossa ei mokoma toimi. Vai olenko taas tyhmä?

Tekemän scriptiesimerkki, joka hallitsee kaksi komentoa:
#!/bin/bash
qjackctl &
zynaddsubfx   (plus zynin optiomäärittelyt)


Otsikko: Vs: [RATKAISTU] monen sovelluksen käynnistys scriptillä
Kirjoitti: SuperOscar - 27.09.18 - klo:15.07
Eikö ratkaisu ole yksinkertainen:  .desktop-tiedosto osoittaa skriptiin, joka käynnistää varsinaiset ohjelmat?
Otsikko: Vs: [RATKAISTU] monen sovelluksen käynnistys scriptillä
Kirjoitti: redu - 27.09.18 - klo:15.24
Eikö ratkaisu ole yksinkertainen:  .desktop-tiedosto osoittaa skriptiin, joka käynnistää varsinaiset ohjelmat?
Ovela idea Superi!
Muttei toiminut - ainakaan heti? Näyttö menee pimeäksi, eikä edes terminaali näytä mitään (Terminal=true).

On hassua, että jos kirjoitan desktop-tiedostoon useita Exec= rivejä, niin Ubu 18.04 suorittaa niistä vain viimeisen? Miksi ei ensimmäistä?
Otsikko: Vs: [RATKAISTU] monen sovelluksen käynnistys scriptillä
Kirjoitti: Tomin - 27.09.18 - klo:16.01
Muttei toiminut - ainakaan heti? Näyttö menee pimeäksi, eikä edes terminaali näytä mitään (Terminal=true).

Mitä tarkoitat, että näyttö meni pimeäksi? .desktop-tiedoston ei kyllä itse pitäisi sellaista voida mitenkään aiheuttaa. Terminal=true määrittelee, että komennot on ajettava pääte-emulaattorissa (esim. gnome-terminal) eli silloin aukaistaan uusi päätteen ikkuna. Sinänsä sitä ei tarvita, jos päätteeseen ei ole tarkoitus kirjoittaa mitään eikä sieltä ole tarkoitus lukea mitään.

On hassua, että jos kirjoitan desktop-tiedostoon useita Exec= rivejä, niin Ubu 18.04 suorittaa niistä vain viimeisen? Miksi ei ensimmäistä?

Johtunee tavasta, jolla tiedostoa luetaan. Jokainen Exec määrittely ylikirjoittaa edellisen, joten vain viimeinen käytetään. Lopulta suoritetaan se määrittely, joka oli saatu parsinnan tuloksena. Noihin kun ei ole ajateltu laitettavan useampia Exec-määrittelyjä.
Otsikko: Vs: monen sovelluksen käynnistys scriptillä
Kirjoitti: nm - 27.09.18 - klo:16.41
Toimii muuten kivasti, mutta tuo Exec-komento sallii näämmäs vain yhden terminaalikomennon, enkä saa millään konstilla kahta peräkkäistä komentoa peliin.

Pitäisi onnistua näin:

Koodia: [Valitse]
Exec=sh -c "qjackctl & zynaddsubfx"
Otsikko: Vs: monen sovelluksen käynnistys scriptillä
Kirjoitti: redu - 27.09.18 - klo:17.17
Toimii muuten kivasti, mutta tuo Exec-komento sallii näämmäs vain yhden terminaalikomennon, enkä saa millään konstilla kahta peräkkäistä komentoa peliin.

Pitäisi onnistua näin:

Koodia: [Valitse]
Exec=sh -c "qjackctl & zynaddsubfx"

Kiitos taas nm!
Tällä lainausmerkkitempulla toimii. Mistä Ubuntun syövereistä tillasta oppia löytyy? Haluaisin oppia, kun kohta taas mennee jollakin toisella tavalla vaikeaksi.
Otsikko: Vs: monen sovelluksen käynnistys scriptillä
Kirjoitti: nm - 27.09.18 - klo:18.39
Tällä lainausmerkkitempulla toimii. Mistä Ubuntun syövereistä tillasta oppia löytyy? Haluaisin oppia, kun kohta taas mennee jollakin toisella tavalla vaikeaksi.

Googlaamalla löytyy vastauksia melkein mihin tahansa vastaan tulevaan pulmaan. Jos kyseessä on tuore ohjelmisto-ongelma esimerkiksi päivityksen jälkeen, uusi hakuyritys muutaman päivän kuluttua voi olla hedelmällisempi.
Otsikko: Vs: monen sovelluksen käynnistys scriptillä
Kirjoitti: Postimies - 27.09.18 - klo:22.38

Tällä lainausmerkkitempulla toimii. Mistä Ubuntun syövereistä tillasta oppia löytyy? Haluaisin oppia, kun kohta taas mennee jollakin toisella tavalla vaikeaksi.
Kyllä komentotulkin dokumentaatiota tai vihjeitä käytöstä kannattaa lukea. Unix komennot lyhyitä ja pienet erot merkittäviä. Esim && tarkoittaa, että seuraava ohjelma suoritetaan vasta kun edellinen on suoritettu loppuun mikä voi olla kätevää. & merkitsee, että ohjelma käynnistetään taustalle. Tuollaisia pikku eroja on paljon.
Otsikko: Vs: monen sovelluksen käynnistys scriptillä
Kirjoitti: Tomin - 27.09.18 - klo:23.27

Tällä lainausmerkkitempulla toimii. Mistä Ubuntun syövereistä tillasta oppia löytyy? Haluaisin oppia, kun kohta taas mennee jollakin toisella tavalla vaikeaksi.
Kyllä komentotulkin dokumentaatiota tai vihjeitä käytöstä kannattaa lukea. Unix komennot lyhyitä ja pienet erot merkittäviä. Esim && tarkoittaa, että seuraava ohjelma suoritetaan vasta kun edellinen on suoritettu loppuun mikä voi olla kätevää. & merkitsee, että ohjelma käynnistetään taustalle. Tuollaisia pikku eroja on paljon.

Ja sitten kun mietit, että && merkitseekin and-operaatiota ja tarkoittaa sitä, että suoritetaan ensimmäinen komento ja jos sen totuusarvo on tosi, niin suoritetaan toinenkin ja sitten palautetaan sen viimeksi suoritetun totuusarvo. Mutta joo, tuotahan sillä useinkin tehdään. Mitäpä jos teetkin näin: "komento1 || komento2"?

Huomautan siis, että kun sanon tässä "tosi", niin tarkoitan, että komennon suoritus oli onnistunut ja se palautti arvon 0. Muu arvo tarkoittaisi virhettä eli "epätosi".
Otsikko: Vs: [RATKAISTU] monen sovelluksen käynnistys scriptillä
Kirjoitti: Postimies - 28.09.18 - klo:00.23
Hyvä huomio. Usein halutaan, että seuraava tehdään vain kun ensimmäinen on onnistunut. Tätä voi testata yksinkertaisesti
Koodia: [Valitse]
$ false || echo Hei!
 $ true || echo Hei!
 $ true && echo Hei!

Jos suorituksen onnistumisella ei väliä ";" riittää erotukseksi.

Otsikko: Vs: [RATKAISTU] monen sovelluksen käynnistys scriptillä
Kirjoitti: redu - 03.10.18 - klo:13.24
.dektop-scriptini
toimivat nyt vallan mainiosti. Kiitos etenkin mn:lle. Tässä on esimerkki:

#!/usr/bin/env xdg-open
####################################
#
# Start Zyn.dektop application
#
####################################
[Desktop Entry]
Version=1.0
Name=6sine
Type=Application
Terminal=false
Exec=sh -c "/usr/bin/qjackctl  & /usr/bin/zynaddsubfx --load=/home/redu/Zyn/presets/B3DET/detune2keyb3form2018b.xmz"
Icon=/home/redu/Zyn/Icons/b3.png

Qjackctl ja ZynAddSub käynnistyvät yhtä kuvallista ikonia klikkaamalla. "detune2keyb3form2018b" on preset, joka käynnistyy Zyn:in mukana. Kätevää.
Minulla on näytöllä n kpl tämäntyyppisiä .dektop-ikoneita, ja jokaisesta käynnistyy erilainen soittimen uusi soundi.

On kuitenkin kiusallista, että soundinvaihto vaatii kaksi klikkausta. Sammutus-scriptin klikkaus sammuttaa edellisen Zyn:in (killall zynaddsubfx), ja toinen klikkaus (uusi .desktop-filu, jossa on mukana uusi soundi) käynnistää Zynin uudelleen.
Miten pärjäisin soundinvaihdossa yhdellä klikkauksella? .desktop-scriptin Exec-rivi ei näytä hyväksyvän "killall zynaddsubfx":ää.
Oikeastaan on turhaa sammuttaa Zyn soundivaihdossa, mutta "preset"-vaihto Zynin valikoitten kautta on soitellessa aivan liian hidas menetelmä.

Otsikko: Vs: [RATKAISTU] monen sovelluksen käynnistys scriptillä
Kirjoitti: nm - 03.10.18 - klo:13.47
Miten pärjäisin soundinvaihdossa yhdellä klikkauksella? .desktop-scriptin Exec-rivi ei näytä hyväksyvän "killall zynaddsubfx":ää.

Toimiiko näin:

Koodia: [Valitse]
Exec=sh -c "/usr/bin/killall zynaddsubfx; /usr/bin/qjackctl & /usr/bin/zynaddsubfx --load=/home/redu/Zyn/presets/B3DET/detune2keyb3form2018b.xmz"
Otsikko: Vs: [RATKAISTU] monen sovelluksen käynnistys scriptillä
Kirjoitti: redu - 03.10.18 - klo:15.19
Miten pärjäisin soundinvaihdossa yhdellä klikkauksella? .desktop-scriptin Exec-rivi ei näytä hyväksyvän "killall zynaddsubfx":ää.

Toimiiko näin:

Koodia: [Valitse]
Exec=sh -c "/usr/bin/killall zynaddsubfx; /usr/bin/qjackctl & /usr/bin/zynaddsubfx --load=/home/redu/Zyn/presets/B3DET/detune2keyb3form2018b.xmz"

Kappas... toimii. Puolipiste ; toimii siis erilailla kuin &. Voin ketjuttaa puolipisteillä useampiakin käskyjä. Hienoa nm!
Edit:
Tai... taitaa sittenkin tulla ongelma, jos osascripteissä on "kill", "qjackctl" ja "zyn". Mutta kahdellakin pärjään ihan hyvin:
Yksi .desktop-scripti on nyt "master", jossa ei ole killall:ia, vaan qjackctl & zynaddsubfx presetteineen ja muut ovat slave:ja joissa on killall & uusi zyn uusine presetteineen.
Nyt nopea preset-vaihto toimii, mutta master-preset on aina käynnistettävä ensin.
Otsikko: Vs: [RATKAISTU] monen sovelluksen käynnistys scriptillä
Kirjoitti: nm - 03.10.18 - klo:15.44
Kappas... toimii. Puolipiste ; toimii siis erilailla kuin &. Voin ketjuttaa puolipisteillä useampiakin käskyjä.

Jep. Komentotulkki suorittaa puolipistettä edeltävän komennon ja jää odottamaan, että sen suoritus päättyy. &-merkki taas käynnistää edeltävän komennon taustalle alikomentotulkkiin, ja jatkaa suoritusta välittömästi seuraaviin komentoihin.

Tomin mainitsemat && ja || toimivat puolipisteen tavoin, paitsi että edeltävän komennon palautusarvo tulkitaan ja seuraava komento suoritetaan tai jätetään suorittamatta sen mukaisesti. && suorittaa seuraavan komennon, jos ja vain jos palautusarvo on 0, eli onnistunut. || suorittaa seuraavan, jos ja vain jos palautusarvo on jokin muu kuin 0, eli epäonnistunut.

Lisäksi on mahdollista tehdä if - else ketju tähän tapaan:

Koodia: [Valitse]
jokukomento && echo onnistui || echo epäonnistui

Edit:
Tai... taitaa sittenkin tulla ongelma, jos osascripteissä on "kill", "qjackctl" ja "zyn".

Eli qjackctl ei tykkää, että se käynnistetään uudelleen, kun prosessi on jo käynnissä? Siinä tapauksessa voisi tarkistaa vaikka pgrepillä, onko ohjelma jo käynnissä ennen kuin yrittää käynnistää sen uudelleen:

Koodia: [Valitse]
Exec=sh -c "/usr/bin/killall zynaddsubfx; /usr/bin/pgrep qjackctl || /usr/bin/qjackctl & /usr/bin/zynaddsubfx --load=/home/redu/Zyn/presets/B3DET/detune2keyb3form2018b.xmz"
(Sivuhuomiona /usr/bin-polun määrittäminen taitaa olla turhaa noissa komennoissa, kun sen pitäisi olla PATH-ympäristömuuttujassa.)
Otsikko: Vs: [RATKAISTU] monen sovelluksen käynnistys scriptillä
Kirjoitti: redu - 03.10.18 - klo:16.24
nm,
Exec=sh -c "killall zynaddsubfx; pgrep qjackctl && qjackctl & zynaddsubfx --load=/home/redu/Zyn/presets/B3DET/detune2keyb3form2018b.xmz"
Ei ihan toimi? Se ei käynnistä qjackctl:ia ollenkaan.
Minusta qjackctl ei välitä, vaikka se käynnistetään uudelleen? Eikä se starttaa koskaan uusiksi uuteen ikkunaan. Zynaddsubfx taas strttaa uusiksi uuteen ikkunaan, mutta vain vanhan ikkunan preset on aktiivinen.
Otsikko: Vs: [RATKAISTU] monen sovelluksen käynnistys scriptillä
Kirjoitti: AimoE - 03.10.18 - klo:17.02
nm,
Exec=sh -c "killall zynaddsubfx; pgrep qjackctl && qjackctl & zynaddsubfx --load=/home/redu/Zyn/presets/B3DET/detune2keyb3form2018b.xmz"
Ei ihan toimi? Se ei käynnistä qjackctl:ia ollenkaan.

Olet vaihtanut nm:n antamassa komennossa tai-merkin (eli ||) tilalle ja-merkin (eli &&).
Otsikko: Vs: [RATKAISTU] monen sovelluksen käynnistys scriptillä
Kirjoitti: nm - 03.10.18 - klo:17.22
nm,
Exec=sh -c "killall zynaddsubfx; pgrep qjackctl && qjackctl & zynaddsubfx --load=/home/redu/Zyn/presets/B3DET/detune2keyb3form2018b.xmz"
Ei ihan toimi? Se ei käynnistä qjackctl:ia ollenkaan.

Joo siinä oli bugi ja muokkasin viestiä. &&:n tilalla täytyy siis olla ||


Minusta qjackctl ei välitä, vaikka se käynnistetään uudelleen? Eikä se starttaa koskaan uusiksi uuteen ikkunaan. Zynaddsubfx taas strttaa uusiksi uuteen ikkunaan, mutta vain vanhan ikkunan preset on aktiivinen.

En ole varma, ymmärsinkö oikein, mutta jos killall ei ehdi sulkea vanhaa zynaddsubfx:ää ennen kuin uusi käynnistyy, ketjuun voi vaikka lisätä hieman viivettä sleep-komennolla:

Koodia: [Valitse]
Exec=sh -c "/usr/bin/killall zynaddsubfx; sleep 1; /usr/bin/pgrep qjackctl || /usr/bin/qjackctl & /usr/bin/zynaddsubfx --load=/home/redu/Zyn/presets/B3DET/detune2keyb3form2018b.xmz"
Otsikko: Vs: [RATKAISTU] monen sovelluksen käynnistys scriptillä
Kirjoitti: redu - 03.10.18 - klo:18.16
Kiitos oikasusta!
Nyt ||-välimerkillä .desktop scriptit toimvat itseellisinä ihan oikein. Nopein tapa vaihtaa Zyn:in soundeja?