How to automate starting terminal instances for specific tasks

Solution 1:

Since you're clicking the Terminal icon, I assume you're using gnome-terminal.

I got a list of options by using gnome-terminal --help at the command line and reading from there.

Building on maco's answer, I might suggest something like this:

gnome-terminal --window --title=Log -e "tail -f /var/log/syslog" --window --title=Output --working-directory=output --window --active --title=Dev --working-directory=dev/project

This example starts three windows (though you could pass --tab for tabs) and sets the working directories (relative to home) and titles for each, starts the tail command in one and makes the third window active.

Of course you may prefer to use separate lines to launch each window, particularly if you have many arguments.

Another useful thing to do, once you have your windows arranged to your liking, is to use

gnome-terminal --save-config=FILE

This creates a configuration file with information on all open terminal windows and tabs (including the titles, working directories, and so forth). Launching gnome-terminal with the --load-config option will then recreate your layout.

A lot of developers who work with multiple terminals like to use Terminator as it adds features such as a grid layout and keyboard shortcuts.

Solution 2:

Whatever terminal emulator you're using should be able to accept a command as an argument. For example:

gnome-terminal -e "tail -f /var/log/syslog"

Just add such commands to your autostart in System -> Preferences -> Sessions (Ubuntu) or System Settings -> Autostart (Kubuntu)

Solution 3:

You could also automate that using a script. I recommend reading the Advanced Bash Scripting Guide or the Bash Programming HOWTO, along with the man page for whichever terminal you're using.

Here's a simple example:

$ vi your-script
#!/bin/bash
gnome-terminal -e "tail -f /var/log/syslog"
gnome-terminal --working-directory=/foo/bar
gnome-terminal --whatever-else

Then just make it executable:

$ chmod +x your-script