Skip to content
Tin Švagelj edited this page May 3, 2026 · 13 revisions

Frequently Asked Questions

What is Conky?

Conky is a free, light-weight system monitor that displays information on your desktop. It runs on Linux and BSD, supporting both X11 and Wayland. Conky can show system stats, run custom scripts, and render graphics via Lua and Cairo.

Where is conky.conf?

No configuration file is created automatically. To generate the default one:

mkdir -p ~/.config/conky
conky -C > ~/.config/conky/conky.conf

See Configuration for syntax details and Community Configs for user-submitted examples.

Configuration syntax

Conky variables use the ${var arg1 arg2} syntax in the conky.text block. For example, ${cpu} shows CPU usage and ${audacious_bar 6 220} creates a bar with 6px height and 220px width. See the full variable reference for all available variables.

Conky won't stop flickering (X11)

This occurs when conky is drawing without double buffering. Compositors draw conky as a partly black window until next frame/update is fully drawn.

This means you need to set double_buffer = true.

Note

On Wayland this is the default behavior because all windows must double buffered by design. You don't need to specify this option - it will be ignored.

If the double buffer is not working your X11 installation is likely not loading the double buffer extension. Open up the Xorg configuration file (usually /etc/X11/xorg.conf) with your favourite text editor, and find the line that says: Section "Module". Then, after that line, add: Load "dbe", restart Xorg and enjoy.

Conky is not shown / disappears behind desktop

This usually happens when there's another application drawing a window on top of conky. This is a very common issue in X11 WMs that have desktop icons or an application like feh for drawing the background.

This means you should set own_window = true and use any window type other than own_window = "override" and own_window = "desktop". See window manager specific configuration for recommended settings per WM/DE.

Note

On Wayland own_window is always true, and own_window does nothing because all windows must either be normal or use a layer shell - allowing them to be drawn in the background. Conky uses bottom value here, so it should always be drawn above backgrounds.

Transparency doesn't work

Conky uses pseudo-transparency by reading the root window background. Some window managers place the background on a layer above the root window instead. Use a tool like feh to set the root background directly:

feh --bg-scale /path/to/wallpaper.png

Note

On Wayland, pseudo-transparency doesn't apply. Wayland always uses compositors for drawing applications and the application buffer always supports transparency. You can simply use own_window_colour with an alpha component to control the background transparency — the compositor handles the rest.

Can I run multiple Conky instances?

Yes. Conky reads a single config file per instance, but you can run multiple instances with different configs:

conky -c ~/.config/conky/left-panel.conf &
conky -c ~/.config/conky/right-panel.conf &

Note

Each instance is a separate process with its own variable cache — variables like cpu collect and cache data independently per instance. Keep concerns separated sensibly; a dozen separate instances will waste RAM on duplicated caches.

How can I run custom scripts?

Use ${exec} and related variables. ${exec cmd} runs on every update, ${execi interval cmd} runs at a fixed interval:

conky.text = [[
${exec whoami}
${execi 60 curl -s wttr.in/London?format="%t"}
]]

For more complex scripting with drawing capabilities, see the Lua scripting guide. For running shell commands from Lua with caching and timed execution, see Shell Integration.

How can I use Lua with Conky?

See the Lua scripting guide which covers:

  1. Loading and running Lua scripts
  2. Drawing with Cairo
  3. Shell integration
  4. Image rendering
  5. Mouse events

Conky doesn't work on GNOME Wayland

GNOME's Mutter compositor does not implement the wlr-layer-shell protocol that Conky uses to draw as a background widget on Wayland. This means Conky cannot run as a desktop overlay on GNOME Wayland.

Your options are:

  • Use GNOME on X11 — select the "GNOME on Xorg" session at login
  • Use a different compositor — Sway, Hyprland, Wayfire, and other wlr-based compositors all support layer-shell

Theoretically, Conky could be packaged as a GNOME Shell extension to work within Mutter's own extension API, but this would be a substantial undertaking. It's unlikely to happen.

${image} doesn't work on Wayland

The ${image} variable depends on Imlib2, which requires X11. On Wayland, render images using Lua instead — see Image Rendering for how to display raster images and SVGs via Cairo.

NVIDIA GPU monitoring on Wayland

The ${nvidia} variables use the XNVCtrl library which requires X11. On Wayland, use ${exec} with nvidia-smi as a workaround:

conky.text = [[
GPU: ${execi 5 nvidia-smi --query-gpu=utilization.gpu --format=csv,noheader,nounits}%
Temp: ${execi 5 nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader}°C
]]

HiDPI / display scaling

Conky does not automatically scale with system DPI settings. On HiDPI displays, you'll need to manually adjust font sizes, gap values, and graph dimensions in your configuration.

On X11, setting Xft.dpi in ~/.Xresources may help with font rendering:

Xft.dpi: 192

On Wayland, the compositor's scale factor affects the window buffer. Conky exposes conky_window.scale and conky_window.pixel_size from Lua for scripts that need to account for scaling — see Lua Integration for details.

Running Conky as a systemd service

When using Conky with a graphical output (the most common case), it needs access to a display server. A plain systemd --user service won't work without the right environment variables — DISPLAY for X11 or WAYLAND_DISPLAY for Wayland.

Note

Conky can also be built to output to the console, log files, or even run as an HTTP server — none of which need a display server.

On Wayland

Startup order is relatively forgiving — the compositor manages layering via layer-shell, so Conky doesn't need to care about what started before or after it. A basic service file works:

[Unit]
Description=Conky
After=graphical-session.target

[Service]
ExecStart=/usr/bin/conky -c %h/.config/conky/conky.conf
Restart=on-failure

[Install]
WantedBy=graphical-session.target

On X11

Startup order matters significantly. Conky reads the root window background for pseudo-transparency, so tools like feh or nitrogen must finish setting the wallpaper before Conky starts. graphical-session.target alone doesn't guarantee this — you may need to add explicit ordering:

[Unit]
Description=Conky
After=graphical-session.target
# If you use feh for wallpaper, add a delay or dependency to ensure it runs first

A .desktop file in ~/.config/autostart/ is often simpler on X11, as it inherits the full session environment and runs after the desktop is drawn.

KDE Plasma kills Conky on logout / session change

Plasma 6 terminates daemonized child processes when the session ends. Running conky -d from a startup script may cause Conky to be killed unexpectedly.

Use a .desktop file in ~/.config/autostart/ instead:

[Desktop Entry]
Type=Application
Name=Conky
Exec=conky -c /home/user/.config/conky/conky.conf
X-KDE-autostart-after=panel

Or use a systemd user service (see above).

How can I get involved?

Clone this wiki locally