Pgpanel is a handy desktop panel application (the 'pg' stands for 'perl-Gtk'). I wrote it as a replacement for the GNOME 1.4 panel when GNOME 1.4 became too old to use, since GNOME 2 is and has always been useless rubbish, and the kde kicker is more of a windows-style taskbar and doesn't really do what I want it to do (all the things the GNOME 1.4 panel used to do before GNOME 2 removed all the features). As the years have gone by I've added more and more features and I now reckon it is the best panel application available. If you want status bar widgets (or whatever those things are called) then you might still want to run kicker or something like that too. Some features of my pgpanel application are:
- The buttons/launchers support the 'drop' of drag-n-drop.
- You can hide/show panels using your mouse scroll wheel.
- You can pin panels to stop them auto-hiding.
- You can have TEXT buttons so you DONT need to find an icon for every button and then remember what that icon is for.
- Each panel can contain child panels (like with the original GNOME 1.4 panel drawers), which can themselves contain other drawers, and so on.
- It can embed applications which understand the XEMBED protocol and take a '--embedded $xid' command line parameter.
(for example gkrellm if you apply my gkrellm patch, or pigs).
- As well as your standard launchers for just clicking and launching applications, it has a configurable item which you can use to assign actions to different events. For example I have one that runs dcop commands on scroll wheel events to tell amarok to change songs, and a click to toggle the playlist.
- While some parts of the application are less than 'polished', they nevertheless get the job done which is more than can be said about most rubbishy GNOME applications which concentrate on looking nice ('nice' to GNOME users at least ; when I see one of these empty user GNOME interfaces with with no configurability, I can't help to think 'uughh'. Their lack of functionality is uglier than any cluttered but useful GUI that I can think of ).
I wrote most of pgpanel a few years ago and have used it ever since,both at work and at home, so it has had a very good workout.
(Though it does still have a few minor problems).
Bugs
- The panel dragging/moving behaves a bit strangely when you have multiple xinerama heads. With some window managers it behaves better than with others.
- Sometimes drawered panels show in the wrong spot immediately after startup, but they go back to their proper spot if you mouse over them.
Requirements
- It is a perl script, so you need to have perl installed.
- The Gtk-Perl perl GTK bindings. Do a search for Gtk-Perl or perl-GTK. The gentoo ebuild goes by the name of gtk2-perl.
- An installation of GTK (GNOME rubbish is NOT required).
Downloads
Software downloads are released under the
GNU GPL.
All downloads and related files are released "as is" and their use is entirely at your own risk.
- Version 20070311 (Gtk2):
pgpanel2-20070311(approx 160 KB)
I do have an old Gtk1 version also which I will put up here sometime. A few of the features of the current version are missing.
- pgpanel-wizard (for creating new configurations).
pgpanel-wizard
It creates a very simple single-panel config file for you.
Installation
Install it into it's own directory somewhere like /opt/pgpanel2
Make sure that directory is in your path and then run pgpanel-wizard.
For example:
$> PATH=/opt/pgpanel2 pgpanel-wizard
The wizard will show a dialog asking you to enter a new name for your panel.
If you enter for example 'pgpanel-example' it will create a pgpanel config directory ~/.pgpanel-example
Then, make a symlink in /opt/pgpanel2/ using the part of the name after 'pgpanel-' like this:
$> cd /opt/pgpanel2
$> ln -s run run-example
Then you can run the pgpanel like:
$> /opt/pgpanel2/run-example -quiet &
You can follow these instructions multiple times with different names to create multiple pgpanel configurations.
For example, I have:
- one I use from within a VNC server.
- one I use for most of the panels on my main desktop.
- one I use just for embedding gkrellm.
- one I use just for my DVB/TV controls.
However one instance of pgpanel may be enough for you as each one is not limited to displaying a single panel.
Screenshots
Here are some screenshots in a mock screen layout. I was going to use javascript here to make the child panels show/hide like they do in real life, but it is too late and I have to go to bed.
And here is a screenshot of a pgpanel embedding gkrellm. In this screenshot it is configured with only a 1-pixel border. You can see that it is embedded in a pgpanel though from the pin (the green bdot) at the bottom. The wicked thing about pgpanel is that you can embed something like gkrellm and have auto hide on with a width of 1 pixel, and then just use the mouse scroll wheel to show/hide it. If you really want it to stay around for a while you can pin it (or increase the hide delay).
Here are some screenshots of the settings dialogs and item editors.
Global prefs:
Panel prefs:
Item prefs:
Preference documentation / instructions
Here I will describe what the various settings do, and how the embedding etc works, when I get around to it.