qtmess is a program that has only one job: It pops up
a message on the screen and has an OK button to make it go
away forever, and a Snooze button to make it go away, but come
back later. Getting the popup to appear in the first place is a job
for some other tool, qtmess has nothing to do with that
part of the equation.
What makes qtmess unique (or annoying, depending on your point of
view) is the ability to use different themes to popup hard to ignore
messages.
qtmess is written in the Qt toolkit (recently converted to
version 4 from version 3), but despite using a multi platform
toolkit, has only been ported to linux at the moment.
qtmess has three optional arguments and also accepts
the normal X11 arguments (such as -geometry).
-
-theme theme-name
This names the theme qtmess will use to display
the message. The default theme (if no -theme option
is given) is named boring.
-
-snooze time
This specifies the amount of time the Snooze button
will wait before popping up the message again. The time can be
given in several units. The default is milliseconds, but you can
use the suffix sec for seconds, min for minutes, or
hr for hours. The default is 5min (5 minutes).
-
-stamp file
This option writes a timestamp to the specified file. (If you
use qtmess with remind , you can use the
timestamp file to determine which appointments you missed when
remind wasn't running.)
The remaining arguments are displayed one argument per line in the
message area of the popup.
Examples:
qtmess Your Message Here
qtmess -theme kilroy -snooze 30sec 'Your Message'
Here
A qtmess theme is simply a directory (the name of the
directory is the name of the theme). Inside the directory is a file
named qtmess.xml which is a very basic format xml
file defining how the popup window is drawn. The main parameters
defined in the file are the image to use for the popup background and
where to draw the text and the buttons inside that image. The image
files are typically other files in the same directory with the
xml file.
By default, qtmess will search for theme directories
in the path:
./
~/.qtmess/themes/
/usr/local/share/qtmess/themes/
/usr/share/qtmess/themes/
You can define the environment variable QTMESSPATH
with a : separated list of directories to override the
default.
The current themes provided are:
- boring A plain old boring message box as shown in the
first example above.
- frog A frog-like alarm clock I found on the web.
- kilroy The classic Kilroy Was Here graffiti. (Second
example above.)
- owl An Owl Mail theme based on an obscure little book
and movie series I'd best not mention if I don't want Warner
lawyers breathing down my neck :-).
- late A white rabbit who is late which I use for missed
reminders.
PUT TEXT HERE - explain how to write a qtmess.xml file (after
re-writing the parsing code and converting all the theme files to new
and improved format).
splitmess.c is shipped along with the qtmess source code
and is convenient to use along with remind for
popping up messages. The splitmess program accepts a
single argument and (without triggering any unsafe shell processing)
splits it into multiple arguments, recognizing spaces and quotes,
then exec s qtmess with those multiple arguments.
To simplify the remess script (below) splitmess also
takes the -b option to background the qtmess program it
execs.
catchup and remess are two perl scripts I use to
detect missed reminders that would have triggered when I wasn't
logged in an running remind in demon mode. The catchup script
is fairly general purpose. It prints the lines generated by running
remind -n -b1 which fall between the modification date of the
timestamp file and right now. The remess script is more of an
example of what kinds of things you can do with the output from
catchup. In my case, I modify the theme and geometry and popup
the missed reminders again.
In my X session startup code, I run:
catchup ~/.rs ~/.reminders | remess
remind -a -z -k'splitmess %s &' .reminders
Then, in my reminders file I can put stuff like this:
REM Fri AT 20:30 \
MSG -geometry +0+785 -theme kilroy -snooze 30sec \
'Take Out' Trash
There is no fancy installer or anything, but there is a top level
Makefile with some targets that work for me on Fedora
Core 6. You can edit the PREFIX macro in there to choose
to install some place other than /usr/local .
Unpack the tarball somewhere, cd into that directory and type:
make
and that should build qtmess down in the
qtmess directory and splitmess down in the
splitmess directory. You can test by cd ing
to the qtmess directory and running:
./qtmess -theme owl Hello World
To install everything in /usr/local , you could become
root and do this (back in the top level directory, not in the
qtmess subdirectory):
sudo make install
My (Tom Horsley's) home page is: http://tomhorsley.com/.
There you will find links to software, hardware, and the political
ideas which will someday save the world. (That's the real point of
the free software - to lure you to my home page and infect you with
my politics. :-)
The QtMess home page is: http://tomhorsley.com/software/qtmess/qtmess.html
Download latest source from: qt4mess-0.5alpha.tar.bz2
This is a work in progress, and I'm planning a complete rewrite of
the way the .xml theme definitions work, so I wouldn't
get too carried away with writing themes just yet...
|