3

How do I increase the cursor size programmatically? I know how to do it manually. Is there a script that can do it from the command line rather than an AppleScript that does it from the GUI.

Why?

I do a lot of customizations to my Mac, but I also create new users all the time. To save time, I would like to programmatically achieve certain customizations.

3

Unfortunately the command line command defaults, which can read and or write the value of the mouseDriverCursorSizekey in thecom.apple.universalaccess .plist file, the write command, e.g. defaults write com.apple.universalaccess mouseDriverCursorSize 2.5 doesn't take immediate affect and may actually get overwritten before the change can take effect. Note: The mouseDriverCursorSize key in com.apple.universalaccess .plist file does not exist unless the default value has previously been changed.

While you said you didn't want to go the GUI route with e.g. AppleScript, how about you split the difference and do it from the command line using osascript to process the AppleScript code, which does make the change from System Preferences, but without being interrupted by the System Preferences UI. As a matter of fact, assuming the System Preferences Dock Tile is still present, as is its default, all you'll see is the System Preferences Dock Tile bounce once, and no System Preferences UI. (This assumes it wasn't open to begin with.)

If that's acceptable, then the following AppleScript code saved as a command line executable will do the job:

  • Note: The value shown for theCursorSize is what my system is presently set to.
#!/usr/bin/osascript

    -- # set theCursorSize between 1.0 and 4 (Valid intermediate values may run out 12 decimal places.)

set theCursorSize to 1.388884782791

    -- # Get the system minor version number, as an integer.

set theSystemVersion to system version of (system info)
set TID to AppleScript's text item delimiters
set AppleScript's text item delimiters to {"."}
set theMinorSystemVersion to text item 2 of theSystemVersion as integer
set AppleScript's text item delimiters to TID

    -- # Change the size of the mouse cursor.

tell application "System Preferences"
    reveal anchor "Seeing_Display" of pane id "com.apple.preference.universalaccess"
    delay 0.5   -- # Modify as/if necessary. Value is in seconds as a decimal number.
    tell application "System Events"
        if theMinorSystemVersion is equal to 8 then
            set value of value indicator 1 of slider 2 of group 1 of window "Accessibility" of application process "System Preferences" to theCursorSize
        else if theMinorSystemVersion is equal to 9 then
            set value of value indicator 1 of slider 2 of window "Accessibility" of application process "System Preferences" to theCursorSize
        else if theMinorSystemVersion is greater than 9 and theMinorSystemVersion is less than 13 then
            set value of value indicator 1 of slider 1 of window "Accessibility" of application process "System Preferences" to theCursorSize
        end if
    end tell
    quit
end tell

Note: As coded, this script works with OS X 10.8 through macOS 10.12. I have not tested this under macOS High Sierra, however if nothing has changed between macOS 10.12 and macOS 10.13 with this particular object, then the less than 13 then code segment can be changed to less than 14 then, or if you prefer, shorten the line of code to just:

else if theMinorSystemVersion is greater than 9 then

To create a command line executable, containing the above AppleScript code, do the following in Terminal:

touch cmcs
open cmcs
  • Copy and paste the above AppleScript code into the opened cmcs document.
  • Set the value of theCursorSize to your preferred cursor size.
  • Save the document, pressing: ⌘S

Back in Terminal, make cmcs executable:

chmod u+x cmcs

Now the cmcs command line executable can be executed by typing: ./cmcs

  • Note: If you place the cmcs command line executable in a location defined within the PATH environment variable, you can omit the leading ./, and or having to type /path/to/cmcs. Also note that the naming of, cmcs is for change mouse cursor size, and can be whatever you want it to be otherwise.

Additional Notes:

The value of mouseDriverCursorSize key in the com.apple.universalaccess .plist file is stored rounded to the 6th decimal place, e.g, 1.388884782791 is saved as 1.388885

To get the full value, in Script Editor, run the following script:

set theSystemVersion to system version of (system info)
set TID to AppleScript's text item delimiters
set AppleScript's text item delimiters to {"."}
set theMinorSystemVersion to text item 2 of theSystemVersion as integer
set AppleScript's text item delimiters to TID

tell application "System Preferences"
    reveal anchor "Seeing_Display" of pane id "com.apple.preference.universalaccess"
    delay 0.5 -- # Modify as/if necessary. Value is in seconds as a decimal number.
    tell application "System Events"
        if theMinorSystemVersion is equal to 8 then
            get value of value indicator 1 of slider 2 of group 1 of window "Accessibility" of application process "System Preferences"
        else if theMinorSystemVersion is equal to 9 then
            get value of value indicator 1 of slider 2 of window "Accessibility" of application process "System Preferences"
        else if theMinorSystemVersion is greater than 9 and theMinorSystemVersion is less than 13 then
            get value of value indicator 1 of slider 1 of window "Accessibility" of application process "System Preferences"
        end if
    end tell
    quit
end tell

Update to address comment:

If you're wanting to run this each time a User logs in, the I'd do the following:

In Automator create a new Application workflow and add a Run AppleScript action to it.

In the Run AppleScript action, replace (* Your script goes here *) and return input with all but the shebang (#!/usr/bin/osascript) of the first AppleScript code. The shebang isn't necessary since this is being run in an Run AppleScript action vs. a Run Shell Script action.

Save the Automator Application workflow as e.g. Set Mouse Cursor Size in the /Applications folder.

In System Preferences, do two things...

  • In Users & Groups > select target User > Login Items and add Set Mouse Cursor Size to the list of Login Items.

  • In Security & Privacy > Privacy > Accessibility, add Set Mouse Cursor Size to the Allow the apps below to control your computer list.

    • Note: the above is for OS X 10.9 and later. For OS X 10.8, Accessibility and check the Enable access for assistive devices check box.

Then each time the User logs in, the Set Mouse Cursor Size will run and do as programmed.

  • one comment: you're giving me an executable script.. but is there a way to make this script execute by default everytime a user is logged in or something? ie the same way my ~/.bash_profile executes and makes my terminal colorful etc.. is there a way to make this script execute automatically as well? – abbood Sep 16 '17 at 5:54
  • @abbood, Please see the Update to address comment: section. added to the bottom of the original answer. to address your comment. – user3439894 Sep 16 '17 at 16:10
  • here is a follow up quesiton: apple.stackexchange.com/questions/299118/… – abbood Sep 20 '17 at 18:45

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .