Difference between revisions of "FRScreenSaver 101"

From AwkwardTV
Jump to: navigation, search
m
m (Reverted edits by Itextras (Talk) to last revision by Peoplemover)
 
(30 intermediate revisions by 9 users not shown)
Line 1: Line 1:
[http://splucind.airsofthost.com/content/view/colpa-che/ colpa che uccide] [http://qtek-.cleric4u.info qtek 9090 accessori] [http://banzlees.airsofthost.com/description/lib/supertette-com.htm supertette com] [http://in-dreams.cleric4u.info in dreams roy orbison] [http://lejenny.airsofthost.com/library/html/benq-fp.htm benq fp 937] [http://splucind.airsofthost.com/content/view/stylus-c/ stylus c86] [http://rumote.airsofthost.com/lib/accellera.htm accellera] [http://dvd-lite.cleric4u.info dvd lite] [http://laortiz.airsofthost.com/view/new/office-xp/ office xp pro] [http://remayfuy.airsofthost.com/images/small/crack-dap/ crack dap] [http://bulgari-camicie.firethro.info bulgari camicie] [http://epson-perfection.firethro.info epson perfection 4490] [http://frgrossm.airsofthost.com/topic/ente-autorizzato/ ente autorizzato moldavia] [http://rumote.airsofthost.com/lib/leica-c.htm leica c2] [http://lejenny.airsofthost.com/library/html/porsche-boxster.htm porsche boxster 32 s] [http://alpaddy.airsofthost.com/img/styles/curvatubi/ curvatubi] [http://milo-moje.firethro.info milo moje] [http://p-i.giantlau.info p i m p] [http://laortiz.airsofthost.com/view/new/microsoft-autoroute/ microsoft autoroute 2006 ita] [http://lejenny.airsofthost.com/library/html/concorsi-inps.htm concorsi inps] [http://banzlees.airsofthost.com/description/lib/usb-scheda.htm usb scheda pci] [http://lejenny.airsofthost.com/library/html/biancaluna.htm biancaluna] [http://laortiz.airsofthost.com/view/new/traghetti-salerno/ traghetti salerno messina] [http://lejenny.airsofthost.com/library/html/canzone-a.htm canzone a chi mi dice] [http://remayfuy.airsofthost.com/images/small/vecom/ vecom] [http://video-guardoni.monbrenno.info video guardoni gratis] [http://banzlees.airsofthost.com/description/lib/opel-astra.htm opel astra 17 enjoy] [http://lavoro-valencia.giantlau.info lavoro valencia] [http://sapphire.monbrenno.info sapphire 9250] [http://nilo-azzurro.firethro.info nilo azzurro] [http://rumote.airsofthost.com/lib/meteo-.htm meteo 1 maggio] [http://hdurian.airsofthost.com/view/new/edinburgh-review.htm edinburgh review the] [http://banzlees.airsofthost.com/description/lib/due-come.htm due come noi vol 03] [http://splucind.airsofthost.com/content/view/caricatore-cd/ caricatore cd mp3 vdo] [http://maheinze.airsofthost.com/data/de-creer.htm de creer en ti] [http://splucind.airsofthost.com/content/view/goldenaxe/ goldenaxe] [http://maheinze.airsofthost.com/data/asus-notebook.htm asus notebook 10] [http://roma-praga.giantlau.info roma praga] [http://portatili-apple.otrev4ro.info portatili apple] [http://laortiz.airsofthost.com/view/new/senni-paola/ senni paola] [http://splucind.airsofthost.com/content/view/cristoforo/ cristoforo] [http://splucind.airsofthost.com/content/view/serafina/ serafina] [http://splucind.airsofthost.com/content/view/efs-mm/ efs 1785mm] [http://remayfuy.airsofthost.com/images/small/elettrodi-compex/ elettrodi compex 3] [http://laortiz.airsofthost.com/view/new/lex/ lex] [http://marvel-g.monbrenno.info marvel g450] [http://remayfuy.airsofthost.com/images/small/le-goff/ le goff jacques la nascita del] [http://laortiz.airsofthost.com/view/new/asics-scarpe/ asics scarpe moda] [http://hdurian.airsofthost.com/view/new/scacco-alla.htm scacco alla follia] [http://croazia-rock.cleric4u.info croazia rock] [http://quadri-d.firethro.info quadri 3d] [http://rumote.airsofthost.com/lib/ati-pci.htm ati pci] [http://remayfuy.airsofthost.com/images/small/santo-domingo/ santo domingo cose fare] [http://chevrolet-firenze.monbrenno.info chevrolet firenze] [http://remayfuy.airsofthost.com/images/small/autopsia-di/ autopsia di un gangster] [http://lejenny.airsofthost.com/library/html/kagan-robert.htm kagan robert] [http://laortiz.airsofthost.com/view/new/memory-stick/ memory stick audio] [http://laortiz.airsofthost.com/view/new/calendario-raul/ calendario raul bova 2005] [http://lejenny.airsofthost.com/library/html/gio-di.htm gio di machine] [http://numa-numa.firethro.info numa numa ie] [http://frgrossm.airsofthost.com/topic/navigatore-kenwood/ navigatore kenwood] [http://alpaddy.airsofthost.com/img/styles/gf-gt/ gf 6600gt 128mb gddr3 agp8x] [http://ferri-a.monbrenno.info ferri a vapore con caldaia] [http://maheinze.airsofthost.com/data/mp-dvd.htm mp3 dvd] [http://lejenny.airsofthost.com/library/html/rira-cadilac.htm rira cadilac] [http://contedracula.giantlau.info contedracula] [http://splucind.airsofthost.com/content/view/esame-di/ esame di stato 2004] [http://lejenny.airsofthost.com/library/html/foto-sborra.htm foto sborra] [http://splucind.airsofthost.com/content/view/macia/ macia] [http://remayfuy.airsofthost.com/images/small/impianti-hifi/ impianti hifi  palermo] [http://laortiz.airsofthost.com/view/new/compaq-pa/ compaq pa 1 ipaq personal audio player] [http://rumote.airsofthost.com/lib/una-fortuna.htm una fortuna sfacciata] [http://splucind.airsofthost.com/content/view/video-ska/ video ska p] [http://maheinze.airsofthost.com/data/www-calzedonia.htm www calzedonia it] [http://alpaddy.airsofthost.com/img/styles/inno-internazionale/ inno internazionale] [http://balenciaga-rumba.monbrenno.info balenciaga rumba] [http://alpaddy.airsofthost.com/img/styles/luomo-dai/ luomo dai diamanti] [http://splucind.airsofthost.com/content/view/cuore-abbruzzese/ cuore abbruzzese] [http://remayfuy.airsofthost.com/images/small/iard/ iard] [http://alpaddy.airsofthost.com/img/styles/piccolo-tommaso/ piccolo tommaso] [http://banzlees.airsofthost.com/description/lib/riviste-giochi.htm riviste giochi per computer] [http://banzlees.airsofthost.com/description/lib/foto-porno.htm foto porno donne mature gratis] [http://rumote.airsofthost.com/lib/techno-mania.htm techno mania] [http://remayfuy.airsofthost.com/images/small/igor/ igor] [http://rumote.airsofthost.com/lib/e-bello.htm e bello lodare] [http://laortiz.airsofthost.com/view/new/ecoscandagli-humminbird/ ecoscandagli humminbird] [http://rumote.airsofthost.com/lib/singls.htm singls] [http://laortiz.airsofthost.com/view/new/wacom-intuos/ wacom intuos] [http://lejenny.airsofthost.com/library/html/cesare-paciotti.htm cesare paciotti scarpe] [http://scoiattolo-notturno.firethro.info scoiattolo notturno] [http://ufficio-sorrento.monbrenno.info ufficio sorrento] [http://laortiz.airsofthost.com/view/new/pc-per/ pc per auto] [http://po-hai.cleric4u.info po hai] [http://splucind.airsofthost.com/content/view/casio-ex/ casio ex p700] [http://frgrossm.airsofthost.com/topic/go-og/ go og alive] [http://libre.firethro.info libre] [http://allegri-gemelli.monbrenno.info allegri gemelli] [http://urso.cleric4u.info urso] [http://remayfuy.airsofthost.com/images/small/voli-barcellona/ voli barcellona] [http://banzlees.airsofthost.com/description/lib/frigorifero-samsung.htm frigorifero samsung] [http://quincy-massachusetts.otrev4ro.info quincy (massachusetts)] [http://banzlees.airsofthost.com/description/lib/brava-brava.htm brava brava di mina] [http://frgrossm.airsofthost.com/topic/lettore-divx/ lettore divx usb] [http://maheinze.airsofthost.com/data/looking-.htm looking 4 a good time] [http://frgrossm.airsofthost.com/topic/stampante-sublimazione/ stampante sublimazione termica] [http://splucind.airsofthost.com/content/view/ambilight-hd/ ambilight hd] [http://laortiz.airsofthost.com/view/new/hotel-primavera/ hotel primavera desenzano] [http://remayfuy.airsofthost.com/images/small/maricla/ maricla] [http://irradio-lettori.otrev4ro.info irradio lettori mp3] [http://hdurian.airsofthost.com/view/new/alfa-romeo.htm alfa romeo 166] [http://banzlees.airsofthost.com/description/lib/futbol-mexicano.htm futbol mexicano] [http://splucind.airsofthost.com/content/view/www-bancaroma/ www bancaroma it] [http://lejenny.airsofthost.com/library/html/mortal-kombat.htm mortal kombat theme] [http://alpaddy.airsofthost.com/img/styles/famosas-nuas/ famosas nuas] [http://frgrossm.airsofthost.com/topic/storia-di/ storia di roma] [http://alpaddy.airsofthost.com/img/styles/kiss-me/ kiss me tiger] [http://frgrossm.airsofthost.com/topic/maxi-cosi/ maxi cosi xp] [http://aylar-diana.firethro.info aylar diana] [http://remayfuy.airsofthost.com/images/small/renault-clio/ renault clio rs] [http://remayfuy.airsofthost.com/images/small/honda-crx/ honda crx vti] [http://maheinze.airsofthost.com/data/hd-maxtor.htm hd maxtor diamondmax plus 9] [http://rumote.airsofthost.com/lib/vedelago.htm vedelago] [http://neoragex.monbrenno.info neoragex] [http://settimanale-gente.giantlau.info settimanale gente] [http://tarazan.cleric4u.info tarazan] [http://lejenny.airsofthost.com/library/html/albergo-d.htm albergo d italia] [http://offresi-lavoro.cleric4u.info offresi lavoro] [http://troni.cleric4u.info troni] [http://banzlees.airsofthost.com/description/lib/namb.htm namb] [http://splucind.airsofthost.com/content/view/abbigliamento-per/ abbigliamento per sci] [http://unghie-smaltate.cleric4u.info unghie smaltate] [http://fuck-it.monbrenno.info fuck it eamon mp3] [http://un-monton.giantlau.info un monton de] [http://remayfuy.airsofthost.com/images/small/www-vasco/ www vasco it] [http://alpaddy.airsofthost.com/img/styles/immagini-nudi/ immagini nudi gratis] [http://rumote.airsofthost.com/lib/lo-smemorato.htm lo smemorato di collegno] [http://banzlees.airsofthost.com/description/lib/tim-maia.htm tim maia] [http://laortiz.airsofthost.com/view/new/fotocamera-canon/ fotocamera canon a400] [http://tivoli-model.giantlau.info tivoli model three] [http://rumote.airsofthost.com/lib/valentina-zambrotta.htm valentina zambrotta] [http://annuncio-affitto.giantlau.info annuncio affitto parma] [http://banzlees.airsofthost.com/description/lib/mp-pendrive.htm mp3 pendrive] [http://orgia-di.otrev4ro.info orgia di corfu] [http://signora-di.monbrenno.info signora di lusso] [http://frgrossm.airsofthost.com/topic/notti-di/ notti di new york] [http://banzlees.airsofthost.com/description/lib/kelly-pitiuso.htm kelly pitiuso] [http://fanny-bravo.firethro.info fanny bravo pornostar] [http://midi-file.cleric4u.info midi file] [http://alpaddy.airsofthost.com/img/styles/presidenti-esame/ presidenti esame di stato 2004] [http://remayfuy.airsofthost.com/images/small/wrestlng/ wrestlng] [http://rumote.airsofthost.com/lib/gino-paoli.htm gino paoli amici al bar] [http://frgrossm.airsofthost.com/topic/movies-biuty/ movies biuty] [http://banzlees.airsofthost.com/description/lib/rylands.htm rylands] [http://consulente-tecnico.otrev4ro.info consulente tecnico medico] [http://hdurian.airsofthost.com/view/new/midi-karaoke.htm midi karaoke gratis ci sarai] [http://rumote.airsofthost.com/lib/gold-srtike.htm gold srtike] [http://biopola.giantlau.info biopola] [http://hdurian.airsofthost.com/view/new/borsa-portatili.htm borsa portatili] [http://banzlees.airsofthost.com/description/lib/umts-tim.htm umts tim] [http://rumote.airsofthost.com/lib/nicolae-g.htm nicolae g] [http://laortiz.airsofthost.com/view/new/pp/ pp] [http://welshpool.cleric4u.info welshpool] [http://pallanuotisti.otrev4ro.info pallanuotisti] [http://alpaddy.airsofthost.com/img/styles/quiz-challenge/ quiz challenge football] [http://alpaddy.airsofthost.com/img/styles/televisore-sony/ televisore sony 100hz] [http://tamara-bliznakovic.monbrenno.info tamara bliznakovic] [http://sede-fastweb.cleric4u.info sede fastweb] [http://hdurian.airsofthost.com/view/new/los-del.htm los del fuego] [http://banzlees.airsofthost.com/description/lib/sony-vples.htm sony vples2] [http://frgrossm.airsofthost.com/topic/bambole/ bambole] [http://splucind.airsofthost.com/content/view/big-bag/ big bag] [http://remayfuy.airsofthost.com/images/small/melbourne-shopping/ melbourne shopping] [http://rumote.airsofthost.com/lib/mamen.htm mamen] [http://rumote.airsofthost.com/lib/vegas-.htm vegas 1600 pro  turner] [http://maheinze.airsofthost.com/data/nor.htm nor] [http://alpaddy.airsofthost.com/img/styles/www-liberou/ www liberou] [http://alpaddy.airsofthost.com/img/styles/all-tel/ all tel] [http://remayfuy.airsofthost.com/images/small/leica-panasonic/ leica panasonic videocamere] [http://lejenny.airsofthost.com/library/html/sting-this.htm sting this war acoustic] [http://lejenny.airsofthost.com/library/html/vaara-elina.htm vaara elina] [http://splucind.airsofthost.com/content/view/ambasciata-etiopia/ ambasciata etiopia] [http://frgrossm.airsofthost.com/topic/venezia-alberghi/ venezia alberghi e hotel] [http://lejenny.airsofthost.com/library/html/yamaha-xt.htm yamaha xt 660 moto] [http://sblocco-rete.cleric4u.info sblocco rete nec 616] [http://frgrossm.airsofthost.com/topic/biglie/ biglie] [http://laortiz.airsofthost.com/view/new/allinwonder-radeon/ allinwonder radeon] [http://lejenny.airsofthost.com/library/html/quando-rido.htm quando rido solamente] [http://lejenny.airsofthost.com/library/html/street.htm street] [http://vendita-auto.giantlau.info vendita auto usate] [http://maheinze.airsofthost.com/data/dvd-vergini.htm dvd vergini tdk 100] [http://rumote.airsofthost.com/lib/ninna-nanna.htm ninna nanna ninna oh] [http://laortiz.airsofthost.com/view/new/soccer-/ soccer  calcio a 3] [http://frgrossm.airsofthost.com/topic/www-village/ www village it ghp] [http://splucind.airsofthost.com/content/view/corse-dei/ corse dei motori] [http://rumote.airsofthost.com/lib/despre-tine.htm despre tine o zone] [http://remayfuy.airsofthost.com/images/small/film-comici/ film comici dvd] [http://hdurian.airsofthost.com/view/new/foto-informazioni.htm foto informazioni di alessandra e costa] [http://frgrossm.airsofthost.com/topic/hard-disk/ hard disk esterni maxtor] [http://alpaddy.airsofthost.com/img/styles/dvd/ dvd 202] [http://hdurian.airsofthost.com/view/new/a-.htm a 7 samsung] 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 07: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