squalyl
./2 : sans doute, si, mais j'espérais une simple fonction documentée au début

Alors en effet, j'ai testé et ça a l'air de fonctionner (au moins sous CentOS, Java 7) :
import java.awt.Component ;
import java.lang.reflect.Field ;
import java.lang.reflect.Method ;
import javax.swing.JFrame ;
public class W
{
public static void main( String[] args )
throws Exception
{
JFrame jf= new JFrame() ;
jf.setBounds(50, 50, 150, 80) ;
jf.setTitle("Test Window") ;
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ;
jf.setVisible(true) ;
//http://elliotth.blogspot.fr/2007/08/transparent-java-windows-on-x11.html
//long windowId = peer.getWindow() ;
Long windowId ; {
Field peerField= Component.class.getDeclaredField("peer") ;
peerField.setAccessible(true) ;
Class<?> xWindowPeerClass= Class.forName("sun.awt.X11.XWindowPeer") ;
Method getWindowMethod= xWindowPeerClass.getMethod("getWindow", new Class[0]) ;
windowId= ((Long)getWindowMethod.invoke(peerField.get(jf), new Object[0])) ;
}
String cmd= "xdg-screensaver suspend 0x"+Long.toHexString(windowId) ;
System.out.println(cmd) ;
Runtime.getRuntime().exec(cmd) ;
System.out.println("0x"+Long.toHexString(windowId)) ;
}
}
Reste plus qu'à trouver un truc équivalent sous OSX

Merci !
PS :
xdg-screensaver status pour connaître l'état du système, et on remarque que tout est rétabli à la fermeture de la fenêtre. On peut aussi (et c'est sans doute une bonne idée ?) faire un
xdg-screensaver resume windowId en fermant la fenêtre.