All Projects → ryangball → DockBuilder

ryangball / DockBuilder

Licence: other
A LaunchAgent and .app to build a user's Dock upon login and/or on demand.

Programming Languages

shell
77523 projects

Projects that are alternatives of or similar to DockBuilder

JAMF-Enrollment-Kickstart
A better enrollment kickoff for JAMF machines
Stars: ✭ 74 (+89.74%)
Mutual labels:  jamf, jamf-pro
jamfpro-extension-attributes
🔍 A repository for EAs to use for reporting in the Jamf Pro Server
Stars: ✭ 30 (-23.08%)
Mutual labels:  jamf, jamf-pro
pre-commit-macadmin
Pre-commit hooks for Mac admins.
Stars: ✭ 43 (+10.26%)
Mutual labels:  mac, jamf
mac scripts
A collection of scripts used to Manage Mac OS X computers.
Stars: ✭ 38 (-2.56%)
Mutual labels:  jamf, jamf-pro
homebrew.sh
Install homebrew via Jamf without giving users admin rights
Stars: ✭ 52 (+33.33%)
Mutual labels:  jamf, jamf-pro
AutoBrew
AutoBrew: Homebrew deployments made easy
Stars: ✭ 71 (+82.05%)
Mutual labels:  jamf, jamf-pro
scl jamf tools
This repository contains a collection of tools written to perform as enhancements to the Jamf Pro management software.
Stars: ✭ 39 (+0%)
Mutual labels:  jamf, jamf-pro
TheScopeReport
This is a Java program that calls the Jamf Pro API to collect scoping details.
Stars: ✭ 13 (-66.67%)
Mutual labels:  jamf, jamf-pro
blade runner
Blade Runner is a Jamf Pro based Python application that automates and implements a framework to offboard, secure erase and document deprecated Mac systems.
Stars: ✭ 24 (-38.46%)
Mutual labels:  mac, jamf
scout-public
A tool to aggregate devices across multiple MDM servers
Stars: ✭ 22 (-43.59%)
Mutual labels:  jamf, jamf-pro
GNU-bash-mac-installer
Downloads and builds a Mac package installer for GNU bash 5
Stars: ✭ 17 (-56.41%)
Mutual labels:  mac, pkgbuild
jamfscripts
Scripts I use non API related
Stars: ✭ 15 (-61.54%)
Mutual labels:  jamf, jamf-pro
kinobi
An external patch definition server for Jamf Pro
Stars: ✭ 76 (+94.87%)
Mutual labels:  jamf, jamf-pro
python-jamf
`python-jamf` is a library for connecting to a Jamf Server that maps directly to the Jamf Pro Classic API. It is the basis for the `jctl` tool to automate patch management & packages and many other items.
Stars: ✭ 37 (-5.13%)
Mutual labels:  jamf, jamf-pro
LAPSforMac
Local Administrator Password Solution for Mac
Stars: ✭ 29 (-25.64%)
Mutual labels:  mac, jamf
subordination
subordination.cu.cc/
Stars: ✭ 27 (-30.77%)
Mutual labels:  mac
Sensors
A macOS application displaying the thermal, voltage and current sensor values.
Stars: ✭ 70 (+79.49%)
Mutual labels:  mac
macOS-PiholeShortcuts
Manage and monitor your Pi-hole® instance through your status bar
Stars: ✭ 43 (+10.26%)
Mutual labels:  mac
xbox-client-ffmpeg
Multi-platform Gamestreaming app
Stars: ✭ 17 (-56.41%)
Mutual labels:  mac
autoChangeXode
一个自动修改unity生成的Xcode的脚本
Stars: ✭ 43 (+10.26%)
Mutual labels:  mac

DockBuilder

A LaunchAgent and .app to build a user's Dock upon login and/or on demand.

DockBuilder allows for the building of a user's Dock based on an organization's needs. DockBuilder eliminates the need for a user template which only allows for a static Dock for all users, and template manipulation can cause issues in newer versions of macOS. DockBuilder not only allows for easy creation of a new user's Dock out of the box, but also has the potential to dynamically set up a different Dock for users based on some criteria; like AD groups for example (you'd have to modify the source based on your criteria).

Features

  • Builds a Dock based on pre-defined defaults
  • Includes a framework for building unique Docks for certain users based on some criteria (including an example)
  • Logs to ~/Library/Logs/DockBuilder.log (by default)
  • Does not start until the Dock.app is loaded upon login
  • Only builds a Dock for user's who's Dock is younger than 300 seconds (to minimize re-building a pre-existing user's Dock after the installation of DockBuilder)
  • Option to hide the Dock and display a message to the user while the Dock is being built

DockBuilder Message

Requirements for Building

  • Platypus: A developer tool that creates native Mac applications from command line scripts such as shell scripts or Python, Perl, Ruby, Tcl, JavaScript and PHP programs.
    • You must install the command line tool associated with Platypus. Open Platypus, in the Menu Bar choose "Platypus" > "Preferences" and click the "Install" button to install the Platypus command line tool.
  • jamfHelper: jamfHelper is used to display the message when the Dock is being built (if you choose to use that feature). CocoaDialog could also be leveraged pretty easily for environments without Jamf Pro. AppleScript could also be used, but you can't create an AppleScript dialog void of buttons.

Note: Dockutil is also required, but included in the resulting .pkg and releases.

Build Project

To build new versions you can simply run the build.sh script and specify a version number for both the .app and .pkg. The resulting .pkg will include the LaunchAgent and .app as well as necessary preinstall/postinstall scripts. If you do not include a version number as a parameter then version 1.0 will be assigned as the default.

# Clone the repo and traverse into the created directory
git clone https://github.com/ryangball/DockBuilder.git
cd DockBuilder

# At this point you'd customize the variables in the build.sh script

# Build the .pkg
./build.sh 1.5

Customize DockBuilder

Within the build.sh script, you can modify the top-most variables to create a custom DockBuilder .app and .pkg.

Some things to keep in mind:

  1. Within both the breadcrumb and log variables, you'll notice the $HOME environmental variable. You should leave this in there as both should be in the user's home folder.
  2. Within the defaultItemsToAdd array (and alternateItemsToAdd_1 if you use it), you need to follow the same pattern that I used in the example. When specifying view options for the persistent-others Dock items, you need to separate the Dock item and options with a comma (",") as per the example.
  3. After modifying the variables in build.sh, please test for full functionality before deploying.
  4. If you want to set up a unique Dock for certain users you must populate the alternateItemsToAdd_1 ion build.sh and modify this logic in dockbuilder.sh) to include the users or criteria to build the alternate Dock.
  5. If you want to exclude specific existing users from the initial breadcrumb creation so that they will get a new Dock created, you must populate the skipInitialBreadcrumbUsers variable in build.sh.

Testing

To test DockBuilder, install the .pkg, then unload/load/start the LaunchAgent.

# Delete the breadcrumb for the user if it exists
find ~/Library/Preferences -name com.github.ryangball.dockbuilder.breadcrumb.plist -delete

# Unload the LaunchAgent
launchctl unload /Library/LaunchAgents/com.github.ryangball.dockbuilder.plist

# Load the LaunchAgent
launchctl load /Library/LaunchAgents/com.github.ryangball.dockbuilder.plist

# Start the LaunchAgent (if necessary)
launchctl start com.github.ryangball.dockbuilder

# Tail the log to see what is occurring
tail -f ~/Library/Logs/DockBuilder.log

Re-create a User's Dock

Upon DockBuilder's execution, a breadcrumb is placed into the user's home folder by default: ~/Library/Preferences/com.github.ryangball.dockbuilder.breadcrumb.plist

In the event that this breadcrumb exists for a user, DockBuilder will exit without any action. To re-create a user's Dock, open terminal as the user and run the following to remove the breadcrumb:

rm ~/Library/Preferences/com.github.ryangball.dockbuilder.breadcrumb.plist

Then you can simply run the /Applications/Utilities/DockBuilder.app or unload/load the LaunchAgent as per the Testing section above.

Dockutil

Dockutil is included in the resulting .pkg and is licensed under the Apache 2.0 license. Dockutil is automatically downloaded from the releases section when using the build.sh script, or included if you download one of the DockBuilder Releases.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].