=============
gShrooms 0.1.1
=============

I will assume
 * We are working in a jhbuild shell
 * $JHBUILD is the install root (like /opt/gnome2/)
 * $RHYTHMBOX is the jhbuild location of rhythmbox source code
 * We are in home directory ~/
 
=============
Downloading
=============
You will need the following patches and files because rhythmbox
hasn't been patched yet in CVS.

* The Rhythmbox CVS Patch 3:
	wget 'http://raphael.slinckx.net/files/gshrooms/rb-gshrooms-3.patch'

=============
Building
=============
* Checkout nattraverso from SVN: 
	svn co https://svn.nattraverso.python-hosting.com/nattraverso/trunk nattraverso

* Install nattraverso:
	cd nattraverso
	python setup.py install
	cd ~
		
* Checkout gshrooms from gnome CVS:
	cvs -d :pserver:anoncvs@anoncvs.gnome.org:/cvs/gnome co gshrooms

* Make and install gshrooms:
	cd gshrooms
	./autogen.sh --prefix $JHBUILD
	make && make install
	cd ~

* Checkout and rhythmbox CVS: 
	jhbuild update rhythmbox

* Patch it to work with gshrooms:
	cd $RHYTHMBOX
	patch -p0 < ~/rb-gshrooms-2.patch
	jhbuild buildone rhythmbox
	cd ~

* Install Gaim plugin:
	mkdir -p ~/.gaim/plugins
	cp $JHBUILD/lib/gaim/gshrooms* ~/.gaim/plugins
	
* Install GConf schemas:
	gconftool-2 --install-schema-file ~/gshrooms/data/gshrooms.schemas

=============
Running
=============
Now you should be able to launch rhythmbox, gshrooms server, and gaim+plugin,
I suggest opening three terminals with jhbuild shell in it.

* Launch gshrooms server:
	cd gshrooms
	python gshrooms/gshrooms/gshrooms --debug
	
* Launch patched rhythmbox:
	cd $RHYTMHBOX
	./shell/rhythmbox
	
* Launch regular gaim:
	gaim
	Go to Preferences menu, enable gShrooms plugin, you can set the various settings, too.

Now, in theory you are setup.

The Known Problems:
------------------
If there are any errors in one of the consoles, then you have a problem, come and
discuss on IRC (see below), maybe it's a missing import, then you need to download
the dependencies, like Twisted, or SOAPpy.

If the gshrooms console shows "got External ip" with a LAN ip, like 192.168.x.x, 
gshrooms won't work for you yet, because your pc isn't accessible from the internet, 
you are most likely behind a firewall/NAT. However if your NAT device has UPnP support
you should be able to use it, if not it's a bug, come and discuss.

The "Hey it just works" situation:
----------------------------------
Choose a buddy in your list, talk to him, you should see gaim console output
stating it received an url at some point (you need some message exchange
before this happens, so your buddy has to answer, then you again, etc).

When the url line appeared next message you send wil announce your stream to the buddy.
If he has the plugin, he will see a bold line in the conversation and a "Listen" button.

If he opens patched rhythmbox, he wil be able to see you in the Buddy Music source.

When you change song in rhythmbox, your buddy will receive a new song notification, and
his patched rhythmbox will update title/artist/album.

When your buddy click listen button, rhythmbox connects to your streamer and starts playing

If your buddy close/reopen the conversation, the listen button should still be there, it will disappear
only when you have been disconnected from gaim.

If your buddy close/reopen rhythmbox, it should still see the buddies in the list

If your buddy close/reopen gaim, it will forget about the feed you announced, but re-talking to him should
announce the feed again.

Random Remarks:
--------------
* Make sure you don't have any firewall except those who can be opened by upnp,
 I have to close my machine's firewall for example, my router is punched through UPnP
 
* You can add me to your buddy list to test this with me, with one of these addresses:
	kikidonk@amessage.be (Jabber)
	rslinckx@gmail.com (Google Talk, that's hype)
	
* I appreciate feedback on IRC, (server: irc.gimp.org), channel #rhythmbox or #sog
* Please reports your problems to me, raphael@slinckx.net !

=============
Credits
=============
Thanks to Google's Summer of Code Program for allowing me to be paid
while enjoying writing this application, and for contributing to the 
open source community !
