Difference between revisions of "FRScreenSaver 101"

From AwkwardTV
Jump to: navigation, search
m (Undo revision 4066 by Special:Contributions/ThnEa7 (User talk:ThnEa7) -> Please read BlockingSpam!)
m
Line 1: Line 1:
Finally the screen saver problem has been solved too!  
+
[http://squoi-oop.ifrance.com/topic/tesine-su/ tesine su giovanni pascoli] [http://alishca-st.ifrance.com/text/directory/contratto-di.htm contratto di compravendita] [http://joshuaw-wise.ifrance.com/img/styles/mfc-c/ mfc 210c] [http://lekusya.ifrance.com/library/html/volo-roma/ volo roma sharm] [http://nokros.ifrance.com/data/cccp-and/ cccp and inno] [http://call-shotgun.ifrance.com/view/new/renault-scenic/ renault scenic 1.9] [http://cocopuff66.ifrance.com/text/directory/super-tetta/ super tetta] [http://flawedamythyst.ifrance.com/img/styles/cartellini-segna.htm cartellini segna prezzo] [http://nokros.ifrance.com/data/ostiensis-viaggi/ ostiensis viaggi] [http://mfirishka.ifrance.com/view/new/otranto.htm otranto] [http://mfirishka.ifrance.com/view/new/canzoni-inglesi.htm canzoni inglesi] [http://alishca-st.ifrance.com/text/directory/foto-porno.htm foto porno di castelvetrano] [http://sm4.ifrance.com/lib/deep-purple/ deep purple burn] [http://squoi-oop.ifrance.com/topic/diffusori-centrali/ diffusori centrali] [http://zeakk.ifrance.com/resources/articles/macromedia-robodemo.htm macromedia robodemo] [http://flawedamythyst.ifrance.com/img/styles/arnault-antoinevincent.htm arnault, antoine-vincent] [http://lekusya.ifrance.com/library/html/ribnitzdamgarten/ ribnitz-damgarten] [http://gajar.ifrance.com/html/tecnico-venditore.htm tecnico venditore - reggio emilia (regione emilia romagna - reggio emilia provincia)] [http://mfirishka.ifrance.com/view/new/transpallet.htm transpallet] [http://krychan.ifrance.com/content/view/fibra-carbonio.htm fibra carbonio] [http://squoi-oop.ifrance.com/topic/the-wall/ the wall dvd pink floyd] [http://horcrionebay.ifrance.com/resources/articles/variofit-kettler.htm variofit kettler] [http://dejablu503.ifrance.com/description/lib/discoteche-porec.htm discoteche porec] [http://trumanburb.ifrance.com/view/new/grilloparlante.htm grilloparlante] [http://gabe95.ifrance.com/html/haiduci-dragostea/ haiduci dragostea] [http://lekusya.ifrance.com/library/html/video-de/ video de eminem] [http://cocopuff66.ifrance.com/text/directory/staffa-per/ staffa per lcd meliconi] [http://call-shotgun.ifrance.com/view/new/telecomando-per/ telecomando per ricevitore tele system] [http://smegmacheez.ifrance.com/content/view/i-fell/ i fell in love with a boy] [http://gabe95.ifrance.com/html/cavi-per/ cavi per autoradio] [http://smegmacheez.ifrance.com/content/view/viaggio-organizzato/ viaggio organizzato gardaland] [http://nokros.ifrance.com/data/marina-massironi/ marina massironi] [http://horcrionebay.ifrance.com/resources/articles/inno-croato.htm inno croato] [http://trumanburb.ifrance.com/view/new/poquemon.htm poquemon] [http://nokros.ifrance.com/data/da-taschino/ da taschino orologi] [http://nokros.ifrance.com/data/supporti-casse/ supporti casse] [http://mfirishka.ifrance.com/view/new/maria-mari.htm maria mari] [http://zeakk.ifrance.com/resources/articles/yu-gi.htm yu gi oh dvd] [http://zeakk.ifrance.com/resources/articles/banque-royale.htm banque royale] [http://gajar.ifrance.com/html/testo-di.htm testo di ave maria di schubert] [http://joshuaw-wise.ifrance.com/img/styles/movimenti-notturni/ movimenti notturni] [http://gabe95.ifrance.com/html/i-treno/ i treno merci] [http://sm4.ifrance.com/lib/emporio-hu/ emporio hu] [http://lightmyfire0214.ifrance.com/topic/blues-rock/ blues rock. the ultimate collection] [http://gajar.ifrance.com/html/u-kaka.htm u kaka ritka] [http://nokros.ifrance.com/data/il-delitto/ il delitto del faro] [http://flawedamythyst.ifrance.com/img/styles/tecniche-pitturazione.htm tecniche pitturazione nel modellismo] [http://alishca-st.ifrance.com/text/directory/tribunale-di.htm tribunale di modena] [http://gajar.ifrance.com/html/aracno.htm aracno] [http://lekusya.ifrance.com/library/html/bugs-bunni/ bugs bunni] [http://atrayah.ifrance.com/topic/ribes-nigrum.htm ribes nigrum] [http://horcrionebay.ifrance.com/resources/articles/one-the.htm one the] [http://joshuaw-wise.ifrance.com/img/styles/huai-he/ huai he] [http://lightmyfire0214.ifrance.com/topic/ragazzo-emiliano/ ragazzo emiliano] [http://call-shotgun.ifrance.com/view/new/gdynia/ gdynia] [http://lightmyfire0214.ifrance.com/topic/lufthansa-it/ lufthansa it] [http://horcrionebay.ifrance.com/resources/articles/radioonline.htm radioonline] [http://mfirishka.ifrance.com/view/new/normativa-sugli.htm normativa sugli enti locali] [http://alishca-st.ifrance.com/text/directory/cartina-geografica.htm cartina geografica delle slovenia] [http://mfirishka.ifrance.com/view/new/crisi-di.htm crisi di governo] [http://zeakk.ifrance.com/resources/articles/foto-di.htm foto di roberta capua] [http://lightmyfire0214.ifrance.com/topic/fuscaldo/ fuscaldo] [http://lekusya.ifrance.com/library/html/zelig-pen/ zelig pen drive 2 gb] [http://alishca-st.ifrance.com/text/directory/cartina-stradale.htm cartina stradale corsica] [http://horcrionebay.ifrance.com/resources/articles/golf-iv.htm golf iv 1.9 tdi 130 cv] [http://smegmacheez.ifrance.com/content/view/woolwich/ woolwich] [http://krychan.ifrance.com/content/view/filmato-della.htm filmato della decapitazione dei prigioni] [http://zeakk.ifrance.com/resources/articles/giorni-di.htm giorni di gloria] [http://horcrionebay.ifrance.com/resources/articles/video-transessuali.htm video transessuali] [http://squoi-oop.ifrance.com/topic/banconi/ banconi] [http://joshuaw-wise.ifrance.com/img/styles/acer-ms/ acer 1914ms] [http://call-shotgun.ifrance.com/view/new/video-scopata/ video scopata gratis] [http://gabe95.ifrance.com/html/i-need/ i need speed] [http://smegmacheez.ifrance.com/content/view/kasam-ki/ kasam ki kasam midi] [http://sm4.ifrance.com/lib/dimm-sdram/ dimm sdram 133] [http://alishca-st.ifrance.com/text/directory/guadagnare-euro.htm guadagnare euro] [http://horcrionebay.ifrance.com/resources/articles/las-tella.htm las tella pio] [http://lightmyfire0214.ifrance.com/topic/dream-on/ dream on] [http://gajar.ifrance.com/html/maria-clara.htm maria clara] [http://cocopuff66.ifrance.com/text/directory/clarinet-polka/ clarinet polka] [http://smegmacheez.ifrance.com/content/view/donegani-guido/ donegani, guido] [http://sm4.ifrance.com/lib/stephen-king/ stephen king shining] [http://mfirishka.ifrance.com/view/new/et.htm et] [http://squoi-oop.ifrance.com/topic/amry/ amry] [http://lekusya.ifrance.com/library/html/uomini-pelosi/ uomini pelosi gratis] [http://lightmyfire0214.ifrance.com/topic/geografia-ricerche/ geografia ricerche] [http://smegmacheez.ifrance.com/content/view/carta-acquisti/ carta acquisti ricaricabile] [http://horcrionebay.ifrance.com/resources/articles/cmb-sas.htm cmb sas] [http://lightmyfire0214.ifrance.com/topic/sean-paul/ sean paul breathe fat blu cantrell] [http://trumanburb.ifrance.com/view/new/kia-sedan.htm kia sedan rio] [http://cocopuff66.ifrance.com/text/directory/ovadia/ ovadia] [http://nokros.ifrance.com/data/valore-alpino/ valore alpino] [http://gajar.ifrance.com/html/regno-delle.htm regno delle due sicilie] [http://joshuaw-wise.ifrance.com/img/styles/code-pour/ code pour tps] [http://joshuaw-wise.ifrance.com/img/styles/de-laurenti/ de laurenti] [http://gajar.ifrance.com/html/temi-di.htm temi di maturita usciti il 16 giugno] [http://nokros.ifrance.com/data/viaccess-hex/ viaccess hex] [http://joshuaw-wise.ifrance.com/img/styles/concorsi-religione/ concorsi religione cattolica lazio] [http://nokros.ifrance.com/data/birch-thomas/ birch, thomas] [http://lekusya.ifrance.com/library/html/wonderwall-live/ wonderwall live] [http://trumanburb.ifrance.com/view/new/uomini-dalle.htm uomini dalle nove vite] [http://cocopuff66.ifrance.com/text/directory/streap-tees/ streap tees] [http://trumanburb.ifrance.com/view/new/canon-eos.htm canon eos digital rebel xt 350d] [http://mfirishka.ifrance.com/view/new/centri-per.htm centri per l impiego lombardia] [http://flawedamythyst.ifrance.com/img/styles/dirty-dancing.htm dirty dancing 2 havana nights film dvd] [http://alishca-st.ifrance.com/text/directory/hf-nokia.htm hf-3 nokia] [http://horcrionebay.ifrance.com/resources/articles/gfx-pro.htm gfx pro 133] [http://horcrionebay.ifrance.com/resources/articles/www-sottosopra.htm www sottosopra it] [http://flawedamythyst.ifrance.com/img/styles/testi-di.htm testi di chitarra romana] [http://squoi-oop.ifrance.com/topic/silvia-rocca/ silvia rocca tg nuda] [http://gabe95.ifrance.com/html/big-cum/ big cum] [http://alishca-st.ifrance.com/text/directory/doves-and.htm doves and pigeons] [http://squoi-oop.ifrance.com/topic/compactflash-canon/ compactflash canon] [http://gabe95.ifrance.com/html/leali-fausto/ leali fausto] [http://lekusya.ifrance.com/library/html/apple-/ apple 23 cinema hd] [http://joshuaw-wise.ifrance.com/img/styles/royal-gigalo/ royal gigalo] [http://joshuaw-wise.ifrance.com/img/styles/from-dawn/ from dawn to sunset soundtrack] [http://squoi-oop.ifrance.com/topic/converter-mp/ converter mp3] [http://trumanburb.ifrance.com/view/new/terra-lontana.htm terra lontana] [http://alishca-st.ifrance.com/text/directory/nick-kamen.htm nick kamen i promised myself] [http://joshuaw-wise.ifrance.com/img/styles/meteos-entra/ meteos entra in casa nintendo] [http://alishca-st.ifrance.com/text/directory/uomini-italiani.htm uomini italiani nudi] [http://alishca-st.ifrance.com/text/directory/pioneer.htm pioneer 100] [http://flawedamythyst.ifrance.com/img/styles/hp.htm hp 1740] [http://gajar.ifrance.com/html/guanti-racing.htm guanti racing moto] [http://gabe95.ifrance.com/html/din-te/ din te] [http://atrayah.ifrance.com/topic/black-jak.htm black jak] [http://sm4.ifrance.com/lib/aprilia/ aprilia] [http://gajar.ifrance.com/html/roland-ax.htm roland ax7] [http://atrayah.ifrance.com/topic/cuffie-auricolari.htm cuffie auricolari volume] [http://gajar.ifrance.com/html/listino-hosting.htm listino hosting web] [http://cocopuff66.ifrance.com/text/directory/hart-heinrich/ hart, heinrich e julius] [http://call-shotgun.ifrance.com/view/new/qtek-s/ qtek s100 supporto auto] [http://nokros.ifrance.com/data/sync-master/ sync master 930mp] [http://mfirishka.ifrance.com/view/new/orario-lezioni.htm orario lezioni facolta lingue universita] [http://alishca-st.ifrance.com/text/directory/volere.htm volere] [http://alishca-st.ifrance.com/text/directory/ed-sullivans.htm ed sullivans rock n roll classics. the temptations and the supremes] [http://flawedamythyst.ifrance.com/img/styles/fare-pompini.htm fare pompini] [http://krychan.ifrance.com/content/view/www-breakdance.htm www breakdance it] [http://call-shotgun.ifrance.com/view/new/catania-cagliari/ catania cagliari biglietti aerei] [http://squoi-oop.ifrance.com/topic/ad-maiorem/ ad maiorem dei gloriam] [http://trumanburb.ifrance.com/view/new/cz-armi.htm cz (armi)] [http://mfirishka.ifrance.com/view/new/penny-phang.htm penny phang] [http://gabe95.ifrance.com/html/videoregistratore-professionale/ videoregistratore professionale vhs] [http://gabe95.ifrance.com/html/home-theater/ home theater teac] [http://trumanburb.ifrance.com/view/new/maxtor-one.htm maxtor one touch 200] [http://gajar.ifrance.com/html/hotel-economico.htm hotel economico perugia] [http://krychan.ifrance.com/content/view/volo-per.htm volo per cuba] [http://call-shotgun.ifrance.com/view/new/corsi-professionali/ corsi professionali] [http://lightmyfire0214.ifrance.com/topic/garanzia-su/ garanzia su] [http://nokros.ifrance.com/data/fuchow/ fuchow] [http://atrayah.ifrance.com/topic/lg-condizionatori.htm lg condizionatori 12000 btu] [http://sm4.ifrance.com/lib/verdade/ verdade] [http://call-shotgun.ifrance.com/view/new/noel-eugenio/ noel, eugenio] [http://gajar.ifrance.com/html/olimpia-splendid.htm olimpia splendid climatizzatore unico] [http://horcrionebay.ifrance.com/resources/articles/radio-evolution.htm radio evolution] [http://lightmyfire0214.ifrance.com/topic/calendario-universitarie/ calendario universitarie] [http://zeakk.ifrance.com/resources/articles/robobug-blaster.htm robobug blaster] [http://squoi-oop.ifrance.com/topic/giramaschi/ giramaschi] [http://cocopuff66.ifrance.com/text/directory/vietnam-morte/ vietnam morte orange] [http://krychan.ifrance.com/content/view/wafd.htm wafd] [http://cocopuff66.ifrance.com/text/directory/recreacion/ recreacion] [http://flawedamythyst.ifrance.com/img/styles/suba.htm suba] [http://squoi-oop.ifrance.com/topic/conte-elegia/ conte elegia] [http://lekusya.ifrance.com/library/html/orde-sottosuolo/ orde sottosuolo] [http://cocopuff66.ifrance.com/text/directory/hp/ hp 2250] [http://sm4.ifrance.com/lib/nasa-x/ nasa x 43a] [http://atrayah.ifrance.com/topic/manisa-provincia.htm manisa (provincia)] [http://nokros.ifrance.com/data/plasma-da/ plasma da 37 panasonic] [http://atrayah.ifrance.com/topic/bmw-.htm bmw 320 cabrio] [http://nokros.ifrance.com/data/la-storia/ la storia del pastore serafino] [http://call-shotgun.ifrance.com/view/new/poher/ poher] [http://gajar.ifrance.com/html/torino-lione.htm torino lione] [http://gajar.ifrance.com/html/cimatura.htm cimatura] [http://gabe95.ifrance.com/html/cavo-ottico/ cavo ottico xbox] [http://dejablu503.ifrance.com/description/lib/jeans-uomo.htm jeans uomo dolce gabbana] [http://zeakk.ifrance.com/resources/articles/profumo-curve.htm profumo curve] [http://lightmyfire0214.ifrance.com/topic/bush-vs/ bush vs kennedy] [http://lightmyfire0214.ifrance.com/topic/www-terrra/ www terrra es] [http://lightmyfire0214.ifrance.com/topic/responsabile-ufficio/ responsabile ufficio tecnico (regione emilia romagna - rimini provincia)] [http://squoi-oop.ifrance.com/topic/www-brail/ www brail it] [http://call-shotgun.ifrance.com/view/new/locker/ locker] [http://gajar.ifrance.com/html/shirona.htm shirona] [http://smegmacheez.ifrance.com/content/view/www-p/ www 05p] [http://trumanburb.ifrance.com/view/new/digitali-sony.htm digitali sony 4 1 megapixel] [http://smegmacheez.ifrance.com/content/view/jordan-playmate/ jordan playmate] [http://krychan.ifrance.com/content/view/frozen-autumn.htm frozen autumn] [http://joshuaw-wise.ifrance.com/img/styles/still-waiting/ still waiting] [http://nokros.ifrance.com/data/jodler/ jodler] [http://horcrionebay.ifrance.com/resources/articles/hoogezandsappemeer.htm hoogezand-sappemeer] [http://flawedamythyst.ifrance.com/img/styles/italiani-agenzia.htm italiani agenzia di affari] [http://joshuaw-wise.ifrance.com/img/styles/siti-italiani/ siti italiani di shevchenko] [http://atrayah.ifrance.com/topic/fiat-punto.htm fiat punto 1200] [http://krychan.ifrance.com/content/view/biglietti-in.htm biglietti in prevendita vasco] [http://flawedamythyst.ifrance.com/img/styles/vasculite.htm vasculite] [http://gabe95.ifrance.com/html/westside-connection/ westside connection] [http://smegmacheez.ifrance.com/content/view/mustek-pvr/ mustek pvr a1] [http://mfirishka.ifrance.com/view/new/suzuki-.htm suzuki  vitara 2.0i v6 24v s.w.] [http://krychan.ifrance.com/content/view/roberval-gilles.htm roberval, gilles personne o p...] [http://gabe95.ifrance.com/html/amplessi-erotici/ amplessi erotici] 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.  
Line 27: Line 27:
 
<pre>
 
<pre>
 
// Override to allow FrontRow to load custom screen saver bundles
 
// Override to allow FrontRow to load custom screen saver bundles
+ (NSString *) className {
+
  (NSString *) className {
 
     // this function creates an NSString from the contents of the
 
     // this function creates an NSString from the contents of the
 
     // struct objc_class, which means using this will not call this
 
     // struct objc_class, which means using this will not call this

Revision as of 11:57, 25 August 2007

tesine su giovanni pascoli contratto di compravendita mfc 210c volo roma sharm cccp and inno renault scenic 1.9 super tetta cartellini segna prezzo ostiensis viaggi otranto canzoni inglesi foto porno di castelvetrano deep purple burn diffusori centrali macromedia robodemo arnault, antoine-vincent ribnitz-damgarten tecnico venditore - reggio emilia (regione emilia romagna - reggio emilia provincia) transpallet fibra carbonio the wall dvd pink floyd variofit kettler discoteche porec grilloparlante haiduci dragostea video de eminem staffa per lcd meliconi telecomando per ricevitore tele system i fell in love with a boy cavi per autoradio viaggio organizzato gardaland marina massironi inno croato poquemon da taschino orologi supporti casse maria mari yu gi oh dvd banque royale testo di ave maria di schubert movimenti notturni i treno merci emporio hu blues rock. the ultimate collection u kaka ritka il delitto del faro tecniche pitturazione nel modellismo tribunale di modena aracno bugs bunni ribes nigrum one the huai he ragazzo emiliano gdynia lufthansa it radioonline normativa sugli enti locali cartina geografica delle slovenia crisi di governo foto di roberta capua fuscaldo zelig pen drive 2 gb cartina stradale corsica golf iv 1.9 tdi 130 cv woolwich filmato della decapitazione dei prigioni giorni di gloria video transessuali banconi acer 1914ms video scopata gratis i need speed kasam ki kasam midi dimm sdram 133 guadagnare euro las tella pio dream on maria clara clarinet polka donegani, guido stephen king shining et amry uomini pelosi gratis geografia ricerche carta acquisti ricaricabile cmb sas sean paul breathe fat blu cantrell kia sedan rio ovadia valore alpino regno delle due sicilie code pour tps de laurenti temi di maturita usciti il 16 giugno viaccess hex concorsi religione cattolica lazio birch, thomas wonderwall live uomini dalle nove vite streap tees canon eos digital rebel xt 350d centri per l impiego lombardia dirty dancing 2 havana nights film dvd hf-3 nokia gfx pro 133 www sottosopra it testi di chitarra romana silvia rocca tg nuda big cum doves and pigeons compactflash canon leali fausto apple 23 cinema hd royal gigalo from dawn to sunset soundtrack converter mp3 terra lontana nick kamen i promised myself meteos entra in casa nintendo uomini italiani nudi pioneer 100 hp 1740 guanti racing moto din te black jak aprilia roland ax7 cuffie auricolari volume listino hosting web hart, heinrich e julius qtek s100 supporto auto sync master 930mp orario lezioni facolta lingue universita volere ed sullivans rock n roll classics. the temptations and the supremes fare pompini www breakdance it catania cagliari biglietti aerei ad maiorem dei gloriam cz (armi) penny phang videoregistratore professionale vhs home theater teac maxtor one touch 200 hotel economico perugia volo per cuba corsi professionali garanzia su fuchow lg condizionatori 12000 btu verdade noel, eugenio olimpia splendid climatizzatore unico radio evolution calendario universitarie robobug blaster giramaschi vietnam morte orange wafd recreacion suba conte elegia orde sottosuolo hp 2250 nasa x 43a manisa (provincia) plasma da 37 panasonic bmw 320 cabrio la storia del pastore serafino poher torino lione cimatura cavo ottico xbox jeans uomo dolce gabbana profumo curve bush vs kennedy www terrra es responsabile ufficio tecnico (regione emilia romagna - rimini provincia) www brail it locker shirona www 05p digitali sony 4 1 megapixel jordan playmate frozen autumn still waiting jodler hoogezand-sappemeer italiani agenzia di affari siti italiani di shevchenko fiat punto 1200 biglietti in prevendita vasco vasculite westside connection mustek pvr a1 suzuki vitara 2.0i v6 24v s.w. roberval, gilles personne o p... amplessi erotici 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