Skip to main content

Python module intended to assist IT administrators with manipulation of the macOS Dock.

Project description

docklib

This is a Python module intended to assist IT administrators with manipulation of the macOS Dock.

Originally created as a Gist by @gregneagle, this fork has been modified to include support for some additional Dock features, and has been packaged for multiple distribution options.

Installation

There are multiple methods of installing docklib, depending on how you plan to use it.

Package installer

You can use the included build_pkg.sh script to build a macOS installer .pkg file. You can use this package to install docklib on your own Mac, or deploy the package using a tool like Jamf or Munki to install docklib on managed devices.

To run the script, cd to a local clone of this repository, then run:

./build_pkg.sh

The resulting pkg will be built in a temporary folder and shown in the Finder.

NOTE: The default install destination is /Library/Python/2.7/site-packages/docklib, which makes docklib available to the built-in macOS Python 2.7 framework. If you leverage a different Python installation, you'll need to modify this path in the build_pkg.sh script prior to building the installer package.

Pip

Docklib has been published to PyPI in order to make it available for installation using pip.

pip install docklib

This method is not intended to be used directly on managed devices, but it could be leveraged alongside a custom Python framework (like one built with macadmins/python or relocatable-python) using a requirements file.

Manual

Another method of using docklib is to simply place the docklib.py file in the same location as the Python script(s) you use to manipulate the macOS dock. Some examples of such scripts are included below.

Examples

Add Microsoft Word to the right side of the Dock

from docklib import Dock

dock = Dock()
item = dock.makeDockAppEntry("/Applications/Microsoft Word.app")
dock.items["persistent-apps"].append(item)
dock.save()

Add Microsoft Word to the left side of the Dock

from docklib import Dock

dock = Dock()
item = dock.makeDockAppEntry("/Applications/Microsoft Word.app")
dock.items["persistent-apps"] = [item] + dock.items["persistent-apps"]
dock.save()

Replace Mail.app with Outlook in the Dock

from docklib import Dock

dock = Dock()
dock.replaceDockEntry("/Applications/Microsoft Outlook.app", "Mail")
dock.save()

Remove Calendar from the Dock

from docklib import Dock

dock = Dock()
dock.removeDockEntry("Calendar")
dock.save()

Display the current orientation of the Dock

from docklib import Dock

dock = Dock()
print dock.orientation

Make the Dock display on the left, and enable autohide

from docklib import Dock

dock = Dock()
dock.orientation = "left"
dock.autohide = True
dock.save()

Add the Documents folder to the right side of the Dock

Displays as a stack to the right of the Dock divider, sorted by modification date, that expands into a fan when clicked. This example checks for the existence of the Documents item and only adds it if it's not already present.

import os
from docklib import Dock

dock = Dock()
if dock.findExistingLabel("Documents", section="persistent-others") == -1:
    item = dock.makeDockOtherEntry(
        os.path.expanduser("~/Documents"), arrangement=3, displayas=1, showas=1
    )
    dock.items["persistent-others"] = [item] + dock.items["persistent-others"]
    dock.save()

Add a URL to the right side of the Dock

Displays as a globe to the right of the Dock divider, that launches a URL in the default browser when clicked. This example checks for the existence of the Documents item and only adds it if it's not already present.

import os
from docklib import Dock

dock = Dock()
if dock.findExistingLabel("GitHub", section="persistent-others") == -1:
    item = dock.makeDockOtherURLEntry("https://www.github.com/", label="GitHub")
    dock.items["persistent-others"] = [item] + dock.items["persistent-others"]
    dock.save()

Specify a custom Dock for the local IT technician account

import os
from docklib import Dock

tech_dock = [
    "/Applications/Google Chrome.app",
    "/Applications/App Store.app",
    "/Applications/Managed Software Center.app",
    "/Applications/System Preferences.app",
    "/Applications/Utilities/Activity Monitor.app",
    "/Applications/Utilities/Console.app",
    "/Applications/Utilities/Disk Utility.app",
    "/Applications/Utilities/Migration Assistant.app",
    "/Applications/Utilities/Terminal.app",
]
dock = Dock()
dock.items["persistent-apps"] = []
for item in tech_dock:
    if os.path.exists(item):
        item = dock.makeDockAppEntry(item)
        dock.items["persistent-apps"].append(item)
dock.save()

Or if you prefer using a list comprehension:

import os
from docklib import Dock

tech_dock = [
    "/Applications/Google Chrome.app",
    "/Applications/App Store.app",
    "/Applications/Managed Software Center.app",
    "/Applications/System Preferences.app",
    "/Applications/Utilities/Activity Monitor.app",
    "/Applications/Utilities/Console.app",
    "/Applications/Utilities/Disk Utility.app",
    "/Applications/Utilities/Migration Assistant.app",
    "/Applications/Utilities/Terminal.app",
]
dock = Dock()
dock.items["persistent-apps"] = [
    dock.makeDockAppEntry(item) for item in tech_dock if os.path.exists(item)
]
dock.save()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

docklib-1.2.0.tar.gz (6.5 kB view details)

Uploaded Source

Built Distribution

docklib-1.2.0-py3-none-any.whl (6.5 kB view details)

Uploaded Python 3

File details

Details for the file docklib-1.2.0.tar.gz.

File metadata

  • Download URL: docklib-1.2.0.tar.gz
  • Upload date:
  • Size: 6.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.8.6

File hashes

Hashes for docklib-1.2.0.tar.gz
Algorithm Hash digest
SHA256 e63ddb31e4877f52dc60a8da1c76bb92530525e7494cd5498194a145f14affb6
MD5 1b029b518f40491afd9d4ea7617445ab
BLAKE2b-256 13ec7628318aa5e4ab4957bdadb7d778203d05f7b0522ff16d875676ad891a90

See more details on using hashes here.

File details

Details for the file docklib-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: docklib-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 6.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.8.6

File hashes

Hashes for docklib-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 39da3875e3d36fadd907b99ac1848f7b800cc923c46387b71dc4a6530e253cc3
MD5 6b52dd718f20a6b21d5dcfa07692674d
BLAKE2b-256 e71ad34541ce4bcaf2e475a710b62046eb715f3399b24f61f57590ef596f230d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page