Skip to content

Instantly share code, notes, and snippets.

@andrewodri
Created April 28, 2020 20:05
Show Gist options
  • Save andrewodri/0413888a431b5dd33f0dfa53fee1f6e8 to your computer and use it in GitHub Desktop.
Save andrewodri/0413888a431b5dd33f0dfa53fee1f6e8 to your computer and use it in GitHub Desktop.
Encode a CamTwist profile for precisely sized window capture
#!/bin/bash
PROFILE_PLIST="<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
<plist version=\"1.0\">
<dict>
<key>\$archiver</key>
<string>NSKeyedArchiver</string>
<key>\$objects</key>
<array>
<string>\$null</string>
<string>DesktopPlus</string>
<string>This screen</string>
<string>{{0, 0}, {1280, 720}}</string>
<string>Windowed Projector</string>
<string>OBS</string>
<string>Windowed Projector (Preview)</string>
<string>{{0, 0}, {1280, 720}}</string>
</array>
<key>\$top</key>
<dict>
<key>appName</key>
<dict>
<key>CF\$UID</key>
<integer>5</integer>
</dict>
<key>appTitle</key>
<dict>
<key>CF\$UID</key>
<integer>6</integer>
</dict>
<key>class</key>
<dict>
<key>CF\$UID</key>
<integer>1</integer>
</dict>
<key>confine</key>
<true/>
<key>cropRect</key>
<dict>
<key>CF\$UID</key>
<integer>7</integer>
</dict>
<key>doNotScale</key>
<true/>
<key>enabled</key>
<true/>
<key>filterWindows</key>
<true/>
<key>fullScreen</key>
<false/>
<key>regex</key>
<dict>
<key>CF\$UID</key>
<integer>4</integer>
</dict>
<key>regexSearch</key>
<false/>
<key>resizable</key>
<false/>
<key>screen</key>
<dict>
<key>CF\$UID</key>
<integer>2</integer>
</dict>
<key>showMouse</key>
<false/>
<key>viewPortRect</key>
<dict>
<key>CF\$UID</key>
<integer>3</integer>
</dict>
</dict>
<key>\$version</key>
<integer>100000</integer>
</dict>
</plist>"
BASE64_BINARY_PLIST=$(echo "${PROFILE_PLIST}" | plutil -convert binary1 - -o - | base64)
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
<plist version=\"1.0\">
<dict>
<key>encoded</key>
<array>
<data>${BASE64_BINARY_PLIST}</data>
</array>
<key>midiKey</key>
<integer>0</integer>
</dict>
</plist>" > "$@"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment