Difference between revisions of "FRScreenSaver 101"

From AwkwardTV
Jump to: navigation, search
m
Line 1: Line 1:
[http://sonicmaind.ifrance.com/styles/boni-taylor.htm boni taylor] [http://flella.ifrance.com/styles/video-game.htm video game da provare] [http://nakramer.ifrance.com/small/pernottare.htm pernottare] [http://nakramer.ifrance.com/small/dedicata.htm dedicata] [http://hapierce.ifrance.com/text/pavlovsk/ pavlovsk] [http://romonjon.ifrance.com/directory/spalmati-pelle/ spalmati pelle] [http://wagreenw.ifrance.com/text/hotel-in.htm hotel in timisoara] [http://lamalone.ifrance.com/web/yp-h/ yp 53h] [http://chelsxd.ifrance.com/directory/foto-cecilia.htm foto cecilia belli] [http://pulema.ifrance.com/small/vcd-recorder.htm vcd recorder] [http://drgreghousemd.ifrance.com/library/garzi-srl/ garzi srl] [http://poriddle.ifrance.com/articles/novocaine/ novocaine] [http://poriddle.ifrance.com/articles/lcd-v/ lcd 913v] [http://drgreghousemd.ifrance.com/library/amore-vero/ amore vero] [http://wagreenw.ifrance.com/text/rd.htm rd 1578 1933] [http://drgreghousemd.ifrance.com/library/piovuta-dal/ piovuta dal cielo film dvd] [http://anskaggs.ifrance.com/resources/lettore-mp344.htm lettore mp3 acer usb 512mb] [http://sonicmaind.ifrance.com/styles/gp-mp.htm 3gp mp4] [http://mctungat.ifrance.com/text/congo-express/ congo express] [http://mctungat.ifrance.com/text/trame-beautiful/ trame beautiful] [http://flella.ifrance.com/styles/solofra.htm solofra] [http://chelsxd.ifrance.com/directory/tessuti-stampati.htm tessuti stampati] [http://hapierce.ifrance.com/text/ozone-dintei/ ozone dintei] [http://scalek.ifrance.com/styles/videocamera-sony/ videocamera sony 22] [http://hapierce.ifrance.com/text/dfi-lanparty/ dfi lanparty nforce 4] [http://kemenke.ifrance.com/directory/correo.htm correo] [http://chelsxd.ifrance.com/directory/dvd-decripter2.htm dvd decripter mac] [http://lamalone.ifrance.com/web/voc/ voc] [http://lucornew.ifrance.com/articles/scuola-superiore/ scuola superiore l einaudi montebelluna] [http://lucornew.ifrance.com/articles/software-per/ software per sbloccare lg 8120] [http://scalek.ifrance.com/styles/ritratto/ ritratto] [http://qizzlary.ifrance.com/resources/registrazione-digitale.htm registrazione digitale microfono] [http://sonicmaind.ifrance.com/styles/jupiter-srl.htm jupiter srl] [http://nakramer.ifrance.com/small/santu-paolo.htm santu paolo meu] [http://sckieffe.ifrance.com/content/pamela-anderson47/ pamela anderson naked] [http://lucornew.ifrance.com/articles/nada-valgo/ nada valgo juanes] [http://wagreenw.ifrance.com/text/melitopol.htm melitopol] [http://paheidi.ifrance.com/blog/so-cold/ so cold] [http://chelsxd.ifrance.com/directory/shut-uo.htm shut uo] [http://stormclouds13.ifrance.com/description/impresa-edile.htm impresa edile a trieste] [http://paheidi.ifrance.com/blog/www-/ www 155 it] [http://chelsxd.ifrance.com/directory/beach-rex.htm beach rex ellingwood] [http://nereinig.ifrance.com/styles/stampante-canon.htm stampante canon pictbridge] [http://chelsxd.ifrance.com/directory/rete-matrimoniale.htm rete matrimoniale doghe] [http://lamalone.ifrance.com/web/rapaci/ rapaci] [http://lucornew.ifrance.com/articles/antichi-mezzi/ antichi mezzi di trasporto] [http://drgreghousemd.ifrance.com/library/saracu/ saracu] [http://afreelancespork.ifrance.com/text/voglia-di/ voglia di guardare] [http://lucornew.ifrance.com/articles/le-astuzie/ le astuzie della vedova] [http://romonjon.ifrance.com/directory/atv-offroad/ atv offroad fury blazin trails] [http://hapierce.ifrance.com/text/square-wire/ square wire 2 0] [http://sonicmaind.ifrance.com/styles/san-francisco.htm san francisco the argonaut hotel] [http://stormclouds13.ifrance.com/description/forever-tango.htm forever tango] [http://romonjon.ifrance.com/directory/whirlpool-forno/ whirlpool forno a micronde at 325] [http://romonjon.ifrance.com/directory/smoke-in/ smoke in the water] [http://kialford.ifrance.com/directory/calendario-elisa/ calendario elisa triani] [http://flella.ifrance.com/styles/ospedale-di.htm ospedale di matera] [http://lamalone.ifrance.com/web/plastica-come/ plastica come benzina] [http://wagreenw.ifrance.com/text/www-marepineta.htm www marepineta com] [http://drgreghousemd.ifrance.com/library/mitsubishi-pajero/ mitsubishi pajero glx] [http://kemenke.ifrance.com/directory/yuyu-hakusho.htm yuyu hakusho box] [http://hapierce.ifrance.com/text/kore-et/ kore et skalp] [http://lamalone.ifrance.com/web/nuovo-spot/ nuovo spot telecom] [http://kemenke.ifrance.com/directory/sexo-con.htm sexo con menores en vivo] [http://stormclouds13.ifrance.com/description/www-affarituoi.htm www affarituoi it] [http://sckieffe.ifrance.com/content/nero-/ nero 6 plug in mp3pro] [http://afreelancespork.ifrance.com/text/russian-play/ russian play mate] [http://stormclouds13.ifrance.com/description/kasa-com.htm kasa com] [http://kialford.ifrance.com/directory/negative-zbunjena/ negative zbunjena] [http://kialford.ifrance.com/directory/paola-pasquini/ paola pasquini] [http://kemenke.ifrance.com/directory/negozio-articoli.htm negozio articoli sportivi vercelli] [http://lamalone.ifrance.com/web/telemundo/ telemundo] [http://mctungat.ifrance.com/text/desktop-offerta/ desktop offerta] [http://lamalone.ifrance.com/web/gobba/ gobba] [http://nereinig.ifrance.com/styles/batteria-sony.htm batteria sony ericsson t200] [http://sonicmaind.ifrance.com/styles/montagna-vacanza.htm montagna vacanza] [http://paheidi.ifrance.com/blog/digitale-ottico/ digitale ottico] [http://paheidi.ifrance.com/blog/foto-di390/ foto di ince] [http://sckieffe.ifrance.com/content/let-me/ let me talk] [http://lucornew.ifrance.com/articles/foto-matrix/ foto matrix] [http://wagreenw.ifrance.com/text/oggetti-cucina.htm oggetti cucina] [http://sonicmaind.ifrance.com/styles/la-finestra.htm la finestra sul luna park] [http://paheidi.ifrance.com/blog/dayereh/ dayereh] [http://sonicmaind.ifrance.com/styles/basilea-ristorante.htm basilea ristorante] [http://romonjon.ifrance.com/directory/sodimm-ddr/ sodimm ddr pc2700 333] [http://stasenka.ifrance.com/lib/sony-dcr/ sony dcr 1000] [http://stormclouds13.ifrance.com/description/sony-plasma.htm sony plasma wega] [http://hapierce.ifrance.com/text/megaforce/ megaforce] [http://kemenke.ifrance.com/directory/femmes-nues.htm femmes nues] [http://stasenka.ifrance.com/lib/multimedia-player/ multimedia player con hard disk] [http://drgreghousemd.ifrance.com/library/antartica/ antartica] [http://paheidi.ifrance.com/blog/gioco-festa/ gioco festa spettacolo] [http://sonicmaind.ifrance.com/styles/indragiri.htm indragiri] [http://sonicmaind.ifrance.com/styles/disney-dream.htm disney dream desk pc] [http://chelsxd.ifrance.com/directory/copertina-cd81.htm copertina cd fiorella mannoia] [http://hapierce.ifrance.com/text/logitech-media/ logitech media play mouse] [http://nereinig.ifrance.com/styles/usb-gprs.htm usb gprs wind] [http://lamalone.ifrance.com/web/s-raffaele/ s raffaele milano] [http://mctungat.ifrance.com/text/minica-adaro/ minica adaro] [http://sonicmaind.ifrance.com/styles/pentium-56.htm pentium 4 serie 6xx] [http://sonicmaind.ifrance.com/styles/cori-alpini.htm cori alpini gratis] [http://scalek.ifrance.com/styles/rivoluzioni-industriali/ rivoluzioni industriali] [http://paheidi.ifrance.com/blog/nikon-85/ nikon 4600 light] [http://stasenka.ifrance.com/lib/malgoska/ malgoska] [http://mctungat.ifrance.com/text/take-off/ take off your pants and jacket] [http://sckieffe.ifrance.com/content/trango-s/ trango s evo] [http://poriddle.ifrance.com/articles/nissan-almera9/ nissan almera 2 2] [http://mctungat.ifrance.com/text/musica-di/ musica di te] [http://hapierce.ifrance.com/text/pneumatica-/ pneumatica  impianti e utensili] [http://hapierce.ifrance.com/text/bimbo-village/ bimbo village compilation] [http://poriddle.ifrance.com/articles/gata-celosa/ gata celosa hector y tito y wisin] [http://flella.ifrance.com/styles/adattatore-per9.htm adattatore per auto] [http://qizzlary.ifrance.com/resources/honda-hornet.htm honda hornet 600 uso e manutenzione] [http://afreelancespork.ifrance.com/text/marketing-web/ marketing web design] [http://drgreghousemd.ifrance.com/library/le-insaziabili/ le insaziabili] [http://scalek.ifrance.com/styles/qtek-/ qtek  palmari s100 italia] [http://anskaggs.ifrance.com/resources/andrea-tru.htm andrea tru connection] [http://romonjon.ifrance.com/directory/rosse-fermo/ rosse fermo posta tinto brass] [http://scalek.ifrance.com/styles/lionel-richie/ lionel richie testo] [http://anskaggs.ifrance.com/resources/abigliamento-stock.htm abigliamento stock] [http://lucornew.ifrance.com/articles/photosmart-hp/ photosmart hp stampante] [http://nereinig.ifrance.com/styles/polizia-strdale.htm polizia strdale] [http://lucornew.ifrance.com/articles/black-cocks/ black cocks] [http://pulema.ifrance.com/small/into-the.htm into the groove] [http://afreelancespork.ifrance.com/text/mb-cp/ mb cp11] [http://stasenka.ifrance.com/lib/silvio-costa/ silvio costa] [http://kemenke.ifrance.com/directory/p-.htm p4 3 2 ghz prescott intel] [http://flella.ifrance.com/styles/www-blumarine.htm www blumarine] [http://poriddle.ifrance.com/articles/la-pace/ la pace frasi] [http://lamalone.ifrance.com/web/martoni-giuseppe/ martoni giuseppe] [http://stasenka.ifrance.com/lib/goes-shoes/ goes shoes] [http://xbr00t4lx.ifrance.com/directory/hp-compaq.htm hp compaq tc4200] [http://stormclouds13.ifrance.com/description/diccionario-ruso.htm diccionario ruso espanol] [http://sckieffe.ifrance.com/content/dj-jamelia/ dj jamelia] [http://sonicmaind.ifrance.com/styles/empire-r.htm empire r1000] [http://scalek.ifrance.com/styles/kiss-dvd7/ kiss dvd dvx] [http://sckieffe.ifrance.com/content/m-toshiba/ m300 toshiba] [http://stasenka.ifrance.com/lib/doccia-orale/ doccia orale] [http://lamalone.ifrance.com/web/calcite/ calcite] [http://mctungat.ifrance.com/text/io-me/ io me ne andrei] [http://mctungat.ifrance.com/text/frou-frou/ frou frou holding hero mp3] [http://paheidi.ifrance.com/blog/canon-ixus/ canon ixus digital 500] [http://paheidi.ifrance.com/blog/nelly-furtado/ nelly furtado] [http://mctungat.ifrance.com/text/mappe-iol/ mappe iol] [http://chelsxd.ifrance.com/directory/hoover-hca.htm hoover hca 351 alu] [http://sonicmaind.ifrance.com/styles/www-biz.htm www biz de] [http://wagreenw.ifrance.com/text/citroen-zx.htm citroen zx] [http://pulema.ifrance.com/small/la-mamma.htm la mamma aznavour] [http://romonjon.ifrance.com/directory/hassni/ hassni] [http://stasenka.ifrance.com/lib/punto-actual/ punto actual] [http://sonicmaind.ifrance.com/styles/mmc-nokia.htm mmc nokia] [http://stormclouds13.ifrance.com/description/lisa-loeb.htm lisa loeb] [http://stormclouds13.ifrance.com/description/stars-nues.htm stars nues] [http://lamalone.ifrance.com/web/trio-peg/ trio peg perego safari] [http://sonicmaind.ifrance.com/styles/ermal-fejzullahu.htm ermal fejzullahu] [http://kialford.ifrance.com/directory/romanzo-gialli/ romanzo gialli] [http://poriddle.ifrance.com/articles/eleda/ eleda] [http://wagreenw.ifrance.com/text/nokia-392.htm nokia 6630 dark blue] [http://scalek.ifrance.com/styles/telefono-cuffia/ telefono cuffia microfono] [http://nereinig.ifrance.com/styles/www-neve.htm www neve com] [http://sckieffe.ifrance.com/content/route-34/ route 66 kit mio] [http://anskaggs.ifrance.com/resources/san-martino.htm san martino carducci commento] [http://drgreghousemd.ifrance.com/library/da-buzz/ da buzz] [http://sonicmaind.ifrance.com/styles/l-oscar.htm l oscar del porno] [http://flella.ifrance.com/styles/agronomia-e.htm agronomia e elementi meccanizzazione] [http://stormclouds13.ifrance.com/description/lurve-lounge.htm lurve lounge] [http://scalek.ifrance.com/styles/riano/ riano] [http://mctungat.ifrance.com/text/file-dmf/ file dmf] [http://mctungat.ifrance.com/text/onenightinbangkok/ onenightinbangkok] [http://chelsxd.ifrance.com/directory/steve-parker.htm steve parker] [http://poriddle.ifrance.com/articles/gucci-scarpe/ gucci scarpe donna] [http://hapierce.ifrance.com/text/nicholas-berg/ nicholas berg beheading pictures] [http://sckieffe.ifrance.com/content/animal-tropical/ animal tropical libri] [http://lamalone.ifrance.com/web/keymat-lcd/ keymat lcd] [http://nakramer.ifrance.com/small/big-man.htm big man 1 polizza droga] [http://lucornew.ifrance.com/articles/tom-sawier/ tom sawier] [http://kialford.ifrance.com/directory/pc-ecc/ pc100 ecc sdram dimm] [http://lamalone.ifrance.com/web/stampante-laser/ stampante laser hp 1320n] [http://afreelancespork.ifrance.com/text/phocus-tv/ phocus tv lcd 30] [http://lucornew.ifrance.com/articles/vita-bassa/ vita bassa uomo] [http://poriddle.ifrance.com/articles/huevo-cartoon/ huevo cartoon] [http://kemenke.ifrance.com/directory/ivana-banfic.htm ivana banfic] [http://paheidi.ifrance.com/blog/space-invaders/ space invaders] [http://chelsxd.ifrance.com/directory/codice-della.htm codice della strada] [http://xbr00t4lx.ifrance.com/directory/dario-anni.htm dario 19anni] [http://sonicmaind.ifrance.com/styles/cavi-a.htm cavi a fibra ottica] [http://xbr00t4lx.ifrance.com/directory/grd.htm grd] [http://sonicmaind.ifrance.com/styles/noleggio-bmw.htm noleggio bmw x3] [http://nakramer.ifrance.com/small/tommaso-maggiore.htm tommaso maggiore libri] [http://chelsxd.ifrance.com/directory/cadillac-seville.htm cadillac seville] [http://kialford.ifrance.com/directory/roof-garden/ roof garden] [http://flella.ifrance.com/styles/psicologia-dello.htm psicologia dello sport per gli] [http://qizzlary.ifrance.com/resources/www-ostia.htm www ostia chat it] [http://drgreghousemd.ifrance.com/library/www-mirc/ www mirc com] [http://afreelancespork.ifrance.com/text/come-in/ come in uno specchio] [http://kialford.ifrance.com/directory/convenience/ convenience] [http://sonicmaind.ifrance.com/styles/iaudio-g.htm iaudio g3 1 gb] [http://anskaggs.ifrance.com/resources/giochi-ps.htm giochi ps 2] [http://nereinig.ifrance.com/styles/videoplayer.htm videoplayer] [http://romonjon.ifrance.com/directory/ddr-sodimm/ ddr sodimm] Finally the screen saver problem has been solved too!  
+
Finally the screen saver problem has been solved too!  
  
 
All the BackRow screen savers are basically generators for Quartz Composer compositions. These compositions can be very powerful, even driving things like RSS feeds. In fact, that's the example we'll use.  
 
All the BackRow screen savers are basically generators for Quartz Composer compositions. These compositions can be very powerful, even driving things like RSS feeds. In fact, that's the example we'll use.  

Revision as of 09:03, 19 September 2007

Finally the screen saver problem has been solved too!

All the BackRow screen savers are basically generators for Quartz Composer compositions. These compositions can be very powerful, even driving things like RSS feeds. In fact, that's the example we'll use.

Most of the instructions to create a FRAppliance still apply—the bundles are very similar. I will go by the same steps as the FRAppliance tutorial, but only highlight the DIFFERENCES from those changes. Please review FRAppliance_101 to reference those steps.

Making the Project

First, you'll want a more useful name. Instead of "HelloWorld", let's call it "RSSVisualizerSaver". Create a new Cocoa Bundle project with this name.

Creating the Plugin

Open InfoPlist.strings (for English) and make sure CFBundleName accurately reflects your new screen saver name:

CFBundleName = "RSS Visualizer";

The Main Appliance Class

Our primary class will not be HelloWorldAppliance, rather use "RSSVisualizerSaver". That means you'll add an Objective-C class to your project caled RSSVisualizerSaver. Don't forget to check "Also create RSSVisualizerSaver.h" in Xcode.

Open RSSVisualizerSaver.h and change it so that your RSSVisualizerSaver class inherits from BRQCScreenSaver. Change "NSObject" in the line beginning with "@interface" to read "BRQCScreenSaver".

Make sure you import the BackRow framework.

You'll want to add the className class method to RSSVisualizerSaver.m—screen savers need to bypass their own whitelists too. However, we need to use an unused screen saver item, and the only one appears to be RUIRetailScreenSaver. Folks are working on subverting the whitelists, so stay tuned for that. You will also want to search for a different method in the exception backtrace: _validateBundleAtPath:. Here's the full code to place into RSSVisualizerSaver.m, instead of the one defined by the Appliance instructions.

// Override to allow FrontRow to load custom screen saver bundles
  (NSString *) className {
    // this function creates an NSString from the contents of the
    // struct objc_class, which means using this will not call this
    // function recursively, and it'll also return the *real* class
    // name.
    NSString * className = NSStringFromClass( self );
	
	// new method based on the BackRow NSException subclass, which conveniently provides us a backtrace
	// method!
	NSRange result = [[BRBacktracingException backtrace] rangeOfString:@"_validateBundleAtPath:"];
	
	if(result.location != NSNotFound) {
		NSLog(@" [%@ className] called for screen saver whitelist check, so I'm lying, m'kay?", className);
		className = @"RUIRetailScreenSaver";
	}
	
	return className;
}

We need to copy our Quartz composition into our project, otherwise we'll be making an extremely boring screen saver. First, you'll want to copy a composition into your project. Copy this file from your Mac OS X system:

/System/Library/Screen\ Savers/RSS Visualizer.qtz

into your project folder. Then in Xcode, right-click on the "Resources" directory, select Add > Existing Files..., and select RSS Visualizer.qtz from your project folder. Make sure it is added to your target.

Back to the code. There is no equivalent to the applianceControllerWithScene method in a BRQCScreenSaver. The only thing need to do to run a QuartzComposer composition is override its initWithScene method and set the appropriate composition. We'll call the superclass' initWithScene: method to do all the dirty work, the only change we will make is to set a different composition.

- (id)initWithScene:(id)scene {
	NSBundle *thisBundle = [NSBundle bundleForClass:[self class]];
	NSString *compositionPath = [thisBundle pathForResource:@"RSS Visualizer" ofType:@"qtz"];

	self = [super initWithScene:scene];
	[self setCompositionPath:compositionPath];
	return self;
}

Building the Plugin

Build Settings

Everything is the same, except:

  • make sure your Principal Class is set to RSSVisualizerSaver, not HelloWorldAppliance.
  • set the Wrapper Extension to frss, not frappliance.

Building

Click Build. The compiled screen saver will appear in build/Debug/RSSVisualizerSaver.frss.

Running the Plugin

You'll want to copy your built copy to the correct folder. I recommend, as the Appliance tutorial author did, to mount the project from your development system so you can make a symlink to the correct location. Copy or symlink your built project to:

/System/Library/CoreServices/Finder.app/Contents/Screen Savers

Kill Finder, then navigate to Settings > Screen Savers. Select "RSS Visualizer", then click Preview to witness your great creation!

Congratulations...again!

Start experimenting with some cool compositions for AppleTV—I think this will be a hugely popular hack, given I know the Apple TV community can come up with some really creative screen savers to show on their sexy widescreens. :)

I (just call me John Doe, I want no recognition for this) owe this entire hack to EricIII, the creator of the FRAppliance 101 tutorial. Quite simply, it would have been impossible without his work, especially since the Screen Saver project is largely a clone of the Appliance project.

Some pretty compositions can be found here:

http://www.zugakousaku.com/index.php?m=project