Monday, November 08, 2010 at 12:06 AM.


on launchMacBrowser () {
		<<10/31/07; 8:48:46 AM by DW
			<<A rock-solid 2007 way to launch a Mac browser, subject to user preferences. Hah!
	if not defined (user.webbrowser.preferredBrowsers) {
		user.webbrowser.preferredBrowsers = {"safari", "firefox"}};
	on isAppRunningNow (appname) {
		local (ctapps = sys.countApps (), n);
		for n = 1 to ctapps {
			local (nthapp = sys.getNthApp (n));
			if string.lower (nthapp) contains string.lower (appname) {
				<<msg (nthapp)
				return (true)}};
		return (false)};
	bundle { //if any browsers are running now, don't bother launching
		local (appname);
		for appname in user.webbrowser.preferredBrowsers {
			if isAppRunningNow (appname) {
				return (true)}}};
	bundle { //try to find an app in the Applications folder and launch it
		local (appname, f, fname);
		local (appsfolder = file.getspecialfolderpath ("", "Applications", false));
		for appname in user.webbrowser.preferredBrowsers {
			fileloop (f in appsfolder) {
				fname = file.filefrompath (f);
				if string.lower (fname) contains string.lower (appname) {
					<<msg (f)
					launch.application (f);
					return (true)}}}};
	return (false)};
bundle { //test code
	launchMacBrowser ()}

This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.