Basically, I am using three computers: my laptop (ThinkPad X201s, awesome machine, but pabs told me not to post any more adverts for ThinkPads on Planet Debiang), my smartphone (Motorola Milestone, yes, that counts as a computer) and "random_pc" (for random as in my girlfriends or some other trusted (!!!) friends computer).

My laptop is running Debian GNU/Linux unstable with Xfce4.6, my smartphone is running Android 2.2.1 Froyo, my girlfriend has Ubuntu with GNOME, a friend runs Debian unstable with GNOME, another one Arch Linux with KDE4 and so on. And on all these machines I want be able to work, which means I have to read mail and rss, chat via IRC, JabberXMPP and ICQ, have a look at my to-do list, ssh into different machines, write some code, tweet and dent etc.

In the following series of posts I will describe how I can handle about 90% of my work on every (trusted) computer out there, using ssh, screen, mutt, irssi, BitlBee, newsbeuter etc.

As I am describing the setup as a "Desktop in a shell", let's start with a login- and desktop/window-manager: ssh+screen.

ssh

Obviously, you need a machine to ssh into it, where the "Desktop" will live on. For me, that's my home router/fileserver/vm-server dorei, running Debian GNU/Linux LennySqueeze with OpenSSH as a kind of "login manager" ;)

Yes, my user is allowed to login with a password instead of a public key. And well, that's all for the login-manager, no extra configuration needed.

screen

After logging in, I start my "window-manager" with screen -rd, -r for reattach a running screen session, -d for detach it if it is already attached somewhere else. Or I can start a new session by just typing screen. Inside the screen I have multiple windows (one can create new ones with ^A c) with all the needed software running. I can switch windows by pressing ^A N, N being the number of the window, ^A n for the next window, ^A p for the previous one or ^A ^a for the last one. Or I can get a window-list with ^A w. If needed, I can rename windows with ^A A, followed by the new name. That should be enough for almost everyone. Let's just add a window-list to the bottom (as you might have seen on GNOME, Xfce, KDE and even Windows ;) by adding the following to the ~/.screenrc:

Comments

Very interesting post. I have considered using screen but ran into some issue with the way Vim behaved so I’ve kept it on the back burner. I am looking forward to your post.

One question, are you running your initial screen session from a terminal emulator or the console? I am running XFCE4 on my Sid box which I log into to read my mail remotely with its terminal emulator. I know little about the terminfo settings in your screenrc so I don’t know if they will conflict in some way with XFCE4′s terminal.

Thanks!

evgeni
wrote on 2011-02-21 12:26:

I rarely use Vim, so no issues with that here :)

The initial session is usually started from my laptop via ssh using Xfce4 and it’s xfce4-terminal. So no conflicts here. And I must admit I have no clue what the terminfo stuff does, as my screenrc is based on some friends and these lines were just copied over.

I tried screen on my desktop and while I like your changes, there are still two issues that may keep me from using it. First is that I get no audible bell, i.e. PC speaker beep from within screen. Second is that attempting to navigate by word in Vim using Ctl-arrow results in some weird text manipulation. I was hurriedly replying to a message on Debian User so I didn’t investigate further.

Typically, I only use Mutt, or Midnight Commander, or Bash aliases on my remote login sessions so it isn’t critical that I keep a program running. That said, since switching Mutt to Maildir it does not seem to mind much if I leave the one on the desktop running and then work with mail via a remote login.

What editor do you use? I’m always looking for Mutt tips so your next post should be interesting.

I’m one of those people too, with mutt, newsbeuter etc. on the console. And generally happy with it, but…

Right now I use calcurse as calendar, however, I’m not really satisfied with it. I took a look at remind/wyrd, and even wrote the beginnings of a conversion-script from calcurse to remind, but there is one thing that this still lacks: caldave-support.

And on a related note, a way to synchronize address-books with mutt to whatever (e.g. kaddressbook, android, maybe via webdav) would also be very useful.

So in my opinion, the “console-desktop” just isn’t here right now ;)

Marcel
wrote on 2011-02-22 14:23:

Did you check out byobu? It is a screen wrapper that comes with a nice set of status messages and so on – no need to write your own .screenrc ;) It was written for Ubuntu but is in the Debian repos as well (but an older version of it).

evgeni
wrote on 2011-02-22 14:29:

Nope, didn’t know about byobu yet. Thanks for the tip, will check it out.

Send your comments to evgeni+blogcomments@golov.de and I will publish them here (if you want).