xfce4-genmon-plugin - Generic Monitor Plugin

This plugin cyclically spawns the indicated script/program, captures its output (stdout) and displays the resulting string into the panel. The string can also contain markup to displayed an formatted text, image/icon, a bar, a button, and a personalized tooltip.

Important Note about version 4.2.0

In version 4.2.0, the backend settings have been migrated from rc files to xfconf. Individual plugin settings will not be automatically migrated to xfconf and each plugin will need to be manually re-configured. A script has been developed (https://gitlab.xfce.org/panel-plugins/xfce4-genmon-plugin/-/blob/master/scripts/migrate_to_xfconf.sh) that can offer assistance for the migration.

Screenshots

Genmon Configuration/Properties Dialog Window
Genmon Configuration/Properties Dialog Window

Genmon About Screen Window
Genmon About Screen Window

Back To Top


Usage

  1. Right-click on the added plugin, select Properties to open the settings window.

If you want the plugin to display only text (original version), enter the command in the Command field of the Properties section of the plugin. Otherwise, xml tags are used to display content on the plugin.

XML Tags

If you want the plugin to display a personalized Text, Image, Icon, Tooltip or Bar, you should develop (or get) a script returning a XML string, and enter the path of this script in the Command field of the Property section of the plugin.

The XML tags which can be used:

If None of the tags are detected in the result of the command, the plugin reverts to its original behavior (displaying the result of the command).

Example Script (system stats)

Here is an example of a genmon plugin displaying basic system stats (cpu, memory, harddrive usage) using the <icon>, <txt>, <txtclick> and <tool> xml tags:

systemstats.sh
#!/bin/sh
 
ICON=utilities-system-monitor
PARTITION=sda2
 
# get CPU info
CPU=$(cat <(grep 'cpu ' /proc/stat) <(sleep 1 && grep 'cpu ' /proc/stat) | awk -v RS="" '{printf("%02d", ($13-$2+$15-$4)*100/($13-$2+$15-$4+$16-$5))}')
CPULOAD=$(uptime | tr -s " " | cut -d' ' -f9-)
TOPCPU=$(ps aux --no-headers | awk '{print $3 " "  $11}' | sort -rn | head -n 5)
 
# get memory info
MEMTOT=$(cat /proc/meminfo | grep MemTotal | awk '{printf ("% 0.1f", $2/1024000)}')
MEMAVA=$(cat /proc/meminfo | grep MemAvailable | awk '{printf ("%0.1f", $2/1024000)}')
MEMUSAGE=$(free | grep Mem | awk '{printf("%02d",  $3/$2 * 100.0)}')
MEMUSAGE2=$(echo "$MEMTOT GB in use")
MEMUSED=$(echo "scale=2;($MEMTOT - $MEMAVA)" | bc)
TOPMEM=$(ps aux --no-headers | awk '{print $4 " "  $11}' | sort -rn | head -n 5)
 
# get hard drive usage info 
HD=$(df -hl /dev/$PARTITION | grep $PARTITION | awk '{printf ("%02d", $5)}' | sed -e 's/%//')
HDUSED=$(df -hl /dev/$PARTITION | grep $PARTITION | awk '{print $3}' | sed -e 's/G//')
HDSIZE=$(df -hl /dev/$PARTITION | grep $PARTITION | awk '{print $2}' | sed -e 's/G//')
TOPHD=$(df -hl /dev/$PARTITION | tail -1)
 
# do the genmon
echo "<icon>$ICON</icon><iconclick>xfce4-taskmanager</iconclick>"
echo "<txt> $CPU | $MEMUSAGE | $HD </txt><txtclick>xfce4-taskmanager</txtclick>"
echo "<tool>-=CPU $CPULOAD=-
$TOPCPU
 
-=MEM: $MEMUSED of $MEMUSAGE2=-
$TOPMEM
 
-=HD usage: $HDUSED of $HDSIZE GB in use=-
$TOPHD</tool>"
 
exit 0

Genmon syststats.sh Script Example
Genmon syststats.sh Script Example

Additional genmon scripts can be found in the following online repositories (special thanks to the individual developers for creating them):

Back To Top


Advanced Features

Pango Text Markup Support

Both the <txt> and <tool> tags support Pango Markups. See: https://docs.gtk.org/Pango/pango_markup.html. With Pango markups, you can change text attributes like font colour, weight, size, etc, in your output string. To do so, use the <span></span> (or any convenience) tag within the <txt></txt> or <tool></tool> tags. For example, to display the output in bold red and italic, you could use something like:

echo "<txt><span weight='Bold' fgcolor='Red'><i>Test</i></span></txt>"

Result:

Genmon Pango Markup Support Example
Genmon Pango Markup Support Example

Refer to the previous link for information on all of the properties that can be set.

Refreshing the plugin

As of version 3.99, the xfce4-genmon-plugin supports xfce4-panel plugin-event functionality to remotely force the plugin to refresh. To refresh the plugin, issue the command:

xfce4-panel --plugin-event=genmon-X:refresh:bool:true    

where “genmon-X” is the widget name of the particular genmon instance. To get this name, go to the panel properties screen and on the Items tab, hover your mouse over the genmon plugin to get it's internal name.

As of version 4.2.0, an “Update Now” menu item was added to the plugin right-click menu to immediately update the plugin (this does not reset the timer):

Genmon 'Update Now' Menu Item
Genmon 'Update Now' Menu Item

Enhanced Gtk3 CSS Styling Capabilities

As of version 4.0.1, CSS styling capabilities have been enhanced by providing style classes for all elements of the plugin that can be styled via themes or individual overrides (~/.config/gtk-3.0/gtk.css). For more information, see: https://gitlab.xfce.org/panel-plugins/xfce4-genmon-plugin/-/blob/master/CSS%20Styling.txt.

And as of version 4.2.0, this plugin also supports CSS tags (special thanks to @stergem) that allow you to tweak the plugin css directly from within the command/script using <css></css> tags. For example:

#!/bin/bash
# set Label = Hello
echo "<txt>There</txt>"
echo "<txtclick>mousepad</txtclick>"
echo "<css>.genmon_valuebutton {background-color:red; color:yellow} .genmon_label {color:green}</css>"
echo "<tool>Hello there</tool>"

Result:
Genmon Enhanced Gtk3 CSS Styling Capabilities Example

Back To Top


Latest Release

Read the CHANGELOG

Back to Top


Source code repository

https://gitlab.xfce.org/panel-plugins/xfce4-genmon-plugin


Reporting Bugs

Back To Top


Return to xfce4-panel Main Documentation Page