It’s often very useful to automate opening of multi panes with iTerm to execute many commands or getting access to many servers at the same time. This can be done through AppleScript.
You can copy this script and save it as multi-panes.scpt
#! /usr/bin/osascript
-- List actions to perform
set actions to {¬
{action:"echo 'I am the window 1'"}, ¬
{action:"echo 'I am the window 2'"}, ¬
{action:"echo 'I am the window 3'"}, ¬
{action:"echo 'I am the window 4'"}, ¬
{action:"echo 'I am the window 5'"}, ¬
{action:"echo 'I am the window 6'"}, ¬
{action:"echo 'I am the window 7'"}, ¬
{action:"echo 'I am the window 8'"} ¬
}
-- Count number of actions
set num_actions to count of actions
-- Set cols and lines
set num_cols to round (num_actions ^ 0.5)
set num_lines to round (num_actions / num_cols) rounding up
-- Start iTerm
tell application "iTerm"
activate
# Create new tab
tell current window
create tab with default profile
end tell
-- Prepare horizontal panes
repeat with i from 1 to num_lines
tell session 1 of current tab of current window
if i < num_lines then
split horizontally with default profile
end if
end tell
end repeat
-- Prepare vertical panes
set sessid to 1
repeat with i from 1 to num_lines
if i is not 1 then set sessid to sessid + num_cols
if i is not num_lines or num_actions is num_cols * num_lines then
set cols to num_cols - 1
else
set cols to (num_actions - ((num_lines - 1) * num_cols)) - 1
end if
repeat with j from 1 to (cols)
tell session sessid of current tab of current window
split vertically with default profile
end tell
end repeat
end repeat
-- Execute actions
repeat with i from 1 to num_actions
tell session i of current tab of current window
write text (action of item i of actions)
end tell
end repeat
end tell
Then, you just have to call the script directly:
# osascript multi-panes.scpt
And here is what you’re getting:

Feel free to add/remove/update the actions as needed!