-
-
Notifications
You must be signed in to change notification settings - Fork 660
FAQ
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.
No configuration file is created automatically. To generate the default one:
mkdir -p ~/.config/conky
conky -C > ~/.config/conky/conky.confSee Configuration for syntax details and Community Configs for user-submitted examples.
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.
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.
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.
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.pngNote
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.
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.
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.
See the Lua scripting guide which covers:
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.
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.
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
]]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.
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.
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.targetStartup 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 firstA .desktop file in ~/.config/autostart/ is often simpler on X11, as it
inherits the full session environment and runs after the desktop is drawn.
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=panelOr use a systemd user service (see above).
- Report bugs or request features on GitHub Issues
- Submit patches via Pull Requests
- See Contributing for guidelines