master 8bc8ea7053a0 cached
10 files
67.2 KB
36.6k tokens
1 requests
Download .txt
Repository: alexp2ad/record-ios-simulator
Branch: master
Commit: 8bc8ea7053a0
Files: 10
Total size: 67.2 KB

Directory structure:
gitextract_16c15lv8/

├── LICENSE
├── README.md
├── Record Simulator.alfredworkflow
├── Record Simulator.kmmacros
├── record-simulator.sh
└── utils/
    ├── base.alfredworkflow/
    │   └── info.plist
    ├── base.kmmacros
    ├── generateAlfred.php
    ├── generateFiles.sh
    └── generateKM.php

================================================
FILE CONTENTS
================================================

================================================
FILE: LICENSE
================================================
MIT License

Copyright (c) 2019 Alex Stevenson-Price

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: README.md
================================================
# Record iOS Simulator
A script to start and stop video recordings from the iOS Simulator as easily as taking a screenshot.

Run the script to start a video recording, then run it again to stop that recording and have it saved to the Desktop with a name like `Simulator 2019-01-04 at 10.16.21.mp4`.

Also includes Alfred and Keyboard Maestro implementations that allow you to start and stop a recording easily with ⌘R in the Simulator (or any other trigger those apps support).

# Usage Instructions

## Alfred
Download the [Record Simulator.alfredworkflow](https://github.com/alexp2ad/record-ios-simulator/raw/master/Record%20Simulator.alfredworkflow) file and open it to add the workflow to Alfred. After adding the workflow you can double click the `Hotkey` action and assign a hotkey of your choice to start and stop the recording (I like ⌘R), or you can just trigger the workflow from Alfred with the `record` keyword.

Once the workflow has been added, and the hotkey set, just use the hotkey in the Simulator to start a video recording, and then again to end the recording.

## Keyboard Maestro
Download the [Record Simulator.kmmacros](https://github.com/alexp2ad/record-ios-simulator/raw/master/Record%20Simulator.kmmacros) file and open it to add the macro to Keyboard Maestro. By default it is triggered using the ⌘R hotkey while the Simulator is focused, but you can tweak this behaviour after adding the macro if desired.

Once the macro has been added, just use the hotkey in the Simulator to start a video recording, and then again to end the recording.

## Script Usage
If using other utilities, or wanting to simply have a script that you can run in the terminal, then download and run the bash script. On first run it will start a recording, on second run it will end the recording and save it to the Desktop.

# Behaviour
There are several variables at the top of the script that can be edited to modify the behaviour:

| Variable | Default | Description |
| --- | --- | --- |
| `outputDirectory` | `~/Desktop/` | Determines where recordings are saved. |
| `openRecordings` | `true` | If `true` video recordings will be opened when ended, otherwise a notification is displayed. |
| `playSounds` | `true` | If `true` system sounds will be played when starting and stopping a recording. |
| `filename` | `"Simulator "$(date '+%Y-%m-%d at %H.%M.%S')` | By default files are saved with date-based names like `Simulator 2019-01-04 at 10.16.21.mp4`, tweak this to change filenames to your liking. (No need to include an extension, `.mp4` is added further into the script) |

# Contributing

PRs with improvements, fixes, features welcomed.

After modifying the script, please run the `utils/generateFiles.sh` script to update the Keyboard Maestro and Alfred implementations with the script changes, and include those changes with your script update commit. You do __not__ need Alfred or KM to do this.


================================================
FILE: Record Simulator.kmmacros
================================================
<?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">
<array>
	<dict>
		<key>Activate</key>
		<string>Normal</string>
		<key>CreationDate</key>
		<real>568291225.87612998</real>
		<key>Macros</key>
		<array>
			<dict>
				<key>Actions</key>
				<array>
					<dict>
						<key>DisplayKind</key>
						<string>Asynchronously</string>
						<key>IncludeStdErr</key>
						<false/>
						<key>MacroActionType</key>
						<string>ExecuteShellScript</string>
						<key>Path</key>
						<string></string>
						<key>Source</key>
						<string>Nothing</string>
						<key>Text</key>
						<string>#!/bin/bash

# Starts and stops recording in the simulator

# Set your prefered output directory here
outputDirectory=~/Desktop/

# Open recordings in the default app when ending recording
openRecordings=true

# Choose whether to play sounds when starting and stopping a recording
playSounds=true

# Edit the format of the filename. By default it saves files with names like `Simulator 2019-01-04 at 10.16.21.mp4`
# do not add an extension to the below variable, `.mp4` will be added further down.
filename="Simulator "$(date '+%Y-%m-%d at %H.%M.%S')

tmpPathPrefix="/tmp/com.alexjsp.simulator-recording."
recordingPathVarStoragePath="$tmpPathPrefix""recordingPath.txt"
recordingPIDVarStoragePath="$tmpPathPrefix""recordingPID.txt"

function notify {
    # If running in an interactive terminal then echo status notifications,
    # otherwise post a system notification.
    if [ -t 0 ]; then
        echo $1
    else
        osascript -e 'display notification "'"$1"'" with title "Simulator Recording"'
    fi
}

if [ -f $recordingPathVarStoragePath ] &amp;&amp; [ -f $recordingPIDVarStoragePath ]; then
    # Stop existing recording
    read recordingPath &lt; $recordingPathVarStoragePath
    read recordingPID &lt; $recordingPIDVarStoragePath
    rm "$tmpPathPrefix""recordingPath.txt"
    rm "$tmpPathPrefix""recordingPID.txt"
    notify "Stopping recording..."
    if [ "$playSounds" = true ] ; then
        afplay /System/Library/Sounds/Purr.aiff &gt; /dev/null 2&gt;&amp;1
    fi
    sleep 2
    kill -SIGINT $recordingPID
    sleep 1
    if [ "$openRecordings" = true ] ; then
        open "$recordingPath"
    else
        notify "Recording saved to ""$recordingPath"
    fi
else
    if ! pgrep -xq -- "Simulator"; then
        notify "Simulator doesn't appear to be running"
        if [ "$playSounds" = true ] ; then
            afplay /System/Library/Sounds/Basso.aiff &gt; /dev/null 2&gt;&amp;1
        fi
        exit 1
    fi
    
    # Start a new recording
    if [ "$playSounds" = true ] ; then
        afplay /System/Library/Sounds/Pop.aiff &gt; /dev/null 2&gt;&amp;1
    fi
    recordingPath="$outputDirectory""$filename"".mp4"
    xcrun simctl io booted recordVideo "$recordingPath" &amp;
    echo $! &gt; "$tmpPathPrefix""recordingPID.txt"
    echo $recordingPath &gt; "$tmpPathPrefix""recordingPath.txt"
    notify "Started recording to ""$recordingPath"
fi</string>
						<key>TimeOutAbortsMacro</key>
						<true/>
						<key>TrimResults</key>
						<true/>
						<key>TrimResultsNew</key>
						<true/>
						<key>UseText</key>
						<true/>
					</dict>
				</array>
				<key>CreationDate</key>
				<real>568291231.02187896</real>
				<key>CustomIconData</key>
				<data>
				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
				TMB0yyH2PUdpEB5KGjaXWOKtJklhgnJ+ZxEEpJFIhHZN
				JJipgSAdNkEMfwXAKm8DQz4/gTySAMuddAix1zpGDMeZ
				87SxACAIBQAYEwXBHH/GQd4/h7jtHQrQfQ8CIFpJ6RBR
				syI5zKoOWFpU7qGUMmiXmaZEE0gJKwAw24/VDncmNHKh
				tHY7UPofMyZa8KO0lpNSWh7vKD0npZS2l1L6YUxplTOm
				lNabU3pxTmnVO6eU9p9T+oFMSAgAABEBAAADAAAAAQBA
				AAABAQADAAAAAQBAAAABAgADAAAABAAAG1QBAwADAAAA
				AQAFAAABBgADAAAAAQACAAABCgADAAAAAQABAAABEQAE
				AAAAAQAAAAgBEgADAAAAAQABAAABFQADAAAAAQAEAAAB
				FgADAAAAAQBAAAABFwAEAAAAAQAAGnkBHAADAAAAAQAB
				AAABKAADAAAAAQACAAABPQADAAAAAQACAAABUgADAAAA
				AQABAAABUwADAAAABAAAG1yHcwAHAAAH2AAAG2QAACxa
				AAgACAAIAAgAAQABAAEAAQAAB9hhcHBsAiAAAG1udHJS
				R0IgWFlaIAfZAAIAGQALABoAC2Fjc3BBUFBMAAAAAGFw
				cGwAAAAAAAAAAAAAAAAAAAAAAAD21gABAAAAANMtYXBw
				bAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
				AAAAAAAAAAAAAAAAAAAAC2Rlc2MAAAEIAAAAb2RzY20A
				AAF4AAAFnGNwcnQAAAcUAAAAOHd0cHQAAAdMAAAAFHJY
				WVoAAAdgAAAAFGdYWVoAAAd0AAAAFGJYWVoAAAeIAAAA
				FHJUUkMAAAecAAAADmNoYWQAAAesAAAALGJUUkMAAAec
				AAAADmdUUkMAAAecAAAADmRlc2MAAAAAAAAAFEdlbmVy
				aWMgUkdCIFByb2ZpbGUAAAAAAAAAAAAAABRHZW5lcmlj
				IFJHQiBQcm9maWxlAAAAAAAAAAAAAAAAAAAAAAAAAAAA
				AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtbHVj
				AAAAAAAAAB8AAAAMc2tTSwAAACgAAAGEZGFESwAAAC4A
				AAGsY2FFUwAAACQAAAHadmlWTgAAACQAAAH+cHRCUgAA
				ACYAAAIidWtVQQAAACoAAAJIZnJGVQAAACgAAAJyaHVI
				VQAAACgAAAKaemhUVwAAABYAAALCbmJOTwAAACYAAALY
				Y3NDWgAAACIAAAL+aGVJTAAAAB4AAAMgaXRJVAAAACgA
				AAM+cm9STwAAACQAAANmZGVERQAAACwAAAOKa29LUgAA
				ABYAAAO2c3ZTRQAAACYAAALYemhDTgAAABYAAAPMamFK
				UAAAABoAAAPiZWxHUgAAACIAAAP8cHRQTwAAACYAAAQe
				bmxOTAAAACgAAAREZXNFUwAAACYAAAQedGhUSAAAACQA
				AARsdHJUUgAAACIAAASQZmlGSQAAACgAAASyaHJIUgAA
				ACgAAATacGxQTAAAACwAAAUCcnVSVQAAACIAAAUuYXJF
				RwAAACYAAAVQZW5VUwAAACYAAAV2AFYBYQBlAG8AYgBl
				AGMAbgD9ACAAUgBHAEIAIABwAHIAbwBmAGkAbABHAGUA
				bgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2
				AGUAbABzAGUAUABlAHIAZgBpAGwAIABSAEcAQgAgAGcA
				ZQBuAOgAcgBpAGMAQx6lAHUAIABoAOwAbgBoACAAUgBH
				AEIAIABDAGgAdQBuAGcAUABlAHIAZgBpAGwAIABSAEcA
				QgAgAEcAZQBuAOkAcgBpAGMAbwQXBDAEMwQwBDsETAQ9
				BDgEOQAgBD8EQAQ+BEQEMAQ5BDsAIABSAEcAQgBQAHIA
				bwBmAGkAbAAgAGcA6QBuAOkAcgBpAHEAdQBlACAAUgBW
				AEIAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAA
				cgBvAGYAaQBskBp1KAAgAFIARwBCACCCcl9pY8+P8ABH
				AGUAbgBlAHIAaQBzAGsAIABSAEcAQgAtAHAAcgBvAGYA
				aQBsAE8AYgBlAGMAbgD9ACAAUgBHAEIAIABwAHIAbwBm
				AGkAbAXkBegF1QXkBdkF3AAgAFIARwBCACAF2wXcBdwF
				2QBQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBl
				AHIAaQBjAG8AUAByAG8AZgBpAGwAIABSAEcAQgAgAGcA
				ZQBuAGUAcgBpAGMAQQBsAGwAZwBlAG0AZQBpAG4AZQBz
				ACAAUgBHAEIALQBQAHIAbwBmAGkAbMd8vBgAIABSAEcA
				QgAg1QS4XNMMx3xmbpAaACAAUgBHAEIAIGPPj/Blh072
				TgCCLAAgAFIARwBCACAw1zDtMNUwoTCkMOsDkwO1A70D
				uQO6A8wAIAPAA8EDvwPGA68DuwAgAFIARwBCAFAAZQBy
				AGYAaQBsACAAUgBHAEIAIABnAGUAbgDpAHIAaQBjAG8A
				QQBsAGcAZQBtAGUAZQBuACAAUgBHAEIALQBwAHIAbwBm
				AGkAZQBsDkIOGw4jDkQOHw4lDkwAIABSAEcAQgAgDhcO
				MQ5IDicORA4bAEcAZQBuAGUAbAAgAFIARwBCACAAUABy
				AG8AZgBpAGwAaQBZAGwAZQBpAG4AZQBuACAAUgBHAEIA
				LQBwAHIAbwBmAGkAaQBsAGkARwBlAG4AZQByAGkBDQBr
				AGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFUAbgBpAHcA
				ZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBH
				AEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIA
				RwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYn
				BkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAA
				UAByAG8AZgBpAGwAZXRleHQAAAAAQ29weXJpZ2h0IDIw
				MDcgQXBwbGUgSW5jLiwgYWxsIHJpZ2h0cyByZXNlcnZl
				ZC4AWFlaIAAAAAAAAPNSAAEAAAABFs9YWVogAAAAAAAA
				dE0AAD3uAAAD0FhZWiAAAAAAAABadQAArHMAABc0WFla
				IAAAAAAAACgaAAAVnwAAuDZjdXJ2AAAAAAAAAAEBzQAA
				c2YzMgAAAAAAAQxCAAAF3v//8yYAAAeSAAD9kf//+6L/
				//2jAAAD3AAAwGyAACBQOCQWDQeEQmFQuGQ2HQ+IRGHA
				KBv6JReMRmNQgMwIYkAAAcsC4DgwaA8DAcIu99Pl3NF8
				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
				AAcAAAfYAAAtPAAAOCoACAAIAAgACAABAAEAAQABAAAH
				2GFwcGwCIAAAbW50clJHQiBYWVogB9kAAgAZAAsAGgAL
				YWNzcEFQUEwAAAAAYXBwbAAAAAAAAAAAAAAAAAAAAAAA
				APbWAAEAAAAA0y1hcHBsAAAAAAAAAAAAAAAAAAAAAAAA
				AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALZGVz
				YwAAAQgAAABvZHNjbQAAAXgAAAWcY3BydAAABxQAAAA4
				d3RwdAAAB0wAAAAUclhZWgAAB2AAAAAUZ1hZWgAAB3QA
				AAAUYlhZWgAAB4gAAAAUclRSQwAAB5wAAAAOY2hhZAAA
				B6wAAAAsYlRSQwAAB5wAAAAOZ1RSQwAAB5wAAAAOZGVz
				YwAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAA
				AAAAAAAAFEdlbmVyaWMgUkdCIFByb2ZpbGUAAAAAAAAA
				AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
				AAAAAAAAAAAAAG1sdWMAAAAAAAAAHwAAAAxza1NLAAAA
				KAAAAYRkYURLAAAALgAAAaxjYUVTAAAAJAAAAdp2aVZO
				AAAAJAAAAf5wdEJSAAAAJgAAAiJ1a1VBAAAAKgAAAkhm
				ckZVAAAAKAAAAnJodUhVAAAAKAAAApp6aFRXAAAAFgAA
				AsJuYk5PAAAAJgAAAthjc0NaAAAAIgAAAv5oZUlMAAAA
				HgAAAyBpdElUAAAAKAAAAz5yb1JPAAAAJAAAA2ZkZURF
				AAAALAAAA4prb0tSAAAAFgAAA7ZzdlNFAAAAJgAAAth6
				aENOAAAAFgAAA8xqYUpQAAAAGgAAA+JlbEdSAAAAIgAA
				A/xwdFBPAAAAJgAABB5ubE5MAAAAKAAABERlc0VTAAAA
				JgAABB50aFRIAAAAJAAABGx0clRSAAAAIgAABJBmaUZJ
				AAAAKAAABLJockhSAAAAKAAABNpwbFBMAAAALAAABQJy
				dVJVAAAAIgAABS5hckVHAAAAJgAABVBlblVTAAAAJgAA
				BXYAVgFhAGUAbwBiAGUAYwBuAP0AIABSAEcAQgAgAHAA
				cgBvAGYAaQBsAEcAZQBuAGUAcgBlAGwAIABSAEcAQgAt
				AGIAZQBzAGsAcgBpAHYAZQBsAHMAZQBQAGUAcgBmAGkA
				bAAgAFIARwBCACAAZwBlAG4A6AByAGkAYwBDHqUAdQAg
				AGgA7ABuAGgAIABSAEcAQgAgAEMAaAB1AG4AZwBQAGUA
				cgBmAGkAbAAgAFIARwBCACAARwBlAG4A6QByAGkAYwBv
				BBcEMAQzBDAEOwRMBD0EOAQ5ACAEPwRABD4ERAQwBDkE
				OwAgAFIARwBCAFAAcgBvAGYAaQBsACAAZwDpAG4A6QBy
				AGkAcQB1AGUAIABSAFYAQgDBAGwAdABhAGwA4QBuAG8A
				cwAgAFIARwBCACAAcAByAG8AZgBpAGyQGnUoACAAUgBH
				AEIAIIJyX2ljz4/wAEcAZQBuAGUAcgBpAHMAawAgAFIA
				RwBCAC0AcAByAG8AZgBpAGwATwBiAGUAYwBuAP0AIABS
				AEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAA
				UgBHAEIAIAXbBdwF3AXZAFAAcgBvAGYAaQBsAG8AIABS
				AEcAQgAgAGcAZQBuAGUAcgBpAGMAbwBQAHIAbwBmAGkA
				bAAgAFIARwBCACAAZwBlAG4AZQByAGkAYwBBAGwAbABn
				AGUAbQBlAGkAbgBlAHMAIABSAEcAQgAtAFAAcgBvAGYA
				aQBsx3y8GAAgAFIARwBCACDVBLhc0wzHfGZukBoAIABS
				AEcAQgAgY8+P8GWHTvZOAIIsACAAUgBHAEIAIDDXMO0w
				1TChMKQw6wOTA7UDvQO5A7oDzAAgA8ADwQO/A8YDrwO7
				ACAAUgBHAEIAUABlAHIAZgBpAGwAIABSAEcAQgAgAGcA
				ZQBuAOkAcgBpAGMAbwBBAGwAZwBlAG0AZQBlAG4AIABS
				AEcAQgAtAHAAcgBvAGYAaQBlAGwOQg4bDiMORA4fDiUO
				TAAgAFIARwBCACAOFw4xDkgOJw5EDhsARwBlAG4AZQBs
				ACAAUgBHAEIAIABQAHIAbwBmAGkAbABpAFkAbABlAGkA
				bgBlAG4AIABSAEcAQgAtAHAAcgBvAGYAaQBpAGwAaQBH
				AGUAbgBlAHIAaQENAGsAaQAgAFIARwBCACAAcAByAG8A
				ZgBpAGwAVQBuAGkAdwBlAHIAcwBhAGwAbgB5ACAAcABy
				AG8AZgBpAGwAIABSAEcAQgQeBDEESQQ4BDkAIAQ/BEAE
				PgREBDgEOwRMACAAUgBHAEIGRQZEBkEAIAYqBjkGMQZK
				BkEAIABSAEcAQgAgBicGRAY5BicGRQBHAGUAbgBlAHIA
				aQBjACAAUgBHAEIAIABQAHIAbwBmAGkAbABldGV4dAAA
				AABDb3B5cmlnaHQgMjAwNyBBcHBsZSBJbmMuLCBhbGwg
				cmlnaHRzIHJlc2VydmVkLgBYWVogAAAAAAAA81IAAQAA
				AAEWz1hZWiAAAAAAAAB0TQAAPe4AAAPQWFlaIAAAAAAA
				AFp1AACscwAAFzRYWVogAAAAAAAAKBoAABWfAAC4NmN1
				cnYAAAAAAAAAAQHNAABzZjMyAAAAAAABDEIAAAXe///z
				JgAAB5IAAP2R///7ov///aMAAAPcAADAbIAAIFA4JBYN
				B4RCYVC4MAYEBiUCwiXyCHQ8Q3m+Xy9Fc4m+p2m/XyvY
				ZJYXDgABD8FQ2njyRSEXQOFQlAn8/wA5m03n4YGAvzKu
				3091EBQYEAkCgoGQ2DA0IhECQoGw84F2pVA/Hs83jCBY
				AACQVqIxWvgODQSAH6/H7BQOAwEAGg8Xy80aaUQ2wMJB
				eGwNEgmAAOCgIBpQszCLhq8m+02ZBALTxEaxQPFcZWAs
				he+gABYTcZw9gJnkgkpI6w8KYE+39agDcQeB4EzECUSw
				5mMsFTBAIGRGIzaWz40yejDYCdaCM/agA7gYEQApUoww
				A6adAnm7gA/G51AaIRaAHCtUwgm0r0Yf4KBAOCSKimA0
				SYm0EJRI115zLTNoG+QAX4nj4ABoi6PwAAEtoAHgZJVg
				AdhTjagQEugfwBAIdZ5HacpHHgd53kQggZj2WxdgiDwZ
				CIFhSkIAAPG0YwAH8BC0nAHYrAAZYgjQAAIgQAi1H+uJ
				4lkO4AHmaRZSAhx7HseoAHue57FOdp2nYLSCBMLRHEwC
				YlDiM4AtbHitO2AMfgSBYDAAdp3tauKBAgAUnHAT8bnu
				dhvgAf5/octh+Oadp1jAeNCFCggMB+NI5A8LRLEaAR9r
				aBQCocfJ9oEe59Jwej/O2fwBrAdZorAWorrUtcYn61s+
				AEf51nUdIcyiehkoIBoTCKJwSDOXRYwwtoUAqhx6HwnB
				wu0gs+VABBslAtRjSKAABrSfx/T+owLgAdB2nqKh8HYb
				JWsgCYTBcEw2GgZh3n0BAChOCljWQfDOJTN4CgI0BgjP
				J5tXFMzlWszjviAAB1HsBJCHiaZRD6ggAgMB4KBiOJqG
				oAIGg5bMxHvS9pTfhx9HwnJSBsAB6HUbLOgM5QDALUAA
				gcEZUHgeh9Eufh2GkYSGgGG42GKZgIA4FoUmwbhzHUf5
				5nAcZ8ncbZu6cbRtH2dhqmyAJ3GWDB/n8fohn7sIZgFs
				gFn3kIYH2fh/HEhgAgeE4ZxifNNHsdJyrUe53oGnCTgD
				v4CcCCmyAECaNHzlKBb6k3GcbxyCICAAEQEAAAMAAAAB
				ABAAAAEBAAMAAAABABAAAAECAAMAAAAEAAA4/AEDAAMA
				AAABAAUAAAEGAAMAAAABAAIAAAEKAAMAAAABAAEAAAER
				AAQAAAABAAA1FAESAAMAAAABAAEAAAEVAAMAAAABAAQA
				AAEWAAMAAAABABAAAAEXAAQAAAABAAADFgEcAAMAAAAB
				AAEAAAEoAAMAAAABAAIAAAE9AAMAAAABAAIAAAFSAAMA
				AAABAAEAAAFTAAMAAAAEAAA5BIdzAAcAAAfYAAA5DAAA
				AAAACAAIAAgACAABAAEAAQABAAAH2GFwcGwCIAAAbW50
				clJHQiBYWVogB9kAAgAZAAsAGgALYWNzcEFQUEwAAAAA
				YXBwbAAAAAAAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1h
				cHBsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
				AAAAAAAAAAAAAAAAAAAAAAALZGVzYwAAAQgAAABvZHNj
				bQAAAXgAAAWcY3BydAAABxQAAAA4d3RwdAAAB0wAAAAU
				clhZWgAAB2AAAAAUZ1hZWgAAB3QAAAAUYlhZWgAAB4gA
				AAAUclRSQwAAB5wAAAAOY2hhZAAAB6wAAAAsYlRSQwAA
				B5wAAAAOZ1RSQwAAB5wAAAAOZGVzYwAAAAAAAAAUR2Vu
				ZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAFEdlbmVy
				aWMgUkdCIFByb2ZpbGUAAAAAAAAAAAAAAAAAAAAAAAAA
				AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG1s
				dWMAAAAAAAAAHwAAAAxza1NLAAAAKAAAAYRkYURLAAAA
				LgAAAaxjYUVTAAAAJAAAAdp2aVZOAAAAJAAAAf5wdEJS
				AAAAJgAAAiJ1a1VBAAAAKgAAAkhmckZVAAAAKAAAAnJo
				dUhVAAAAKAAAApp6aFRXAAAAFgAAAsJuYk5PAAAAJgAA
				Athjc0NaAAAAIgAAAv5oZUlMAAAAHgAAAyBpdElUAAAA
				KAAAAz5yb1JPAAAAJAAAA2ZkZURFAAAALAAAA4prb0tS
				AAAAFgAAA7ZzdlNFAAAAJgAAAth6aENOAAAAFgAAA8xq
				YUpQAAAAGgAAA+JlbEdSAAAAIgAAA/xwdFBPAAAAJgAA
				BB5ubE5MAAAAKAAABERlc0VTAAAAJgAABB50aFRIAAAA
				JAAABGx0clRSAAAAIgAABJBmaUZJAAAAKAAABLJockhS
				AAAAKAAABNpwbFBMAAAALAAABQJydVJVAAAAIgAABS5h
				ckVHAAAAJgAABVBlblVTAAAAJgAABXYAVgFhAGUAbwBi
				AGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsAEcA
				ZQBuAGUAcgBlAGwAIABSAEcAQgAtAGIAZQBzAGsAcgBp
				AHYAZQBsAHMAZQBQAGUAcgBmAGkAbAAgAFIARwBCACAA
				ZwBlAG4A6AByAGkAYwBDHqUAdQAgAGgA7ABuAGgAIABS
				AEcAQgAgAEMAaAB1AG4AZwBQAGUAcgBmAGkAbAAgAFIA
				RwBCACAARwBlAG4A6QByAGkAYwBvBBcEMAQzBDAEOwRM
				BD0EOAQ5ACAEPwRABD4ERAQwBDkEOwAgAFIARwBCAFAA
				cgBvAGYAaQBsACAAZwDpAG4A6QByAGkAcQB1AGUAIABS
				AFYAQgDBAGwAdABhAGwA4QBuAG8AcwAgAFIARwBCACAA
				cAByAG8AZgBpAGyQGnUoACAAUgBHAEIAIIJyX2ljz4/w
				AEcAZQBuAGUAcgBpAHMAawAgAFIARwBCAC0AcAByAG8A
				ZgBpAGwATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBv
				AGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF
				3AXZAFAAcgBvAGYAaQBsAG8AIABSAEcAQgAgAGcAZQBu
				AGUAcgBpAGMAbwBQAHIAbwBmAGkAbAAgAFIARwBCACAA
				ZwBlAG4AZQByAGkAYwBBAGwAbABnAGUAbQBlAGkAbgBl
				AHMAIABSAEcAQgAtAFAAcgBvAGYAaQBsx3y8GAAgAFIA
				RwBCACDVBLhc0wzHfGZukBoAIABSAEcAQgAgY8+P8GWH
				TvZOAIIsACAAUgBHAEIAIDDXMO0w1TChMKQw6wOTA7UD
				vQO5A7oDzAAgA8ADwQO/A8YDrwO7ACAAUgBHAEIAUABl
				AHIAZgBpAGwAIABSAEcAQgAgAGcAZQBuAOkAcgBpAGMA
				bwBBAGwAZwBlAG0AZQBlAG4AIABSAEcAQgAtAHAAcgBv
				AGYAaQBlAGwOQg4bDiMORA4fDiUOTAAgAFIARwBCACAO
				Fw4xDkgOJw5EDhsARwBlAG4AZQBsACAAUgBHAEIAIABQ
				AHIAbwBmAGkAbABpAFkAbABlAGkAbgBlAG4AIABSAEcA
				QgAtAHAAcgBvAGYAaQBpAGwAaQBHAGUAbgBlAHIAaQEN
				AGsAaQAgAFIARwBCACAAcAByAG8AZgBpAGwAVQBuAGkA
				dwBlAHIAcwBhAGwAbgB5ACAAcAByAG8AZgBpAGwAIABS
				AEcAQgQeBDEESQQ4BDkAIAQ/BEAEPgREBDgEOwRMACAA
				UgBHAEIGRQZEBkEAIAYqBjkGMQZKBkEAIABSAEcAQgAg
				BicGRAY5BicGRQBHAGUAbgBlAHIAaQBjACAAUgBHAEIA
				IABQAHIAbwBmAGkAbABldGV4dAAAAABDb3B5cmlnaHQg
				MjAwNyBBcHBsZSBJbmMuLCBhbGwgcmlnaHRzIHJlc2Vy
				dmVkLgBYWVogAAAAAAAA81IAAQAAAAEWz1hZWiAAAAAA
				AAB0TQAAPe4AAAPQWFlaIAAAAAAAAFp1AACscwAAFzRY
				WVogAAAAAAAAKBoAABWfAAC4NmN1cnYAAAAAAAAAAQHN
				AABzZjMyAAAAAAABDEIAAAXe///zJgAAB5IAAP2R///7
				ov///aMAAAPcAADAbA==
				</data>
				<key>ModificationDate</key>
				<real>568291967.22791898</real>
				<key>Name</key>
				<string>Record Simulator</string>
				<key>Triggers</key>
				<array>
					<dict>
						<key>FireType</key>
						<string>Pressed</string>
						<key>KeyCode</key>
						<integer>15</integer>
						<key>MacroTriggerType</key>
						<string>HotKey</string>
						<key>Modifiers</key>
						<integer>256</integer>
					</dict>
				</array>
				<key>UID</key>
				<string>7A39B0BF-B4D2-4D58-8806-29FBE4D9205E</string>
			</dict>
		</array>
		<key>Name</key>
		<string>Simulator</string>
		<key>Targeting</key>
		<dict>
			<key>Targeting</key>
			<string>Included</string>
			<key>TargetingApps</key>
			<array>
				<dict>
					<key>BundleIdentifier</key>
					<string>com.apple.iphonesimulator</string>
					<key>Name</key>
					<string>Simulator</string>
					<key>NewFile</key>
					<string>/Applications/Xcode.app/Contents/Developer/Applications/Simulator.app</string>
				</dict>
			</array>
		</dict>
		<key>ToggleMacroUID</key>
		<string>0270BC6C-3FF2-4F9F-91A9-C56C96477C02</string>
		<key>UID</key>
		<string>3C9F8BB7-514B-44B8-AC8E-545DFB333407</string>
	</dict>
</array>
</plist>


================================================
FILE: record-simulator.sh
================================================
#!/bin/bash

# Starts and stops recording in the simulator

# Set your prefered output directory here
outputDirectory=~/Desktop/

# Open recordings in the default app when ending recording
openRecordings=true

# Choose whether to play sounds when starting and stopping a recording
playSounds=true

# Edit the format of the filename. By default it saves files with names like `Simulator 2019-01-04 at 10.16.21.mp4`
# do not add an extension to the below variable, `.mp4` will be added further down.
filename="Simulator "$(date '+%Y-%m-%d at %H.%M.%S')

tmpPathPrefix="/tmp/com.alexjsp.simulator-recording."
recordingPathVarStoragePath="$tmpPathPrefix""recordingPath.txt"
recordingPIDVarStoragePath="$tmpPathPrefix""recordingPID.txt"

function notify {
    # If running in an interactive terminal then echo status notifications,
    # otherwise post a system notification.
    if [ -t 0 ]; then
        echo $1
    else
        osascript -e 'display notification "'"$1"'" with title "Simulator Recording"'
    fi
}

if [ -f $recordingPathVarStoragePath ] && [ -f $recordingPIDVarStoragePath ]; then
    # Stop existing recording
    read recordingPath < $recordingPathVarStoragePath
    read recordingPID < $recordingPIDVarStoragePath
    rm "$tmpPathPrefix""recordingPath.txt"
    rm "$tmpPathPrefix""recordingPID.txt"
    notify "Stopping recording..."
    if [ "$playSounds" = true ] ; then
        afplay /System/Library/Sounds/Purr.aiff > /dev/null 2>&1
    fi
    sleep 2
    kill -SIGINT $recordingPID
    sleep 1
    if [ "$openRecordings" = true ] ; then
        open "$recordingPath"
    else
        notify "Recording saved to ""$recordingPath"
    fi
else
    if ! pgrep -xq -- "Simulator"; then
        notify "Simulator doesn't appear to be running"
        if [ "$playSounds" = true ] ; then
            afplay /System/Library/Sounds/Basso.aiff > /dev/null 2>&1
        fi
        exit 1
    fi
    
    # Start a new recording
    if [ "$playSounds" = true ] ; then
        afplay /System/Library/Sounds/Pop.aiff > /dev/null 2>&1
    fi
    recordingPath="$outputDirectory""$filename"".mp4"
    xcrun simctl io booted recordVideo "$recordingPath" &
    echo $! > "$tmpPathPrefix""recordingPID.txt"
    echo $recordingPath > "$tmpPathPrefix""recordingPath.txt"
    notify "Started recording to ""$recordingPath"
fi

================================================
FILE: utils/base.alfredworkflow/info.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>bundleid</key>
	<string>com.alexjsp.record-simulator</string>
	<key>connections</key>
	<dict>
		<key>6FC86196-CA1F-4259-805F-B8C67458A622</key>
		<array>
			<dict>
				<key>destinationuid</key>
				<string>EBD0B34D-1E5D-4021-B09E-8023981CBA1D</string>
				<key>modifiers</key>
				<integer>0</integer>
				<key>modifiersubtext</key>
				<string></string>
				<key>vitoclose</key>
				<false/>
			</dict>
		</array>
		<key>B87E5BC1-3622-4A9F-824B-D0E22A8952B1</key>
		<array>
			<dict>
				<key>destinationuid</key>
				<string>EBD0B34D-1E5D-4021-B09E-8023981CBA1D</string>
				<key>modifiers</key>
				<integer>0</integer>
				<key>modifiersubtext</key>
				<string></string>
				<key>vitoclose</key>
				<false/>
			</dict>
		</array>
		<key>DADA5CC7-2A03-4E31-9674-B6C61BECCDA6</key>
		<array>
			<dict>
				<key>destinationuid</key>
				<string>EBD0B34D-1E5D-4021-B09E-8023981CBA1D</string>
				<key>modifiers</key>
				<integer>0</integer>
				<key>modifiersubtext</key>
				<string></string>
				<key>vitoclose</key>
				<false/>
			</dict>
		</array>
	</dict>
	<key>createdby</key>
	<string>Alex Stevenson-Price</string>
	<key>description</key>
	<string>Record video from the iOS Simulator</string>
	<key>disabled</key>
	<false/>
	<key>name</key>
	<string>Record Simulator</string>
	<key>objects</key>
	<array>
		<dict>
			<key>config</key>
			<dict>
				<key>action</key>
				<integer>0</integer>
				<key>argument</key>
				<integer>0</integer>
				<key>focusedappvariable</key>
				<false/>
				<key>focusedappvariablename</key>
				<string></string>
				<key>hotkey</key>
				<integer>15</integer>
				<key>hotmod</key>
				<integer>1048576</integer>
				<key>hotstring</key>
				<string>R</string>
				<key>leftcursor</key>
				<false/>
				<key>modsmode</key>
				<integer>0</integer>
				<key>relatedApps</key>
				<array>
					<string>com.apple.iphonesimulator</string>
				</array>
				<key>relatedAppsMode</key>
				<integer>1</integer>
			</dict>
			<key>type</key>
			<string>alfred.workflow.trigger.hotkey</string>
			<key>uid</key>
			<string>B87E5BC1-3622-4A9F-824B-D0E22A8952B1</string>
			<key>version</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>config</key>
			<dict>
				<key>concurrently</key>
				<true/>
				<key>escaping</key>
				<integer>102</integer>
				<key>script</key>
				<string>#INSERT_SCRIPT#</string>
				<key>scriptargtype</key>
				<integer>1</integer>
				<key>scriptfile</key>
				<string></string>
				<key>type</key>
				<integer>0</integer>
			</dict>
			<key>type</key>
			<string>alfred.workflow.action.script</string>
			<key>uid</key>
			<string>EBD0B34D-1E5D-4021-B09E-8023981CBA1D</string>
			<key>version</key>
			<integer>2</integer>
		</dict>
		<dict>
			<key>config</key>
			<dict>
				<key>argument</key>
				<string></string>
				<key>argumenttype</key>
				<integer>0</integer>
				<key>triggerid</key>
				<string>com.alexjsp.record-ios-simulator</string>
				<key>triggername</key>
				<string>Record Simulator</string>
				<key>workflowonly</key>
				<false/>
			</dict>
			<key>type</key>
			<string>alfred.workflow.trigger.remote</string>
			<key>uid</key>
			<string>DADA5CC7-2A03-4E31-9674-B6C61BECCDA6</string>
			<key>version</key>
			<integer>1</integer>
		</dict>
		<dict>
			<key>config</key>
			<dict>
				<key>argumenttype</key>
				<integer>2</integer>
				<key>keyword</key>
				<string>record</string>
				<key>subtext</key>
				<string>Starts a video recording of the iOS Simulator.</string>
				<key>text</key>
				<string>Record iOS Simulator</string>
				<key>withspace</key>
				<false/>
			</dict>
			<key>type</key>
			<string>alfred.workflow.input.keyword</string>
			<key>uid</key>
			<string>6FC86196-CA1F-4259-805F-B8C67458A622</string>
			<key>version</key>
			<integer>1</integer>
		</dict>
	</array>
	<key>readme</key>
	<string>A workflow to start and stop video recordings from the iOS Simulator as easily as taking a screenshot.

Assign a hotkey such as ⌘R after adding this workflow.</string>
	<key>uidata</key>
	<dict>
		<key>6FC86196-CA1F-4259-805F-B8C67458A622</key>
		<dict>
			<key>xpos</key>
			<integer>90</integer>
			<key>ypos</key>
			<integer>370</integer>
		</dict>
		<key>B87E5BC1-3622-4A9F-824B-D0E22A8952B1</key>
		<dict>
			<key>xpos</key>
			<integer>90</integer>
			<key>ypos</key>
			<integer>80</integer>
		</dict>
		<key>DADA5CC7-2A03-4E31-9674-B6C61BECCDA6</key>
		<dict>
			<key>xpos</key>
			<integer>90</integer>
			<key>ypos</key>
			<integer>220</integer>
		</dict>
		<key>EBD0B34D-1E5D-4021-B09E-8023981CBA1D</key>
		<dict>
			<key>xpos</key>
			<integer>350</integer>
			<key>ypos</key>
			<integer>220</integer>
		</dict>
	</dict>
	<key>version</key>
	<string>1.0</string>
	<key>webaddress</key>
	<string>https://github.com/alexp2ad/record-ios-simulator</string>
</dict>
</plist>


================================================
FILE: utils/base.kmmacros
================================================
<?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">
<array>
	<dict>
		<key>Activate</key>
		<string>Normal</string>
		<key>CreationDate</key>
		<real>568291225.87612998</real>
		<key>Macros</key>
		<array>
			<dict>
				<key>Actions</key>
				<array>
					<dict>
						<key>DisplayKind</key>
						<string>Asynchronously</string>
						<key>IncludeStdErr</key>
						<false/>
						<key>MacroActionType</key>
						<string>ExecuteShellScript</string>
						<key>Path</key>
						<string></string>
						<key>Source</key>
						<string>Nothing</string>
						<key>Text</key>
						<string>#INSERT_SCRIPT#</string>
						<key>TimeOutAbortsMacro</key>
						<true/>
						<key>TrimResults</key>
						<true/>
						<key>TrimResultsNew</key>
						<true/>
						<key>UseText</key>
						<true/>
					</dict>
				</array>
				<key>CreationDate</key>
				<real>568291231.02187896</real>
				<key>CustomIconData</key>
				<data>
				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
				TMB0yyH2PUdpEB5KGjaXWOKtJklhgnJ+ZxEEpJFIhHZN
				JJipgSAdNkEMfwXAKm8DQz4/gTySAMuddAix1zpGDMeZ
				87SxACAIBQAYEwXBHH/GQd4/h7jtHQrQfQ8CIFpJ6RBR
				syI5zKoOWFpU7qGUMmiXmaZEE0gJKwAw24/VDncmNHKh
				tHY7UPofMyZa8KO0lpNSWh7vKD0npZS2l1L6YUxplTOm
				lNabU3pxTmnVO6eU9p9T+oFMSAgAABEBAAADAAAAAQBA
				AAABAQADAAAAAQBAAAABAgADAAAABAAAG1QBAwADAAAA
				AQAFAAABBgADAAAAAQACAAABCgADAAAAAQABAAABEQAE
				AAAAAQAAAAgBEgADAAAAAQABAAABFQADAAAAAQAEAAAB
				FgADAAAAAQBAAAABFwAEAAAAAQAAGnkBHAADAAAAAQAB
				AAABKAADAAAAAQACAAABPQADAAAAAQACAAABUgADAAAA
				AQABAAABUwADAAAABAAAG1yHcwAHAAAH2AAAG2QAACxa
				AAgACAAIAAgAAQABAAEAAQAAB9hhcHBsAiAAAG1udHJS
				R0IgWFlaIAfZAAIAGQALABoAC2Fjc3BBUFBMAAAAAGFw
				cGwAAAAAAAAAAAAAAAAAAAAAAAD21gABAAAAANMtYXBw
				bAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
				AAAAAAAAAAAAAAAAAAAAC2Rlc2MAAAEIAAAAb2RzY20A
				AAF4AAAFnGNwcnQAAAcUAAAAOHd0cHQAAAdMAAAAFHJY
				WVoAAAdgAAAAFGdYWVoAAAd0AAAAFGJYWVoAAAeIAAAA
				FHJUUkMAAAecAAAADmNoYWQAAAesAAAALGJUUkMAAAec
				AAAADmdUUkMAAAecAAAADmRlc2MAAAAAAAAAFEdlbmVy
				aWMgUkdCIFByb2ZpbGUAAAAAAAAAAAAAABRHZW5lcmlj
				IFJHQiBQcm9maWxlAAAAAAAAAAAAAAAAAAAAAAAAAAAA
				AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtbHVj
				AAAAAAAAAB8AAAAMc2tTSwAAACgAAAGEZGFESwAAAC4A
				AAGsY2FFUwAAACQAAAHadmlWTgAAACQAAAH+cHRCUgAA
				ACYAAAIidWtVQQAAACoAAAJIZnJGVQAAACgAAAJyaHVI
				VQAAACgAAAKaemhUVwAAABYAAALCbmJOTwAAACYAAALY
				Y3NDWgAAACIAAAL+aGVJTAAAAB4AAAMgaXRJVAAAACgA
				AAM+cm9STwAAACQAAANmZGVERQAAACwAAAOKa29LUgAA
				ABYAAAO2c3ZTRQAAACYAAALYemhDTgAAABYAAAPMamFK
				UAAAABoAAAPiZWxHUgAAACIAAAP8cHRQTwAAACYAAAQe
				bmxOTAAAACgAAAREZXNFUwAAACYAAAQedGhUSAAAACQA
				AARsdHJUUgAAACIAAASQZmlGSQAAACgAAASyaHJIUgAA
				ACgAAATacGxQTAAAACwAAAUCcnVSVQAAACIAAAUuYXJF
				RwAAACYAAAVQZW5VUwAAACYAAAV2AFYBYQBlAG8AYgBl
				AGMAbgD9ACAAUgBHAEIAIABwAHIAbwBmAGkAbABHAGUA
				bgBlAHIAZQBsACAAUgBHAEIALQBiAGUAcwBrAHIAaQB2
				AGUAbABzAGUAUABlAHIAZgBpAGwAIABSAEcAQgAgAGcA
				ZQBuAOgAcgBpAGMAQx6lAHUAIABoAOwAbgBoACAAUgBH
				AEIAIABDAGgAdQBuAGcAUABlAHIAZgBpAGwAIABSAEcA
				QgAgAEcAZQBuAOkAcgBpAGMAbwQXBDAEMwQwBDsETAQ9
				BDgEOQAgBD8EQAQ+BEQEMAQ5BDsAIABSAEcAQgBQAHIA
				bwBmAGkAbAAgAGcA6QBuAOkAcgBpAHEAdQBlACAAUgBW
				AEIAwQBsAHQAYQBsAOEAbgBvAHMAIABSAEcAQgAgAHAA
				cgBvAGYAaQBskBp1KAAgAFIARwBCACCCcl9pY8+P8ABH
				AGUAbgBlAHIAaQBzAGsAIABSAEcAQgAtAHAAcgBvAGYA
				aQBsAE8AYgBlAGMAbgD9ACAAUgBHAEIAIABwAHIAbwBm
				AGkAbAXkBegF1QXkBdkF3AAgAFIARwBCACAF2wXcBdwF
				2QBQAHIAbwBmAGkAbABvACAAUgBHAEIAIABnAGUAbgBl
				AHIAaQBjAG8AUAByAG8AZgBpAGwAIABSAEcAQgAgAGcA
				ZQBuAGUAcgBpAGMAQQBsAGwAZwBlAG0AZQBpAG4AZQBz
				ACAAUgBHAEIALQBQAHIAbwBmAGkAbMd8vBgAIABSAEcA
				QgAg1QS4XNMMx3xmbpAaACAAUgBHAEIAIGPPj/Blh072
				TgCCLAAgAFIARwBCACAw1zDtMNUwoTCkMOsDkwO1A70D
				uQO6A8wAIAPAA8EDvwPGA68DuwAgAFIARwBCAFAAZQBy
				AGYAaQBsACAAUgBHAEIAIABnAGUAbgDpAHIAaQBjAG8A
				QQBsAGcAZQBtAGUAZQBuACAAUgBHAEIALQBwAHIAbwBm
				AGkAZQBsDkIOGw4jDkQOHw4lDkwAIABSAEcAQgAgDhcO
				MQ5IDicORA4bAEcAZQBuAGUAbAAgAFIARwBCACAAUABy
				AG8AZgBpAGwAaQBZAGwAZQBpAG4AZQBuACAAUgBHAEIA
				LQBwAHIAbwBmAGkAaQBsAGkARwBlAG4AZQByAGkBDQBr
				AGkAIABSAEcAQgAgAHAAcgBvAGYAaQBsAFUAbgBpAHcA
				ZQByAHMAYQBsAG4AeQAgAHAAcgBvAGYAaQBsACAAUgBH
				AEIEHgQxBEkEOAQ5ACAEPwRABD4ERAQ4BDsETAAgAFIA
				RwBCBkUGRAZBACAGKgY5BjEGSgZBACAAUgBHAEIAIAYn
				BkQGOQYnBkUARwBlAG4AZQByAGkAYwAgAFIARwBCACAA
				UAByAG8AZgBpAGwAZXRleHQAAAAAQ29weXJpZ2h0IDIw
				MDcgQXBwbGUgSW5jLiwgYWxsIHJpZ2h0cyByZXNlcnZl
				ZC4AWFlaIAAAAAAAAPNSAAEAAAABFs9YWVogAAAAAAAA
				dE0AAD3uAAAD0FhZWiAAAAAAAABadQAArHMAABc0WFla
				IAAAAAAAACgaAAAVnwAAuDZjdXJ2AAAAAAAAAAEBzQAA
				c2YzMgAAAAAAAQxCAAAF3v//8yYAAAeSAAD9kf//+6L/
				//2jAAAD3AAAwGyAACBQOCQWDQeEQmFQuGQ2HQ+IRGHA
				KBv6JReMRmNQgMwIYkAAAcsC4DgwaA8DAcIu99Pl3NF8
				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
				AAcAAAfYAAAtPAAAOCoACAAIAAgACAABAAEAAQABAAAH
				2GFwcGwCIAAAbW50clJHQiBYWVogB9kAAgAZAAsAGgAL
				YWNzcEFQUEwAAAAAYXBwbAAAAAAAAAAAAAAAAAAAAAAA
				APbWAAEAAAAA0y1hcHBsAAAAAAAAAAAAAAAAAAAAAAAA
				AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALZGVz
				YwAAAQgAAABvZHNjbQAAAXgAAAWcY3BydAAABxQAAAA4
				d3RwdAAAB0wAAAAUclhZWgAAB2AAAAAUZ1hZWgAAB3QA
				AAAUYlhZWgAAB4gAAAAUclRSQwAAB5wAAAAOY2hhZAAA
				B6wAAAAsYlRSQwAAB5wAAAAOZ1RSQwAAB5wAAAAOZGVz
				YwAAAAAAAAAUR2VuZXJpYyBSR0IgUHJvZmlsZQAAAAAA
				AAAAAAAAFEdlbmVyaWMgUkdCIFByb2ZpbGUAAAAAAAAA
				AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
				AAAAAAAAAAAAAG1sdWMAAAAAAAAAHwAAAAxza1NLAAAA
				KAAAAYRkYURLAAAALgAAAaxjYUVTAAAAJAAAAdp2aVZO
				AAAAJAAAAf5wdEJSAAAAJgAAAiJ1a1VBAAAAKgAAAkhm
				ckZVAAAAKAAAAnJodUhVAAAAKAAAApp6aFRXAAAAFgAA
				AsJuYk5PAAAAJgAAAthjc0NaAAAAIgAAAv5oZUlMAAAA
				HgAAAyBpdElUAAAAKAAAAz5yb1JPAAAAJAAAA2ZkZURF
				AAAALAAAA4prb0tSAAAAFgAAA7ZzdlNFAAAAJgAAAth6
				aENOAAAAFgAAA8xqYUpQAAAAGgAAA+JlbEdSAAAAIgAA
				A/xwdFBPAAAAJgAABB5ubE5MAAAAKAAABERlc0VTAAAA
				JgAABB50aFRIAAAAJAAABGx0clRSAAAAIgAABJBmaUZJ
				AAAAKAAABLJockhSAAAAKAAABNpwbFBMAAAALAAABQJy
				dVJVAAAAIgAABS5hckVHAAAAJgAABVBlblVTAAAAJgAA
				BXYAVgFhAGUAbwBiAGUAYwBuAP0AIABSAEcAQgAgAHAA
				cgBvAGYAaQBsAEcAZQBuAGUAcgBlAGwAIABSAEcAQgAt
				AGIAZQBzAGsAcgBpAHYAZQBsAHMAZQBQAGUAcgBmAGkA
				bAAgAFIARwBCACAAZwBlAG4A6AByAGkAYwBDHqUAdQAg
				AGgA7ABuAGgAIABSAEcAQgAgAEMAaAB1AG4AZwBQAGUA
				cgBmAGkAbAAgAFIARwBCACAARwBlAG4A6QByAGkAYwBv
				BBcEMAQzBDAEOwRMBD0EOAQ5ACAEPwRABD4ERAQwBDkE
				OwAgAFIARwBCAFAAcgBvAGYAaQBsACAAZwDpAG4A6QBy
				AGkAcQB1AGUAIABSAFYAQgDBAGwAdABhAGwA4QBuAG8A
				cwAgAFIARwBCACAAcAByAG8AZgBpAGyQGnUoACAAUgBH
				AEIAIIJyX2ljz4/wAEcAZQBuAGUAcgBpAHMAawAgAFIA
				RwBCAC0AcAByAG8AZgBpAGwATwBiAGUAYwBuAP0AIABS
				AEcAQgAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAA
				UgBHAEIAIAXbBdwF3AXZAFAAcgBvAGYAaQBsAG8AIABS
				AEcAQgAgAGcAZQBuAGUAcgBpAGMAbwBQAHIAbwBmAGkA
				bAAgAFIARwBCACAAZwBlAG4AZQByAGkAYwBBAGwAbABn
				AGUAbQBlAGkAbgBlAHMAIABSAEcAQgAtAFAAcgBvAGYA
				aQBsx3y8GAAgAFIARwBCACDVBLhc0wzHfGZukBoAIABS
				AEcAQgAgY8+P8GWHTvZOAIIsACAAUgBHAEIAIDDXMO0w
				1TChMKQw6wOTA7UDvQO5A7oDzAAgA8ADwQO/A8YDrwO7
				ACAAUgBHAEIAUABlAHIAZgBpAGwAIABSAEcAQgAgAGcA
				ZQBuAOkAcgBpAGMAbwBBAGwAZwBlAG0AZQBlAG4AIABS
				AEcAQgAtAHAAcgBvAGYAaQBlAGwOQg4bDiMORA4fDiUO
				TAAgAFIARwBCACAOFw4xDkgOJw5EDhsARwBlAG4AZQBs
				ACAAUgBHAEIAIABQAHIAbwBmAGkAbABpAFkAbABlAGkA
				bgBlAG4AIABSAEcAQgAtAHAAcgBvAGYAaQBpAGwAaQBH
				AGUAbgBlAHIAaQENAGsAaQAgAFIARwBCACAAcAByAG8A
				ZgBpAGwAVQBuAGkAdwBlAHIAcwBhAGwAbgB5ACAAcABy
				AG8AZgBpAGwAIABSAEcAQgQeBDEESQQ4BDkAIAQ/BEAE
				PgREBDgEOwRMACAAUgBHAEIGRQZEBkEAIAYqBjkGMQZK
				BkEAIABSAEcAQgAgBicGRAY5BicGRQBHAGUAbgBlAHIA
				aQBjACAAUgBHAEIAIABQAHIAbwBmAGkAbABldGV4dAAA
				AABDb3B5cmlnaHQgMjAwNyBBcHBsZSBJbmMuLCBhbGwg
				cmlnaHRzIHJlc2VydmVkLgBYWVogAAAAAAAA81IAAQAA
				AAEWz1hZWiAAAAAAAAB0TQAAPe4AAAPQWFlaIAAAAAAA
				AFp1AACscwAAFzRYWVogAAAAAAAAKBoAABWfAAC4NmN1
				cnYAAAAAAAAAAQHNAABzZjMyAAAAAAABDEIAAAXe///z
				JgAAB5IAAP2R///7ov///aMAAAPcAADAbIAAIFA4JBYN
				B4RCYVC4MAYEBiUCwiXyCHQ8Q3m+Xy9Fc4m+p2m/XyvY
				ZJYXDgABD8FQ2njyRSEXQOFQlAn8/wA5m03n4YGAvzKu
				3091EBQYEAkCgoGQ2DA0IhECQoGw84F2pVA/Hs83jCBY
				AACQVqIxWvgODQSAH6/H7BQOAwEAGg8Xy80aaUQ2wMJB
				eGwNEgmAAOCgIBpQszCLhq8m+02ZBALTxEaxQPFcZWAs
				he+gABYTcZw9gJnkgkpI6w8KYE+39agDcQeB4EzECUSw
				5mMsFTBAIGRGIzaWz40yejDYCdaCM/agA7gYEQApUoww
				A6adAnm7gA/G51AaIRaAHCtUwgm0r0Yf4KBAOCSKimA0
				SYm0EJRI115zLTNoG+QAX4nj4ABoi6PwAAEtoAHgZJVg
				AdhTjagQEugfwBAIdZ5HacpHHgd53kQggZj2WxdgiDwZ
				CIFhSkIAAPG0YwAH8BC0nAHYrAAZYgjQAAIgQAi1H+uJ
				4lkO4AHmaRZSAhx7HseoAHue57FOdp2nYLSCBMLRHEwC
				YlDiM4AtbHitO2AMfgSBYDAAdp3tauKBAgAUnHAT8bnu
				dhvgAf5/octh+Oadp1jAeNCFCggMB+NI5A8LRLEaAR9r
				aBQCocfJ9oEe59Jwej/O2fwBrAdZorAWorrUtcYn61s+
				AEf51nUdIcyiehkoIBoTCKJwSDOXRYwwtoUAqhx6HwnB
				wu0gs+VABBslAtRjSKAABrSfx/T+owLgAdB2nqKh8HYb
				JWsgCYTBcEw2GgZh3n0BAChOCljWQfDOJTN4CgI0BgjP
				J5tXFMzlWszjviAAB1HsBJCHiaZRD6ggAgMB4KBiOJqG
				oAIGg5bMxHvS9pTfhx9HwnJSBsAB6HUbLOgM5QDALUAA
				gcEZUHgeh9Eufh2GkYSGgGG42GKZgIA4FoUmwbhzHUf5
				5nAcZ8ncbZu6cbRtH2dhqmyAJ3GWDB/n8fohn7sIZgFs
				gFn3kIYH2fh/HEhgAgeE4ZxifNNHsdJyrUe53oGnCTgD
				v4CcCCmyAECaNHzlKBb6k3GcbxyCICAAEQEAAAMAAAAB
				ABAAAAEBAAMAAAABABAAAAECAAMAAAAEAAA4/AEDAAMA
				AAABAAUAAAEGAAMAAAABAAIAAAEKAAMAAAABAAEAAAER
				AAQAAAABAAA1FAESAAMAAAABAAEAAAEVAAMAAAABAAQA
				AAEWAAMAAAABABAAAAEXAAQAAAABAAADFgEcAAMAAAAB
				AAEAAAEoAAMAAAABAAIAAAE9AAMAAAABAAIAAAFSAAMA
				AAABAAEAAAFTAAMAAAAEAAA5BIdzAAcAAAfYAAA5DAAA
				AAAACAAIAAgACAABAAEAAQABAAAH2GFwcGwCIAAAbW50
				clJHQiBYWVogB9kAAgAZAAsAGgALYWNzcEFQUEwAAAAA
				YXBwbAAAAAAAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1h
				cHBsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
				AAAAAAAAAAAAAAAAAAAAAAALZGVzYwAAAQgAAABvZHNj
				bQAAAXgAAAWcY3BydAAABxQAAAA4d3RwdAAAB0wAAAAU
				clhZWgAAB2AAAAAUZ1hZWgAAB3QAAAAUYlhZWgAAB4gA
				AAAUclRSQwAAB5wAAAAOY2hhZAAAB6wAAAAsYlRSQwAA
				B5wAAAAOZ1RSQwAAB5wAAAAOZGVzYwAAAAAAAAAUR2Vu
				ZXJpYyBSR0IgUHJvZmlsZQAAAAAAAAAAAAAAFEdlbmVy
				aWMgUkdCIFByb2ZpbGUAAAAAAAAAAAAAAAAAAAAAAAAA
				AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG1s
				dWMAAAAAAAAAHwAAAAxza1NLAAAAKAAAAYRkYURLAAAA
				LgAAAaxjYUVTAAAAJAAAAdp2aVZOAAAAJAAAAf5wdEJS
				AAAAJgAAAiJ1a1VBAAAAKgAAAkhmckZVAAAAKAAAAnJo
				dUhVAAAAKAAAApp6aFRXAAAAFgAAAsJuYk5PAAAAJgAA
				Athjc0NaAAAAIgAAAv5oZUlMAAAAHgAAAyBpdElUAAAA
				KAAAAz5yb1JPAAAAJAAAA2ZkZURFAAAALAAAA4prb0tS
				AAAAFgAAA7ZzdlNFAAAAJgAAAth6aENOAAAAFgAAA8xq
				YUpQAAAAGgAAA+JlbEdSAAAAIgAAA/xwdFBPAAAAJgAA
				BB5ubE5MAAAAKAAABERlc0VTAAAAJgAABB50aFRIAAAA
				JAAABGx0clRSAAAAIgAABJBmaUZJAAAAKAAABLJockhS
				AAAAKAAABNpwbFBMAAAALAAABQJydVJVAAAAIgAABS5h
				ckVHAAAAJgAABVBlblVTAAAAJgAABXYAVgFhAGUAbwBi
				AGUAYwBuAP0AIABSAEcAQgAgAHAAcgBvAGYAaQBsAEcA
				ZQBuAGUAcgBlAGwAIABSAEcAQgAtAGIAZQBzAGsAcgBp
				AHYAZQBsAHMAZQBQAGUAcgBmAGkAbAAgAFIARwBCACAA
				ZwBlAG4A6AByAGkAYwBDHqUAdQAgAGgA7ABuAGgAIABS
				AEcAQgAgAEMAaAB1AG4AZwBQAGUAcgBmAGkAbAAgAFIA
				RwBCACAARwBlAG4A6QByAGkAYwBvBBcEMAQzBDAEOwRM
				BD0EOAQ5ACAEPwRABD4ERAQwBDkEOwAgAFIARwBCAFAA
				cgBvAGYAaQBsACAAZwDpAG4A6QByAGkAcQB1AGUAIABS
				AFYAQgDBAGwAdABhAGwA4QBuAG8AcwAgAFIARwBCACAA
				cAByAG8AZgBpAGyQGnUoACAAUgBHAEIAIIJyX2ljz4/w
				AEcAZQBuAGUAcgBpAHMAawAgAFIARwBCAC0AcAByAG8A
				ZgBpAGwATwBiAGUAYwBuAP0AIABSAEcAQgAgAHAAcgBv
				AGYAaQBsBeQF6AXVBeQF2QXcACAAUgBHAEIAIAXbBdwF
				3AXZAFAAcgBvAGYAaQBsAG8AIABSAEcAQgAgAGcAZQBu
				AGUAcgBpAGMAbwBQAHIAbwBmAGkAbAAgAFIARwBCACAA
				ZwBlAG4AZQByAGkAYwBBAGwAbABnAGUAbQBlAGkAbgBl
				AHMAIABSAEcAQgAtAFAAcgBvAGYAaQBsx3y8GAAgAFIA
				RwBCACDVBLhc0wzHfGZukBoAIABSAEcAQgAgY8+P8GWH
				TvZOAIIsACAAUgBHAEIAIDDXMO0w1TChMKQw6wOTA7UD
				vQO5A7oDzAAgA8ADwQO/A8YDrwO7ACAAUgBHAEIAUABl
				AHIAZgBpAGwAIABSAEcAQgAgAGcAZQBuAOkAcgBpAGMA
				bwBBAGwAZwBlAG0AZQBlAG4AIABSAEcAQgAtAHAAcgBv
				AGYAaQBlAGwOQg4bDiMORA4fDiUOTAAgAFIARwBCACAO
				Fw4xDkgOJw5EDhsARwBlAG4AZQBsACAAUgBHAEIAIABQ
				AHIAbwBmAGkAbABpAFkAbABlAGkAbgBlAG4AIABSAEcA
				QgAtAHAAcgBvAGYAaQBpAGwAaQBHAGUAbgBlAHIAaQEN
				AGsAaQAgAFIARwBCACAAcAByAG8AZgBpAGwAVQBuAGkA
				dwBlAHIAcwBhAGwAbgB5ACAAcAByAG8AZgBpAGwAIABS
				AEcAQgQeBDEESQQ4BDkAIAQ/BEAEPgREBDgEOwRMACAA
				UgBHAEIGRQZEBkEAIAYqBjkGMQZKBkEAIABSAEcAQgAg
				BicGRAY5BicGRQBHAGUAbgBlAHIAaQBjACAAUgBHAEIA
				IABQAHIAbwBmAGkAbABldGV4dAAAAABDb3B5cmlnaHQg
				MjAwNyBBcHBsZSBJbmMuLCBhbGwgcmlnaHRzIHJlc2Vy
				dmVkLgBYWVogAAAAAAAA81IAAQAAAAEWz1hZWiAAAAAA
				AAB0TQAAPe4AAAPQWFlaIAAAAAAAAFp1AACscwAAFzRY
				WVogAAAAAAAAKBoAABWfAAC4NmN1cnYAAAAAAAAAAQHN
				AABzZjMyAAAAAAABDEIAAAXe///zJgAAB5IAAP2R///7
				ov///aMAAAPcAADAbA==
				</data>
				<key>ModificationDate</key>
				<real>568291967.22791898</real>
				<key>Name</key>
				<string>Record Simulator</string>
				<key>Triggers</key>
				<array>
					<dict>
						<key>FireType</key>
						<string>Pressed</string>
						<key>KeyCode</key>
						<integer>15</integer>
						<key>MacroTriggerType</key>
						<string>HotKey</string>
						<key>Modifiers</key>
						<integer>256</integer>
					</dict>
				</array>
				<key>UID</key>
				<string>7A39B0BF-B4D2-4D58-8806-29FBE4D9205E</string>
			</dict>
		</array>
		<key>Name</key>
		<string>Simulator</string>
		<key>Targeting</key>
		<dict>
			<key>Targeting</key>
			<string>Included</string>
			<key>TargetingApps</key>
			<array>
				<dict>
					<key>BundleIdentifier</key>
					<string>com.apple.iphonesimulator</string>
					<key>Name</key>
					<string>Simulator</string>
					<key>NewFile</key>
					<string>/Applications/Xcode.app/Contents/Developer/Applications/Simulator.app</string>
				</dict>
			</array>
		</dict>
		<key>ToggleMacroUID</key>
		<string>0270BC6C-3FF2-4F9F-91A9-C56C96477C02</string>
		<key>UID</key>
		<string>3C9F8BB7-514B-44B8-AC8E-545DFB333407</string>
	</dict>
</array>
</plist>


================================================
FILE: utils/generateAlfred.php
================================================
#!/usr/bin/php
<?php

echo "Generating Alfred Workflow file...\n";

// Get the base directory of the repo.
$dir = dirname(dirname(__FILE__));
$workflow = $dir."/Record Simulator.alfredworkflow";

$script = file_get_contents($dir."/record-simulator.sh");
$encodedScript = htmlentities($script, ENT_NOQUOTES);
$alfredInfoBase = file_get_contents($dir."/utils/base.alfredworkflow/info.plist");
$alfredInfo = str_replace("#INSERT_SCRIPT#", $encodedScript, $alfredInfoBase);

$zip = new ZipArchive();
$filename = "./test112.zip";

if ($zip->open($workflow, ZipArchive::CREATE|ZipArchive::OVERWRITE) !== true)
{
    die("cannot open zip");
}

$zip->addFromString("info.plist", $alfredInfo);
$zip->addFile($dir."/utils/base.alfredworkflow/icon.png","icon.png");
$zip->close();

?>

================================================
FILE: utils/generateFiles.sh
================================================
#!/bin/bash

utilsDir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

$utilsDir/generateAlfred.php
$utilsDir/generateKM.php


================================================
FILE: utils/generateKM.php
================================================
#!/usr/bin/php
<?php

echo "Generating Keyboard Maestro kmmacros file...\n";

// Get the base directory of the repo.
$dir = dirname(dirname(__FILE__));

$script = file_get_contents($dir."/record-simulator.sh");
$encodedScript = htmlentities($script, ENT_NOQUOTES);
$kmmacroBase = file_get_contents($dir."/utils/base.kmmacros");
$kmmacro = str_replace("#INSERT_SCRIPT#", $encodedScript, $kmmacroBase);

file_put_contents($dir."/Record Simulator.kmmacros", $kmmacro);

?>
Download .txt
gitextract_16c15lv8/

├── LICENSE
├── README.md
├── Record Simulator.alfredworkflow
├── Record Simulator.kmmacros
├── record-simulator.sh
└── utils/
    ├── base.alfredworkflow/
    │   └── info.plist
    ├── base.kmmacros
    ├── generateAlfred.php
    ├── generateFiles.sh
    └── generateKM.php
Condensed preview — 10 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (76K chars).
[
  {
    "path": "LICENSE",
    "chars": 1077,
    "preview": "MIT License\n\nCopyright (c) 2019 Alex Stevenson-Price\n\nPermission is hereby granted, free of charge, to any person obtain"
  },
  {
    "path": "README.md",
    "chars": 2914,
    "preview": "# Record iOS Simulator\nA script to start and stop video recordings from the iOS Simulator as easily as taking a screensh"
  },
  {
    "path": "Record Simulator.kmmacros",
    "chars": 29263,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "record-simulator.sh",
    "chars": 2327,
    "preview": "#!/bin/bash\n\n# Starts and stops recording in the simulator\n\n# Set your prefered output directory here\noutputDirectory=~/"
  },
  {
    "path": "utils/base.alfredworkflow/info.plist",
    "chars": 4995,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "utils/base.kmmacros",
    "chars": 26897,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "utils/generateAlfred.php",
    "chars": 773,
    "preview": "#!/usr/bin/php\n<?php\n\necho \"Generating Alfred Workflow file...\\n\";\n\n// Get the base directory of the repo.\n$dir = dirnam"
  },
  {
    "path": "utils/generateFiles.sh",
    "chars": 125,
    "preview": "#!/bin/bash\n\nutilsDir=\"$(cd \"$(dirname \"${BASH_SOURCE[0]}\")\" && pwd)\"\n\n$utilsDir/generateAlfred.php\n$utilsDir/generateKM"
  },
  {
    "path": "utils/generateKM.php",
    "chars": 469,
    "preview": "#!/usr/bin/php\n<?php\n\necho \"Generating Keyboard Maestro kmmacros file...\\n\";\n\n// Get the base directory of the repo.\n$di"
  }
]

// ... and 1 more files (download for full content)

About this extraction

This page contains the full source code of the alexp2ad/record-ios-simulator GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 10 files (67.2 KB), approximately 36.6k tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!