KDE Desktop effects

Stephen Dowdy sdowdy at ucar.edu
Mon Sep 17 22:08:12 BST 2012

FWIW, since compositing issues come up frequently, this little bit
of shell is useful for troubleshooting compositing issues: (mainly
to verify that the latter results from running/active qdbus queries
match those you configured in kcmshell/files)

for key in Enabled DisableChecks AnimationSpeed Backend GLDirect GLMode GLVSync OpenGLIsUnsafe; do
    printf "kwinrc::Compositing::%s=%s\n" "${key}" "$(kreadconfig --file kwinrc --group "Compositing" --key "${key}")"
printf "kwin_compositing_active=$(qdbus org.kde.kwin /KWin org.kde.KWin.compositingActive | sort | tr '\n' ' ')\n"
printf "kwin_listed_effects=\n$(qdbus org.kde.kwin /KWin org.kde.KWin.listOfEffects | sed -e 's/kwin4_effect_//' | sort | tr '\n' ' ' | fmt -w72 | sed -e 's/^/    /')\n"
printf "kwin_loaded_effects=\n$(qdbus org.kde.kwin /KWin org.kde.KWin.loadedEffects | sed -e 's/kwin4_effect_//' | sort | tr '\n' ' ' | fmt -w72 | sed -e 's/^/    /')\n"

A lot of these compositing options don't exist past KDE 4.4.5 (where i initially tested this)

kwinrc::Compositing::DisableChecks=true  (this is the bit that keeps Kwin from aborting Compositing)
kwinrc::Compositing::AnimationSpeed=0    (instantaneous)
kwinrc::Compositing::OpenGLIsUnsafe=   (this exists in KDE later than Debian Squeeze i ran this on)
kwin_compositing_active=true       <--- reflects my file-based pref, so compositing is working as expected
    boxswitch coverswitch cube cubeslide desktopgrid dialogparent
    diminactive dimscreen explosion fade fadedesktop fallapart flipswitch
    highlightwindow invert login logout lookingglass magiclamp magnifier
    minimizeanimation mousemark presentwindows resize scalein shadow
    sharpen sheet showfps showpaint slide slideback slidingpopups
    snaphelper snow taskbarthumbnail thumbnailaside trackmouse translucency
    wobblywindows zoom
    desktopgrid dialogparent diminactive logout mousemark presentwindows
    shadow translucency

"loaded" effects appear to be the same as those "enabled" in the
"GUI, whereas listed" are those which are known/registered.

KDE 4.8 seems to have a new KWin method of "activeEffects", which on
my Debian Wheezy laptop shows only 'translucency', only ONE of the
list of effects i have enabled. (which is more accurately reflected
by the 'loadedEffects' method)


tr '\0' '\n' < /proc/$(pgrep kwin)/environ | sort | egrep '(^(KDE|KWIN)|GL)'

Will also help figure out if undesireable Environment Variables
somehow got into the KWin environment.  There's many things that
have been thrown around related to poor nVidia performance with
KDE/KWin, including the use of these environment variables:

KWIN_NVIDIA_HACK=1  (theres a whole .so devoted just to setting this var in KDE4.4)
# Pick one of these three sets of rendering options
export KWIN_COMPOSE="X"  # (Use XRender)
#export KWIN_COMPOSE="O"  # (Use OpenGL)
#export KWIN_COMPOSE="N"  # (Use None)

I've lost track of what each of them did/fixed/broke, and only
the first is still set in my environment (again, automatically by
But give those a try.  At one point
  KWIN_COMPOSE=X, --graphicssystem=raster
was much faster, but tended to have some nasty redraw problems.
(entire apps would fail to update their windows, re-exposed
regions wouldn't repaint, etc)

I ended up buying a new nVidia card, as the Quadro NVS295 that came with
my system just couldn't cut it.  I got a GeForce GT440 w/ 2GB Memory.  I have
found that the 2GB seems to make a big difference in my KDE experience.
(firefox seems to be the biggest offender, but then i often have 50-150
windows and 200-400 tabs).  I was typically running at 95-100% of memory-usage
(as shown by 'nvidia-smi') with 1GB card.

Stephen Dowdy  -  Systems Administrator  -  NCAR/RAL
303.497.2869   -  sdowdy at ucar.edu        -  http://www.ral.ucar.edu/~sdowdy/

This message is from the kde mailing list.
Account management:  https://mail.kde.org/mailman/listinfo/kde.
Archives: http://lists.kde.org/.
More info: http://www.kde.org/faq.html.

More information about the kde mailing list