Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Moonlight, an open source implementation of Silverlight for Unix systems

README
This is Moonlight, an open source implementation of Silverlight 1.0
and 2.0 for Unix systems.   

See http://www.mono-project.com/Moonlight for more information. 

Installation
============

	For standard Unix configuration/installation instructions, see the INSTALL file.

Requirements
============

	At this time, Moonlight trunk (this release) requires you to use
	Mono trunk. To build Moonlight, you need to get the mono, mcs and
	mono-basic modules from trunk at the following revison: 158142

	Do this like this:
            svn co http://anonsvn.mono-project.com/source/trunk/moon
            svn co -r 158142 http://anonsvn.mono-project.com/source/trunk/mono
            svn co -r 158142 http://anonsvn.mono-project.com/source/trunk/mcs
            svn co -r 158142 http://anonsvn.mono-project.com/source/trunk/mono-basic


Compiling Mono for Moonlight
============================

	Automatic Mode (recommended)
	==============

	This is recommended if you haven't built Mono before. This is also recommended if you
	have clean mono and mcs checkouts that you are going to use just for Moonlight.

	In this mode, you don't have to build Mono before building Moonlight, so you just do

                cd moon
                ./autogen.sh
                make && make install


	This will configure your Mono source tree with the minimum options required
	to build it for Moonlight. At the moment, these are:

		--with-moonlight=only --with-profile4=no --enable-minimal=aot,interpreter
		--with-ikvm-native=no --with-mcs-docs=no --disable-nls --disable-mono-debugger

	This Mono configuration will not be suitable for anything except Moonlight.


	Build only Mode (advanced)
	==========================

	This is recommended if you have built Mono before and you would like Moonlight to use
	your existing Mono source tree. This is for advanced users only - make sure you know
	what you're doing.

	In this mode, Moonlight will not touch your existing Mono configuration, it will build
	the parts it needs. Since it doesn't do a full build of mono+mcs, it's faster than a
	normal mono+mcs build.

	Before building moon, you need to make sure your mono configuration includes the
	following options:

		--with-moonlight=yes

	To build moon in this mode, configure it with the following options:

		--with-manual-mono=build


	Manual Mode (really advanced)
	=============================

	On this mode, moon will not configure or build mono, you have to do it yourself.
	To activate this mode, configure moon with --with-manual-mono=yes



Configuration options
=====================

	If your mono/mcs checkout is not in the same place where you have your moon
	source, you can configure moon with:

		--with-mcs-path=/path/to/mcs


	To build Moonlight with pixel shader support, you need to get the mesa
	module from freedesktop.org. Last known revision to work is
	59e743b8d393f2bdf023e3a5ad8fe848a7459ec9

	Do this like this:

                git clone git://anongit.freedesktop.org/mesa/mesa
                cd mesa
                git checkout 59e743b8d393f2bdf023e3a5ad8fe848a7459ec9 -b moonlight
                ./autogen.sh --with-driver=xlib && cd src/gallium && make

	There is no need to do a make install this.

	If you want to use ffmpeg with Moonlight, you need at least r20911 of ffmpeg and r30099 of libswscale:

		svn co -r 20911 svn://svn.mplayerhq.hu/ffmpeg/trunk && cd trunk/libswscale && svn up -r 30099

Installing and Testing
======================

	If you want to test your newly installed Moonlight, do this:

		make test-plugin

	This will install it into your ~/.mozilla/plugins which will let
	both Firefox and Chrome pick it.


Runtime Options
===============

	There are a couple of runtime-parameters that affect Moonlight behavior
	and turn on/off certain features. Those options are specified through
	the MOONLIGHT_OVERRIDES env variable. The more interesting ones are:

	* shapecache=yes/no 

		Use some extra memory for caching shapes.  Increases
		memory usage but helps with performance (off by
		default). The shape cache size is 6MB max.

	* render=ftb/btf

		Use front-to-back or back-to-front rendering (ftb is
 		the default).

	* cache=show/hide 

		Show the (shape) cache usage statistics. In plugin
		mode they're available through the right-click popup
		menu (hide by default). 

	* converter=yuv/ffmpeg 

		Use native mmx/sse2 conversion code or ffmpeg to do
		the yuv -> rgb colorspace conversion (by default we
		use the native yuv code).

	To launch Firefox with shape caching and ffmpeg converters use:

		$> MOONLIGHT_OVERRIDES="shapecache=yes,converter=ffmpeg" firefox


	Other options include:

	* ms-codecs=yes/no
	* ffmpeg-codecs=yes/no

		Controls which sets of codecs to use, the Microsoft
		ones or the ffmpeg ones.

	* timesource=manual/system

		Defaults to `system'.   


	Also if --with-debug=yes option was provided to configure script, the
	MOONLIGHT_DEBUG env variable controls which debug output is printed
	on the console. Valid values are: 

        	alsa, alsa-ex, audio, audio-ex, pulse, pulse-ex, httpstreaming, 
        	markers, markers-ex, mms, mediaplayer, mediaplayer-ex, pipeline, 
        	pipeline-error, framereaderloop, ui, ffmpeg, codecs, dependencyobject, 
        	downloader, font, layout, media, mediaelement, mediaelement-ex, 
        	buffering, asf, playlist, playlist-warn, text, xaml


	Moonlight currently contains two ASX parsers. The default
	parser is a custom parser that accounts for some of ASX's
	oddities such as quotes in attribute strings and non case
	sensitive element names (ie <foo></FOO>). The older parser
	uses a true xml parser, so will not handle these oddities
	well, however it has been more heavily tested. To use the
	older expat based playlist parser set the env variable
	MOONLIGHT_USE_EXPAT_ASXPARSER=1.


Licensing
=========

	The C and C++ code that makes up the engine is dual-licensed
	under the LGPL v2 license and is also available commercially
	for developers interested in using Moonlight on embedded
	systems or other systems where the end-user can not upgrade
	the LGPL code on his own.

	The C# tests in test/2.0/Microsoft.Silverlight.Testing are
	copyrighted by Microsoft and released by them under the 
	open source MS-PL license.
	
	The C# controls in class/Microsoft.SilverlightControls/ and
	class/WPF.Toolkit are copyrighted by Microsoft and released by
	them under the open source MS-PL license.


Technical Details
=================

	For implementation details and notes, see the NOTES file.


Test Suite
==========

	To run the test suite, make sure that the output from
	configure indicates that the tests will be run.  Once this is
	done, you can run the tests like this:

	To run the Moonlight Unit Tests:

		cd moon/test/2.0/moon-unit
		make test
		

Firefox 3
=========

	The original Silverlight.js shipped by Microsoft was incompatible
	with Firefox 3.  We have released a greasemonkey script 
	(data/silverlight-ff3-quirks.user.js) that will patch this behaviour
	for some sites.

Something went wrong with that request. Please try again.