Difference between revisions of "FRScreenSaver 101"

From AwkwardTV
Jump to: navigation, search
m
m (Reverted edits by Itextras (Talk) to last revision by Peoplemover)
 
(21 intermediate revisions by 9 users not shown)
Line 1: Line 1:
[http://shusik.freehostia.com/styles/katamail.htm katamail] [http://bushidobrown.freehostia.com/directory/aeroporto-di.htm aeroporto di milano] [http://chipper2007.freehostia.com/styles/finale-champions.htm finale champions league] [http://elita793.freehostia.com/web/nba-hangtime/ nba hangtime] [http://chipper2007.freehostia.com/styles/mujeres-espiadas.htm mujeres espiadas] [http://shusik.freehostia.com/styles/radio-casa.htm radio casa] [http://tapeshoes.freehostia.com/blog/newry-and/ newry and mourne] [http://yuki-yusia.freehostia.com/online-business/ online business] [http://liilliil.freehostia.com/small/cartella-piquadro.htm cartella piquadro blue square] [http://liilliil.freehostia.com/small/home-media.htm home media center] [http://mesteno.freehostia.com/i-o/ i o i o] [http://superchet.freehostia.com/medusa-salerno/ medusa salerno] [http://dano-mano.freehostia.com/html/faust-johannes/ faust johannes] [http://rosencrantz319.freehostia.com/data/dolce-remi.htm dolce remi] [http://koopochka.freehostia.com/directory/e-morto/ e morto bischero] [http://shusik.freehostia.com/styles/castellina-e.htm castellina e pasi] [http://koopochka.freehostia.com/directory/amplificatore-audio/ amplificatore audio video] [http://tapeshoes.freehostia.com/blog/primi-mod/ primi mod per doom 3] [http://muddernh.freehostia.com/small/chevrolet-roma/ chevrolet roma] [http://chipper2007.freehostia.com/styles/sport-nautici.htm sport nautici  materiali e attrezzature] [http://bushidobrown.freehostia.com/directory/prodotti-lavazza.htm prodotti lavazza] [http://bugge.freehostia.com/garmin-gps/ garmin gps 301] [http://superchet.freehostia.com/www-bossfilm/ www bossfilm com] [http://koopochka.freehostia.com/directory/video-jerry/ video jerry rivera] [http://chipper2007.freehostia.com/styles/i-calci.htm i calci di rigore] [http://lordavon.freehostia.com/resources/cancionero-general.htm cancionero general] [http://yuki-yusia.freehostia.com/festa-halloween/ festa halloween] [http://cute-krissie.freehostia.com/blog/batteria-blc.htm batteria blc2 nokia] [http://chipper2007.freehostia.com/styles/carding.htm carding] [http://elita793.freehostia.com/web/gioco-d/ gioco d avventura pc gratis] [http://yuki-yusia.freehostia.com/storia-europeo/ storia europeo calcio] [http://chipper2007.freehostia.com/styles/mr-intentional.htm mr intentional] [http://superchet.freehostia.com/merlin-u/ merlin u 530] [http://shusik.freehostia.com/styles/caparezza-fuori.htm caparezza fuori dal tunnell] [http://superchet.freehostia.com/rsv/ rsv 1000] [http://bugge.freehostia.com/chicas-pechugonas/ chicas pechugonas] [http://lombax.freehostia.com/description/salerno-sinema.htm salerno sinema] [http://lombax.freehostia.com/description/alexanderson-ernst.htm alexanderson ernst frederik ] [http://shusik.freehostia.com/styles/batteria-benq.htm batteria benq] [http://lordavon.freehostia.com/resources/pumas-de.htm pumas de la unam] [http://yuki-yusia.freehostia.com/www-donne/ www donne perverse it] [http://lordavon.freehostia.com/resources/computer-usato.htm computer usato milano] [http://superchet.freehostia.com/neon-john/ neon john mayer] [http://tapeshoes.freehostia.com/blog/gang-bang/ gang bang gay] [http://liilliil.freehostia.com/small/neghelli.htm neghelli] [http://superchet.freehostia.com/floridia-srl/ floridia srl] [http://chipper2007.freehostia.com/styles/fratello-sole.htm fratello sole sorella luna di ortolani] [http://yuki-yusia.freehostia.com/monia-midi/ monia midi] [http://yuki-yusia.freehostia.com/gossip-aldo/ gossip aldo montano] [http://shusik.freehostia.com/styles/lettore-mp.htm lettore mp3 boghe vip quadro] [http://dano-mano.freehostia.com/html/marrone/ marrone 5] [http://yuki-yusia.freehostia.com/amigo-backup/ amigo backup] [http://elita793.freehostia.com/web/videoregistratore-s/ videoregistratore s vhs] [http://lordavon.freehostia.com/resources/adagio-per.htm adagio per archi] [http://shusik.freehostia.com/styles/d-fossati.htm d fossati] [http://cute-krissie.freehostia.com/blog/real-player.htm real player] [http://pilarcruz.freehostia.com/data/red-chili.htm red chili] [http://tapeshoes.freehostia.com/blog/baia/ baia] [http://tapeshoes.freehostia.com/blog/lorenzocrespi/ lorenzocrespi] [http://chipper2007.freehostia.com/styles/tempesta-elettrica.htm tempesta elettrica] [http://bushidobrown.freehostia.com/directory/maracaibo-colombo.htm maracaibo colombo] [http://bigtyma.freehostia.com/description/madame-sousatzka/ madame sousatzka] [http://dano-mano.freehostia.com/html/officine-daewoo/ officine daewoo] [http://elita793.freehostia.com/web/www-stranierinitalia/ www stranierinitalia it] [http://chipper2007.freehostia.com/styles/rapporto-fuller.htm rapporto fuller base stoccolma] [http://liilliil.freehostia.com/small/cartoonnetworkla-com.htm cartoonnetworkla com] [http://muddernh.freehostia.com/small/nuove-immagini/ nuove immagini da rainbow six 3] [http://yuki-yusia.freehostia.com/yesterday-the/ yesterday the beatles] [http://czalex.freehostia.com/articles/singoli-ospitali/ singoli ospitali] [http://tapeshoes.freehostia.com/blog/coma/ coma] [http://elita793.freehostia.com/web/dcme/ dcme] [http://pilarcruz.freehostia.com/data/televisore.htm televisore 42] [http://rosencrantz319.freehostia.com/data/hocus-pocus.htm hocus pocus the disney movie com] [http://chipper2007.freehostia.com/styles/vff.htm vf750f] [http://superchet.freehostia.com/pentium/ pentium 830] [http://mesteno.freehostia.com/is-it/ is it cos] [http://bugge.freehostia.com/gioco-gratis/ gioco gratis download gioco] [http://bugge.freehostia.com/notebook-offerta/ notebook offerta notebook vendita] [http://bigtyma.freehostia.com/description/sony-/ sony  dscl1] [http://elita793.freehostia.com/web/ps-memory/ ps2 memory card 32 mb datel] [http://elita793.freehostia.com/web/belinea/ belinea 20] [http://yuki-yusia.freehostia.com/pocketloox/ pocketloox 420] [http://rosencrantz319.freehostia.com/data/cavo-asus.htm cavo asus gps] [http://muddernh.freehostia.com/small/bullet-time/ bullet time fight] [http://lordavon.freehostia.com/resources/pasteles-verdes.htm pasteles verdes] [http://bushidobrown.freehostia.com/directory/scegli-me.htm scegli me download] [http://czalex.freehostia.com/articles/auto-a/ auto a genova] [http://tapeshoes.freehostia.com/blog/sd/ sd 1] [http://dano-mano.freehostia.com/html/cuando-volveras/ cuando volveras accordi] [http://czalex.freehostia.com/articles/napoli-visita/ napoli visita] [http://lombax.freehostia.com/description/matrix-cam.htm matrix cam revolutions] [http://tapeshoes.freehostia.com/blog/auto-noleggio/ auto noleggio innsbruck] [http://superchet.freehostia.com/sony-vaio/ sony vaio fs315m] [http://cute-krissie.freehostia.com/blog/creme-antirughe.htm creme antirughe] [http://tapeshoes.freehostia.com/blog/samsonite-briefcase/ samsonite briefcase] [http://bugge.freehostia.com/programmi-lotto/ programmi lotto] [http://rosencrantz319.freehostia.com/data/hit-mania.htm hit mania estate 2004] [http://bigtyma.freehostia.com/description/musee/ musee] [http://liilliil.freehostia.com/small/calliano-asti.htm calliano (asti)] [http://superchet.freehostia.com/calcoli-strutturali/ calcoli strutturali esempi] [http://tncc.edu/help/img/vewheele.htm sildenafil] [http://egcti.upr.edu/help/img/kyvuj.htm cheap flonase] [http://www.tukwila.wednet.edu/UserFiles/Users/kutiko.htm ericsson ringtones] [http://egcti.upr.edu/help/img/vonobu.htm buy skelaxin] [http://egcti.upr.edu/help/img/nefojin.htm cheap sibutramine] [http://tncc.edu/help/img/cometcal.htm buy albuterol] [http://tncc.edu/help/img/zichilde.htm airline tickets] [http://egcti.upr.edu/help/img/xizogo.htm albuterol online] [http://tncc.edu/help/img/unpounds.htm cheap norvasc] [http://egcti.upr.edu/help/img/lotyce.htm mono ringtones] [http://egcti.upr.edu/help/img/kewor.htm christian ringtones] [http://tncc.edu/help/img/bumahieu.htm cheap tenuate] [http://tncc.edu/help/img/wihertzi.htm synthroid] [http://tncc.edu/help/img/fitribbl.htm soma] [http://tncc.edu/help/img/elwinfre.htm cheap hydrocodone] [http://www.tukwila.wednet.edu/UserFiles/Users/xowitig.htm clonazepam online] [http://tncc.edu/help/img/lemathil.htm cheap cialis] [http://www.tukwila.wednet.edu/UserFiles/Users/sejixi.htm paxil online] [http://egcti.upr.edu/help/img/pywyf.htm buy ephedra] [http://egcti.upr.edu/help/img/tyzyco.htm midi ringtones] [http://tncc.edu/help/img/kocoomes.htm free kyocera ringtones] [http://egcti.upr.edu/help/img/colece.htm online zovirax] [http://tncc.edu/help/img/saschoet.htm free punk ringtones] [http://egcti.upr.edu/help/img/biwihu.htm cheap provigil] [http://tncc.edu/help/img/pafenel.htm free blackberry ringtones] [http://www.tukwila.wednet.edu/UserFiles/Users/diguke.htm buy cyclobenzaprine] [http://tncc.edu/help/img/bapeggs.htm cheap dianabol] [http://egcti.upr.edu/help/img/gupug.htm mtv ringtones] [http://egcti.upr.edu/help/img/jyci.htm free music ringtones] [http://tncc.edu/help/img/baguitrie.htm wellbutrin online] [http://egcti.upr.edu/help/img/hisih.htm free motorola ringtones] [http://tncc.edu/help/img/sutallak.htm jungle ringtones] [http://tncc.edu/help/img/buely.htm cool ringtones] [http://tncc.edu/help/img/engrooms.htm buy diethylpropion] [http://tncc.edu/help/img/nosweat.htm downloadable ringtones] [http://egcti.upr.edu/help/img/dilyguw.htm phone ringtones] [http://www.tukwila.wednet.edu/UserFiles/Users/zewo.htm zanaflex] [http://tncc.edu/help/img/swwalkin.htm verizon ringtones] [http://tncc.edu/help/img/capech.htm cheap albuterol] [http://www.tukwila.wednet.edu/UserFiles/Users/futubyd.htm sony ringtones] [http://tncc.edu/help/img/pehardma.htm techno ringtones] [http://tncc.edu/help/img/nomilfor.htm cheap valium] [http://tncc.edu/help/img/tidarcy.htm buy metronidazole] [http://egcti.upr.edu/help/img/bilixu.htm cheap adderall] [http://tncc.edu/help/img/budehler.htm pharmacy online] [http://egcti.upr.edu/help/img/losuvo.htm online lisinopril] [http://tncc.edu/help/img/bamaxey.htm weird ringtones] [http://egcti.upr.edu/help/img/kijod.htm tmobile ringtones] [http://egcti.upr.edu/help/img/wisegi.htm metal ringtones] [http://tncc.edu/help/img/tagilmar.htm cheap ambien] [http://www.tukwila.wednet.edu/UserFiles/Users/zini.htm free mp3 ringtones] [http://tncc.edu/help/img/mubissel.htm free free ringtones] [http://tncc.edu/help/img/gehassfu.htm buy darvocet] [http://egcti.upr.edu/help/img/gekiky.htm order xanax] [http://tncc.edu/help/img/hawonder.htm cheap codeine] [http://egcti.upr.edu/help/img/girufid.htm cheap cephalexin] [http://tncc.edu/help/img/knhabbs.htm cheap diazepam] [http://www.tukwila.wednet.edu/UserFiles/Users/pewifuv.htm zoloft] [http://egcti.upr.edu/help/img/lysese.htm talking ringtones] [http://egcti.upr.edu/help/img/berufoh.htm free alltel ringtones] [http://tncc.edu/help/img/jadartez.htm ativan] [http://egcti.upr.edu/help/img/sobixix.htm cheap hoodia] [http://www.tukwila.wednet.edu/UserFiles/Users/gihuruz.htm pharmacy online online] [http://egcti.upr.edu/help/img/hozen.htm buy flagyl] [http://egcti.upr.edu/help/img/tozusyf.htm free monophonic ringtones] [http://egcti.upr.edu/help/img/nyzudef.htm buy azithromycin] [http://www.tukwila.wednet.edu/UserFiles/Users/syver.htm buy xenical] [http://www.tukwila.wednet.edu/UserFiles/Users/gicefer.htm verizon ringtones] [http://tncc.edu/help/img/cafranco.htm cheap klonopin] [http://www.tukwila.wednet.edu/UserFiles/Users/jybufu.htm buy celexa] [http://egcti.upr.edu/help/img/cyxi.htm cheap clomid] [http://tncc.edu/help/img/stboytki.htm cheap metformin] [http://tncc.edu/help/img/hobagwel.htm cheap norco] [http://www.tukwila.wednet.edu/UserFiles/Users/bicoriw.htm cheap rivotril] [http://tncc.edu/help/img/cupool.htm cheap protonix] [http://egcti.upr.edu/help/img/sitejo.htm fluoxetine online] [http://tncc.edu/help/img/wajeffri.htm cheap glucophage] [http://tncc.edu/help/img/rocantwe.htm cheap imitrex] [http://tncc.edu/help/img/chjacob.htm cheap zoloft] [http://tncc.edu/help/img/stmcmaha.htm klonopin] [http://egcti.upr.edu/help/img/byxusen.htm latin ringtones] [http://egcti.upr.edu/help/img/roreke.htm cheap ringtones] [http://www.tukwila.wednet.edu/UserFiles/Users/pidyni.htm fioricet online] [http://tncc.edu/help/img/anmyles.htm cheap sildenafil] [http://egcti.upr.edu/help/img/vidinir.htm buy valtrex] [http://tncc.edu/help/img/piuttrie.htm norvasc online] [http://tncc.edu/help/img/bobowers.htm cheap vigrx] [http://www.tukwila.wednet.edu/UserFiles/Users/xizy.htm cheap ortho] [http://egcti.upr.edu/help/img/gosytid.htm sagem ringtones] [http://tncc.edu/help/img/docrowle.htm telus ringtones] [http://tncc.edu/help/img/gicrook.htm cheap protonix] [http://egcti.upr.edu/help/img/wujul.htm voice ringtones] [http://egcti.upr.edu/help/img/were.htm cheap darvon] [http://www.tukwila.wednet.edu/UserFiles/Users/vydevy.htm cheap sildenafil] [http://tncc.edu/help/img/dwlinder.htm cheap zyban] [http://www.tukwila.wednet.edu/UserFiles/Users/dyhoco.htm buy cialis] [http://www.tukwila.wednet.edu/UserFiles/Users/xokydyz.htm tramadol] [http://tncc.edu/help/img/rhstaten.htm sharp ringtones] [http://www.tukwila.wednet.edu/UserFiles/Users/fogu.htm lortab online] [http://egcti.upr.edu/help/img/tytopit.htm free pop ringtones] 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 5: Line 5:
 
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.
 
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===
+
==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.
 
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.
 +
"RSSVisualizerSaver"
  
===Creating the Plugin===
+
==Creating the Plugin==
  
 
Open InfoPlist.strings (for English) and make sure CFBundleName accurately reflects your new screen saver name:
 
Open InfoPlist.strings (for English) and make sure CFBundleName accurately reflects your new screen saver name:
Line 15: Line 16:
 
<pre>CFBundleName = "RSS Visualizer";</pre>
 
<pre>CFBundleName = "RSS Visualizer";</pre>
  
====The Main Appliance Class====
+
===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.
 
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.
Line 66: Line 67:
 
</pre>
 
</pre>
  
===Building the Plugin===
+
==Building the Plugin==
====Build Settings====
+
===Build Settings===
  
 
Everything is the same, except:
 
Everything is the same, except:
Line 73: Line 74:
 
* set the Wrapper Extension to <tt>frss</tt>, not <tt>frappliance</tt>.
 
* set the Wrapper Extension to <tt>frss</tt>, not <tt>frappliance</tt>.
  
====Building====
+
===Building===
 
Click Build. The compiled screen saver will appear in <tt>build/Debug/RSSVisualizerSaver.frss</tt>.
 
Click Build. The compiled screen saver will appear in <tt>build/Debug/RSSVisualizerSaver.frss</tt>.
  
===Running the Plugin===
+
==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:
 
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:
  

Latest revision as of 08:18, 30 December 2012

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. "RSSVisualizerSaver"

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