One of the neatest things with Linux (Unix too) is the screen command. But before I explain what it is, let me first explain why I like it.
Many of you know that I spend a great deal of my time in IRC (of course, I am in forums and on IM just as much, but those don’t pertain here). I used XChat as my IRC client of choice, as do most Linux IRC users. It worked. It is loaded with features, and the GUI is just sweet. However, what sucked, is when I went to work, I would have to exit the program at home, and launch it at work. Thus disconnecting my sessions, and losing any coversation that I might be interested in while logged off. In walk screen.
First, I have SSH server setup on every Linux box in my home office. Which means that I can access any computer at home regardless of location. This is nice, because in my setup, my server is running on some pretty old hardware, yet I have another desktop and laptop all in the network that are more up-to-date hardware-wise, and respond better to what I need done.
At home, I mainly do everything on my bed-rested laptop (he’s not going places anymore). This includes IRC. So, instead of using xChat, like I have been previously, I now use Irssi (lots of other people enjoy using BitchX, since it is older, and better supported- either console-based IRC client work great here). But before I launch Irssi, I launch screen.
The reason being, when I get to work, I now just SSH into my laptop, detach the previous screen session, and reattach it where I am sitting, and I see the lovely Irssi (or BitchX) session just as if I were sitting at home at my retired laptop. When I leave, I just close the window, and reattach my screen session when I get home, thus never missing anything important, because I never log off. In other words, I am always connect to my IRC channels all the time, and whenever I want to jump in, I just deattach the screen session and attach it to my current location. This, of course, works for any console-based program.
How does it work? Well, it “is a full screen window manager that multiplexes a physical terminal between several processes” (-GNU screen page). Basically, it is a virtual terminal that extends to any client that wishes to connect. It creates a “window” with a shell, and works just as if you were sitting behind a regular terminal. So, launching console-based programs can be “seen” from any location any time, as long as screen session is running. All that is required is deattaching the screen and reattaching it to your new location. All windows will be forwarded and will run normally.
Again, why is this so cool? Well, for a number of reasons- the first being that I never lose a conversation in IRC. I am in a number of channels and connected to at least 4 different IRC servers. Mainly the channels I hang out in are technical-related, but I do have a few private channels for family and friends. Heck, there is even one for this blog. I host some meetings on IRC and I attend meetings being involved officially with the Ubuntu project. So it is critical for me that I don’t miss a thing.