Archive for January, 2006

iNotify v0.06

Sunday, January 29th, 2006

link: iNotify v0.06

In this update:

  • Rudimentary RSS feed monitor trigger
  • Scroller task
  • Dismiss value picker popup when focus changes
  • Dismiss key combo grabber when focus changes

Sorry for the delay, I’ve been working mostly on Universal Binary stuff this week and haven’t had much time to devote to iNotify

So, the changes. We have an RSS feed monitor now. It’s fairly basic at the moment, it doesn’t do enclosures or images yet, but otherwise works well enough. You should consider adding http://www.somegeekintn.com/area51/software/pkg/iNotifyNews.zip to your triggers. Maybe set the auto dismiss on the window to something longer than 59 seconds if you don’t sit in front of your computer all day.

In adding the RSS monitor, I had to rethink the Screen Message task. Used to be when you clicked on the window, it dismissed it. Seeing as Screen Messages triggered by the RSS monitor might have a link in them you’d probably expect to be able to click this link. Well now you can. However, I had to make some changes to the way the window is drawn and I think it looks a little… odd. Anyone else think this is noticable?

The other big item is a Scroller task. Primarily for use with a PowerMate, but the AirClick folks may be able to take advantage of it too. There is a “Take scroll value from” menu on the Scroller task that lets you set the scroll amount to a value provided by the task. PowerMate’s RelativeValue is good for this. If you don’t enable this, then each trigger will scroll by a fixed amount.

Also, a few long standing bugs were removed, and some other behind the scenes work competed.

And finally, the iNotify code name will most likely be changed soon. We’re still going over possibilities. If you have any suggestions, please send them along

Logitech G15 plugin

Saturday, January 21st, 2006

Don picked up a couple Logitech G15 keyboards on Friday and handed one to me thinking it would be pretty cool if iNotify could use the display. I thought so too and the result is the G15 Task plugin. In the unlikely event you have one of these keyboards lying about (or if your simply curious), you can install the plugin at:

/Library/Application Support/iNotify/PlugIns

Relaunch iNotify and you’ll be all set. The plugin works about the same as the Screen Message task. Just add whatever you like to the G15 Message field and when triggered, the result will appear on the G15’s display. It also appears on a tiny window that mirrors the G15’s display. You can access this window by clicking on the unlabeled round button in the top right corner of the G15 task. The results look like this

and this

The 5 blacks keys immediately below the display are used for the following functions (from left to right): clear display, scroll to beginning, page up, page down, scroll to end.

iNotify v0.05

Thursday, January 19th, 2006

link: iNotify v0.05

This update adds:

  • Actually saving the state of the Fallback setting
  • Fixed filtering of attributed strings

Quick update eh? Well, I wanted to demonstrate how to create a state machine using iNotify and noticed that iNotify was having some troubles. All better now.

So, a state machine: The AirClick software lets you set a value then test it later so you can, for example, determine whether a button release happened after a long hold. I’ve been considering adding some means of storing a variable and then calling it back via the extra values view. However, we have to ability to write to a file and later inspect the contents of the file via extra values and a filter. I put together a useless demonstration of this technique using a series PowerMate Rotate Right (with control key held) triggers. Each trigger checks a file to see if it contains its state and if so puts a message on the screen and then changes the state to the next value. You can download it here http://www.somegeekintn.com/area51/software/pkg/State%20Machine%20Demo.zip

iNotify v0.04

Wednesday, January 18th, 2006

link: iNotify v0.04

This update adds:

  • PowerMate / AirClick gained “Fallback” functionality
  • Insert Trigger/Task menus
  • Value tokens now show font, color changes
  • Can close/reopen main window allowing iNotify to run quasi headless

After watching J and Dave struggle with the application of fonts and colors to value tokens, I realized that fixing the loss of font settings and more importantly offering some degree of WYSIWYG to the Screen Message (and other views that use value tokens) was extremely important. The results are pretty good I think.

Don wasn’t too keen on going back and forth between the main window and the component palette and so I finally got around to offering the ability to insert triggers and tasks from the popup menus beneath each list. He also suggested maybe the palette automatically switch from triggers to tasks after dragging a trigger to the main window… It makes sense, but I think some users might wonder why the palette decided to switch all by itself. Perhaps a preference?

Finally, I added a checkbox to PowerMate and AirClick triggers called Fallback (it was called Contingent but I think Fallback might be easier to understand). A fallback trigger is one that will only execute if no other trigger executes for a given event. For example, you might want the PowerMate left/right triggers to adjust the system volume unless iTunes is the foreground app in which case it should adjust iTunes volume. To do this, define the left/right triggers to adjust the system volume and mark them as fallback triggers. Then define another set of PowerMate triggers which only executes if iTunes is the active application (extra values and filter here).

I also added a date / time hotkey trigger that I happen to like. It’s in the usual location: http://www.somegeekintn.com/area51/software/pkg/

iNotify v0.03

Monday, January 16th, 2006

link: iNotify v0.03

This update adds:

  • Values utility window
  • Trigger search field
  • Cut, copy, paste for triggers, tasks
  • Ability to export a trigger or set of triggers by dragging to the desktop.
  • Load Clipboard task
  • Underlying code for trigger list and other optimizations

Besides focusing on those items added in this update, please feel free to let me know about any cool / interesting trigger sets (rules, packages, I need a name for this thingy). I’ll post interesting ones here:

http://www.somegeekintn.com/area51/software/pkg/

I’ll add my purty iTunes monitor to this collection to get things going. To use it, download it, unzip, and drag it into the triggers list in iNotify. I’ll be adding a mechanism to import these packages from the File menu at some point.

Trouble…

Monday, January 16th, 2006

An AirClick software user wrote me last night asking for some advice in customizing his software for a particular purpose and while I responded, I considered how to do accomplish the same thing in iNotify. Some of it would be easier given that you don’t have to muck around with plist files and such, but it also occurred to me that something very basic is missing from iNotify that would make it difficult to duplicate the functionality built in to the current AirClick software: saved variables.

The current AirClick software lets you set and test variables and conditionally execute a command based on the state of this variable. iNotify has the testing portion of this down by way of filters. But we don’t yet have the ability to store a variable conveniently. You could replicate AirClick’s functionality by writing something out to a file and filtering based on the contents of the file, but that seems icky. So, I’ll be adding a task that lets you save a persistent variable. We’ll place these values in the app’s preference file so they will live through a restart. Perhaps there will be more use to these variables than just testing to see if a switch was held for a long time or not.

All this leads me to the real topic I need to discuss, and that is complexity. The idea is to create and application that is both powerful and easy to ease. For simple tasks I want configuration to be a breeze. I don’t want the number of options available to overwhelm a user. But I don’t want to hamstring a power user by hiding the powerful options so it’s difficult for them. So please if you have any suggestions to help accomplish these aims let me know. In particular if something could be named better, described better or presented better, I want to hear about it!

I’ll be trying to wrap up v0.03 later today, more on that when the release comes.

The Power of Value Substitution

Tuesday, January 10th, 2006

The most obvious use of value substitution in iNotify is for things like screen messages that display track information for an iTunes trigger or an email trigger displaying information about incoming message in a screen message. This is all good, but value substitution works in custom AppleScripts as well.

Yeah, so? Well that means you can have dynamic AppleScripts which change based on the values provided by the trigger. Consider this AppleScript attached to a PowerMate trigger:

This little script will multiple the current AbsoluteValue of the PowerMate (which is a value between 0 and 1) by 100 and use the result to set the volume in iTunes. Easy.

Here’s another example using value substitution from a Mail trigger to present a dialog allowing you to have the computer read an email to you if you like:

These are two quick and dirty examples. I’m sure there are better, but hopefully this will provide a little food for thought.

iNotify v0.02

Tuesday, January 10th, 2006

link: iNotify v0.02

This update adds a PowerMate Light trigger. Control brightness, pulse rate, etc.

Exercise for v0.02:

Add a Mail trigger and to the Mail trigger add a PowerMate Light trigger. Configure it to increase the brightness on each trigger. Now you have an indicator for how much new email you have. Define a Hotkey or PowerMate trigger to reset the light with another PowerMate Light task.

For the remainder of the week I’ll probably look more at boring stuff such as copy / paste, undo and trigger set (I need a name for this!) import/export. That is unless someone has a trigger or task idea that they are just dying to see in action. Personally I’d like to get the Bluetooth Proximity detection added son just because I think it’s cool.

iNotify v0.01

Tuesday, January 10th, 2006

link: iNotify v0.01

The first preview release. Most of the operation is described in the read me below. Please post any questions and feedback below. Pretty please…. with sugar on top.


iNotify is still very early in the development cycle. There are lots and lots of components that are on the drawing board, but I can only type so fast. There are also plenty of bugs. Not the hard drive eating variety, but probably the crashy variety. iNotify doesn’t yet automagically save changes when you make changes to the configuration yet. You’ll have to hit ⌘-S if you want to keep your changes. Also not obvious: to bring up a value picker popup begin typing the name of the value enclosed in brackets. As soon as you type a [ in a text view that allows trigger value replacement. the popup will appear…Maybe I should put these in a list, I’ll probably forget some but here goes:Bugs:

  • Value Picker popup menu doesn’t dismiss if left open and the view is switched.
  • Key Combo grabber also doesn’t dismiss if view is changed before creating a key combo
  • Deleting items sometimes makes things crashy

Todo:

  • Lots more triggers and tasks.
  • Copy / Paste for triggers / tasks
  • Undo support is lacking
  • All the menus need to be cleaned up

Triggers (so far)

  • AirClick - fully implemented
  • Hotkey Monitor - one bug (see above)
  • Mail Monitor - requires restarting Mail after installation to load the magic Mail bundle. Also the settings view needs to direct folks to the filter section.
  • PowerMate - Will not function with the current PowerMate software installed! However iNotify supports multiple PowerMates. Also needs some refinement: Rotation acceleration, icons.
  • iTunes - fully implemented (needs some behind the scenes work. inefficient use of resources)

Not yet implemented: RSS feed monitor, Stock monitor, iChat monitor, Scheduled trigger, Bluetooth proximity detector, iPod mount/unmount detector, folder monitor.

Tasks (so far)

  • ApplesScript - need value embedding in the path if running an existing AppleScript
  • Key Press - need to add Eject Key
  • Launch Application - need to be able to drag an application into the icon well. Also consider badge icons in the task lists. The badge being the icon of the application to be launched.
  • Screen Message - Need to do a better job preserving font selection around message text with embedded values. This goes for all text views really.
  • Speak Message - Would be nice if we could customize the voice used to speak the message.
  • Write to file - Here again need to be able to embed values in the path field.

Not yet implemented: iChat Buzzer?, Blog writer, flickr? PowerMate LED control.

extra values (so far)

  • Custom Number - fully implemented
  • Custom Text - fully implemented
  • Active Application - fully implemented
  • Clipboard - perhaps some means of grabbing the contents of more than just the text?
  • Image File - fully implemented
  • Text File - fully implemented
  • Timestamp - fully implemented

filters

So far we can filter 3 different types: number, text, date. There seems to be some trouble filtering attributed text (that is text that contains font, color, and other information). Also some have expressed wishes for boolean (yes / no) value support and possibly enumerations.

Quick HowTo:

To begin using iNotify, drag a trigger from the Components palette into the Triggers list. Configure the trigger by selecting it and opening the settings disclosure item in the inspection view. You make also want to attach extra values to a trigger, such as the active application or the contents of the clipboard. You can do this for the extra values view. You may want this trigger to occur only if certain conditions are true such as iTunes being the active application. You can configure this using filter view.

Next you’ll want your trigger to cause something to happen. With the trigger selected in the the triggers list, drag a task from the components palette into the Tasks list. Configure it however you like. If it has a text view (AppleScript, Screen Message, Speak Message, Write To File) you can insert values provided by the trigger into these text fields. Do this by typing the name of the value enclosed in brackets. An autocompletion popup list will appear as you being typing a word enclosed in brackets.

Feedback

Please provide it though it may pain me to hear of all of it’s faults. In particular triggers and tasks that you think would be useful!

About this blog

Tuesday, January 10th, 2006

It occurs to me that instead of trying to figure out who tell about the status of which project, it would be so much easier if occasionally made some notes and posted them somewhere for anyone interested to see. This have this new fangled blog and RSS technology which seemed like it might fit the bill and so I’m giving this a try we’ll see how it works.

Atom feed
RSS feed