I am already pretty happy with InspectDR. Can be tuned to be beautiful. One more question:
If I run the following script once all works fine:
using Plots; inspectdr()
InspectDR.defaults.xaxiscontrol_visible = false
x = 0:0.05:100
y = sin.(x)
p1 = plot(x, y, width=2, xtickfontsize=12, ytickfontsize=12, legendfontsize=12, legend=false)
pIDR = display(p1) # Display with InspectDR and keep plot object
resize!(pIDR.wnd, 1200, 700) # Resize GTK window directly
But if I run it a second time with the command:
include("plot.jl")
the window pops up in the background.
Is there anything I can do about it?
I use Ubuntu 18.04 (I believe you use the same). I have never seen that behaviour of windows popping up in the background.
That said, I have used Linux installations that popped up pretty much ALL new windows of an application in the background. I am unsure what setting causes Linux to do this (maybe it is a Gtk thing?).
Workaround
Since InspectDR is Gtk-based, you can try forcing the new window to the foreground using:
Gtk.present(pIDR.wnd) #Move window to foreground.
1 Like
I tried your suggestion, but it doesn’t work. Is there a way to translate this call to Julia:
gtk_window_set_keep_above(GTK_WINDOW(window), TRUE) brings the window on top, but without focus.
By the way, I am using both Ubuntu 18.04 and 20.04.
And perhaps the problem is that it appears minimized?
From the description of this call in the gtk docu:
“Asks to keep window
above, so that it stays on top. Note that you shouldn’t assume the window is definitely above afterward, because other entities (e.g. the user or [window manager][gtk-X11-arch]) could not keep it above, and not all window managers support keeping windows above.”
And the call itself should be a reasonable simple ccall like you find in gtk.jl/src/windows.jl
I personally would investigate this problem first myself. Seems to me like something is wrong with your environment – causing strange behaviours with Gtk.
That function does not appear to be ported over to the Gtk.jl package. Like @lobingera suggested, you would have to wrap the C-call it yourself if you want that functionality.
Though I’m pretty certain you should be looking into your Linux window manager (and/or Gtk installation). Looks like your problem resides there somewhere.
I can verify that the window appears on top as it should in Ubuntu 20.04 (lightdm&gnome) and Julia 1.7.2. I assume none of the other windows are set ‘always on top’?
Well, for me it does not appear on top as it should. But when I add the following call it works as expected:
using Gtk.ShortNames
G_.keep_above(pIDR.wnd, true)
1 Like