Scripting GNU Screen
Every day when I come over to my computer, I type the same few things to get my GNU Screen windows set up properly. I give them names, and I always open them in the same order for a given project.
So I started looking into easy ways to script screen
.
Turns out, you can actually execute any screen command against a detached screen. The list of commands is pretty extensive too.
So a simple script to open two named screens might be as simple as:
$ screen title "window one" screen title "window two"
Or even more simply:
$ screen -t "window one" screen -t "window two"
Using the commands there, in addition to some other tools based on what you want
to start up, you can put together a completely reasonable script to start up
your screen session for a project. I like the idea of rather than executing the
things you want on startup, executing them with a comment before them, and then
starting them as needed. So if you wanted a rails server, instead of running
rails server
, you’d just run # rails server
. Then you can just hit up when
you want to actually start the server.
To run these scripts is a little tricky, but once you know how its easy:
$ screen -d -m -S <name> -c <script_path>
And then to re-attach to it:
$ screen -r <name>