<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3.3" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>Vacuous Virtuoso &#187; GUI</title>
	<link>http://lipidity.com</link>
	<description>Despotic Development</description>
	<pubDate>Tue, 23 Dec 2008 06:24:04 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
	<language>en</language>
			<item>
		<title>Quicksilver Smoke</title>
		<link>http://lipidity.com/apple/quicksilver-smoke/</link>
		<comments>http://lipidity.com/apple/quicksilver-smoke/#comments</comments>
		<pubDate>Fri, 23 Nov 2007 03:53:18 +0000</pubDate>
		<dc:creator>Ankur</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[Quicksilver]]></category>

		<category><![CDATA[Animation]]></category>

		<category><![CDATA[Download]]></category>

		<category><![CDATA[GUI]]></category>

		<category><![CDATA[Mac]]></category>

		<category><![CDATA[plugin]]></category>

		<category><![CDATA[smoke]]></category>

		<guid isPermaLink="false">http://lipidity.com/apple/quicksilver-smoke/</guid>
		<description><![CDATA[I wrote this a while back as part of the Quicksilver Internal Commands tutorial. The plugin hooks onto the current Quicksilver interface so you can watch it go up in flames.





If you&#8217;re interested in this sort of thing, you can download the Quicksilver Smoke Actions plugin here.
]]></description>
			<content:encoded><![CDATA[<p>I wrote this a while back as part of the <a href="http://lipidity.com/apple/quicksilver-internal-commands/">Quicksilver Internal Commands</a> tutorial. The plugin hooks onto the current Quicksilver interface so you can watch it go up in flames.</p>

<!--more-->

<p class='centre'><a rel="lightbox" href="http://dev.lipidity.com/wp-content/uploads/2007/06/primer-smoking.jpg" title="Quicksilver Primer interface smoking"><img src="http://dev.lipidity.com/wp-content/uploads/2007/06/primer-smoking-thumb.jpg" alt="[Primer interface smoking]" title="Quicksilver Primer interface smoking" width="426" height="343" class='feature' /></a></p>

<p>If you&#8217;re interested in this sort of thing, you can download the Quicksilver Smoke Actions plugin <a href="http://lipidity.com/plugins/quicksilver/smoke">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://lipidity.com/apple/quicksilver-smoke/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Cocoa Animation Effects</title>
		<link>http://lipidity.com/apple/cocoa-transition-animation-effects-video/</link>
		<comments>http://lipidity.com/apple/cocoa-transition-animation-effects-video/#comments</comments>
		<pubDate>Mon, 16 Jul 2007 06:15:19 +0000</pubDate>
		<dc:creator>Ankur</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[Cocoa]]></category>

		<category><![CDATA[Animation]]></category>

		<category><![CDATA[core-image]]></category>

		<category><![CDATA[CoreGraphics]]></category>

		<category><![CDATA[GUI]]></category>

		<category><![CDATA[Mac]]></category>

		<category><![CDATA[Screencast]]></category>

		<category><![CDATA[Xcode]]></category>

		<guid isPermaLink="false">http://dev.lipidity.com/apple/cocoa-transition-animation-effects-video</guid>
		<description><![CDATA[I wrote this app about 8 months ago, and it&#8217;s managed to find itself on Youtube.







It uses Core Graphics and Core Image APIs for the transition effects to animate the window / view, which probably needs a minimum of Mac OS X Tiger. The full source code is available.
]]></description>
			<content:encoded><![CDATA[<p>I wrote this app about 8 months ago, and it&#8217;s managed to find itself on Youtube.</p>

<!--more-->

<div class='centre'>
<object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/FSUu_a_f88c&#038;rel=0"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/FSUu_a_f88c&#038;rel=0" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object>
</div>

<p>It uses Core Graphics and Core Image APIs for the transition effects to animate the window / view, which probably needs a minimum of Mac OS X Tiger. The <a href='http://dev.lipidity.com/apple/core-graphics-meet-core-image-demo-app' title='Core Graphics Image Transition Animation Effects'>full source code</a> is available.</p>
]]></content:encoded>
			<wfw:commentRss>http://lipidity.com/apple/cocoa-transition-animation-effects-video/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Secret Quicksilver animation effects</title>
		<link>http://lipidity.com/apple/quicksilver-animation-effects/</link>
		<comments>http://lipidity.com/apple/quicksilver-animation-effects/#comments</comments>
		<pubDate>Wed, 20 Jun 2007 02:00:14 +0000</pubDate>
		<dc:creator>Ankur</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[Cocoa]]></category>

		<category><![CDATA[Quicksilver]]></category>

		<category><![CDATA[Animation]]></category>

		<category><![CDATA[CoreGraphics]]></category>

		<category><![CDATA[GUI]]></category>

		<category><![CDATA[Mac]]></category>

		<category><![CDATA[plugin]]></category>

		<category><![CDATA[Tutorial]]></category>

		<category><![CDATA[Xcode]]></category>

		<guid isPermaLink="false">http://dev.lipidity.com/feature/tutorial/quicksilver-animation-effects</guid>
		<description><![CDATA[You may have had a shot at creating a Quicksilver interface. (If you haven't, see <a href="http://dev.lipidity.com/feature/tutorial/quicksilver-interface-tutorial">the tutorial</a>). While it's good fun to play with changing the colors and positions of the controls, there is a whole lot of really clever code in Quicksilver that lets you go beyond that and play with some weird and wacky effects on <em>any</em> window.]]></description>
			<content:encoded><![CDATA[<p class="centre"><a rel="lightbox" href="http://dev.lipidity.com/wp-content/uploads/2007/06/quicksilver-cube-animation.png" title="Mac Cube Transition Effect"><img alt="[Quicksilver Cube Effect]" title="Image of Core Graphics cube transition effect" src="http://dev.lipidity.com/wp-content/uploads/2007/06/quicksilver-cube-effect.png" class="feature" width="292" height="233" /></a><br /><small>Quicksilver is capable of some very futuristic transition effects</small></p>

<h2>Standard Animation Effects</h2>

<p>Quicksilver adds a category to the NSWindow class to allow for some pretty cool effects.
The following should be pretty self-explanatory:</p>

<pre><code>-(void)pulse:(id)sender;
-(void)flare:(id)sender;
-(void)shrink:(id)sender;
-(void)fold:(id)sender;
</code></pre>

<p>What these methods essentially mean, is that you can pulse, flare, shrink or fold <em>any window</em> you have a reference to in a plugin - whether it&#8217;s an interface or dialog or something completely different. Eg, just call <code>[window shrink:nil]</code> and watch that NSWindow shrink down to nothing, or <code>[window flare:nil]</code> to make it burst away!</p>

<h2>Private Core Graphics Animations</h2>

<p>Quicksilver also adds methods to use private <a href="http://dev.lipidity.com/feature/tutorial/xcode-transitions-core-graphics-image-2" title="Core Graphics Transitions Tutorial">Core Graphics transitions</a> for instances of NSWindow or its subclasses. The main method is defined something like:</p>

<pre><code>- (void) displayWithTransition:(CGSTransitionType)type option:(CGSTransitionOption)option duration:(float)duration;
</code></pre>

<p>The transitions you have access to are fade, zoom, reveal, slide, warp-fade, swap, warp-switch and the famous cube animation. You can use them on any window, for example:</p>

<pre><code>[window displayWithTransition:CGSCube option:CGSLeft duration:1.3];
</code></pre>

<p>To learn more about Core Graphics transitions, see the <a href="http://dev.lipidity.com/feature/tutorial/ebook-xcode-animations-core-graphics" title="Core Graphics Animations and Transitions Tutorial">Core Graphics ebook</a>, or play around with the <a href="http://dev.lipidity.com/apple/core-transitions-framework" title="Core Graphics and Core Image transition animations">Core Transitions Framework</a>.</p>

<p class="yellow_note">Quicksilver&#8217;s CGSPrivate.h file is missing CGSFlip, but you can run the Dashboard-style flip effect by using the integer 9.</p>

<h2>Quicksilver&#8217;s own animations</h2>

<p>Alcor has used various techniques to write several very interesting animation effects into Quicksilver. You&#8217;ll be familiar with some of these (just watch the Primer interface activate and deactivate) but for whatever reason, many of these bizarre animations never made into an interface. They&#8217;re really very clever. I&#8217;ve played around with some of these:</p>

<ul>
<li>QSGrowEffect</li>
<li>QSShrinkEffect</li>
<li>QSSlightGrowEffect</li>
<li>QSSlightShrinkEffect</li>
<li>QSBingeEffect</li>
<li>QSPurgeEffect</li>
<li>QSExplodeEffect</li>
<li>QSExtraExtraEffect</li>
<li>QSShakeItLikeAPolaroidPictureEffect</li>
<li>QSBoobTubeEffect</li>
<li>QSVExpandEffect</li>
<li>QSVillainousKryptonianEffect</li>
<li>QSMMBlowEffect</li>
<li>QSLudicrousSpeedEffect</li>
</ul>

<p>Very interesting to look at, but how does one use these effects?</p>

<p>As we are dealing with Quicksilver, the solution is (as expected) very elegant. There are very simple methods to set a show, hide or execute effect for a window. These methods don&#8217;t even require an explanation; they&#8217;re so simple:</p>

<pre><code>// Effect for showing the QSWindow
[window setShowEffect:[NSDictionary dictionaryWithObjectsAndKeys:@&quot;QSSlightGrowEffect&quot;,@&quot;transformFn&quot;,@&quot;show&quot;,@&quot;type&quot;,[NSNumber numberWithFloat:2.0],@&quot;duration&quot;,nil]];

// Effect for hiding the QSWindow
[window setHideEffect:[NSDictionary dictionaryWithObjectsAndKeys:@&quot;QSSlightShrinkEffect&quot;,@&quot;transformFn&quot;,@&quot;hide&quot;,@&quot;type&quot;,[NSNumber numberWithFloat:2.0],@&quot;duration&quot;,nil]];

// The "execute" effect is slightly different:
[window setWindowProperty:[NSDictionary dictionaryWithObjectsAndKeys:@&quot;QSExplodeEffect&quot;,@&quot;transformFn&quot;,@&quot;hide&quot;,@&quot;type&quot;,[NSNumber numberWithFloat:1.5],@&quot;duration&quot;,nil] forKey:kQSWindowExecEffect];</code></pre>

<p>Easy!</p>

<h2>Sample plugin</h2>

<p><a href="http://dev.lipidity.com/wp-content/uploads/2007/06/effects.zip" title="Download Quicksilver Effects Plugin"><img class="fright" src="http://qs.lipidity.com/fumo/QSPlugin.png" title="Quicksilver Plugin Icon" alt="[Plugin Icon]" height="128" width="128" /></a> 
I don&#8217;t dare mention all this private goodness and not even provide a demonstration. I&#8217;ve created an &#8220;Effects&#8221; plugin that will allow you to change the activate, deactivate and execute effects for <em>any</em> Quicksilver interface temporarily to play around with the effects. Just for good measure, I&#8217;ve also thrown in an action that lets you explore Core Graphics transitions as well.</p>

<p>This is not really a bona fide Quicksilver plugin; while it does let you have some fun with the effects, it&#8217;s not very user-friendly and doesn&#8217;t save your configuration. 
If these animations prove to be popular, then I&#8217;ll write a proper plugin to let you configure the effects more easily (probably through a preference pane) and remembers your settings.</p>

<p class="download"><a href="http://dev.lipidity.com/wp-content/uploads/2007/06/effects.zip" title="Download Quicksilver Effects Plugin">Download Quicksilver Effects Plugin</a></p>

<h4>Usage</h4>

<p>Type in the name of the effect you want, then use &#8220;Set Hide Effect&#8221;, &#8220;Set Show Effect&#8221; or the &#8220;Set Exec Effect&#8221; action. The list of effects is given <a href="#toc-quicksilvers-own-animations">above</a>; just type one in and run the relevant action.</p>

<p>To run a Core Graphics transition, type in the name of the transition, and use the &#8220;Run CoreGraphics Transition&#8221; action. You can optionally specify a direction in the indirect selector. (You can enter text in the direct and indirect selectors by pressing the period &#8220;.&#8221; key)</p>

<h4>For example</h4>

<ul>
<li><big>&#8220;QSBingeEffect&#8221; -&gt; Set Show Effect</big></li>
<li><big>&#8220;QSPurgeEffect&#8221; -&gt; Set Hide Effect</big></li>
<li><big>&#8220;QSExplodeEffect&#8221; -&gt; Set Exec Effect</big></li>
<li><big>&#8220;flip&#8221; -&gt; Run CoreGraphics Transition</big></li>
<li><big>&#8220;slide&#8221; -&gt; Run CoreGraphics Transition -&gt; &#8220;up&#8221;</big></li>
<li><big>&#8220;swap&#8221; -&gt; Run CoreGraphics Transition -&gt; &#8220;inout&#8221;</big></li>
</ul>

<p class="centre">
<a rel="lightbox[demo]" href='http://dev.lipidity.com/wp-content/uploads/2007/06/set-show-effect.png' title='Set Show Effect'><img src='http://dev.lipidity.com/wp-content/uploads/2007/06/set-show-effect.thumbnail.png' alt='Set Show Effect' width='108' height='128' /></a>
<a rel="lightbox[demo]" href='http://dev.lipidity.com/wp-content/uploads/2007/06/set-hide-effect.png' title='Set Hide Effect'><img src='http://dev.lipidity.com/wp-content/uploads/2007/06/set-hide-effect.thumbnail.png' alt='Set Hide Effect' width='108' height='128' /></a>
<a rel="lightbox[demo]" href='http://dev.lipidity.com/wp-content/uploads/2007/06/set-exec-effect.png' title='Set Exec Effect'><img src='http://dev.lipidity.com/wp-content/uploads/2007/06/set-exec-effect.thumbnail.png' alt='Set Exec Effect' width='106' height='128' /></a>
<a rel="lightbox[demo]" href='http://dev.lipidity.com/wp-content/uploads/2007/06/core-graphics-cube.png' title='Core Graphics Cube Effect'><img src='http://dev.lipidity.com/wp-content/uploads/2007/06/core-graphics-cube.thumbnail.png' alt='Core Graphics Cube Effect' width='105' height='128' /></a>
<a rel="lightbox[demo]" href='http://dev.lipidity.com/wp-content/uploads/2007/06/core-graphics-swap-effect.png' title='Core Graphics Swap Effect'><img src='http://dev.lipidity.com/wp-content/uploads/2007/06/core-graphics-swap-effect.thumbnail.png' alt='Core Graphics Swap Effect' width='92' height='128' /></a><br />
<small>Pictures show how to use the effects plugin. Actual animations are not shown.</small>
</p>

<hr />

<p>Quicksilver has many such hidden surprises and nifty time-saving methods; it&#8217;s so well thought out and full of these amazing gems!</p>

<p>What do you think about these animations? Be sure to let me know if you&#8217;d like a proper, more user-friendly plugin to use these effects.</p>
]]></content:encoded>
			<wfw:commentRss>http://lipidity.com/apple/quicksilver-animation-effects/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Write your own Quicksilver interface</title>
		<link>http://lipidity.com/apple/quicksilver-interface-tutorial/</link>
		<comments>http://lipidity.com/apple/quicksilver-interface-tutorial/#comments</comments>
		<pubDate>Tue, 05 Jun 2007 02:00:17 +0000</pubDate>
		<dc:creator>Ankur</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[Cocoa]]></category>

		<category><![CDATA[Quicksilver]]></category>

		<category><![CDATA[GUI]]></category>

		<category><![CDATA[Mac]]></category>

		<category><![CDATA[plugin]]></category>

		<category><![CDATA[Tutorial]]></category>

		<category><![CDATA[Xcode]]></category>

		<guid isPermaLink="false">http://dev.lipidity.com/feature/tutorial/quicksilver-interface-tutorial</guid>
		<description><![CDATA[Writing your own interface for Quicksilver is surprisingly easy, especially if you have experience in Cocoa and Xcode. Having covered the basics about the <a href="http://dev.lipidity.com/feature/tutorial/anatomy-of-a-plugin-infoplist-part-1" title="Basics of writing a Quicksilver plugin">QSPlugin key</a> in the Info.plist, as well the as the fundamentals of writing <a href="http://dev.lipidity.com/feature/tutorial/anatomy-of-a-plugin-part-2" title="Quicksilver plugin development">Quicksilver actions using Xcode</a>, we are ready to start in a completely new direction. The Quicksilver interface.]]></description>
			<content:encoded><![CDATA[<h2>Setup Xcode</h2>

<p><a name="download" id="download"></a>
<a href='http://dev.lipidity.com/wp-content/uploads/2007/06/quicksilver-interface-plug-in.zip' title='Xcode Project Template (Quicksilver interface)'><img src='http://dev.lipidity.com/wp-content/uploads/2007/04/xcode-project.png' alt='[Download Quicksilver Interface Project Template]' title='Xcode Project Template' longdesc='Xcode Project Template for creating a Quicksilver interface.' height='128' width='128' class='fright' /></a>
Writing an interface is very similar to writing an action, but the classes and Info.plist keys are somewhat different. <big>Download the <a href="http://dev.lipidity.com/wp-content/uploads/2007/06/quicksilver-interface-plug-in.zip" title="Quicksilver Interface Project Template for Xcode">QS Interface Project Template</a></big>. If you haven&apos;t previously downloaded a Quicksilver plugin template for Xcode, you&apos;ll have to do some <a href="http://lipidity.com/apple/quicksilver-plugins-in-objective-c">basic setup</a>.</p>

<p>Once you&apos;ve installed the project template, you can build a new interface project &quot;out-of-the-box&quot; to make sure it works.</p>

<p class='yellow_note'>Unfortunately, development isn&#8217;t a linear process, so you&#8217;ll probably have to keep referring back to different sections of this article as you develop your interface.</p>

<!--

### Got Class? ###

The class that is subclassed in the interface plugin is itself a subclass of `NSWindowController` called `QSInterfaceController`. By default, the project uses `QSResizingInterfaceController`, which is able to handle expanding and collapsing of the interface as well. Most of the work that needs to be done with regard to notifications, updating actions, executing or canceling commands, etc. is taken care of by the superclass. However you need to write any animations, effects, bindings, custom controls or extra features.

-->

<h2>Info.plist keys specifications</h2>

<p><img src="http://dev.lipidity.com/wp-content/uploads/2007/02/5_info_plist.png" alt="Info.plist icon" title="Info.plist icon" class='fright no-space' />We tell Quicksilver that we&apos;re providing it an interface in the <em>QSRegistration</em> section of the Info.plist file, under <em>QSCommandInterfaceControllers</em>. By default, this should have been already added in when you created the project.</p>

<pre><code>&lt;key&gt;QSRegistration&lt;/key&gt;
&lt;dict&gt;
    &lt;key&gt;QSCommandInterfaceControllers&lt;/key&gt;
    &lt;dict&gt;
        &lt;key&gt;testInterface&lt;/key&gt;
        &lt;string&gt;testInterface&lt;/string&gt;
    &lt;/dict&gt;
    . . .
    . . .
&lt;/dict&gt;
</code></pre>

<p>There is also a key called <em>QSPreferencePanesTemplate</em> inside <em>QSRegistration</em>. If you wish to have a preference pane for your plugin, rename the key to <em>QSPreferencePanes</em> and <a href="#toc-preference-panes">create the pref pane</a>; otherwise you can leave it or delete it. As per the previous setting, these values should be filled in already by the project.</p>

<pre><code>&lt;key&gt;QSRegistration&lt;/key&gt;
&lt;dict&gt;
    . . .
    . . .
    &lt;key&gt;QSPreferencePanesTemplate&lt;/key&gt;
    &lt;dict&gt;
        &lt;key&gt;testInterfacePrefPane&lt;/key&gt;
        &lt;dict&gt;
            &lt;key&gt;class&lt;/key&gt;
            &lt;string&gt;QSPreferencePane&lt;/string&gt;
            &lt;key&gt;description&lt;/key&gt;
            &lt;string&gt;testInterface interface preferences&lt;/string&gt;
            &lt;key&gt;icon&lt;/key&gt;
            &lt;string&gt;&lt;/string&gt;
            &lt;key&gt;name&lt;/key&gt;
            &lt;string&gt;testInterface&lt;/string&gt;
            &lt;key&gt;nibBundle&lt;/key&gt;
            &lt;string&gt;com.blacktree.Quicksilver.testInterface&lt;/string&gt;
            &lt;key&gt;nibName&lt;/key&gt;
            &lt;string&gt;testInterfacePrefPane&lt;/string&gt;
            &lt;key&gt;type&lt;/key&gt;
            &lt;string&gt;hidden&lt;/string&gt;
        &lt;/dict&gt;
    &lt;/dict&gt;
&lt;/dict&gt;
</code></pre>

<p class='yellow_note'>If you&apos;re not having a preference pane, you should remove the PrefPane.nib file from your project when you&apos;re ready to release your plugin; it&apos;ll save bandwidth as well as reduce clutter.</p>

<p>You may not have an idea of the bindings you&#8217;ll be using yet (or maybe you do), but when you do use them, it&apos;s good practice to specify some default values for Quicksilver to use when the value hasn&apos;t been set by the user. These values go in the <em>QSDefaults</em> key.</p>

<pre><code>&lt;key&gt;QSDefaultsTemplate&lt;/key&gt;
&lt;dict&gt;
    &lt;key&gt;interface.bindingname&lt;/key&gt;
    &lt;string&gt;value&lt;/string&gt;
    &lt;key&gt;interface.bindingname2&lt;/key&gt;
    &lt;real&gt;2.54328&lt;/real&gt;
    &lt;key&gt;interface.bindingname2&lt;/key&gt;
    &lt;integer&gt;4&lt;/integer&gt;
&lt;/dict&gt;
</code></pre>

<p class='yellow_note'>If you&apos;re using the &quot;QSDefaults&quot; key, make sure you&#8217;re renamed it from &quot;QSDefaultsTemplate&quot; to &quot;QSDefaults&quot;.</p>

<p>Don&#8217;t forget there&#8217;s also a <a href="http://lipidity.com/apple/anatomy-of-a-plugin-infoplist-part-1"><em>QSPlugin</em> section</a> in the Info.plist file that you should fill in.</p>

<h2>Coding</h2>

<p>That&apos;s the Info.plist file out of the way for now. It&apos;s time to start coding!</p>

<p>There are a few basic Quicksilver terms I hope you&apos;re familiar with:</p>

<p class='centre'>
<img class='feature' src="http://dev.lipidity.com/wp-content/uploads/2007/06/qs-selectors1.png" alt="[Quicksilver Interface Selectors]" title="Quicksilver interface selectors" /><br />
<small>Fig 1. The selectors are the used to pick the direct object, action, and indirect object respectively. Indirect object is often optional or not required.</small>
</p>

<p>Arrangement and positioning of the views using Interface Builder is left as an exercise for the reader. You don&apos;t want a lesson on how to drag and drop, do you?</p>

<h3>Controlling the Controller</h3>

<p>As mentioned before, the superclass (<code>QSResizingInterfaceController</code>) handles most of the work for you, therefore the majority of code you add will not be in new methods. Most of the code you write is (probably) going to be in existing methods that you will subclass.</p>

<h4>Major methods</h4>

<p>Here are the main methods you may decide to add extend:</p>

<dl>
<dt>- windowDidLoad</dt>
<dd>
<p>Anything that requires interaction with the interface window when it is first loaded. As the name implies, this method is called when the interface window is first loaded. All your setup <em>with the window</em> goes in this method. For example, setting the colors, adding bindings, and choosing animation effects for hiding / showing the interface etc. Please make sure you call <code>[super windowDidLoad];</code> somewhere to let Quicksilver to do its setup as well.</p>

<p>This is not the place to add initialization code for the class itself. There&apos;s an <code>-init</code> method for that.</p>
</dd>

<dt>- maxIconSize</dt>
<dd>
<p>The maximum size allowed for icons in the interface selectors. Adjust this depending on how big or small your interface is. It&apos;s set at 128 x 128 by default, which should be fine in most circumstances.</p>
</dd>

<dt>- showMainWindow:</dt>
<dd>
<p>Any fancy animations or transitions you want for when the interface is being shown can go in here. You could also do something like: <code>if ( [[self window]isVisible] ) [[self window] pulse:self];</code>. (The pulse method is explained later). If you&apos;re having your own transition effect and don&apos;t want Quicksilver&apos;s default fade-in animation, run <code>[window setFastShow:YES]</code>.</p>

<p>If you can, call the super implementation of the method where you would call <code>-makeKeyAndOrderFront:</code>, otherwise the option to suppress hotkeys while the command window is shown wont be honored.</p>
</dd>

<dt>- hideMainWindow:</dt>
<dd>
<p>Calling the super&apos;s implementation will hide the window with Quicksilver&apos;s effect. If you&apos;re using your own animation, you can run <code>[window setHideEffect:nil]</code> so Quicksilver doesn&apos;t run its own effect as well.</p>
</dd>

<dt>- activateInTextMode:</dt>
<dd>
<p>The use of the &quot;Activate in Text Mode&quot; trigger may be a rare occasion, but it&apos;s a cool place to throw in a surprising animation. <a href="http://dev.lipidity.com/downloads/fumo" title="Fumo Quicksilver Interface">Fumo</a> has used <a href="http://dev.lipidity.com/index.php?tag=core-graphics" title="Core Graphics Animation and Transition Effects">Core Graphics</a> warp and cube effects for this in the past.</p>
</dd>
</dl>

<h4>Expansion</h4>

<p>If you&apos;re having your interface expand and collapse, you&apos;ll need to subclass the following methods:</p>

<dl>
<dt>- showIndirectSelector:</dt>
<dd>
<p>Position the indirect selector in an appropriate location on the window. It may be useful to position it relative to another object, for example: <code>[iSelector setFrame:NSOffsetRect([aSelector frame],0,-250)];</code>
Don&apos;t forget to call super!</p>
</dd>

<dt>- expandWindow:</dt>
<dd>
<p>Expand your interface. You&apos;ll probably be using <code>[[self window] setFrame: display: animate:]</code> to resize the window smoothly.</p>
</dd>

<dt>- contractWindow:</dt>
<dd>
<p>As per <code>-expandWindow:</code>, but make the window smaller.</p>
</dd>

<dt>-hideIndirectSelector:</dt>
<dd>
<p>In most cases you wont need to subclass this. It just hides the indirect selector.</p>
</dd>
</dl>

<h2>Preference Panes</h2>

<h3>The easy stuff</h3>

<p>Creating your preference pane is easy since a lot of the work is done for you by the project template. There&apos;s a .nib file included in the interface project called &quot;testInterfacePrefPane&quot; (where &quot;testInterface&quot; is the name of your Xcode project). With this .nib file:</p>

<ol>
<li>Open it.</li>
<li>Add controls and bindings.</li>
<li>Save and quit.</li>
</ol>

<p>That&#8217;s <em>creating</em> it, though. There&apos;s still a little more work to be done.</p>

<h3>Info.plist keys</h3>

<p>Remember the <em>QSPreferencePanes</em> key I mentioned earlier? That needs to be present under the QSRegistration key in the Info.plist file. You don&#8217;t need to configure it, but you can change some keys like <em>description</em> with a short summary of the preference pane, or set an <em>icon</em>.</p>

<p>(Reminder: Make sure to drop the &quot;Template&quot; from &quot;QSPreferencePanesTemplate&quot;)</p>

<h3>The &quot;Customize&quot; button</h3>

<p>To set a customize button to show the preference pane for your interface, simply uncomment the <code>-customize:</code> method that&apos;s added in by default. It&#8217;s that easy.</p>

<pre><code>- (IBAction)customize:(id)sender{
    [[NSClassFromString(@"QSPreferencesController") sharedInstance] showPaneWithIdentifier:@"testInterfacePrefPane"];
}</code></pre>

<h3>A note on bindings</h3>

<p>When the user changes something in the preference pane, the binding will be updated. And that&#8217;s it. You&#8217;ll need to bind your classes / controls not only in the preference pane, but also in your code so that any changes to bindings reflect in your interface. For example, if you add a binding for &quot;testInterface.fadeStyle&quot;, you may want to do something like:</p>

<pre><code>[self bind:@"fadeStyle"
     toObject:[NSUserDefaultsController sharedUserDefaultsController]
  withKeyPath:@"values.testInterface.fadeStyle"
      options:nil];</code></pre>

<p class='note'>If you&#8217;re binding an NSColor, make sure to use NSUnarchiveFromDataTransformerName</p>

<h2>Building</h2>

<p>Once you&#8217;ve got your code ready, build the project.</p>

<p>(Don&#8217;t puke if you get warnings that you can&#8217;t get rid of; there will be a few warnings regarding some methods like <code>-setWindowProperty:</code>, and another great error if you add a preference pane and the customize button. We&#8217;ll have to live with them for now.)</p>

<p>Double-click on the built product to have Quicksilver install it. If there are no serious faults with the code, you&#8217;ll see your Incredible Interface&trade; and be able to enjoy, use, and distribute it!</p>

<h2>Summary</h2>

<ul>
<li>Download the <a href="#download" title="Quicksilver Interface Project Template for Xcode">Xcode Project Template</a>, making sure everything else is <a href="http://lipidity.com/apple/quicksilver-plugins-in-objective-c" title="Setup Xcode for Quicksilver plugin development">setup correctly</a></li>
<li>Add code to the subclass of <code>QSResizingInterfaceController</code></li>
<li>Arrange the views in Interface Builder</li>
<li>Add preference pane and bindings</li>
<li>Build project</li>
<li>Test and distribute</li>
</ul>

<p>If you need any additional information or resources, help is always available at the <a href="http://blacktree.cocoaforge.net/forums/">Quicksilver forums</a> or you can contact me.</p>

<p>Be sure to show me how you go with your interface!</p>

<h4>Also in this series</h4>

<h6><a href="http://lipidity.com/apple/quicksilver-plugins-in-objective-c" title="Step by step guide to writing plugins for Quicksilver in Cocoa using Xcode.">Quicksilver plugins in Objective-C</a></h6>

<blockquote><p>A guide to obtaining the required resources for Quicksilver plugin development in Xcode. Also runs through setting up Xcode to make creating plugins easier.</p></blockquote>

<h6><a href="http://lipidity.com/apple/anatomy-of-a-plugin-infoplist-part-1">Info.plist - QSPlugIn</a></h6>

<blockquote><p>The various sections of Quicksilver plugins, including the basics on how to properly configure your plugin, setup the correct options and settings, and how and where to write your plugin.</p></blockquote>

<h6><a href="http://lipidity.com/apple/anatomy-of-a-plugin-part-2" title="How to write a Quicksilver action using Xcode and Cocoa.">Quicksilver Actions</a></h6>

<blockquote><p>A quick look at QSActions in the Info.plist, followed by our first look at the code needed to get a plugin up and running.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://lipidity.com/apple/quicksilver-interface-tutorial/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Shiira 2 released, offers HUD framework</title>
		<link>http://lipidity.com/apple/shiira-2-released-offers-hud-framework/</link>
		<comments>http://lipidity.com/apple/shiira-2-released-offers-hud-framework/#comments</comments>
		<pubDate>Mon, 23 Apr 2007 13:43:47 +0000</pubDate>
		<dc:creator>Ankur</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[Cocoa]]></category>

		<category><![CDATA[News]]></category>

		<category><![CDATA[framework]]></category>

		<category><![CDATA[GUI]]></category>

		<category><![CDATA[Mac]]></category>

		<category><![CDATA[Review]]></category>

		<category><![CDATA[shiira]]></category>

		<category><![CDATA[Xcode]]></category>

		<guid isPermaLink="false">http://dev.lipidity.com/apple/shiira-2-released-offers-hud-framework</guid>
		<description><![CDATA[If you haven&#8217;t already heard, Shiira 2 has been released. Shiira is a web browser written in Cocoa and based on Webkit that aims to provide a better browsing alternative than Safari.

A sub-project of Shiira is a HUD-type window class. While they&#8217;re not completely accurate to the specifications used by Apple, these are probably the [...]]]></description>
			<content:encoded><![CDATA[<p>If you haven&#8217;t already heard, Shiira 2 has been released. <a href="http://shiira.jp/en.php">Shiira</a> is a web browser written in Cocoa and based on Webkit that aims to provide a better browsing alternative than Safari.</p>

<p>A sub-project of Shiira is a HUD-type window class. While they&#8217;re not completely accurate to the specifications used by Apple, these are probably the best HUD windows I&#8217;ve seen from a third party developer by a long shot.</p>

<p><a href='http://dev.lipidity.com/wp-content/uploads/2007/04/hud-window.png' title='HUD window from Shiira'><img src='http://dev.lipidity.com/wp-content/uploads/2007/04/hud-window.thumbnail.png' alt='HUD window from Shiira' height="64" width="128" /></a></p>

<p>The HUD Windows have the funny name of <a href="http://shiira.jp/hmblkappkit/en.html">HMBLBlkAppKit</a>. The Shiira team has really done a great job!</p>
]]></content:encoded>
			<wfw:commentRss>http://lipidity.com/apple/shiira-2-released-offers-hud-framework/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Say what you like, the HIG are still relevant</title>
		<link>http://lipidity.com/apple/apple-hig-still-relevant/</link>
		<comments>http://lipidity.com/apple/apple-hig-still-relevant/#comments</comments>
		<pubDate>Mon, 16 Apr 2007 12:53:56 +0000</pubDate>
		<dc:creator>Ankur</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[Cocoa]]></category>

		<category><![CDATA[GUI]]></category>

		<category><![CDATA[Mac]]></category>

		<category><![CDATA[Xcode]]></category>

		<guid isPermaLink="false">http://dev.lipidity.com/apple/apple-hig-still-relevant</guid>
		<description><![CDATA[I generally tend to distance myself from debatable issues, but I couldn't bear to see the Apple <a href="http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/XHIGIntro/chapter_1_section_1.html" title="Apple Human Interface Guidelines">Human Interface Guidelines</a> <a href="http://www.thinkmac.co.uk/blog/2006/11/on-death-of-hig-and-triumph-of-eye.html">take</a> <a href="http://mjtsai.com/blog/2006/10/23/build-your-own-damn-hig/">such</a> a <a href="http://daringfireball.net/2004/10/brushedmetal">battering</a>. The phrase "<a href="http://www.google.com.au/search?q=apple+hig+dead">HIG is dead</a>" must have been repeated at least a few dozen times in various places.

I'm sorry, but the HIG <em>aren't</em> dead (Note the plural, please. It's 'Guidelines'). Quite the contrary; guidelines are needed now more than ever if the Macintosh is to remain the great example of usability it was.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ll say it again:</p>

<h3>Apple&#8217;s Human Interface Guidelines are <em>not</em> dead.</h3>

<p><!--more-->
We&#8217;ve seen a large number of bloggers pointing out (or linking to) facts about consistency and usability, giving examples of Disco and GarageBand and iTunes and Safari&#8230; and most of them are absolutely correct in saying that the levels of consistency are currently in a state of steady decline. The inconsistency is present not only in Apple&#8217;s applications, but also in a lot of third party software<sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup>.</p>

<p>Whenever a topic such as this is discussed, there are always people that get&#8230; different&#8230; ideas. What I want to make clear, is that although <a href="http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/XHIGPartIII/chapter_10_section_1.html#//apple_ref/doc/uid/TP40002723-TPXREF101">Part III</a> of the <abbr title="Human Interface Guidelines">HIG</abbr> is possibly outdated or redundant<sup id="fnref:2"><a href="#fn:2" rel="footnote">2</a></sup>, it certainly does <em>not</em> disqualify the rest of it from being a valid and useful resource.</p>

<p>Let me ask you this: <strong>Have you even read the <abbr title="Human Interface Guidelines">HIG</abbr>?</strong></p>

<p>If you answered no and are a developer, believe you me when I say you&#8217;re missing out. It&#8217;s no longer enough to follow the crowd. Disco is cool (or hot considering it burns) but if every app in the galaxy starts using the same interface, it would be a real disaster. Same goes for GarageBand and iClip and almost every heavily <abbr title="User Interface">UI</abbr>-dependent application. It may work for the purposes of the individual application, but to standardize it would be ludicrous.</p>

<h3>So what&#8217;s the problem?</h3>

<p>Why the sudden revolt? Why are we badgering Apple to update the <abbr title="Human Interface Guidelines">HIG</abbr>, and why are people setting up <a href="http://indiehig.com/wiki/Main_Page">their own</a> version or additions to it?</p>

<p>The fuss, I believe, was really started when Apple started to introduce the HUD windows.</p>

<blockquote><p>What!? What makes you guys so special that you can have semi-transparent black windows with white text and custom pictury-looking controls? How come we can&#8217;t use these new-fangled window things? I want one!!</p></blockquote>

<p>I admit, I&#8217;d like HUD controls from Apple as much as the next person, but where does the <abbr title="Human Interface Guidelines">HIG</abbr> come into this? I&#8217;ll tell you where.</p>

<h3>It&#8217;s outdated</h3>

<blockquote><p>I mean, really, who wants to use Aqua now-days, right? Which Apple apps use Aqua? System Preferences? TextEdit? Dictionary? Forget it. My app has to be cooler than that. All the cool kids are writing their own schemes and themes, so why can&#8217;t I?</p></blockquote>

<p>Yeah, right. If you didn&#8217;t notice, the above statement is not only paradoxical and hypcritical, it&#8217;s probably what most of us are thinking. In writing our own windows and buttons and scrollbars, we&#8217;re going against the very thing we were crying out for from Apple: consistency.</p>

<h3>Who needs consistency?</h3>

<p>We&#8217;re not making custard, are we, so why should we bother about consistency? (Excuse the bad joke)</p>

<p>I wont extoll the benefits of a consistent <abbr title="User Interface">UI</abbr> for an <abbr title="Operating System">OS</abbr>, as I&#8217;m sure you&#8217;re already aware of it&#8217;s importance. But with consistency lost somewhere in the woods these days, it can be easy for a developer to think that they need to provide eye candy and unique-ness for their product to sell. And maybe they&#8217;re right. But I&#8217;m sure many will agree (especially the ones who have written some of these custom <abbr title="User Interface">UI</abbr>&#8217;s) that if there&#8217;s no need to spend hours writing the front-end, why bother? For applications like Disco, it&#8217;s a selling-point, so it&#8217;s understandable, but why in the world would you spend days writing a completely custom interface when you&#8217;ve already got Apple&#8217;s classes for you to use? Unified seems to be the craze these days, and that doesn&#8217;t require a single line of code. Think about it.</p>

<p>Obviously there will be instances when you need to write your own custom <abbr title="User Interface">UI</abbr>, and it&#8217;s perfectly ok. But it&#8217;s up to you to make sure that it&#8217;s complementary to the existing standard <abbr title="User Interface">UI</abbr> and wont look like an alien spaceship next to TextEdit. I&#8217;m not saying &#8220;don&#8217;t do it&#8221;. There are a lot of applications that rely on or use custom front-ends effectively. Voice Candy, ImageWell, QuickScale, Cha-Ching&#8230; they all have minor differences but thankfully enough Mac developers are smart people and the differences have been kept to a minimum where they would be harsh or contrasting, such as the background color of the window.</p>

<h3>&#8220;But Apple don&#8217;t &#8230;&#8221;</h3>

<p>Are the <abbr title="Human Interface Guidelines">HIG</abbr> neglected by Apple themselves? If Apple are pushing for custom controls at every opportunity and giving their each of their applications unique appearances, why should the developer community have to conform to the Aqua interfaces? Two words: you don&#8217;t.</p>

<p>Have Apple ever dictated what you can or cannot do? All the <abbr title="Human Interface Guidelines">HIG</abbr> does is stipulate a few key concepts that are vital to providing a &#8220;consistent visual and behavioral experience&#8221;. Aqua or not, that&#8217;s important.</p>

<p>The <abbr title="Human Interface Guidelines">HIG</abbr> introduction states the obvious:</p>

<ul>
<li>Users will learn your application faster if the interface looks and behaves like applications they’re already familiar with.</li>
<li>Users can accomplish their tasks quickly, because well-designed applications don’t get in the user’s way.</li>
<li>Users with special needs will find your product more accessible.</li>
<li>Your application will be easier to localize, because Apple has worked through many localization issues in the Aqua design process.</li>
</ul>

<p>The implementation of Apple’s human interface principles make the Macintosh what it is: intuitive, friendly, elegant, and powerful.</p>

<h3>So they&#8217;re not dead</h3>

<p>The Apple <abbr title="Human Interface Guidelines">HIG</abbr> are not dead<sup id="fnref:4"><a href="#fn:4" rel="footnote">3</a></sup>. The majority of the <abbr title="Human Interface Guidelines">HIG</abbr> remains applicable to the development environment, worthy of at least a quick glance.<sup id="fnref:3"><a href="#fn:3" rel="footnote">4</a></sup></p>

<p>Some of the portions have been correctly<sup id="fnref:5"><a href="#fn:5" rel="footnote">5</a></sup> labelled as neglected, and so we wait in the hope of the <abbr title="Human Interface Guidelines">HIG</abbr> 2.0 (or the <abbr title="Human Interface Guidelines">HIG</abbr> 2.0 Beta, if the Apple team are feeling particularly Web 2.0). That, and <del>Leopard</del> the iPhone. The joys of being an Apple fanboy!</p>

<div class="footnotes">
<hr />
<ol>

<li id="fn:1">
<p>Possibly as a result of Apple&#8217;s experiments in <abbr title="User Interface">UI</abbr>. Or possibly not.&#160;<a href="#fnref:1" rev="footnote">&#8617;</a></p>
</li>

<li id="fn:2">
<p>Though in my view it isn&#8217;t. Developers are free to play with interface just as Apple has done if it suits the application. Delicious Library, Disco and even GarageBand wouldn&#8217;t be the same without their non-standard <abbr title="User Interface">UI</abbr>, but for an application like NetNewsWire or TextEdit to ditch Aqua would most likely be utterly lurid.&#160;<a href="#fnref:2" rev="footnote">&#8617;</a></p>
</li>

<li id="fn:4">
<p>It&#8217;s impossible to kill something that&#8217;s not alive anyway. Didn&#8217;t you study biology?&#160;<a href="#fnref:4" rev="footnote">&#8617;</a></p>
</li>

<li id="fn:3">
<p>Although most of it is really common sense, it probably wont do any harm to glance through it.&#160;<a href="#fnref:3" rev="footnote">&#8617;</a></p>
</li>

<li id="fn:5">
<p>That&#8217;s debatable too, but I don&#8217;t want to stir up too much controversy.&#160;<a href="#fnref:5" rev="footnote">&#8617;</a></p>
</li>

</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://lipidity.com/apple/apple-hig-still-relevant/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Fumo&#8217;s been taking steroids (aka. major update)</title>
		<link>http://lipidity.com/apple/quicksilver-interface-fumo-updated/</link>
		<comments>http://lipidity.com/apple/quicksilver-interface-fumo-updated/#comments</comments>
		<pubDate>Tue, 10 Apr 2007 08:54:11 +0000</pubDate>
		<dc:creator>Ankur</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[Quicksilver]]></category>

		<category><![CDATA[fumo]]></category>

		<category><![CDATA[GUI]]></category>

		<category><![CDATA[Mac]]></category>

		<category><![CDATA[plugin]]></category>

		<category><![CDATA[smoke]]></category>

		<guid isPermaLink="false">http://dev.lipidity.com/apple/fumos-been-taking-steroids-aka-major-update</guid>
		<description><![CDATA[<ul>
    <li>Firstly, <strong>thank you</strong> for your feedback. Without all your encouraging comments, constructive criticism and reports, none of this would be possible.</li>
    <li>Secondly, <strong>I'm listening</strong> to what you're asking for. Feel free to speak up and <a href="http://dev.lipidity.com/contact-me/">drop me a note</a>.</li>
    <li>Thirdly, this site has had a <strong>dramatic increase</strong> in traffic lately. Thank you to everyone who spread the link love or <a href="http://digg.com/apple/Smoking_Quicksilver_interface_now_has_an_evil_twin">Dugg Fumo</a>.</li>
</ul>

<h2>Your requests</h2>

Here's what you requested for Fumo. All of it is available and working as of today.]]></description>
			<content:encoded><![CDATA[<h3>Comma trick</h3>

<p>The number one request was for the comma trick. Well, as of today, this feature is built right into Fumo using Quicksilver&#8217;s own ingenious system. Select an item, press comma, and select another one (or ten).</p>

<p style='text-align:center'><img src="http://dev.lipidity.com/wp-content/uploads/2007/04/comma-trick.png" alt="The comma trick" /></p>

<p><span class="pic star">Tip:</span> Use the comma trick in conjunction with <a href="http://dev.lipidity.com/feature/tutorial/quicksilver-the-power-of-compound-commands">compound commands</a> for maximum efficiency and usefulness.</p>

<h3>It smokes correctly</h3>

<p>Previously, the smoke would pour out unnaturally from the side of Fumo, or in rare occasions, from different areas of the screen. That&#8217;s all been fixed. The only precaution needed is to make sure you don&#8217;t drag Fumo around in the first few seconds that it&#8217;s loading so the smoke doesn&#8217;t get confused about the position, but feel free to do pretty much anything and enjoy!</p>

<h3>Choose your own smoke</h3>

<p>Tired of that same old gray smoke every time? You can choose the color of the smoke in Disco - why not in Fumo? The new easy-to-use preference pane makes smoke customization easy so you can show off your own colors. And it&#8217;s not just the colors you can control. You can change the frame rate, blur amount, the initial temperature of the smoke and lots more in the preference pane. Start or stop the smoke anytime by simply hitting Cmd-S while Fumo is active.</p>

<p style="text-align: center"><a href="http://dev.lipidity.com/wp-content/uploads/2007/04/fumo-prefs.png" title="Fumo Preference Pane" rel="lightbox[smokestyles]"><img src="http://dev.lipidity.com/wp-content/uploads/2007/04/fumo-prefs.thumbnail.png" alt="QS Fumo Preference Pane" /></a> <a href="http://dev.lipidity.com/wp-content/uploads/2007/04/disco-smoke.png" rel="lightbox[smokestyles]" title="Normal Disco smoke"><img src="http://dev.lipidity.com/wp-content/uploads/2007/04/disco-smoke.thumbnail.png" alt="Normal Disco smoke" /></a>  <a href="http://dev.lipidity.com/wp-content/uploads/2007/04/picture-1.png" rel="lightbox[smokestyles]" title="Toxic smoke"><img src="http://dev.lipidity.com/wp-content/uploads/2007/04/picture-1.thumbnail.png" alt="QS Fumo toxic color" /></a> <a href="http://dev.lipidity.com/wp-content/uploads/2007/04/picture-4.png" rel="lightbox[smokestyles]" title="Bright blue smoke"><img src="http://dev.lipidity.com/wp-content/uploads/2007/04/picture-4.thumbnail.png" alt="Bright blue smoke" /></a></p>

<h3>Easy access to the menu</h3>

<p>Cmd-comma isn&#8217;t for everyone, and there are instances where you need to access the Quicksilver menu. The handy little triangle lets you get into the nooks and crannies of the application.</p>

<p style='text-align:center'><img src="http://dev.lipidity.com/wp-content/uploads/2007/04/qs-menu.png" alt="QS Fumo Menu" /></p>

<h3>It&#8217;s bigger</h3>

<p>Did you know can drag and drop items straight into or out of Fumo? And now, a bigger interface means a bigger drop target giving you the ultimate flexibility and power to get things done more efficiently.</p>

<p style='text-align:center'><img src="http://dev.lipidity.com/wp-content/uploads/2007/04/drop-target.png" alt="QS Fumo Drop Target" /></p>

<h3>It&#8217;s available now</h3>

<p>That&#8217;s right. Get your hands on it right this instant.</p>

<p class="callout"><a href="http://dev.lipidity.com/fumo" title="Download Fumo">Get Fumo</a></p>

<p><span class="pic star">Tip:</span> Be sure to read the included readme file. It contains all the information you need to easily and successfully install and use Fumo.</p>

<p><del>Initial reports suggest that the smoke effect does not work on Mac Pros. Some people have also had trouble with dual monitors. The rule of thumb is that if Disco smokes for you and Fumo doesn&#8217;t, tell me about it; I need to fix something up. Don&#8217;t worry too much though; Fumo is still a sweet-looking interface even without the smoke.</del>
<ins>The new smoke framework means that the smoke will work on a much wider range of computers.</ins></p>

<p class="note">For the health-conscious, there is a <a href="http://dev.lipidity.com/fumo">non-smoking version</a> also.</p>

<p><span class="pic user_comment">Feel free to leave a comment below if you have any problems or if there&#8217;s anything I can do for you.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://lipidity.com/apple/quicksilver-interface-fumo-updated/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Fumo still smokes - has non-smoking evil twin</title>
		<link>http://lipidity.com/apple/fumo-still-smokes-has-non-smoking-evil-twin/</link>
		<comments>http://lipidity.com/apple/fumo-still-smokes-has-non-smoking-evil-twin/#comments</comments>
		<pubDate>Thu, 05 Apr 2007 10:17:05 +0000</pubDate>
		<dc:creator>Ankur</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[Quicksilver]]></category>

		<category><![CDATA[fumo]]></category>

		<category><![CDATA[GUI]]></category>

		<category><![CDATA[Mac]]></category>

		<category><![CDATA[plugin]]></category>

		<category><![CDATA[smoke]]></category>

		<guid isPermaLink="false">http://dev.lipidity.com/apple/fumo-still-smokes-has-non-smoking-evil-twin</guid>
		<description><![CDATA[Fumo has since been updated.

With so many people asking, I just can&#8217;t procrastinate any longer. You win.  Here it is.

It&#8217;s most definitely not the finished thing yet. Yes, I have been taking a while. No, there is nothing you can do about it (short of asking for the source and developing it, which you [...]]]></description>
			<content:encoded><![CDATA[<p class='note'><a href="http://dev.lipidity.com/apple/quicksilver-interface-fumo-updated" title="Fumo Quicksilver interface">Fumo has since been updated.</a></p>

<p>With so many people asking, I just can&#8217;t procrastinate any longer. You win.  Here it is.</p>

<p>It&#8217;s most definitely not the finished thing yet. Yes, I have been taking a while. No, there is nothing you can do about it (short of asking for the source and developing it, which you may do by sending me a polite <a href="http://dev.lipidity.com/contact-me/">email</a>).<!--more--></p>

<p style="text-align: center"><a href="http://dev.lipidity.com/wp-content/uploads/2007/03/fumo_smoke.png" title="Fumo Smoking" rel="lightbox"><img src="http://dev.lipidity.com/wp-content/uploads/2007/03/fumo_smoke.png" alt="Fumo Smoking" /></a></p>

<h3>The Fumo Quicksilver Interface</h3>

<p>Firstly, there&#8217;s the <strong>smoking version</strong>. In other words, smoke pores out of it when it&#8217;s active. It does take a few seconds for the smoke to start and is only supported by more recent Macs. This is obviously courtesy of Disco. Instructions are in the package, but essentially you need to copy the Smoke.framework (included in the .zip file) to /Library/Frameworks/ for the interface to work. <del>Download the entire thing from this wonderful <a href="http://dev.lipidity.com/fumo">hyperlink</a>. And if you&#8217;re worried about performance and what-not, the smoke gets deactivated or &#8216;cooled&#8217; when the interface is hidden. See? Of course you don&#8217;t, you haven&#8217;t <a href="http://dev.lipidity.com/Fumo_w_smoke.zip">downloaded it</a> yet.</del></p>

<p><del>For those who&#8217;d prefer to leave out the smoke, there&#8217;s also a <strong>non-smoking version</strong>, again with another grand <a href="http://dev.lipidity.com/Fumo.zip">hyperlink</a>. There are no installation instructions.</del> Just double-click the .qsplugin bundle (because technically it&#8217;s more of a folder than a file) and choose Fumo under the &#8220;appearance&#8221; section of the Quicksilver preferences. Easy!</p>

<p><ins class='callout'>Fumo&#8217;s undergone major updates recently. You can always find the latest version <a href="http://dev.lipidity.com/fumo">here</a>.</ins></p>

<h3>Still in the works</h3>

<p>I think I should just reiterate that this is still <em>not finished</em>. There&#8217;s a lot of work to be done (still). To see where development is heading, see Pavel&#8217;s <a href="http://dev.lipidity.com/apple/creating-fumo-a-new-quicksilver-interface">original mock-ups</a>.</p>

<p>Now, here&#8217;s the part of the post where I kindly ask for feedback. Feedback anyone?</p>

<p class='note'><a href="http://dev.lipidity.com/apple/quicksilver-interface-fumo-updated" title="Fumo Quicksilver interface">Major update to Fumo: comma trick, fixed up smoke, preference pane, and more</a></p>
]]></content:encoded>
			<wfw:commentRss>http://lipidity.com/apple/fumo-still-smokes-has-non-smoking-evil-twin/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Fumo&#8217;s Fumin&#8217;</title>
		<link>http://lipidity.com/apple/fumos-fumin/</link>
		<comments>http://lipidity.com/apple/fumos-fumin/#comments</comments>
		<pubDate>Sat, 17 Mar 2007 02:57:20 +0000</pubDate>
		<dc:creator>Ankur</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[Quicksilver]]></category>

		<category><![CDATA[fumo]]></category>

		<category><![CDATA[GUI]]></category>

		<category><![CDATA[Mac]]></category>

		<category><![CDATA[plugin]]></category>

		<category><![CDATA[smoke]]></category>

		<guid isPermaLink="false">http://dev.lipidity.com/apple/fumos-fumin</guid>
		<description><![CDATA[

This version&#8217;s not publicly available yet. Austin &#38; Co. (developers of the application that uses this effect) need to be contacted, and I need to have an option to turn the smoke on / off. It cools down automatically when the interface is hidden, but I&#8217;m sure not everyone likes passive smoking.

Doesn&#8217;t it look fantastic?



Another [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center"><a href="http://dev.lipidity.com/wp-content/uploads/2007/03/fumo_smoke.png" title="Fumo Smoking" rel="lightbox"><img src="http://dev.lipidity.com/wp-content/uploads/2007/03/fumo_smoke.png" alt="Fumo Smoking" /></a></p>

<p>This version&#8217;s not publicly available yet. Austin &amp; Co. (developers of the application that uses this effect) need to be contacted, and I need to have an option to turn the smoke on / off. It cools down automatically when the interface is hidden, but I&#8217;m sure not everyone likes passive smoking.</p>

<p>Doesn&#8217;t it look fantastic?</p>

<!--more-->

<p>Another update I&#8217;ve made is using bezier paths and curves to draw the interface, rather than letting Quicksilver render it. It had to be done eventually, so I might as well do it sooner rather than later. The fill and the white border were rendered using paths, but obviously they&#8217;ll be cleaned up to look good as development progresses.</p>

<p>A preference pane will be among us soon, and possibly a hint of customization in the results pane / drawer. The interface will also be getting a stretch and redesign to make it appear more like the actual <a href="http://dev.lipidity.com/apple/creating-fumo-a-new-quicksilver-interface">concept</a> by Pavel.</p>

<p>Now, can we get some feedback please?</p>

<p><strong>Update:</strong> Major updates to all aspects of the interface. See <a href="http://dev.lipidity.com/fumo">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://lipidity.com/apple/fumos-fumin/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Dissing Fumo? Look at this&#8230;</title>
		<link>http://lipidity.com/apple/dissing-fumo-look-at-this/</link>
		<comments>http://lipidity.com/apple/dissing-fumo-look-at-this/#comments</comments>
		<pubDate>Thu, 01 Mar 2007 07:33:32 +0000</pubDate>
		<dc:creator>Ankur</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[News]]></category>

		<category><![CDATA[Quicksilver]]></category>

		<category><![CDATA[fumo]]></category>

		<category><![CDATA[GUI]]></category>

		<category><![CDATA[Mac]]></category>

		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://dev.lipidity.com/apple/dissing-fumo-look-at-this</guid>
		<description><![CDATA[<ins class='block'><big>This is post is old. Really old. Head over to the <a href="http://dev.lipidity.com/fumo">shiny new one</a>.</big></ins>]]></description>
			<content:encoded><![CDATA[<p>Recently, my short <a href="http://dev.lipidity.com/apple/fumo-quicksilver-interface-download-test">update on Fumo</a> reached the homepage of <a href="http://digg.com/apple/Fumo_interface_for_Quicksilver" title="Fumo interface concept Dugg">Digg</a>, where a lot of people praised the idea, while others expressed their annoyance claiming the concept was flawed, or that the real interface would never look as good as the original.</p>

<hr />

<p>I can understand the frustration of having the short post on the Digg front page and am not in the least surprised that it was promptly buried (I would have done the same), but where I do object is the false idea many people have regarding the development of Fumo. If you don&#8217;t like the concept or the <a href="http://dev.lipidity.com/apple/creating-fumo-a-new-quicksilver-interface" title="Fumo interface">mockups</a>, that&#8217;s fine, but just because the interface doesn&#8217;t look like the concept now, doesn&#8217;t mean it&#8217;ll never get there. I&#8217;m not promising an exact replica, but hey, at least see what it turns out to be before dissing it.</p>

<p>Speaking of looks, here&#8217;s what Fumo is currently like.</p>

<p style="text-align: center"><a href="http://dev.lipidity.com/wp-content/uploads/2007/03/fumo.png" title="Fumo black" rel="lightbox"><img src="http://dev.lipidity.com/wp-content/uploads/2007/03/fumo.png" alt="Fumo black" /></a></p>

<p>The &#8220;transmogrify&#8221; effect has been overridden with a nice effect you may recall from Dashboard (if you&#8217;ve ever used Cmd-R to refresh a widget)&#8230; You can watch a short <a href="http://dev.lipidity.com/wp-content/uploads/2007/03/fumo11.mov" title="Fumo movie">movie</a> of the effect, or just <a href="http://dev.lipidity.com/fumo.zip">download the interface</a> and see for yourself.</p>

<p>(To get the warping effect going, set a shortcut key for &#8220;activate in text mode&#8221; and hit it)</p>

<p><strong>Update:</strong> Major updates to Fumo found <a href="http://dev.lipidity.com/fumo">here</a>.</p>

<p>Do you have any feature suggestions for a Quicksilver interface or plugin? Or any feedback on the current status of Fumo?</p>
]]></content:encoded>
			<wfw:commentRss>http://lipidity.com/apple/dissing-fumo-look-at-this/feed/</wfw:commentRss>
<enclosure url="http://dev.lipidity.com/wp-content/uploads/2007/03/fumo11.mov" length="1769664" type="video/quicktime" />
		</item>
	</channel>
</rss>
