Difference between revisions of "FRScreenSaver 101"

From AwkwardTV
Jump to: navigation, search
m (unspam)
m
Line 1: Line 1:
Finally the screen saver problem has been solved too!  
+
[http://spdinnie.angelfire.com/html/banche-che/ banche che assumono] [http://requidim.angelfire.com/web/il-valzer.htm il valzer degli sposati] [http://hahosmer.angelfire.com/html/enterprise.htm enterprise] [http://elernst.angelfire.com/articles/van-halen.htm van halen video hits] [http://blhestrie.125mb.com/web/foto-gallery/ foto gallery positano] [http://blhestrie.125mb.com/web/hp-ipaq/ hp ipaq hx2110 pocket pc] [http://hoadmoni.125mb.com/styles/afs-vr/ afs vr nikon] [http://grdugans.angelfire.com/text/honda-vfr.htm honda vfr] [http://wiellico.125mb.com/html/coppie.htm coppie 50] [http://blhestrie.125mb.com/web/volante-con/ volante con pedaliera usb] [http://blhestrie.125mb.com/web/hotel-lisbona/ hotel lisbona portogallo] [http://amarymuk.angelfire.com/html/tomtom-mio.htm tomtom mio] [http://mcclaise.angelfire.com/description/lg/ lg 7300] [http://sawilson.125mb.com/data/intel-xe.htm intel 925xe] [http://dleslis.125mb.com/resources/staffa-a.htm staffa a muro universale] [http://gitedy.125mb.com/blog/jules-verne/ jules verne] [http://hahosmer.angelfire.com/html/televisione-inglese.htm televisione inglese la fattoria farm] [http://wiellico.125mb.com/html/x-dvd.htm 4x dvd] [http://slavfondmeister.angelfire.com/styles/cavo-usb.htm cavo usb ds console] [http://slavfondmeister.angelfire.com/styles/struttura-luna.htm struttura luna] [http://sibeatri.angelfire.com/html/i-girasoli/ i girasoli] [http://sibeatri.angelfire.com/html/tuner-dvbt/ tuner dvbt] [http://ruwier.125mb.com/hotel-/ hotel 4 stelle perugia] [http://kocarawf.125mb.com/blog/file-rbn.htm file rbn] [http://bedrew.125mb.com/www-trigliceridi.htm www trigliceridi it] [http://mamans.125mb.com/topic/kylie-ireland.htm kylie ireland] [http://morudd.angelfire.com/web/canti-popolari/ canti popolari lucani] [http://hoadmoni.125mb.com/styles/nec-/ nec 42 plasma] [http://tibrown.125mb.com/description/bmw/ bmw 2002] [http://awihimmeru.angelfire.com/belinda-mp.htm belinda mp3] [http://slavfondmeister.angelfire.com/styles/cartine-dell.htm cartine dell antica grecia] [http://gistrate.angelfire.com/html/rhum-zacapa.htm rhum zacapa] [http://ruwier.125mb.com/margherita-dolcevita/ margherita dolcevita stefano benni] [http://morudd.angelfire.com/web/motori-di/ motori di ricerca mondiali] [http://dleslis.125mb.com/resources/delonghi-pac.htm delonghi pac fx 130 eco] [http://champ-alnite.angelfire.com/registratore-per.htm registratore per appunti] [http://wiellico.125mb.com/html/siti-auto.htm siti auto usate con foto] [http://bedrew.125mb.com/trzeci.htm trzeci] [http://stjollay.125mb.com/topic/zhujiang/ zhujiang] [http://fikimber.125mb.com/lib/gemelli-acciaio.htm gemelli acciaio] [http://dleslis.125mb.com/resources/maglia-sweet.htm maglia sweet years] [http://paryker.125mb.com/styles/anime-nel/ anime nel deserto] [http://dacornel.125mb.com/data/midi-famosi.htm midi famosi] [http://vegrigsb.angelfire.com/resources/lamore-canta.htm lamore canta] [http://wiellico.125mb.com/html/britnei-spiears.htm britnei spiears] [http://mamans.125mb.com/topic/psychic-force.htm psychic force 2] [http://mamans.125mb.com/topic/prestito-casalinghe.htm prestito casalinghe] [http://mamans.125mb.com/topic/lelly-kelly.htm lelly kelly] [http://bedrew.125mb.com/slim-fit.htm slim fit] [http://hoadmoni.125mb.com/styles/nelly-furtado/ nelly furtado forca videoclip] [http://ruwier.125mb.com/elisa-lotus/ elisa lotus] [http://amarymuk.angelfire.com/html/the-invader.htm the invader] [http://dleslis.125mb.com/resources/motorola-v.htm motorola v1050 vodafone] [http://blhestrie.125mb.com/web/gleim-johann/ gleim johann wilhelm ludwig] [http://sewehner.125mb.com/articles/lilli/ lilli] [http://wiellico.125mb.com/html/riassunto-malavoglia.htm riassunto malavoglia] [http://stjollay.125mb.com/topic/pioneer-pdp/ pioneer pdp 436] [http://anethel.angelfire.com/skofljica.htm skofljica] [http://mamans.125mb.com/topic/musiche-eterne.htm musiche eterne] [http://dleslis.125mb.com/resources/ied.htm ied] [http://amarymuk.angelfire.com/html/geforce-.htm geforce 4 mx4000] [http://morudd.angelfire.com/web/veline-nude/ veline nude a lucignolo] [http://amarymuk.angelfire.com/html/kitten-cannon.htm kitten cannon] [http://mamans.125mb.com/topic/scuola-di.htm scuola di sesso] [http://mcclaise.angelfire.com/description/tommaso-rapito/ tommaso rapito] [http://kocarawf.125mb.com/blog/juegos-barbie.htm juegos barbie] [http://awihimmeru.angelfire.com/jean-claude.htm jean claude van damme fotos de pelicula] [http://woharwoo.angelfire.com/data/pakistan/ pakistan] [http://sawilson.125mb.com/data/ad-corpus.htm ad corpus] [http://mamans.125mb.com/topic/love-h.htm love h] [http://elernst.angelfire.com/articles/bubble-trubble.htm bubble trubble] [http://fikimber.125mb.com/lib/ischia-it.htm ischia it] [http://kocarawf.125mb.com/blog/fregene-riviera.htm fregene riviera] [http://degaylor.125mb.com/jp/ jp 50] [http://kocarawf.125mb.com/blog/game-pad.htm game pad saitek] [http://dleslis.125mb.com/resources/forni-pizza.htm forni pizza a legna] [http://dacornel.125mb.com/data/football-volley.htm football volley] [http://amarymuk.angelfire.com/html/www-anzwers.htm www anzwers net] [http://dleslis.125mb.com/resources/subaru-impreza.htm subaru impreza cw] [http://dleslis.125mb.com/resources/configurazione-samsung.htm configurazione samsung] [http://sawilson.125mb.com/data/love-street.htm love street of fire] [http://sibeatri.angelfire.com/html/yeti-trucchi/ yeti trucchi] [http://hoadmoni.125mb.com/styles/cellulari-sony/ cellulari sony] [http://blhestrie.125mb.com/web/freddy-mercuri/ freddy mercuri oscar] [http://paryker.125mb.com/styles/eminem-withouth/ eminem withouth me] [http://hahosmer.angelfire.com/html/promises-cramberries.htm promises cramberries] [http://elernst.angelfire.com/articles/video-esecuzione.htm video esecuzione fabrizio quattrocchi] [http://wiellico.125mb.com/html/foppapedretti-stiramaniche.htm foppapedretti stiramaniche] [http://hahosmer.angelfire.com/html/prestazione.htm prestazione] [http://fikimber.125mb.com/lib/proctor-robert.htm proctor robert] [http://yonosoyyo.angelfire.com/directory/daniele-cobianchi.htm daniele cobianchi] [http://dacornel.125mb.com/data/el-pueblo.htm el pueblo intillimani] [http://bedrew.125mb.com/aracnid.htm aracnid] [http://yarobiso.angelfire.com/text/microsoft-virtual.htm microsoft virtual] [http://amarymuk.angelfire.com/html/uralsk.htm uralsk] [http://mamans.125mb.com/topic/bmw-touring.htm bmw touring 320] [http://paryker.125mb.com/styles/jvc-g/ jvc g] [http://woharwoo.angelfire.com/data/nokia-/ nokia 6680 accessori gps] [http://kocarawf.125mb.com/blog/motorola-v.htm motorola v600 silver] [http://nescogin.125mb.com/content/hp.htm hp 350] [http://stjollay.125mb.com/topic/g/ g42] [http://champ-alnite.angelfire.com/maurice-ronet.htm maurice ronet] [http://yarobiso.angelfire.com/text/ixus.htm ixus 300] [http://ruwier.125mb.com/somadeva/ somadeva] [http://nescogin.125mb.com/content/una-lettera.htm una lettera per un amore perso] [http://sewehner.125mb.com/articles/brother-hl/ brother hl1430] [http://morudd.angelfire.com/web/orario-autobus/ orario autobus] [http://stjollay.125mb.com/topic/belkin-access/ belkin access point] [http://awihimmeru.angelfire.com/candid.htm candid] [http://nescogin.125mb.com/content/foto-tette.htm foto tette di pamela anderson] [http://anethel.angelfire.com/speciale-halo.htm speciale halo lan party] [http://hoadmoni.125mb.com/styles/masterizzatore-usb/ masterizzatore usb] [http://gitedy.125mb.com/blog/stay-tommy/ stay tommy lee] [http://dleslis.125mb.com/resources/usb-driver.htm usb driver c350] [http://bedrew.125mb.com/home-theatre.htm home theatre sanyo] [http://tibrown.125mb.com/description/inni-cori/ inni cori juve] [http://tibrown.125mb.com/description/creative-labs/ creative labs itrigue 3600] [http://bedrew.125mb.com/wwe-smackdown.htm wwe smackdown] [http://dleslis.125mb.com/resources/maxi-cosi.htm maxi cosi buzz] [http://anethel.angelfire.com/sony-nwe.htm sony nwe405] [http://tibrown.125mb.com/description/perlina-gioiello/ perlina gioiello] [http://anethel.angelfire.com/come-e.htm come e get it] [http://tibrown.125mb.com/description/mikael-kenta/ mikael kenta] [http://kocarawf.125mb.com/blog/annuncio-roma.htm annuncio roma amicizia] [http://ruwier.125mb.com/occhiali-polo/ occhiali polo] [http://tibrown.125mb.com/description/mediastage/ mediastage] [http://spdinnie.angelfire.com/html/star-trek/ star trek voyager stagione 7] [http://hoadmoni.125mb.com/styles/voli-bristol/ voli bristol] [http://dacornel.125mb.com/data/statuto.htm statuto] [http://gitedy.125mb.com/blog/i-ragazzi/ i ragazzi calendari 2004] [http://gitedy.125mb.com/blog/rex-rc/ rex rc 26] [http://fikimber.125mb.com/lib/ferri.htm ferri] [http://tibrown.125mb.com/description/server-cisco/ server cisco] [http://gitedy.125mb.com/blog/recensioni-escort/ recensioni escort] [http://hahosmer.angelfire.com/html/il-valzerone.htm il valzerone] [http://mcclaise.angelfire.com/description/nikonfotocamera-digitale/ nikonfotocamera digitale] [http://hoadmoni.125mb.com/styles/dexters-glass/ dexters glass] [http://yarobiso.angelfire.com/text/erwin-rommel.htm erwin rommel] [http://blhestrie.125mb.com/web/canon-d/ canon d] [http://degaylor.125mb.com/la-salsa/ la salsa] [http://mamans.125mb.com/topic/asus-notebook.htm asus notebook bluetooth] [http://spdinnie.angelfire.com/html/www-sanjesh/ www sanjesh com] [http://anethel.angelfire.com/axen-it.htm axen it] [http://hahosmer.angelfire.com/html/super-sexo.htm super sexo] [http://mamans.125mb.com/topic/nikon-coolpix.htm nikon coolpix 4500] [http://paryker.125mb.com/styles/gif-animate/ gif animate sex] [http://ruwier.125mb.com/paff-daddy/ paff daddy] [http://wiellico.125mb.com/html/tdk-printable.htm tdk printable] [http://fikimber.125mb.com/lib/poesie-d.htm poesie d amore francesi] [http://blhestrie.125mb.com/web/sapphire-x/ sapphire x800 256mb agp full retail] [http://dleslis.125mb.com/resources/volante-ferrari.htm volante ferrari ps2] [http://sawilson.125mb.com/data/diyar.htm diyar] [http://blhestrie.125mb.com/web/scheda-controller/ scheda controller sata] [http://mamans.125mb.com/topic/goldsboro.htm goldsboro] [http://dleslis.125mb.com/resources/u-ora.htm u ora d amore] [http://yarobiso.angelfire.com/text/gotta-learn.htm gotta learn] [http://mcclaise.angelfire.com/description/sega-ora/ sega ora gode di buona salute] [http://degaylor.125mb.com/lavoro-gigolo/ lavoro gigolo] [http://yarobiso.angelfire.com/text/fiesta-km.htm fiesta km 0] [http://sawilson.125mb.com/data/provini-per.htm provini per film a torino] [http://dacornel.125mb.com/data/arizona-shopping.htm arizona shopping] [http://slavfondmeister.angelfire.com/styles/firewire-memory.htm firewire memory card] [http://paryker.125mb.com/styles/hackles/ hackles] [http://morudd.angelfire.com/web/cranberries-zombie/ cranberries zombie] [http://champ-alnite.angelfire.com/voz-za.htm voz za srecu] [http://yonosoyyo.angelfire.com/directory/panasonic-pi.htm panasonic p342i] [http://mamans.125mb.com/topic/e-l.htm e l p] [http://champ-alnite.angelfire.com/lettore-nad.htm lettore nad] [http://stjollay.125mb.com/topic/boccale-birra/ boccale birra] [http://yarobiso.angelfire.com/text/il-la.htm il la] [http://champ-alnite.angelfire.com/hotels-.htm hotels  estonia] [http://requidim.angelfire.com/web/sesso-estremo.htm sesso estremo con dolore] [http://fikimber.125mb.com/lib/dolce-gabbana.htm dolce gabbana spot soundtracks] [http://paryker.125mb.com/styles/hotel-split/ hotel split] [http://sewehner.125mb.com/articles/yha-h/ yha h] [http://bedrew.125mb.com/meet-woman.htm meet woman] [http://champ-alnite.angelfire.com/francja.htm francja] [http://elernst.angelfire.com/articles/figlia-di.htm figlia di sion] [http://yonosoyyo.angelfire.com/directory/dragixa.htm dragixa] [http://sewehner.125mb.com/articles/sata-gb/ sata 120gb] [http://bedrew.125mb.com/manichino.htm manichino] [http://bedrew.125mb.com/decapitato-recente.htm decapitato recente] [http://dleslis.125mb.com/resources/maxtor-hdd.htm maxtor hdd 160gb usb] [http://dacornel.125mb.com/data/lolloscan.htm lolloscan] [http://grdugans.angelfire.com/text/ragalna.htm ragalna] [http://champ-alnite.angelfire.com/inno-hit.htm inno hit lcd] [http://sewehner.125mb.com/articles/teac-vrds/ teac vrds] [http://sawilson.125mb.com/data/foto-vacanze.htm foto vacanze alle maldive] [http://dacornel.125mb.com/data/free-video.htm free video sharing] [http://degaylor.125mb.com/una-romantica/ una romantica donna inglese] [http://mamans.125mb.com/topic/riparazioni-sedute.htm riparazioni sedute in vimini] [http://gitedy.125mb.com/blog/epson/ epson 2500] [http://nescogin.125mb.com/content/mini-cooper.htm mini cooper nuove] [http://ruwier.125mb.com/inspiron/ inspiron 9100] [http://wiellico.125mb.com/html/chopin-tristesse.htm chopin tristesse] [http://ruwier.125mb.com/electro-jazz/ electro jazz] [http://dacornel.125mb.com/data/ballerine-in.htm ballerine in perizoma] [http://ruwier.125mb.com/gri/ gri] [http://elernst.angelfire.com/articles/piumone-winnie.htm piumone winnie pooh] [http://sewehner.125mb.com/articles/coppia-ingoio/ coppia ingoio] 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 09:58, 31 August 2007

banche che assumono il valzer degli sposati enterprise van halen video hits foto gallery positano hp ipaq hx2110 pocket pc afs vr nikon honda vfr coppie 50 volante con pedaliera usb hotel lisbona portogallo tomtom mio lg 7300 intel 925xe staffa a muro universale jules verne televisione inglese la fattoria farm 4x dvd cavo usb ds console struttura luna i girasoli tuner dvbt hotel 4 stelle perugia file rbn www trigliceridi it kylie ireland canti popolari lucani nec 42 plasma bmw 2002 belinda mp3 cartine dell antica grecia rhum zacapa margherita dolcevita stefano benni motori di ricerca mondiali delonghi pac fx 130 eco registratore per appunti siti auto usate con foto trzeci zhujiang gemelli acciaio maglia sweet years anime nel deserto midi famosi lamore canta britnei spiears psychic force 2 prestito casalinghe lelly kelly slim fit nelly furtado forca videoclip elisa lotus the invader motorola v1050 vodafone gleim johann wilhelm ludwig lilli riassunto malavoglia pioneer pdp 436 skofljica musiche eterne ied geforce 4 mx4000 veline nude a lucignolo kitten cannon scuola di sesso tommaso rapito juegos barbie jean claude van damme fotos de pelicula pakistan ad corpus love h bubble trubble ischia it fregene riviera jp 50 game pad saitek forni pizza a legna football volley www anzwers net subaru impreza cw configurazione samsung love street of fire yeti trucchi cellulari sony freddy mercuri oscar eminem withouth me promises cramberries video esecuzione fabrizio quattrocchi foppapedretti stiramaniche prestazione proctor robert daniele cobianchi el pueblo intillimani aracnid microsoft virtual uralsk bmw touring 320 jvc g nokia 6680 accessori gps motorola v600 silver hp 350 g42 maurice ronet ixus 300 somadeva una lettera per un amore perso brother hl1430 orario autobus belkin access point candid foto tette di pamela anderson speciale halo lan party masterizzatore usb stay tommy lee usb driver c350 home theatre sanyo inni cori juve creative labs itrigue 3600 wwe smackdown maxi cosi buzz sony nwe405 perlina gioiello come e get it mikael kenta annuncio roma amicizia occhiali polo mediastage star trek voyager stagione 7 voli bristol statuto i ragazzi calendari 2004 rex rc 26 ferri server cisco recensioni escort il valzerone nikonfotocamera digitale dexters glass erwin rommel canon d la salsa asus notebook bluetooth www sanjesh com axen it super sexo nikon coolpix 4500 gif animate sex paff daddy tdk printable poesie d amore francesi sapphire x800 256mb agp full retail volante ferrari ps2 diyar scheda controller sata goldsboro u ora d amore gotta learn sega ora gode di buona salute lavoro gigolo fiesta km 0 provini per film a torino arizona shopping firewire memory card hackles cranberries zombie voz za srecu panasonic p342i e l p lettore nad boccale birra il la hotels estonia sesso estremo con dolore dolce gabbana spot soundtracks hotel split yha h meet woman francja figlia di sion dragixa sata 120gb manichino decapitato recente maxtor hdd 160gb usb lolloscan ragalna inno hit lcd teac vrds foto vacanze alle maldive free video sharing una romantica donna inglese riparazioni sedute in vimini epson 2500 mini cooper nuove inspiron 9100 chopin tristesse electro jazz ballerine in perizoma gri piumone winnie pooh coppia ingoio 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