dockutil 1.0 released
May 16, 2008 — Kyle CrawfordAs a Mac sysadmin, I’ve had the need to manipulate the dock on hundreds of systems at a time.
I used to cobble together terrible shell scripts to do the job, but now thanks to plistlib and python, plist manipulation is really easy. I am releasing this utility free under the Apache 2.0 license. Hopefully some other sysadmins will find it useful.
dockutil is a command line utility for managing Mac OS X dock items.
It can add, replace, list, move, find, and delete dock items. It supports Applications, Folders, Stacks, and URLs. It can act on a specific dock plist or every dock plist in a folder of home directories.
It is compatible with Mac OS X Tiger and Leopard.
Here is the usage information:
usage: dockutil -h
usage: dockutil –add (path to item) | (url) [--label (label)] [ folder_options ] [ position_options ] [ plist_location_specification ]
usage: dockutil –remove (dock item label) [ plist_location_specification ]
usage: dockutil –move (dock item label) position_options [ plist_location_specification ]
usage: dockutil –find (dock item label) [ plist_location_specification ]
usage: dockutil –list [ plist_location_specification ]
position_options:
–replacing (dock item label name) replaces the item with the given dock label or adds the item to the end if item to replace is not found
–position [ index_number | beginning | end | middle ] inserts the item at a fixed position: can be an position by index number or keyword
–after (dock item label name) inserts the item immediately after the given dock label or at the end if the item is not found
–before (dock item label name) inserts the item immediately before the given dock label or at the end if the item is not found
–section [ apps | others ] specifies whether the item should be added to the apps or others section
plist_location_specifications:
(path to a specific plist) default is the dock plist for current user
(path to a home directory)
–allhomes attempts to locate all home directories and perform the operation on each of them
–homeloc overrides the default /Users location for home directories
folder_options:
–view [grid|fan|list|automatic] stack view option
–display [folder|stack] how to display a folder’s icon
–sort [name|dateadded|datemodified|datecreated|kind] sets sorting option for a folder view
Examples:
The following adds TextEdit.app to the end of the current user’s dock:
dockutil –add /Applications/TextEdit.app
The following replaces Time Machine with TextEdit.app in the current user’s dock:
dockutil –add /Applications/TextEdit.app –replacing ‘Time Machine’
The following adds TextEdit.app after the item Time Machine in every user’s dock on that machine:
dockutil –add /Applications/TextEdit.app –after ‘Time Machine’ –allhomes
The following adds ~/Downloads as a grid stack displayed as a folder for every user’s dock on that machine:
dockutil –add ‘~/Downloads’ –view grid –display folder –allhomes
The following adds a url dock item after the Downloads dock item for every user’s dock on that machine:
dockutil –add vnc://miniserver.local –label ‘Mini VNC’ –after Downloads –allhomes
The following removes System Preferences from every user’s dock on that machine:
dockutil –remove ‘System Preferences’ –allhomes
The following moves System Preferences to the second slot on every user’s dock on that machine:
dockutil –move ‘System Preferences’ –position 2 –allhomes
The following finds any instance of iTunes in the specified home directory’s dock:
dockutil –find iTunes /Users/jsmith
The following lists all dock items for all home directories at homeloc in the form: item(tab)path(tab)(section)tab(plist)
dockutil –list –homeloc /Volumes/RAID/Homes –allhomes
Notes:
When specifying a relative path like ~/Documents with the –allhomes option, ~/Documents must be quoted like ‘~/Documents’ to get the item relative to each home
Bugs:
Names containing special characters like accent marks will fail
Contact:
Send bug reports and comments to kcrwfrd at gmail.
May 16, 2008 at 7:55 am
Awesome! This is an excellent idea.
May 21, 2008 at 3:27 pm
Thank you. I’ve never had any luck manipulating the Dock using shell scripts (terrible or otherwise) - this utility is fantastic!
June 3, 2008 at 4:33 am
[...] dockutil 1.0 released « Pattern Buffer: Awesome command line utility for manipulating the Dock in Mac OS X (tags: commandline coolsoftware tips) Post a Comment [...]
June 9, 2008 at 8:31 pm
Hello Kyle,
I would like to add some CIFS shares automatically to a bunch of hosts, but didn’t recognize how to add shares with dockutil. Any hint?
Regards
June 10, 2008 at 8:52 pm
This should work:
dockutil –add smb://host.domain.com/Share –label Share
June 10, 2008 at 10:59 pm
That way it did show up as a URL link. I think that somewhere the automount-configuration has to be modified to get it done correctly, as existing shares show up as /Volumes// with some kind of binary ID in the plist.
June 10, 2008 at 11:00 pm
Edit:
Should have been “/Volumes/server/share”
June 18, 2008 at 10:15 pm
This is awesome.
July 13, 2008 at 10:13 pm
So this a great little util, im wondering if someone might be able to help me on a little project, at the moment, i would like to change how it creates its property list, meaning how can i get the dock.app to create a com.apple.dock.plist with a diff name such as com.apple.dock2.plist? i dont want redirect what plist it uses, i want it to create a the plist with a diff name if it is unable to fine the default. Understand?