Here's one way to do it: First, create your output window like this:
CreateDocument[Dynamic[theGraphic], WindowSize -> {500, 500}];
CreateDocument
has a lot of options (use Options
, not all of them are listed in the Documentation article), I just added WindowSize
here because you asked about it. Maybe you can set the window position as well, although I can't seem to find it right now. (But that would ensure that the output window can't be moved.)
Anyway, the output window will now update theGraphic
dynamically, so you can do this:
theGraphic = ListPlot[RandomReal[{0, 1}, {20, 20}]];
Alternatively, if you want to change the behaviour of all Graphics
objects, you could do this:
$Post = (If[TrueQ[Head[#] == Graphics], theGraphic = #;, #] &);
And now an expression like ListPlot[RandomReal[{0, 1}, {20, 20}]]
will change theGraphic
and therefore trigger an update in your plot window.
I'm not sure if this is what you were looking for... It's a rather clumsy solution but maybe it'll get you started.