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):

  1. 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:

    enter image description here

  2. Right click on the terminator window and chose "Preferences". Once the Preferences window is open, go to "Layouts" and click "Add":

    enter image description here

  3. That will populate the Layout list with your new layout:

    enter image description here

  4. 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:

    enter image description here

    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.

  5. 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:

enter image description here

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 cded 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.