mizner
8/12/2016 - 3:51 AM

Fix docker quickstart terminal for iTerm2 version 2.9 and later

Fix docker quickstart terminal for iTerm2 version 2.9 and later

on write_to_file(this_data, target_file, append_data)
	try
		set the target_file to the target_file as string
		set the open_target_file to open for access file target_file with write permission
		if append_data is false then set eof of the open_target_file to 0
		write this_data to the open_target_file starting at eof
		close access the open_target_file
		return true
	on error
		try
			close access file target_file
		end try
		return false
	end try
end write_to_file


on alfred_script(q)
	
	-- Write the command to run to a file. This is done because Applescript quoting is impossible to get right, esp. for backslashes.
	write_to_file(q & return, POSIX file "/tmp/alfredscript", false)
	
	-- Create this file, which prevents iTerm2 from restoring a saved window arrangement.
	do shell script "touch ~/Library/Application' Support/iTerm/quiet'"
	
	-- Test cases:
	-- 1. iTerm2 running, has windows open. Should open a new window for Alfred command.
	-- 2. iTerm2 running, no windows open. Should open a new window for Alfred command.
	-- 3. iTerm2 not running, set to restores arrangement. Should not restore arrangement but open a new window for the Afred command.
	-- 4. iTerm2 not running. No windows to restore. Should open a single window for the Alfred command.
	-- 5. iTerm2 not running. Has windows to restore. Restores windows and then opens a new window for the Alfred command.
	
	-- Compose a script. This is necessary because compiling in a 'tell application' command causes the app to be launched, which would happen prior to the creation of the quiet file.
	set theScript to "
tell application \"iTerm.app\"
      if (exists current window) then
         	tell current window to create tab with default profile
		tell current session of current window
			write contents of file \"/tmp/alfredscript\"
		end tell
      else
		create window with default profile
		tell current session of current window
			write contents of file \"/tmp/alfredscript\"
		end tell
	end if
	activate
end tell"
	
	-- Invoke the script.
	run script theScript
	
	-- Clean up
	do shell script "rm -f ~/Library/Application' Support/iTerm/quiet' /tmp/alfredscript"
end alfred_script