[Ratkaisu] Cronin suorittama rhythmbox-client –print-playing-format ei toimi

Lähtökohta
Olen asentanut notification-daemon-paketin. Minulla on komentojonotiedosto, joka ajaa rhythmbox-client-ohjelman --print-playing-format -parametrilla, joka tulostaa muuttujaan tallennettavaksi Rytmilaatikko-musiikkisoittimen suoritushetkellä soittaman kappaleen nimen. Komentoriviltä suoritettuna komentojonotiedosto tulostaa kappaleen nimen muuttujaan tarkoittamallani tavalla. Olen asettanut komentojonotiedoston crontab-tiedostossani suoritettavaksi kerran minuutissa.
Ongelma
Cronin suorittaessa komentojonotiedostoni kappaleen nimi ei tulostu muuttujaan. Haluan sen tulostuvan muuttujaan samalla tavalla kuin komentoriviltä suoritettaessa.
Ongelman syy
Rytmilaatikko vaatii toimiakseen, että DBUS_SESSION_BUS_ADDRESS -niminen muuttuja on asetettu. Cronin suorittaessa komentojonotiedostoani muuttujaa ei kuitenkaan ole asetettu.
Ratkaisu
Teen komentojonotiedoston, joka lukee käynnissä olevan rhythmbox-client -prosessin näkemän DBUS_SESSION_BUS_ADDRESS -muuttujan arvon ja ajaa uuden rhythmbox-clientin halutuilla parametreilla.

#!/bin/sh

user=`whoami`
pid=`pgrep -u $user notification-da | cut -d' ' -f 1`

# find DBUS session bus for this session
DBUS_SESSION_BUS_ADDRESS=`grep -z DBUS_SESSION_BUS_ADDRESS \
	/proc/$pid/environ |sed -e 's/DBUS_SESSION_BUS_ADDRESS=//'`

# if it was successfull, then we either print it,
# or export it or whatever, if we want
if [ "x$DBUS_SESSION_BUS_ADDRESS" != "x" ]; then
    export DBUS_SESSION_BUS_ADDRESS
    # and we start using rhythmbox-client
    rhythmbox-client --no-start --print-playing-format "%aa: %tt"
fi

Lataa rhythmbox-print-playing (530 tavun komentojonotiedosto)

Tallennan komentojonotiedoston tiedostonimellä rhythmbox-print-playing kotihakemistossani olevaan bin-alihakemistoon, minkä jälkeen muutan sen oikeuksia chmod +x ~/bin/rhythmbox-print-playing -komennolla niin, että voin suorittaa sen. Sitten muutan Lähtökohta-otsikon alla mainitsemaani, alun perin rhythmbox-clientia suoraan kutsunutta komentojonotiedostoa niin, että rhythmbox-clientin sijaan se suorittaa nyt rhythmbox-print-playing -tiedostoni. Sen jälkeen parhaillaan soiva kappale tulostuu komentojonossa muuttujaan myös silloin, kun komentojonon suoritus tapahtuu cronin tekemänä.

Huomautus
Mikään löytämistäni valmiista komentojonotiedostoista (esimerkki 1, 2) ei toiminut sellaisenaan. Yllä oleva komentojonotiedosto on niiden perusteella tekemäni oma sovellus.

Comments

2 responses to “[Ratkaisu] Cronin suorittama rhythmbox-client –print-playing-format ei toimi”

  1. […] parametreineen. Cron-suoritus lukisi komentoriviprofiilini ja lisäksi selvittäisi DBUS_SESSION_BUS_ADDRESS -muuttujan arvon ennen kuin suorittaisi sille komentorivillä annetun komentojonotiedoston […]

  2. […] (PATH-muuttuja) joukkoon komentoriviprofiilissani. Olen tallentanut bin-hakemistoon rhythmbox-print-playing -komentojonotiedoston ja todennut sen […]