Tidy up launchpad in Mountain Lion

Mar 26, '13 07:30:00AM

Contributed by: llee

Mountain Lion's Launchpad is pretty good but it's still hard to get something out of it after you put it in if you didn't get it at the Mac App Store. If Launchpad Control is overkill for you, this might help.

Drop one or more application icons onto an AppleScript droplet created from the script below to have those items' Launchpad entries eliminated. You can drag items or be prompted to select them when the AppleScript runs if you don't want to save it as an application. There is some error checking and information in the script. It doesn't do anything to the apps themselves.

You can test it on the app itself. In AppleScript Editor, save it as an app, drag the app's icon onto Launchpad, activate Launchpad, launch the app, then drag the app's icon into the window and press return when prompted.

on open the_items
	my Lighten_LaunchPad(the_items)
end open

on Lighten_LaunchPad(the_items)
	repeat with the_item in the_items
		set the_item to the_item as alias
		tell application "Finder"
			set nameString to name of the_item
			set sost to (my get_the_name(nameString)) as string
		end tell
		display dialog "Are you sure you want to remove \"" & sost & "\" from the Launchpad? The app itself won't be deleted."
			set my_command to "sqlite3 ~/Library/Application\\ Support/Dock/" & "*.db \"DELETE from apps WHERE title=" & (quoted form of sost) & ";\";osascript -e 'tell application \"Dock\" to quit'"
			do shell script my_command
		on error the error_message number the error_number
			if the error_number is not -128 then
				if the error_number is 1 then
					set the error_text to "Error: " & the error_number & ". " & "You probably have too many old versions of the LaunchPad database file." & return & return & " To fix that, move some old ones out of ~/Library/Application Support/Dock. You can safely move any file with a name that ends with \".db\" or \".db.backup\" except for the most recently modified one." & return & return & "Do you want me to open that folder for you?"
					display dialog the error_text buttons {"Yes, please open it.", "Cancel"} default button 1
					if button returned of the result is "Yes, please open it." then
						do shell script "open" & space & quoted form of POSIX path of (path to application support folder from user domain) & "Dock"
					end if
					error number -128
					set the error_text to "Error: " & the error_number & ". " & the error_message
					display dialog the error_text buttons {"Cancel"} default button 1
				end if
				error number -128
			end if
		end try
	end repeat
	display dialog "All done!" buttons {"OK"} default button 1
end Lighten_LaunchPad

on get_the_name(nameString)
	tell AppleScript
		set olD to text item delimiters
		set text item delimiters to "."
		set reqItem to -1
		if last item of nameString = "." then set reqItem to -2
		set theName to text item reqItem of nameString
		set theNameNoExt to ((text items 1 through (reqItem - 1) of nameString) as string)
		set text item delimiters to olD
		return {theNameNoExt}
	end tell
end get_the_name

on run
	set the_items to ((choose file) as list)
end run

Comments (3)

Mac OS X Hints