Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 07 Dec 2004 17:30:18 -0700
From:      Danny MacMillan <flowers@users.sourceforge.net>
To:        Mark Jayson Alvarez <jay2xra@yahoo.com>
Cc:        freebsd-questions@freebsd.org
Subject:   Re: This is a cool shell prompt question
Message-ID:  <20041208003018.GA834@procyon.nekulturny.org>
In-Reply-To: <20041124092452.34756.qmail@web51603.mail.yahoo.com>
References:  <20041124092452.34756.qmail@web51603.mail.yahoo.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Nov 24, 2004 at 02:24:51AM -0700, Mark Jayson Alvarez wrote:
> Good day!
>  I'm just wondrin if its possible for me to run
> applications at boot time but on another terminal. I
> find it cool to have a huge digital clock (grdc)
> running on background so that I can just shift to
> another terminal whenever I want to know the time.
> Actually, all I really want is a clock that is
> continuously ticking whatever I may be doing(in
> terminal window). I've already learned how to set my
> prompt to multiple lines and also displaying my
> current working directory. But now, I want it even
> more informative displaying a ticking digital clock in
> my shell prompt like the one i'm seeing in my kde
> system tray right now.
>    Is it possible?. Thanks.

This is a job for GNU Screen!

Actually, this is the least of screen's abilities, but it does give you
exactly what you want (plus more!) and it doesn't depend on what shell
or other program you are running in the terminal.

1. Install GNU Screen ( /usr/ports/misc/screen )
2. Create ~/.screenrc containing the following:
# Delta applied to /usr/local/etc/screenrc

startup_message off
escape ^\\\
defscrollback 2048
hardstatus on
hardstatus alwayslastline
hardstatus string "%{.bW}%-w%{.rW}%n %t%{-}%+w %=%{..G} %H %{..Y} %Y/%m/%d %0c:%s "
nethack on
msgwait 1
msgminwait 1

Most of this is optional; these are the settings I use.  The most
important thing for the ticking clock are the hardstatus lines; the
longest has almost certainly wrapped.

3. Now when you log in, your first command should be something like:

screen -S main -xRR

( man screen for alternative approaches )

Now use your computer as you ordinarily would.  You'll have to 'exit'
twice to log out; the first exits screen and the second exits the
spawning shell.

Or, you can:

4. Run screen automagically in every interactive shell.

How exactly to do this depends on your shell and other configuration;
I do it by putting the following at the very end of my .zshrc ( I use
the Z Shell, and have no .zlogin or .zlogout ):

if [ ! $TERM = "screen" ]; then
  exec screen -S main -xRR
fi

Now screen is login-shelly; it runs automagically in every terminal
session and you will automagically be logged out when screen exits.
There are implications to having it run this way (take note of the
'exec' above).  Anyway, there are heaps of information available
regarding screen, google for 'gnu screen' to find it.

-- 
Danny



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20041208003018.GA834>