I am guessing that for realtime blur a pixmap which has to be transferred over the graphics bus every frame is not going to be very quick. Also to blur what is underneath that graphic you either need a copy of the backbuffer drawn in main memory or downloaded, over the graphics bus, to combine it with your blur pixmap. Plus you have to calculate the blurring on a per-pixel basis with the cpu instead of the gpu. We're not exactly talking realtime speed here.
What you could do is have an RGBA texture, read the backbuffer into it with something like glCopyTexSubImage2D(), then draw a `mesh` grid of quads that are textured using the grabbed screen, the vertices of which you can animate to make the whole screen content morph/wobble/stretch to create a liquidy effect. It should be fast enough for realtime full-screen. It wouldn't do any blurring, though. To blur you could take that texture and draw it small, then grab it back and draw it fullsize, so that you use the filtering/smoothing to create a blur effect.
What you could do is have an RGBA texture, read the backbuffer into it with something like glCopyTexSubImage2D(), then draw a `mesh` grid of quads that are textured using the grabbed screen, the vertices of which you can animate to make the whole screen content morph/wobble/stretch to create a liquidy effect. It should be fast enough for realtime full-screen. It wouldn't do any blurring, though. To blur you could take that texture and draw it small, then grab it back and draw it fullsize, so that you use the filtering/smoothing to create a blur effect.