Niels Horn's Blog

Random thoughts, tips & tricks about Slackware-Linux, Lego and Star Wars

Pop-up Dialog in Shell scripts

As I am an old-time computer user, I still prefer doing almost everything from the command line (CLI). I program almost everything in bash-scripts and schedule them with cron.
But of course I do use a graphical interface to read mail (although I have Alpine configured to read my mail from the CLI) and browse the internet (but I also use links a lot!).
Sometimes a bash script needs to give or get feedback, like reporting an error or just telling everything worked fine. Scheduled scripts normally write logs that can be checked later, or can even send e-mails to a user.
There is another, not so well-known option for interaction with the user, if you use KDE as your desktop environment: kdialog
It has many different options to choose from, so I’ll give just a few simple examples:

kdialog –title “Hey you…” –yesno “Do you like this popup?”

This pops up the following dialog:


(You’ll just have to believe that “Sim” = “Yes” and “Não” = “No” in Portuguese)
The result of which button the user clicked can be obtained by reading the ‘$?’ variable in bash: ‘0′ for the first button (Yes), ‘1′ for the second (’No’) and so on.

Another useful example is:

kdialog –title “Warning…” –warningyesno “Low on space on /var – Continue?”

which gives this result:

There are many more options to show radio buttons, check boxes, prompts for passwords, etc.

Now let’s use this in a small script:

#!/bin/bash
#
# Sample on how to use kdialog

ERR_SPACE=101

# Calculate needed space
needed=1000 # ok, we’re not calculating…

# Calculate space on $dev
dev=/var
space=800

# Test if we have sufficient space left
if [ $space -lt $needed ] ; then
   kdialog –title “Warning…” \
      –warningyesno “Low on space on $dev – Continue?”
   if [ $? -ne 0 ] ; then
      echo “Copy failed” >> log
      exit $ERR_SPACE
   fi
fi

# Copy here…

echo “Copy ok” >> log

# All done

After calling kdialog we test the answer with ‘$?’. If it is not zero, which means the user clicked on ‘no’, we exit the script with the defined error code.

For more options, simply enter ‘kdialog –help’ on the command line.

Happy scripting!

Bookmark and Share

This entry was posted on Monday, September 29th, 2008 at 16:46 and is filed under Linux, cli, shell scripting. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

Leave a Reply



XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

It may take some time for your comment to appear, it is not necessary to submit it again.