The bulk of the solution was to set focus-steal prevention to "none" from "low".
I have improved the behavior under kde-plasma (before WM parameter modifciation) by assigning all windows, including tty, to a window_group and settting WMhints.input = true;
On a single-window test the window receiving the plot stayed on top and returned focus to tty; when the five-window test was made, however, raising windows to top does not include over top of the parent (Konsole) - inconsistently.
I figured out what you said in the first E-mail and dumped the kwin parameters below; setting focus steal prevention to "none" does allow the program to work as desired, including
the .window_group hint and setting all of the hint.input to 'true' for the plot windows.
GDL has probably gotten away with a lackadaisical treatment of its child X-windows
because its been used in mostly forgiving window manager Linux environments - the window was created in {plplot} package and GDL has to merely do a few manipulations - nobody needs to become very expert in X-windows.
When I first discovered the project less than a year ago the focus issue was unresolved in even a simple Linux WM. Worse, rudimentary problems were present in the windows drivers.
The Interpreter/computation aspects have been quite robust for some time, but it had a ragged edge in the plotting.
Visually it is a primitive program and it is principally a terminal-driven program when
an analysis is in development, which is continuously. Computations are tried and
results printed or plotted, and re-plotted, and the computations arriving at the plot are to be copied from the interactive window to a source editor for later repetition. It can be very keyboard-intensive but with important visuals.
Now some experiments:
Setting the Hints.input = false (for the plot windows; the parent window has it set=-true) disallows iconization altogether.
With hints.input=true it needs to be reset to =false for the cursor routine to function
properly: however after that has happened, an iconized plot will return blank.
On Sat, Feb 14, 2015 at 5:51 AM, Thomas Lübking <thomas.luebking@gmail.com> wrote:
https://bugs.kde.org/show_bug.cgi?id=344063
Thomas Lübking <thomas.luebking@gmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Resolution|--- |INVALID
Status|UNCONFIRMED |RESOLVED
--- Comment #9 from Thomas Lübking <thomas.luebking@gmail.com> ---
There's nothing such as "UnsetFocus" - the client attempts to XSetInputFocus to
either some term_window (konsole, I assume?) or the root window.
UnsetFocus is a GDL function that (tries to) set input focus back to the root window. This is really a simple situation for the X-server as each of the (child) plot windows comes from a common parent; nothing complex is required.
First will be denied if the window which has the focus is not in a group with
the term_window and second will make KWin pass the focus to "the next
reasonable client"™, in doubt some helper to eg. keep global shortcut systems
alive (but you can obtain the focus from there w/ a subsequent XSetInputFocus
call)
OK I made them all of the same window group and behavior improved but was not consistent or predictable. The very first window raised and lowered as desired, obscuring the root window (and keeping focus back to the root, via UnsetFocus()), but in the test
running 5 smaller-sized windows some of them would raise just under the root, some not at all, difficult or impossible to characterize what behavior would result.
setting focus-steal-prevention = "none" alleviates *almost* all of the focus issues.
For the moment the bug remains invalid, since you question a feature that
exists for the very reason to protect the user from what gnudatalanguage
currently does - from the WM POV, it looks like a client tries to "wildly" pass
around (obtain) the input focus (crossing window groups and even process IDs)
ouch! Why should the WM be working against it !!
these tests were all rather immediately interactive, i.e. the screen is matching what the keyboard is doing - hence the concern over the focus: productivity is directly affected, by definition the user is right there providing more input.
===============
Remarks:
Although my problem may not be a "bug", in that it caused segfaults or such, it exposed a behavior in the window manager that departs considerably from what had been normal X-display behavior; without a solution it was indeed, a "grave" problem since it would have prevented my usage of the wm itself to operate GDL properly.
================================
Since I just today understood your original request for kwin info, I include the output below. If this text doesn't make it to the bug board I'll put a note there later after I can clarify the situation more succinctly.
Thanks for the help
Regards,
Greg Jung
greg@linux-gc09:~> qdbus org.kde.KWin /KWin supportInformation
KWin Support Information:
It provides information about the currently running instance, which options are used,
what OpenGL driver and which effects are running.
Please post the information provided underneath this introductory text to a paste bin service
==========================
Version
=======
KWin version: 4.11.15
KDE SC version (runtime): 4.14.4
KDE SC version (compile): 4.14.4
Qt Version: 4.8.6
Options
=======
focusPolicy: 0
nextFocusPrefersMouse: false
clickRaise: true
autoRaise: false
autoRaiseInterval: 0
delayFocusInterval: 0
shadeHover: false
shadeHoverInterval: 250
separateScreenFocus: false
placement: 4
focusPolicyIsReasonable: true
borderSnapZone: 10
windowSnapZone: 10
centerSnapZone: 0
snapOnlyWhenOverlapping: false
showDesktopIsMinimizeAll: false
rollOverDesktops: true
focusStealingPreventionLevel: 1
legacyFullscreenSupport: false
operationTitlebarDblClick:
commandActiveTitlebar1: 0
commandActiveTitlebar2: 30
commandActiveTitlebar3: 2
commandInactiveTitlebar1: 4
commandInactiveTitlebar2: 30
commandInactiveTitlebar3: 2
commandWindow1: 7
commandWindow2: 8
commandWindow3: 8
commandWindowWheel: 31
commandAll1: 10
commandAll2: 3
commandAll3: 14
keyCmdAllModKey: 16777251
showGeometryTip: false
condensedTitle: false
electricBorderMaximize: true
electricBorderTiling: true
electricBorderCornerRatio: 0.25
borderlessMaximizedWindows: false
killPingTimeout: 5000
hideUtilityWindowsForInactive: true
inactiveTabsSkipTaskbar: false
autogroupSimilarWindows: false
autogroupInForeground: true
compositingMode: 1
useCompositing: true
compositingInitialized: true
hiddenPreviews: 1
unredirectFullscreen: false
glSmoothScale: 2
colorCorrected: false
xrenderSmoothScale: false
maxFpsInterval: 16666666
refreshRate: 0
vBlankTime: 6000000
glDirect: true
glStrictBinding: true
glStrictBindingFollowsDriver: true
glLegacy: false
glCoreProfile: false
glPreferBufferSwap: 101
Screen Edges
============
desktopSwitching: false
desktopSwitchingMovingClients: false
cursorPushBackDistance:
timeThreshold: 150
reActivateThreshold: 350
actionTopLeft: 0
actionTop: 0
actionTopRight: 0
actionRight: 0
actionBottomRight: 0
actionBottom: 0
actionBottomLeft: 0
actionLeft: 0
Screens
=======
Multi-Head: no
Active screen follows mouse: no
Number of Screens: 1
Screen 0 Geometry: 0,0,1920x1080
Decoration
==========
Current Plugin: kwin3_oxygen
Shadows: yes
Alpha: yes
Announces Alpha: yes
Tabbing: yes
Frame Overlap: no
Blur Behind: no
Compositing
===========
Qt Graphics System: raster
Compositing is active
Compositing Type: OpenGL
OpenGL vendor string: nouveau
OpenGL renderer string: Gallium 0.4 on NVD9
OpenGL version string: 3.0 Mesa 10.3.7
OpenGL shading language version string: 1.30
Driver: Nouveau
GPU class: Unknown
OpenGL version: 3.0
GLSL version: 1.30
Mesa version: 10.3.7
X server version: 1.16.1
Linux kernel version: 3.16.7
Direct rendering: yes
Requires strict binding: yes
GLSL shaders: yes
Texture NPOT support: yes
Virtual Machine: no
OpenGL 2 Shaders are used
Painting blocks for vertical retrace: no
Loaded Effects:
---------------
kwin4_effect_zoom
kwin4_effect_slidingpopups
kwin4_effect_login
kwin4_effect_minimizeanimation
kwin4_effect_screenshot
kwin4_effect_slide
kwin4_effect_desktopgrid
kwin4_effect_translucency
kwin4_effect_maximize
kwin4_effect_fade
kwin4_effect_highlightwindow
kwin4_effect_taskbarthumbnail
kwin4_effect_dialogparent
kwin4_effect_presentwindows
kwin4_effect_blur
kwin4_effect_logout
kwin4_effect_dashboard
kwin4_effect_screenedge
kwin4_effect_startupfeedback
kwin4_effect_kscreen
Currently Active Effects:
-------------------------
kwin4_effect_blur
Effect Settings:
----------------
kwin4_effect_zoom:
zoomFactor: 1.2
mousePointer: 0
mouseTracking: 0
enableFocusTracking: false
followFocus: true
focusDelay: 350
moveFactor: 20
targetZoom: 1
kwin4_effect_slidingpopups:
fadeInTime: 250
fadeOutTime: 250
kwin4_effect_login:
kwin4_effect_minimizeanimation:
kwin4_effect_screenshot:
kwin4_effect_slide:
kwin4_effect_desktopgrid:
zoomDuration: 300
border: 10
desktopNameAlignment: 0
layoutMode: 0
customLayoutRows: 2
usePresentWindows: true
kwin4_effect_translucency:
kwin4_effect_maximize:
kwin4_effect_fade:
kwin4_effect_highlightwindow:
kwin4_effect_taskbarthumbnail:
kwin4_effect_dialogparent:
kwin4_effect_presentwindows:
layoutMode: 0
showCaptions: true
showIcons: true
doNotCloseWindows: false
ignoreMinimized: false
accuracy: 20
fillGaps: true
fadeDuration: 150
showPanel: false
leftButtonWindow: 1
rightButtonWindow: 2
middleButtonWindow: 0
leftButtonDesktop: 2
middleButtonDesktop: 0
rightButtonDesktop: 0
dragToClose: false
kwin4_effect_blur:
blurRadius: 12
cacheTexture: true
kwin4_effect_logout:
useBlur: true
kwin4_effect_dashboard:
brightness: 0.5
saturation: 0.5
blur: false
kwin4_effect_screenedge:
kwin4_effect_startupfeedback:
kwin4_effect_kscreen: