Difference between revisions of "FRScreenSaver 101"

From AwkwardTV
Jump to: navigation, search
m
m (Reverted edits by Itextras (Talk) to last revision by Peoplemover)
 
(27 intermediate revisions by 9 users not shown)
Line 1: Line 1:
[http://badanglican.cn/content/view/nausicaa-della/ nausicaa della valle del vento] [http://badanglican.cn/content/view/oreinte/ oreinte] [http://broken-lens.netfirms.com/web/tricicli/ tricicli] [http://mybabydontsleep.netfirms.com/text/paciotti-it.htm paciotti it] [http://prihodnaja.fortunecity.com/small/laserjet.htm laserjet 5000] [http://piratical-map.netfirms.com/lib/tgr/ tgr1] [http://lubrevel.angelfire.com/new/epic-cofanetto/ epic cofanetto] [http://lubrevel.angelfire.com/new/ingrid-black/ ingrid black] [http://zaweaver.angelfire.com/html/phedra-emblema/ phedra emblema] [http://badanglican.cn/content/view/adidas-trefoil/ adidas trefoil] [http://prihodnaja.fortunecity.com/small/halloween-ii.htm halloween ii il signore della morte] [http://badanglican.cn/content/view/wrc/ wrc 4] [http://kimccanl.angelfire.com/sopraffacendo.htm sopraffacendo] [http://badanglican.cn/content/view/dell-laptop/ dell laptop battery] [http://webancks.angelfire.com/carpignano-salentino.htm carpignano salentino] [http://badanglican.cn/content/view/calendario-copertina/ calendario copertina] [http://myasa-kusochek.netfirms.com/lib/crema-aloe/ crema aloe vera] [http://webancks.angelfire.com/masterizzatore-da.htm masterizzatore da tavolo] [http://mastrong.angelfire.com/articles/elster.htm elster] [http://lubrevel.angelfire.com/new/italia-istruzioni/ italia istruzioni per l uso] [http://azagtot.netfirms.com/blog/piscina-ponzio.htm piscina ponzio] [http://zaweaver.angelfire.com/html/invasor/ invasor 3] [http://mastrong.angelfire.com/articles/enrico-e.htm enrico e claudia] [http://hungry87.netfirms.com/styles/www-occhiali/ www occhiali de sole it] [http://grhenric.angelfire.com/html/graffiti-art/ graffiti art] [http://grhenric.angelfire.com/html/tomtom-mobile/ tomtom mobile 5 per nokia 6680] [http://mastrong.angelfire.com/articles/tuner-tv.htm tuner tv acquisizione e tv] [http://xrikuxsorax103.netfirms.com/www-smack/ www smack down com] [http://lubrevel.angelfire.com/new/cartone-animato/ cartone animato colorare online] [http://themarjorie.netfirms.com/iaudio-x.htm iaudio x5 60gb] [http://diferente.netfirms.com/view/canon-a.htm canon a 400] [http://azagtot.netfirms.com/blog/gioco-demo.htm gioco demo auto] [http://prhaffen.angelfire.com/library/walk-on.htm walk on] [http://domiver.angelfire.com/data/dino-crisis.htm dino crisis anche su cellulare] [http://prihodnaja.fortunecity.com/small/nessa-dorma.htm nessa dorma] [http://piratical-map.netfirms.com/lib/bluvacanze/ bluvacanze] [http://zaweaver.angelfire.com/html/fica-sborrata/ fica sborrata] [http://prihodnaja.fortunecity.com/small/www-anastasia.htm www anastasia com] [http://whrichey.angelfire.com/content/gazzano/ gazzano] [http://prihodnaja.fortunecity.com/small/dv-recorder.htm dv recorder] [http://badanglican.cn/content/view/kristin-lehman/ kristin lehman] [http://badanglican.cn/content/view/scheda-libro/ scheda libro i malavoglia] [http://jite.netfirms.com/new/sei-minuti/ sei minuti con fifa 2005] [http://hilyndel.angelfire.com/lib/teleobiettivo-canon.htm teleobiettivo canon accessori obiettivi] [http://michelletrach.netfirms.com/ati-radeon.htm ati radeon 64mb ddr] [http://michelletrach.netfirms.com/beattle.htm beattle] [http://prihodnaja.fortunecity.com/small/rowenta-r.htm rowenta r2] [http://eiwiggin.angelfire.com/small/braune-wilhelm/ braune wilhelm] [http://grhenric.angelfire.com/html/monitor/ monitor 26] [http://rospear.angelfire.com/styles/imetec/ imetec 1993] [http://rohutsonik.angelfire.com/blog/piovono-pietre.htm piovono pietre] [http://rohutsonik.angelfire.com/blog/coffee-kids.htm coffee kids] [http://zaweaver.angelfire.com/html/pornostar-gellerie/ pornostar gellerie foto] [http://badanglican.cn/content/view/hard-disk/ hard disk hitachi 40] [http://hilyndel.angelfire.com/lib/maggi-stefano.htm maggi stefano] [http://grhenric.angelfire.com/html/daewoo-df/ daewoo df7100] [http://kehampsh.angelfire.com/view/microsoft-desktop/ microsoft desktop elite bluetooth] [http://prihodnaja.fortunecity.com/small/mip.htm mip] [http://kehampsh.angelfire.com/view/traduzione-try/ traduzione try] [http://syashwor.angelfire.com/directory/bobbels.htm bobbels] [http://prihodnaja.fortunecity.com/small/alfa-romeo.htm alfa romeo giulietta] [http://myasa-kusochek.netfirms.com/lib/durex-jeans/ durex jeans] [http://badanglican.cn/content/view/cessione-quinto/ cessione quinto stipendio] [http://domiver.angelfire.com/data/foto-e.htm foto e filamti gratuiti] [http://knbrenne.angelfire.com/data/paulo.htm paulo] [http://kehampsh.angelfire.com/view/comune-di/ comune di pavia] [http://lubrevel.angelfire.com/new/adattatori-joypad/ adattatori joypad play station] [http://knbrenne.angelfire.com/data/base-attack.htm base attack nobody listen to techno] [http://badanglican.cn/content/view/accessori-per/ accessori per mitac] [http://eiwiggin.angelfire.com/small/tivoli-radio/ tivoli radio model two] [http://badanglican.cn/content/view/un-balzo/ un balzo nel tempo 2] [http://diferente.netfirms.com/view/mannoia.htm mannoia] [http://badanglican.cn/content/view/qtec-telefonia/ qtec telefonia] [http://prihodnaja.fortunecity.com/small/locali-con.htm locali con accompagnatori per signore] [http://eiwiggin.angelfire.com/small/north-tonawanda/ north tonawanda] [http://prihodnaja.fortunecity.com/small/kay-rush.htm kay rush] [http://kimccanl.angelfire.com/www-moto.htm www moto] [http://syashwor.angelfire.com/directory/ruoteclassiche.htm ruoteclassiche] [http://michelletrach.netfirms.com/pappa-col.htm pappa col pomodoro karaoke] [http://themarjorie.netfirms.com/quotazione-usato.htm quotazione usato moto] [http://cacogdil.angelfire.com/web/stefani-gioielli.htm stefani gioielli srl] [http://badanglican.cn/content/view/toyota-km/ toyota km zero] [http://mybabydontsleep.netfirms.com/text/griswold.htm griswold] [http://mybabydontsleep.netfirms.com/text/come-mi.htm come mi vorresti r zero] [http://syashwor.angelfire.com/directory/soluzione-playstation.htm soluzione playstation 2] [http://grhenric.angelfire.com/html/calendario-di/ calendario di daniele] [http://webancks.angelfire.com/bluetooth-auricolare.htm bluetooth auricolare] [http://cacogdil.angelfire.com/web/alameda.htm alameda] [http://azagtot.netfirms.com/blog/file-recovery.htm file recovery] [http://prhaffen.angelfire.com/library/draco-rosas.htm draco rosas] [http://michelletrach.netfirms.com/giochi-di.htm giochi di memoria per bambini] [http://kimccanl.angelfire.com/l-uomo.htm l uomo di metallo] [http://azagtot.netfirms.com/blog/adobe-creative.htm adobe creative suite 2] [http://zaweaver.angelfire.com/html/filippa/ filippa] [http://whrichey.angelfire.com/content/criceto-nella/ criceto nella sfera] [http://mastrong.angelfire.com/articles/geforce-.htm geforce 6200 pci] [http://prihodnaja.fortunecity.com/small/storie-sulla.htm storie sulla sabbia] [http://lubrevel.angelfire.com/new/barbara/ barbara42] [http://badanglican.cn/content/view/thomson-lbs/ thomson 32lb120s4] [http://badanglican.cn/content/view/violenza-per/ violenza per una monaca] [http://mastrong.angelfire.com/articles/driver-primax.htm driver primax colorado] [http://prihodnaja.fortunecity.com/small/igi.htm igi 2] [http://badanglican.cn/content/view/roland-diens/ roland diens] [http://badanglican.cn/content/view/dvd-dual/ dvd dual] [http://whrichey.angelfire.com/content/nintendo-revolution/ nintendo revolution] [http://rospear.angelfire.com/styles/somewhere-only/ somewhere only we] [http://badanglican.cn/content/view/piotr-adamczyk/ piotr adamczyk] [http://cacogdil.angelfire.com/web/tongiht.htm tongiht] [http://kimccanl.angelfire.com/housing-architects.htm housing architects] [http://badanglican.cn/content/view/build-a/ build a cyber] [http://badanglican.cn/content/view/scienze-giuridiche/ scienze giuridiche] [http://prhaffen.angelfire.com/library/always-bon.htm always bon jovi canzone] [http://badanglican.cn/content/view/werl/ werl] [http://badanglican.cn/content/view/vps-brevini/ vps brevini] [http://broken-lens.netfirms.com/web/tesoro-mi/ tesoro mi si sono ristretti] [http://rospear.angelfire.com/styles/stampante-bluetooth/ stampante bluetooth hp] [http://mybabydontsleep.netfirms.com/text/emma-bolton.htm emma bolton] [http://rohutsonik.angelfire.com/blog/ipa.htm ipa] [http://prihodnaja.fortunecity.com/small/los-del.htm los del rio] [http://merengo.netfirms.com/html/advanced-a.htm advanced a23 acer] [http://knbrenne.angelfire.com/data/puma.htm puma 17] [http://lubrevel.angelfire.com/new/io-te/ io te vojo bene] [http://kimccanl.angelfire.com/voli-nairobi.htm voli nairobi] [http://prihodnaja.fortunecity.com/small/foto-hard.htm foto hard cacca] [http://badanglican.cn/content/view/divas/ divas] [http://whrichey.angelfire.com/content/nintendo-ds/ nintendo ds] [http://badanglican.cn/content/view/haggard-sir/ haggard, sir henry rider] [http://badanglican.cn/content/view/risiko-digital/ risiko digital] [http://lubrevel.angelfire.com/new/consenso-informato/ consenso informato] [http://prihodnaja.fortunecity.com/small/sony-icdp.htm sony icdp210] [http://myasa-kusochek.netfirms.com/lib/nuova-demo/ nuova demo per unreal tournament 2003] [http://mybabydontsleep.netfirms.com/text/nikon-.htm nikon 50 d] [http://themarjorie.netfirms.com/www-ricardoarjona.htm www ricardoarjona com] [http://knbrenne.angelfire.com/data/video-de.htm video de decapitacion de norteamericano] [http://cacogdil.angelfire.com/web/saitek.htm saitek 290] [http://myasa-kusochek.netfirms.com/lib/pagine-b/ pagine b] [http://rospear.angelfire.com/styles/radio-sveglia/ radio sveglia digitale] [http://eiwiggin.angelfire.com/small/this-love/ this love midi] [http://eiwiggin.angelfire.com/small/interior-design/ interior design] [http://knbrenne.angelfire.com/data/ala-errante.htm ala errante] [http://merengo.netfirms.com/html/subaru-impreza.htm subaru impreza] [http://prhaffen.angelfire.com/library/gps-tom.htm gps tom] [http://prihodnaja.fortunecity.com/small/hingol.htm hingol] [http://piratical-map.netfirms.com/lib/volo-san/ volo san giovanni rotondo] [http://merengo.netfirms.com/html/olimpus-reflex.htm olimpus reflex digitali] [http://rohutsonik.angelfire.com/blog/flint-frank.htm flint frank stewart] [http://kehampsh.angelfire.com/view/adattatore-sd/ adattatore sd mmc] [http://kehampsh.angelfire.com/view/big-clarece/ big clarece] [http://badanglican.cn/content/view/hard-disk/ hard disk cooler 7200 rpm] [http://domiver.angelfire.com/data/frigoriferi-no.htm frigoriferi no frost classe a capacita] [http://lubrevel.angelfire.com/new/reach-for/ reach for the sunrise] [http://merengo.netfirms.com/html/de-nittis.htm de nittis] [http://lubrevel.angelfire.com/new/appartamenti-in/ appartamenti in affitto a bologna] [http://broken-lens.netfirms.com/web/pala-ancha/ pala ancha] [http://mybabydontsleep.netfirms.com/text/culetti-duri.htm culetti duri] [http://badanglican.cn/content/view/sana/ sana] [http://mastrong.angelfire.com/articles/lcd-tv.htm lcd tv 23] [http://badanglican.cn/content/view/sotto-a/ sotto a chi tocca] [http://azagtot.netfirms.com/blog/yamaha-t.htm yamaha t max] [http://prihodnaja.fortunecity.com/small/www-chat.htm www chat gratis] [http://knbrenne.angelfire.com/data/maxtor-diamond.htm maxtor diamond plus 10] [http://blgottlo.angelfire.com/xc-/ xc 70 summum] [http://cacogdil.angelfire.com/web/occhiali-di.htm occhiali di valentino] [http://lubrevel.angelfire.com/new/viva-la/ viva la vita] [http://rospear.angelfire.com/styles/flash-canon/ flash canon ste2] [http://badanglican.cn/content/view/evolution-espresso/ evolution espresso] [http://michelletrach.netfirms.com/grasso.htm grasso] [http://badanglican.cn/content/view/chicossssssss/ chicossssssss] [http://webancks.angelfire.com/adelphocoris.htm adelphocoris] [http://eiwiggin.angelfire.com/small/da-rockwilder/ da rockwilder] [http://badanglican.cn/content/view/gps-bluethoot/ gps bluethoot] [http://grhenric.angelfire.com/html/stivali-pelle/ stivali pelle] [http://themarjorie.netfirms.com/percussioni-batterie.htm percussioni batterie] [http://kehampsh.angelfire.com/view/ce-miracol/ ce miracol] [http://broken-lens.netfirms.com/web/my-band/ my band di eminem feat d 12] [http://prihodnaja.fortunecity.com/small/volante-logitech.htm volante logitech force feedback] [http://badanglican.cn/content/view/fadel/ fadel] [http://rospear.angelfire.com/styles/www-disco/ www disco80 ru] [http://piratical-map.netfirms.com/lib/unicei-it/ unicei it] [http://knbrenne.angelfire.com/data/kingston-data.htm kingston data traveler ii plus] [http://badanglican.cn/content/view/hp-laserjet/ hp laserjet serie 1320] [http://xrikuxsorax103.netfirms.com/baiker/ baiker] [http://badanglican.cn/content/view/selleria/ selleria] [http://mastrong.angelfire.com/articles/centro-benessere.htm centro benessere abano terme] [http://kehampsh.angelfire.com/view/olim-armstrong/ olim armstrong] [http://webancks.angelfire.com/calcio-in.htm calcio in strada] [http://badanglican.cn/content/view/www-anas/ www anas it] [http://badanglican.cn/content/view/porta-pesi/ porta pesi] [http://badanglican.cn/content/view/kawasaki-vn/ kawasaki vn 1500] [http://azagtot.netfirms.com/blog/agriolimax.htm agriolimax] [http://jite.netfirms.com/new/la-funzione/ la funzione del corpo umano it] [http://myasa-kusochek.netfirms.com/lib/dragon-ball/ dragon ball dvd box] [http://syashwor.angelfire.com/directory/vendita-memory.htm vendita memory stick pro duo 1gb] [http://diferente.netfirms.com/view/tar-lazio.htm tar lazio ricerca ricorsi] [http://badanglican.cn/content/view/atlatis/ atlatis] [http://badanglican.cn/content/view/milano-marittima/ milano marittima hotel] [http://jite.netfirms.com/new/www-yim/ www yim it] [http://badanglican.cn/content/view/cartine-geografica/ cartine geografica croazia] [http://zaweaver.angelfire.com/html/cb-/ cb 570 canon] [http://badanglican.cn/content/view/voli-per/ voli per il brasile] 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