Perl applets extend a platform-independent desktop panel
Games for Speculators

© cornelius, Fotolia
One panel has a neat collection of applets and another has spectacular looks – but a combination of the two is rare. Now help draws nigh for the desktop: PerlPanel is extensible with do-it-yourself widgets.
Regardless of whether you use Gnome or KDE, every desktop offers panels. They dock at the bottom or top of your screen, giving a home to menus and icons for launching programs, showing active applications in taskbars, or helping you switch between virtual desktops. The aim of the PerlPanel project is to use Perl to provide a platform-independent panel. At the same time, PerlPanel aims to let users add their own applets, simply by hashing up a couple of scripts.
Trial Run
On Ubuntu, you can install PerlPanel and the Perl modules on which it depends by typing sudo apt-get install perlpanel at the command line. To take it for a trial run, type /usr/bin/perlpanel. Figure 1 shows the panel GUI at the bottom of the desktop.
If the space at the bottom of the screen is already occupied by another panel, you can move it to the right or left border, or just ditch it if you feel brave enough to burn some bridges behind you.
"Ticker" Widget
If you would like to keep track of share prices, a standard application might not be the best option for you as share price ticker windows tend to hide other applications. Instead, a panel applet might be the ideal choice for the budding investor as it lets you keep a constant eye on the latest share price developments, no matter which application you are currently working with. To allow this to happen, the applet checks the share prices you are interested in by querying Yahoo Finance every 5 minutes and displays the results on screen (the ticker symbols to watch are stored in a local configuration file, ~/.ticker-rc, in your home directory). The applet ignores comment and empty lines in the configuration file and expects a ticker symbol in every line. Figure 1 shows the applet display for selected prices in the panel on the desktop.
The getquote script in Listing 1 queries the Yahoo server to reel in share prices; it expects a list of share symbols on the command line, and outputs the latest share prices line by line. The applet code proper is shown in Listing 2, Ticker.pm. The applet simply parses the configuration file, calls the getquote script at five minute intervals, and refreshes the display in the PerlPanel with the returned values. If an impatient user clicks the applet instead, it assumes they can't wait until the next update; in this case, the applet rushes off to ask the Yahoo server and updates the panel display straight away.
Listing 1
getquote
Get Those Quotes!
The share symbols passed in to getquote at the command line are stored in the @ARGV array in typical Perl style. The getcustomquote function in the Finance::YahooQuote module retrieves the share prices from the Yahoo server, specifying that it is only interested in the fields Symbol (the share name symbol specified at the command line), and Last Trade (Price Only). Without this restriction, Yahoo would return a whole bunch of data the applet doesn't need at every getquote call, so it's better to say up front what you need and what you don't.
If a transmission error occurs, a single value with an error message is returned; if the query is successful, Yahoo returns an array whose entries are pointers to arrays with the symbol and last trade values. Line 18 checks if the returned results really are two-column entries and bails out immediately if not. Line 5 sets a timeout of 60 seconds; if a network error occurs, this will prevent the script from waiting for ever. Share prices that reach the script are sent to its standard output by the for loop in Line 23. and formatted as Symbol Last-Trade on every line of output.
Buy this article as PDF
(incl. VAT)
Buy Linux Magazine
News
-
Another New Linux Laptop has Arrived
Slimbook has released a monster of a Linux gaming laptop.
-
Mozilla VPN Now Available for Linux
The promised subscription-based VPN service from Mozilla is now available for the Linux platform.
-
Wayland and New App Menu Coming to KDE
The 2021 roadmap for the KDE desktop environment includes some exciting features and improvements.
-
Deepin 20.1 has Arrived
Debian-based Deepin 20.1 has been released with some interesting new features.
-
CloudLinux Commits Over 1 Million Dollars to CentOS Replacement
An open source, drop-in replacement for CentOS is on its way.
-
Linux Mint 20.1 Beta has Been Released
The first beta of Linux Mint, Ulyssa, is now available for downloading.
-
Manjaro Linux 20.2 has Been Unleashed
The latest iteration of Manjaro Linux has been released with a few interesting new features.
-
Patreon Project Looks to Bring Linux to Apple Silicon
Developer Hector Martin has created a patreon page to fund his work on developing a port of Linux for Apple Silicon Macs.
-
A New Chrome OS-Like Ubuntu Remix is Now Available
Ubuntu Web looks to be your Chrome OS alternative.
-
System76 Refreshes the Galago Pro Laptop
Linux hardware maker has revamped one of their most popular laptops.