Conky::KDE Transparency::Monitoring Remote Machines

Having written an article about gkrellm and its usefulness as an onscreen system monitor, it is not the most modern looking, or prettiest of tools. If you want pretty, you can’t really go past conky. This is a bit of an ancient tool, but it can be infinitely configured to display information in any way imaginable and is highly scriptable, so you can display all sorts of wonderful information about your system and the outside world from cpu temperature, to weather forecasts to torrent download status.

However, there are a couple of issues with conky that I had trouble with when I tried to install it on my KDE systems. The first was that conky uses “pseudo” transparency. This means that it samples part of the background and draws it behind the display to give the illusion of trasparency. However, conky takes its background sample from the root window, and KDE now draws the desktop background as a plasma widget. The second issue was monitoring my remote systems. Conky is not yet network transparent, however, I understand network transparency is under development.

 

This article is not an article about how to configure conky itself. There are hundreds of articles all over the internets explaining how to do this. This article simply covers the two specific issues above.

Transparency on KDE

As stated above, KDE is not really set up for the kind of pseudo transparency that conky expects. It does not set its background to the root X window. Accordingly, to get transparency working, you need to set the current background to the same background as you are using on your KDE desktop. To do this, you’ll need the application feh. This should be available in the repositories of your distro. Once you have this, simply issue this command, which digs the wallpaper you are using on kde out of the kde config files and displays it on the root window:

feh --bg-scale "`grep 'wallpaper=' ~/.kde4/share/config/plasma-desktop-appletsrc | tail --bytes=+11`"

Once you’ve done this, you’ll need to set the own_window_type variable in your ~/.conkyrc file to override. One thing to bear in mind however, is that if you’re using KDE SC 4.5, this may not work – this has been tested on beta 2 at the time of writing this article. It works on my laptop, but for some reason not on two other desktops. So to remedy this, you’ll need to set the own_window_type variable to dock. If you set it to desktop, if you click on the desktop itself, conky disappears. If you set it to normal, you get a shadow underneath conky, which wrecks the illusion that conky is displayed directly on the desktop. If you set it to panel, all your windows will open very small and in the top left of the screen – rather weird.

Monitoring a Remote System

This can be done using the network transparency built into the X windowing system. X allows you to display windows from remote machines on the local machine, so for remote monitoring, you simply display the conky window from the remote machine on the local machine using X. We do this using the ssh protocol. One thing you may want to do is to set ssh to work without a password. Check out the howto here. Then you need to make sure that you can forward an X window over ssh. Accordingly you need to add, or change, the line in /etc/ssh/ssh_config to ForwardX11 yes. You should then be able to view conky on the local machine using the following command:

ssh -X <remote machine> conky

Obviously change to the ip address of the remote machine you want to monitor. The other obvious point is that you’ll need conky installed and configured on the remote machine.