Difference between revisions of "FRScreenSaver 101"

From AwkwardTV
Jump to: navigation, search
m
m (unspam)
Line 1: Line 1:
[http://lady-mosquito.ifrance.com/web/notebook-sempron/ notebook sempron 3000] [http://butanexlove.ifrance.com/lib/silversted.htm silversted] [http://epireial-h.ifrance.com/topic/acer-mp.htm acer mp3 advanced 1] [http://bagrec.ifrance.com/lib/michael-jackson.htm michael jackson dvd] [http://gmkamm.ifrance.com/view/new/call-on.htm call on me] [http://rielethuil.ifrance.com/description/lib/disney-televisori.htm disney televisori] [http://rielethuil.ifrance.com/description/lib/aliens-of.htm aliens of the deep] [http://me4tateljnitsa.ifrance.com/data/bump-bump/ bump bump bump b2k] [http://stasiia.ifrance.com/img/styles/suntrust/ suntrust] [http://stasiia.ifrance.com/img/styles/aix-en/ aix en provence rsidence] [http://rielethuil.ifrance.com/description/lib/tovarich.htm tovarich] [http://lauashbu.ifrance.com/lib/pepe-jeans/ pepe jeans] [http://rielethuil.ifrance.com/description/lib/osteoarthritis.htm osteoarthritis] [http://heyclassylady.ifrance.com/html/mp-and.htm mp3 and sd] [http://sherryfraser03.ifrance.com/web/www-marcolino/ www marcolino it] [http://cannotspell.ifrance.com/description/lib/tutto-citta/ tutto citta milano] [http://bagrec.ifrance.com/lib/proloco-cervia.htm proloco cervia] [http://la-seras.ifrance.com/library/html/peladinha.htm peladinha] [http://me4tateljnitsa.ifrance.com/data/giochi-hentai/ giochi hentai gratis] [http://orbzine.ifrance.com/images/small/value-corsair.htm value corsair memoria ram] [http://pegasik.ifrance.com/html/this-love/ this love techno] [http://stasiia.ifrance.com/img/styles/midi-karaoke/ midi karaoke] [http://lauashbu.ifrance.com/lib/ge-capital/ ge capital finance italia] [http://ryandrablya.ifrance.com/lib/queremos-mais.htm queremos mais menos ais] [http://lady-mosquito.ifrance.com/web/george-michael/ george michael amazing] [http://heyclassylady.ifrance.com/html/edoardo-ciotti.htm edoardo ciotti] [http://gmkamm.ifrance.com/view/new/kenya-vacanza.htm kenya vacanza] [http://last-shadow.ifrance.com/text/directory/fasi-del/ fasi del processo civile] [http://zonkismusik.ifrance.com/img/styles/alla-mia.htm alla mia cara mamma nel giorno del suo compleanno] [http://ryandrablya.ifrance.com/lib/programma-excel.htm programma excel] [http://lady-mosquito.ifrance.com/web/color-teris/ color teris] [http://bagrec.ifrance.com/lib/mobilita-articolare.htm mobilita articolare mano] [http://lauashbu.ifrance.com/lib/wings-sonic/ wings sonic] [http://stasiia.ifrance.com/img/styles/el-binomio/ el binomio de oro de america] [http://butanexlove.ifrance.com/lib/la-commerciale.htm la commerciale srl] [http://gmkamm.ifrance.com/view/new/running-away.htm running away] [http://fishing-gro.ifrance.com/html/www-steelers/ www steelers com] [http://me4tateljnitsa.ifrance.com/data/tastiera-organo/ tastiera organo piano] [http://orbzine.ifrance.com/images/small/usb.htm usb 128] [http://lady-mosquito.ifrance.com/web/nokia-/ nokia 2600 auricolare] [http://rielethuil.ifrance.com/description/lib/mamuccari.htm mamuccari] [http://stasiia.ifrance.com/img/styles/fonderia-ghirlandina/ fonderia ghirlandina] [http://lady-mosquito.ifrance.com/web/fake-giorgia/ fake giorgia palmas] [http://me4tateljnitsa.ifrance.com/data/delonghi-caffe/ delonghi caffe cialde] [http://fishing-gro.ifrance.com/html/psycomedia/ psycomedia] [http://bagrec.ifrance.com/lib/videocamera-hard.htm videocamera hard disk] [http://butanexlove.ifrance.com/lib/ombellico.htm ombellico] [http://pegasik.ifrance.com/html/vincero/ vincero] [http://lauashbu.ifrance.com/lib/www-iperclub/ www iperclub] [http://gmkamm.ifrance.com/view/new/acno-s.htm acno s] [http://epireial-h.ifrance.com/topic/lcpe-tv.htm lc32p50e tv sharp televisori lcd] [http://rielethuil.ifrance.com/description/lib/dvd-e.htm dvd e cd] [http://gmkamm.ifrance.com/view/new/kilroy.htm kilroy 1] [http://lady-mosquito.ifrance.com/web/allarme-sezione/ allarme sezione omicidi] [http://ryandrablya.ifrance.com/lib/foto-eva.htm foto eva enger] [http://ryandrablya.ifrance.com/lib/gladiateur-musical.htm gladiateur musical] [http://rielethuil.ifrance.com/description/lib/cantanti-stranieri.htm cantanti stranieri donne foto] [http://bagrec.ifrance.com/lib/bucci-twins.htm bucci twins] [http://lauashbu.ifrance.com/lib/miss-arizona/ miss arizona] [http://orbzine.ifrance.com/images/small/ivano-de.htm ivano de matteo] [http://lady-mosquito.ifrance.com/web/real-media/ real media player] [http://gmkamm.ifrance.com/view/new/undici-ottavi.htm undici ottavi] [http://uo-ination.ifrance.com/lib/philips-/ philips 5430 micro] [http://fishing-gro.ifrance.com/html/medical-team/ medical team srl] [http://la-seras.ifrance.com/library/html/dj-simon.htm dj simon] [http://stasiia.ifrance.com/img/styles/coppia-lui/ coppia lui bsx] [http://la-seras.ifrance.com/library/html/www-passaggio.htm www passaggio di venere it] [http://sherryfraser03.ifrance.com/web/formula-uno/ formula uno 2004 ps2] [http://stasiia.ifrance.com/img/styles/televisori-humax/ televisori humax] [http://bagrec.ifrance.com/lib/peccatori.htm peccatori] [http://butanexlove.ifrance.com/lib/aobusto-it.htm aobusto it] [http://ryandrablya.ifrance.com/lib/microcar-di.htm microcar di seconda mano] [http://gmkamm.ifrance.com/view/new/el.htm el] [http://me4tateljnitsa.ifrance.com/data/pierino-torna/ pierino torna a scuola] [http://ryandrablya.ifrance.com/lib/whirlpool-vetro.htm whirlpool vetro piano cottura] [http://pegasik.ifrance.com/html/emrah-mahzuni/ emrah mahzuni] [http://la-seras.ifrance.com/library/html/cancello-auschwitz.htm cancello auschwitz] [http://heyclassylady.ifrance.com/html/video-hard.htm video hard porno gratis] [http://me4tateljnitsa.ifrance.com/data/estate-maeda/ estate maeda] [http://sherryfraser03.ifrance.com/web/codici-di/ codici di sblocco lg 8110] [http://gmkamm.ifrance.com/view/new/synthesis-nimis.htm synthesis nimis] [http://butanexlove.ifrance.com/lib/dvd.htm dvd 3] [http://bagrec.ifrance.com/lib/riproduzione-del.htm riproduzione del testo della l 204 85] [http://heyclassylady.ifrance.com/html/yattaman-vol.htm yattaman vol 18] [http://pegasik.ifrance.com/html/rivotu/ rivotu] [http://butanexlove.ifrance.com/lib/robert-kagan.htm robert kagan] [http://me4tateljnitsa.ifrance.com/data/fiat-punto/ fiat punto dynamic multijet 2005] [http://lauashbu.ifrance.com/lib/kingdom-hearts/ kingdom hearts ancora migliorato] [http://gmkamm.ifrance.com/view/new/le-canzoni.htm le canzoni italiane degli anni 90] [http://heyclassylady.ifrance.com/html/right-to.htm right to be wrong] [http://rielethuil.ifrance.com/description/lib/monitor-philips.htm monitor philips 170c5] [http://orbzine.ifrance.com/images/small/singole-in.htm singole in sicilia] [http://stasiia.ifrance.com/img/styles/johnny-tiger/ johnny tiger] [http://fishing-gro.ifrance.com/html/dvd-pinocchio/ dvd pinocchio] [http://rielethuil.ifrance.com/description/lib/libri-informatica.htm libri informatica] [http://ryandrablya.ifrance.com/lib/nebraskan.htm nebraskan] [http://lauashbu.ifrance.com/lib/leki-out/ leki out] [http://lady-mosquito.ifrance.com/web/everibody-s/ everibody s keane] [http://la-seras.ifrance.com/library/html/numeric-keypad.htm numeric keypad usb] [http://lauashbu.ifrance.com/lib/dhamm/ dhamm] [http://fishing-gro.ifrance.com/html/globus-medisound/ globus medisound] [http://lady-mosquito.ifrance.com/web/antechinus/ antechinus] [http://last-shadow.ifrance.com/text/directory/testo-e/ testo e traduzione fuck] [http://sherryfraser03.ifrance.com/web/www-bastardidentro/ www bastardidentro com] [http://cannotspell.ifrance.com/description/lib/amd-xp/ amd xp sempron 2400 266] [http://rielethuil.ifrance.com/description/lib/la-vergine.htm la vergine indiana] [http://stasiia.ifrance.com/img/styles/silver-chain/ silver chain by meter] [http://stasiia.ifrance.com/img/styles/spartiti-gratuiti/ spartiti gratuiti] [http://butanexlove.ifrance.com/lib/bipielle-ducato.htm bipielle ducato] [http://sherryfraser03.ifrance.com/web/scenic/ scenic 2] [http://fishing-gro.ifrance.com/html/soluzione-gioco/ soluzione gioco pc gratis] [http://rielethuil.ifrance.com/description/lib/mediaplayer.htm mediaplayer] [http://epireial-h.ifrance.com/topic/hitec-ch.htm hitec 3ch] [http://uo-ination.ifrance.com/lib/mppro-encoder/ mp3pro encoder plug in for nero email ve] [http://lauashbu.ifrance.com/lib/tires/ tires] [http://rielethuil.ifrance.com/description/lib/centri-commerciale.htm centri commerciale] [http://epireial-h.ifrance.com/topic/ma-che.htm ma che freddo fa] [http://lauashbu.ifrance.com/lib/traccia-tema/ traccia tema 2004] [http://rielethuil.ifrance.com/description/lib/nikon-.htm nikon  d50 body black] [http://la-seras.ifrance.com/library/html/oyono-ferdinand.htm oyono ferdinand] [http://last-shadow.ifrance.com/text/directory/the-alfa/ the alfa project] [http://la-seras.ifrance.com/library/html/silvsted.htm silvsted] [http://uo-ination.ifrance.com/lib/masterizzare-dvd/ masterizzare dvd ps2 nero] [http://epireial-h.ifrance.com/topic/carrello-da.htm carrello da cucina] [http://stasiia.ifrance.com/img/styles/motori-di/ motori di ricerca hotel] [http://butanexlove.ifrance.com/lib/willi-pasini.htm willi pasini psicoterapeuta] [http://gmkamm.ifrance.com/view/new/golf-.htm golf 2 0 tdi] [http://epireial-h.ifrance.com/topic/primo-neo.htm primo neo motore ricerca] [http://fishing-gro.ifrance.com/html/download-dvd/ download dvd decripter] [http://fishing-gro.ifrance.com/html/luomo-dai/ luomo dai mille volti] [http://lady-mosquito.ifrance.com/web/samsung-dvd/ samsung dvd dvx] [http://cannotspell.ifrance.com/description/lib/acer-ferrari/ acer ferrari 3000] [http://heyclassylady.ifrance.com/html/dragoste-din.htm dragoste din tei online] [http://gmkamm.ifrance.com/view/new/biglietti-aerei.htm biglietti aerei amsterdam] [http://la-seras.ifrance.com/library/html/toten.htm toten] [http://gmkamm.ifrance.com/view/new/canon-mv.htm canon mv 830 i] [http://sherryfraser03.ifrance.com/web/isole-cook/ isole cook] [http://fishing-gro.ifrance.com/html/sfondi-per/ sfondi per samsung] [http://ryandrablya.ifrance.com/lib/hay-wadi.htm hay wadi hay galbi] [http://lauashbu.ifrance.com/lib/foto-anna/ foto anna safroncik] [http://pegasik.ifrance.com/html/il-vicino/ il vicino] [http://bagrec.ifrance.com/lib/j-five.htm j five featuring charlie chaplin] [http://lady-mosquito.ifrance.com/web/lavatrici-bosch/ lavatrici bosch 800 giri] [http://stasiia.ifrance.com/img/styles/talco/ talco] [http://pegasik.ifrance.com/html/o-zone/ o zone dragostea din tei dragostea din tei] [http://lauashbu.ifrance.com/lib/whirlpool-awm/ whirlpool awm 8000] [http://lady-mosquito.ifrance.com/web/date-negroamaro/ date negroamaro] [http://fishing-gro.ifrance.com/html/maddalena-corvaglia/ maddalena corvaglia senza trucco] [http://bagrec.ifrance.com/lib/contatore-per.htm contatore per acqua] [http://zonkismusik.ifrance.com/img/styles/decoder-dtt.htm decoder dtt mhp] [http://stasiia.ifrance.com/img/styles/fifa-per/ fifa per cellulare] [http://lady-mosquito.ifrance.com/web/vintl/ vintl] [http://epireial-h.ifrance.com/topic/www-pizze.htm www pizze it] [http://butanexlove.ifrance.com/lib/arrivederci-baby.htm arrivederci baby] [http://rielethuil.ifrance.com/description/lib/mare-italia.htm mare italia emilia romagna  milano] [http://bagrec.ifrance.com/lib/super-fly.htm super fly] [http://me4tateljnitsa.ifrance.com/data/art-/ art 32 d l 269 2003] [http://la-seras.ifrance.com/library/html/lettore-multimediale.htm lettore multimediale] [http://last-shadow.ifrance.com/text/directory/mobiletti-porta/ mobiletti porta tv] [http://ryandrablya.ifrance.com/lib/elisabettacanalis.htm elisabettacanalis] [http://last-shadow.ifrance.com/text/directory/gamecube-joystick/ gamecube joystick] [http://fishing-gro.ifrance.com/html/golf-variant/ golf variant] [http://la-seras.ifrance.com/library/html/kaden-bandrowski.htm kaden bandrowski juliusz] [http://zonkismusik.ifrance.com/img/styles/tv-plasma.htm tv plasma nuovo] [http://cannotspell.ifrance.com/description/lib/geber/ geber] [http://la-seras.ifrance.com/library/html/napoli-torino.htm napoli torino] [http://la-seras.ifrance.com/library/html/rao.htm rao] [http://la-seras.ifrance.com/library/html/lee-sabi.htm lee sabi] [http://fishing-gro.ifrance.com/html/vlieland/ vlieland] [http://gmkamm.ifrance.com/view/new/impulso-di.htm impulso di una forza] [http://lady-mosquito.ifrance.com/web/pane-macchina/ pane macchina per] [http://la-seras.ifrance.com/library/html/you-know.htm you know my dream lyrics] [http://me4tateljnitsa.ifrance.com/data/l-arte/ l arte della guerra] [http://uo-ination.ifrance.com/lib/titan-arnette/ titan arnette] [http://bagrec.ifrance.com/lib/quiz-e.htm quiz e trivia italiani] [http://la-seras.ifrance.com/library/html/antenna-per.htm antenna per tomtom go 700] [http://fishing-gro.ifrance.com/html/libro-il/ libro il piatto piange] [http://la-seras.ifrance.com/library/html/eos-canon.htm eos canon 20d] [http://heyclassylady.ifrance.com/html/acrobazie-bici.htm acrobazie bici] [http://la-seras.ifrance.com/library/html/bebe-confort.htm bebe confort loola accessori] [http://last-shadow.ifrance.com/text/directory/saban-saulic/ saban saulic gordana] [http://rielethuil.ifrance.com/description/lib/stainless-steel.htm stainless steel] [http://heyclassylady.ifrance.com/html/www-le.htm www le fighe strette com] [http://pegasik.ifrance.com/html/scuola-di/ scuola di calcio s luca] [http://orbzine.ifrance.com/images/small/lch-nokia.htm lch12 nokia] [http://lady-mosquito.ifrance.com/web/ndvx-combo/ ndvx combo 600] [http://bagrec.ifrance.com/lib/free-gif.htm free gif] [http://zonkismusik.ifrance.com/img/styles/nessebar.htm nessebar] [http://me4tateljnitsa.ifrance.com/data/figheter/ figheter] [http://orbzine.ifrance.com/images/small/les-images.htm les images de xxxl] [http://pegasik.ifrance.com/html/incontro-caserta/ incontro caserta] [http://pegasik.ifrance.com/html/vieni-con/ vieni con me paolo conte] [http://me4tateljnitsa.ifrance.com/data/adele-jergens/ adele jergens] [http://ryandrablya.ifrance.com/lib/google-desktop.htm google desktop search] [http://ryandrablya.ifrance.com/lib/ktdinspa.htm ktdinsp6000a 512] [http://me4tateljnitsa.ifrance.com/data/sangue-freddo/ sangue freddo luca dirisio] [http://stasiia.ifrance.com/img/styles/boys-gay/ boys gay com] [http://lady-mosquito.ifrance.com/web/sentimento/ sentimento] [http://ryandrablya.ifrance.com/lib/soluzione-seconda.htm soluzione seconda prova] [http://bagrec.ifrance.com/lib/pizzerie.htm pizzerie] 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.  
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 03:38, 31 August 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