FRScreenSaver 101

From AwkwardTV
Revision as of 23:31, 28 August 2007 by ThnEa7 (talk | contribs)
Jump to: navigation, search

donne mature 50 60anni female bodybuilder sex escort girls paola pezzo donne con il pisello paris hilton video gratis nudisti racconto filmini porno www ragazze italiane it walmart playboy xxx photos gallery video gay con media player foto porno gratis www dragonball xxx pornostar bionde sex and porn ragazze italiane irak suonerie per cellulari gratis jenny finch naked foto delle ragazze in chat paola tronista donne private nude gioco java gratis maschioni gay fotoannunci ragazze giochi super mario scaricare gratis racconti e video erotici gratuiti animals sex foto gay de la hora racconti di masturbazioni e incesti gay foto sexi di sportive lovely girls emule gratis filmporno annunci 69 di donne i see pic sex grl boy vagine donne nude che si abbracciano foto video gratis hentai movi videoporno amatoriali testi canzoni fuck it di eamon sondrio sesso incesto cognata calendari donne 2005 gay perugia sexn genova gay photo porno fotografie ragazze nere sneakers diesel unisex incontri gay slave girl cristina chiabotto xxx veronica grande fratello 5 simpsons xxx playboy del mese sadomaso gay da profumeria paola pornostar americane negre xxx foto xxx usa auto usate perizia e valutazioni gratis sms gratis da inviare da internet animalisesso gioco carta gratis solitario stars in sex videoclip porno foto uomo gay viva le donne videos sexo gratis com sex over 60 george benson life wonderfull solid snake sesso video consigliato misex 2004 sesso fra uomini kate naked enrique iglesias nudo pornomotore net sveva sagramola nuda ewa sonnet video gratis www programmigratis com in certi momenti eros ramazzotti cd sex girl gyno sex dwarf racconti transex sesso escort eros nove pamela anderson e tommy lee copertina dvd eros ramazzotti sex po donne sex over 40 zoofilia gay eva henger porno film porno italiani picapiedras xxx video porno paris hilton giovani e sesso il cazzo nella fessa gratis sexolatino dizionari e traduttori gratis demi moore porno video gioco gratis ps2 donne con tette grandi video erotici ppt adulti gratis anna tatangelo nuda siti pornografici ard le ragazze di gauguin xemphimsex hotel bambini gratis www playgirl com racconto erotico gay sexy patrizia rossetti juegos porno de dibujos magic amerika sexi shop quattro donne aspettano foto gay x gay sex horse sexy ilaria d amico fotos de sex immagini ragazze con uomini donne incinte sex pornomature foto matrimonio di eros ramazzotti racconti erotici di masturbazioni e incesti gay foto uomini nudi gay joypad analogico tratta delle donne fotos gratis privadas sex lingerie le porno hostess in super 3-d olivia del rio pornostar foto nudo maschio www chat adulti it www playboy toon com image porno sesso in diretta grande fratello tedesco che cos e il sesso orale fotos sexo gratis le tette delle ragazze http www 3x2 com videoporno teen lesbo chat gay lesbiche ragg sexy diventare pornostar fotos gratis de mujeres desnudas foto d donne sborrate donne hotel traduzioni veloci e gratis chat porno gratis libri erotici foto di keira knightley nuda sexvido michel vieth video porno incesti free video hentai streghe e sesso donne vechie in calore musica mp3 gratis hally barry nuda scarica film porno gratis sesso gratis incontri video giochi da scaricare gratis sfondi gratis per nokia 3100 sexliveshow racconti di sesso hard video gratis gratis federica ridolfi nuda video pamela anderso porno codice fiscale gratis mariolina simone nuda sex group annunci tette porno gratis en la red vibratori per donne mutandine sexi gratis tette da succhiare selen video porno donne mature hard over 40 l abc dell eros porno69 foto porno tawnee stone porno d epoca interracial sex hard sexy anal insertion ilaria d amico foto sexy pornostar famose foto latex sexy photo sexy foto transex free scarica video porno bande per canali satellitari naked gymnast haiduci mp3 gratis belle ragazze nude grati canal satellite tette e figa 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.


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/ Savers

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


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: