Known Issues - Cationiz3r/polybar GitHub Wiki
This page lists some of the issues one can encounter when using polybar. Either quirks in polybar's behaviour or actual bugs we haven't been able to fix yet.
-
Running Polybar
Failed to get root pixmap, default to black (is there a wallpaper?)
Cannot find root pixmap, try a different tool to set the desktop background
- Huge Emojis
- Error While Loading Shared Libraries: libjsoncpp
- Setting Module Backgrounds when using Gradients
override-redirect
in i3- Mouse Interactions not Working in AwesomeWM
xkeyboard
module starts with 'us' layout at startup
- Compiling Polybar
Polybar prints this warning when there is no wallpaper set and pseudo-transparency = true
is set. Polybar will still
run but assume the wallpaper is all black.
Fix: We suggest setting a wallpaper with feh
or nitrogen
.
When you use a tool like ImageMagick (display -window root
) to set the wallpaper and have pseudo-transparency = true
set, polybar fails to find the wallpaper to use for making the bar transparent. It will assume the background is black
when rendering transparent colors.
Fix: As above, we suggest to set the wallpaper
with a tool like feh
or nitrogen
Problem: When using the Noto Emoji font, Emojis appear extremely big on the bar. Setting the size
property doesn't help.
Fix: Add the scale
property to the font definition in your config. For example font-7 = NotoEmoji:scale=10
. The larger the number the smaller the Emojis.
This issue was discovered in #905
.
Problem: When you update the jsoncpp
package, you might get the following error, when trying to run polybar:
polybar: error while loading shared libraries: libjsoncpp.so.XX: cannot open shared object file: No such file or directory
This issue occurs because jsoncpp
changes the name of their .so
file every release and there really isn't anything we can do about that.
Fix: You have to recompile polybar, so that it links to the new .so
file. If you use precompiled binaries from a repository, you either have to compile polybar yourself or contact the packager so that they can recompile polybar and publish a package with proper linkage.
Note: If you are using a program to automatically compile polybar for your (for example an AUR helper), just reinstalling may not solve this problem, the program may just reuse already compiled binaries. You need to make sure that polybar is recompiled. How to do that depends on the program, but most offer a way to force a rebuild or a way to clear the cache for certain packages.
Problem: When you use a gradient as your polybar background, explicitly setting any module's background color to whatever you have set as background-0
, either through the -background
setting or the %{B}
formatting tag, will not change the background color at all.
Workaround: If you want to explicitly set a module's (or parts of its) background to background-0
, use a color that is almost the same. E.g. if background-0
is #FFFF00
use #FFFF01
.
This behaviour was introduced in #831
, to resolve the issue described in #759
. There is no way to resolve this without some major code changes to the renderer.
Problem: i3 and polybar sometimes interact quite weirdly and often override-redirect = true
is needed to resolve it. This however makes i3 not reserve space for the polybar window, making other windows overlap polybar. There doesn't seem to be that much that we can do about this from polybar's side, because as soon as we need to use override-redirect = true
, we can't tell i3 to reserve space for the polybar window.
Workaround: The workaround that some people use, is to create a full-width fully transparent dummy bar on the same monitor and in the same position (with override-redirect = false
), so that i3 reserves space for this dummy bar, effectively also reserving space for our actual bar. The real bar may need to have wm-restack = i3
set for it to not overlap with fullscreen windows. Note: This requires that you have a composition manager running because the dummy bar may overlap the real bar.
If you are using i3-gaps (>= 4.17), you can set gaps top X
or gaps bottom X
in your i3 config to reserve space for the bar where X
is the number of pixels you want to reserve. Note: On multi-monitor setups this will be applied to all monitors.
Problem: For some reason AwesomeWM seems to prevent polybar from receiving mouse events on the bar once polybar is the focused window.
Solution: The only fix for this seems to be to set override-redirect = true
in your bar section. This tells AwesomeWM to not manage the polybar
window.
When polybar is started as part of a WM's startup routine, it is possible that the xkeyboard module mistakenly displays the layout as 'us' and then corrects itself once any key is pressed.
This is a known issue in the xcb library that we use to access the X server: https://gitlab.freedesktop.org/xorg/xserver/-/issues/257
Problem: On systems using Anaconda compiling polybar will likely fail with one of these error messages:
Missing required python module: xcbgen
ERROR: could not calc required_start_align of Struct "xcb.Setup"
Cairo was not compiled with support for the xcb backend
The general issue is that the libraries and programs provided by Anaconda cannot be used to build polybar in many cases.
Fix: The easiest fix is to uninstall Anaconda if you don't need it.
If you can't/don't want to uninstall Anaconda, we need to force polybar to not use any resources provided by Anaconda.
This can be done by temporarily removing any paths that point to anaconda from both the $PATH
and $PKG_CONFIG_PATH
environment variables in the terminal before building polybar.
People have reported that conda deactivate
does that for you for the currently open terminal. If that doesn't work, try doing it manually:
For example if your PATH
variable contains:
/home/<user>/anaconda2/bin:/home/<user>/bin:...:/usr/bin
Remove /home/<user>/anaconda2/bin
and reexport the variable:
export PATH=/home/<user>/bin:...:/usr/bin
Do the same thing for PKG_CONFIG_PATH
(though this variable is often already empty). Now you should be able to build
polybar with either the build.sh
script or cmake
and make
. Make sure that you do a clean build (redownload all
polybar sources).