Script or launcher to setup multiple terminal tabs in different locations
Solution 1:
You can do this using GNOME terminator
which is a great terminal with, among other things, the ability to split panes horizontally or vertically.
Once you have installed terminator
you can set up a profile with your desired settings (instructions adapted from here):
-
Run
terminator
, and set up the layout you want. You can use Ctrl+Shift+E to split windows vertically and Ctrl+Shift+O (that's O as in oodles, not zero) to split horizontally. For this example, I have created a layout with 6 panes: -
Right click on the
terminator
window and chose "Preferences". Once the Preferences window is open, go to "Layouts" and click "Add": -
That will populate the Layout list with your new layout:
-
Find each of the terminals you have created in the layout, and click on them, then on the right enter the command you want to run in them on startup:
IMPORTANT: Note that the command is followed by
; bash
. If you don't do that the terminals will not be accessible since they will run the command you give and exit. You need to launch a shell after each command to be able to use the terminals.Once you have set all the commands click "Close" and then exit
terminator
. -
Open the
terminator
config file~/.config/terminator/config
and delete the section under layouts for the default config. Then change the name of the layout you created to default. It should look something like this:[global_config] [keybindings] [profiles] [[default]] [layouts] [[default]] [[[child0]]] position = 446:100 type = Window order = 0 parent = "" size = 885, 550 [[[child1]]] position = 444 type = HPaned order = 0 parent = child0 [[[child2]]] position = 275 type = VPaned order = 0 parent = child1 [[[child5]]] position = 219 type = HPaned order = 1 parent = child1 [[[child6]]] position = 275 type = VPaned order = 0 parent = child5 [[[child9]]] position = 275 type = VPaned order = 1 parent = child5 [[[terminal11]]] profile = default command = 'df -h; bash' type = Terminal order = 1 parent = child9 [[[terminal10]]] profile = default command = 'export foo="bar" && cd /var/www/; bash' type = Terminal order = 0 parent = child9 [[[terminal3]]] profile = default command = 'ssh -Yp 24222 [email protected]' type = Terminal order = 0 parent = child2 [[[terminal4]]] profile = default command = 'top; bash' type = Terminal order = 1 parent = child2 [[[terminal7]]] profile = default command = 'cd /etc; bash' type = Terminal order = 0 parent = child6 [[[terminal8]]] profile = default command = 'cd ~/dev; bash' type = Terminal order = 1 parent = child6 [plugins]
The final result is that when you run terminator
it will open with 6 panes, each of which has run or is running the commands you have specified:
Solution 2:
In order to have Terminator cd
into a directory on launch, the command to configure is:
cd ~/someFolder; bash
This opens a terminal in the location cd
ed to.
Actually, terdon does mention this in his post but it is buried in his wonderful mini-tutorial. It wasn't after I'd figured this out that I noticed it buried in his post, so I'm leaving this answer in order to emphasize.