495 words on earthlingsoft
My dad has been complaining about the absence of the wonderful Location Manager ever since he switched to OS X. And of course he’s right. Not only is not having the Location Manager really inconvenient. It is patently absurd in a world where having portable computers is becoming more and more common. And even more so for Apple who still seem to have all the basic techniques for the Location Manager present in OS X, but didn’t want to update the user interface to work on OS X as well.
For those who are late to the party: the Location Manager was little system tool that was introduced to the Mac OS in the late 1990s. It let you define a ‘location’ with a set of actions that belong to it. Those actions typically changed settings on your computer. And all of them in one go. For example you could have a ‘Home’ setting with modem internet access (those were the 1990s after all), a fully cranked up speaker, you bubbly printer and file sharing turned on. And then you could have an ‘Office’ setting with Ethernet networking, a low volume level and a LaserWriter as a printer. And you could have an ‘On the Road’ setting with no network and no speaker volume. And so on…
It seems like people tried to bring the idea to OS X, but this looks a bit expensive and old fashioned to me by now. In fact, we shouldn’t just have a Location Manager again (so there something I hope for in some upcoming keynote), but we should have something better with less fiddling.
And that’s definitely not what I came up with. Essentially all I wanted to do is save my dad from having to change both his network setup and his default printer separately when moving between home and the office. And so I came up with the following simple plan: Define sets of OS X network ‘Locations’ and printers that belong together and switch them with a single click. All right, that’s not too spectacular. And you don’t even want to see how it do it (hint: copying a one line shell script from the web is by far simpler than figuring out how you do those things ‘properly’ in OS X).
But to make all of this really convenient I also wanted to tie it up with the network connection. So there can also be a wireless network name associated to such a setup. And Location Checker can be set up to look for the wireless network name, adjust the printer and Location settings as specified and then quit – essentially reducing the whole location change to a single click.
If you’d consider this useful, check it out on our hacks page.
… and then start thinking about how great it would be to have all this in a better implemented, great looking, easy to use, fantastically extendible and much more general version.
You’re not the only one to do this. That’s a link to my own personal Location Manager replacement. It has almost no UI, and it’s very specific and hard-coded to my own needs, but it does some neat stuff such as recognizing location on both SSID and BSSID, and using location “tags”, which allow you to have hierarchical or even disjoint locations. Your current location is represented as a set of tags, and the difference between the old and new location causes “departing” and “arriving” scripts to run for each tag that is removed or added. An example of a “departing” script is killing a VPN connection or unmounting a file server; an example of an “arriving” script is starting the VPN connection.
Some other stuff I do: adjust IM status to explain where I am, check Kerberos principal validity, set volume and brightness, move windows to match multiple-monitor settings, open relevant documents, etc.
What I really want is an even more flexible autodetection system that allows me to use, say, IP address, screen configuration, and so forth, all to determine where I am now. Anyway, I have far too many other projects clamoring for my attention, but hopefully this can give someone else some good ideas. :-)
Looks like we had pretty much the same idea then. It would certainly be a nice project with loads of cool things to do… if only I liked programming, particularly as one should probably leave the comfortable world of Cocoa and play around with things like IOServices a lot to get smooth results for everything.
Got pointed to another location manager utility - WiLMa. Also commercial - at http://www.codehackers.net/. I haven’t tried it (don’t think an un-extensible commercial application is the right way to do this) but it might help other people.