Hi,
there's a primitive (92) which can be used to resize the display of Squeak. The primitive is called from DisplayScreen class >> #depth:width:height:fullscreen:. It's comment says: "Force Squeak's window (if there's one) into a new size and depth.".
On windows: Evaluating [DisplayScreen depth: 16 width: 1024 height: 580 fullscreen: true] will change the width and height on Windows, but the depth and fullscreen arguments are ignored. But that's acceptable, because there are other methods to set those (#newDepth: and #fullScreenMode:).
On unix: Evaluating [DisplayScreen depth: 16 width: 1024 height: 580 fullscreen: true] does nothing. The primitive is not implemented, it's just a stub that returns 0 - aka false. And that's a problem, because there's no way to resize the display.
We mostly use vm-display-null and RFB to control our remote images and we would like to resize the display. We have a shell script that accepts 3 parameters (image_file width height) and changes the stored display size of the image, but it's cumbersome to use, because we have to quit the image to use the script. So I changed the body of display_ioSetDisplayMode to the following:
setSavedWindowSize((w << 16) + (h & 0xFFFF)); return 1;
This implementation (mostly) behaves like the Windows version and would probably work for other unix display plugins and Mac too (IIRC on Mac this primitive is also unimplemented).
So I propose to change the minimal implementation of primitive 92 to this code (maybe with additional checks for the parameter values). This way we could have uniform behavior on all platforms.
Cheers, Levente