Tuesday, February 27, 2007

Non-rectangular Windows Update




Updated to include support for OSX and linux.

While OSX doesn't actually use any native code to do the window mask, JNA support is there if it needed to. Source (and per-platform binaries) is available at http://jna.dev.java.net.

Update
Transparent version of the demo is available here.

4 comments:

Somatik said...

Ubuntu 6.10:

java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.javaws.Launcher.executeApplication(Launcher.java:1205)
at com.sun.javaws.Launcher.executeMainClass(Launcher.java:1151)
at com.sun.javaws.Launcher.doLaunchApp(Launcher.java:998)
at com.sun.javaws.Launcher.run(Launcher.java:105)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.UnsatisfiedLinkError: X11
at com.sun.jna.Function.find(Native Method)
at com.sun.jna.Function.(init)(Function.java:76)
at com.sun.jna.Function.(init)(Function.java:50)
at com.sun.jna.Library$Handler.invoke(Library.java:120)
at $Proxy0.XOpenDisplay(Unknown Source)
at com.sun.jna.examples.ShapedWindow.setWindowMask(ShapedWindow.java:226)
at com.sun.jna.examples.ShapedWindowDemo.main(ShapedWindowDemo.java:34)
... 9 more

technomage said...

Where's your libX11.so located? The jnlp file sets jna.library.path to /usr/X11R6/lib. It might be something different on your system.

Or you can ensure LD_LIBRARY_PATH includes libX11.so in your browser's environment.

Anonymous said...

this is very good stuff! I like the clock demo ;)

make sure to talk with Joshua at http://www.ab5k.org/ non-rectangular windows is a must for these desktop widgets!

-fred

technomage said...

NOTE: ubuntu users who don't have the developer X11 package installed will need to explicitly make a symlink so that dlopen can find the library in question:

ln -s /usr/lib/libX11.so.6 /usr/lib/libX11.so