Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Use Transmit 5 to open in iTerm (instead of Terminal.app) as mentioned here https://library.panic.com/transmit5/open-in-terminal/
on openTerminal(location, remoteHost, serverPort)
tell application "System Events"
-- some versions might identify as "iTerm2" instead of "iTerm"
set isRunning to (exists (processes where name is "iTerm")) or (exists (processes where name is "iTerm2"))
end tell
tell application "iTerm"
activate
set targetTab to ""
set sshCommand to ""
if ((count of remoteHost) is greater than 0) then
set cdCommand to "cd " & location
set sshCommand to "ssh " & remoteHost
else
set cdCommand to "standalone"
end if
if (serverPort is greater than 0) then
set sshCommand to sshCommand & " -p " & serverPort
end if
set command to sshCommand
set hasNoWindows to ((count of windows) is 0)
if isRunning and hasNoWindows then
create window with default profile
end if
select first window
tell the first window
if isRunning and hasNoWindows is false then
create tab with default profile
end if
if ((count of sshCommand) is greater than 0) then
tell current session to write text sshCommand
tell current session to write text cdCommand
end if
end tell
end tell
end openTerminal
@niladam

This comment has been minimized.

Copy link

commented Oct 24, 2017

Exactly what i was looking for. Thanks, i've forked :)

@jkubler

This comment has been minimized.

Copy link

commented May 8, 2018

Works great, thanks!!

@aviman1109

This comment has been minimized.

Copy link

commented Sep 21, 2018

I tried to open a folder in Transmit , but its not work .
Only toke me to ~/
So I modified the txt . Make it work.
Is there anything wrong?

on openTerminal(location, remoteHost, serverPort)

tell application "System Events"
	-- some versions might identify as "iTerm2" instead of "iTerm"
	set isRunning to (exists (processes where name is "iTerm")) or (exists (processes where name is "iTerm2"))
end tell

tell application "iTerm"
	activate
	set targetTab to ""
	set sshCommand to ""

	if ((count of remoteHost) is greater than 0) then
		set cdCommand to " 'cd \"" & location & "\"; eval \"$SHELL -il\"'"
		set sshCommand to "ssh -t " & "'" & remoteHost & "'"
	else
		set cdCommand to "cd \"" & location & "\""
	end if

	if (serverPort is greater than 0) then
		set sshCommand to sshCommand & " -p " & serverPort
	end if

	set sshCommand to sshCommand & cdCommand

	set hasNoWindows to ((count of windows) is 0)
	if isRunning and hasNoWindows then
		create window with default profile
	end if
	select first window
	
	tell the first window
		if isRunning and hasNoWindows is false then
			create tab with default profile
		end if
		if ((count of sshCommand) is greater than 0) then
			tell current session to write text sshCommand
			
	end if

	end tell
end tell

end openTerminal

@uryossa

This comment has been minimized.

Copy link

commented Mar 27, 2019

@aviman1109
thx
it works at transmit 5 and iTerm2.

@donraj

This comment has been minimized.

Copy link

commented Oct 17, 2019

Thanks @johnfmorton.

@donraj

This comment has been minimized.

Copy link

commented Oct 18, 2019

BugFix:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.