TCL/TK windows black in ZOOM "share portion of screen" - tk-toolkit

I have a weird effect in ZOOM which only appears for TCL/TK windows.
Ubuntu 18.04, GNOME window manager. ZOOM version 5.10.3 (2778) (relatively new, I was forced to do an update, the problem is also new). TCL/TK 8.6.
I start a ZOOM session and share a "portion of screen" (Share - Advanced).
I run wish from the command line. I move the wish window into the shared screen portion.
For the client users of the ZOOM session, the wish window is visible if it has the focus.
When I move the focus to another window, e.g. a terminal, outside the shared screen portion, the clients only see a black region somewhat larger than the wish window (instead of the wish window).
When I move the focus to a window, e.g. a terminal, which is at least partly inside the shared screen portion, the wish window stays visible.
If I share the entire screen in ZOOM (which is not what I want for my purposes, though), the wish window stays visible.
This is so weird, I don't even have the slightest idea what is going on. What is special about TCL/TK windows that they go black in ZOOM, but only under these circumstances?

Related

Set work area or screen dimension for electron window on moving

I have an frameless window and i want to set default screen and this window must move only in to the this screen dimension.
For example
Look
This window only move in to "x" positions. I looked and tryed on "move" event but i failed. And this solution should work on cross platform.

disable full screen for neo4j-desktop-1.3.11-x86_64.AppImage

when I start neo4j from neo4j-desktop-1.3.11-x86_64.AppImage,
it starts in full screen. I then have to go to Neo4j Browser
(Graph Apps) to File->Quit to exit.
I'd like to start the Neo4j Desktop 1.3.11 in normal mode.
What should I do so that the desktop does not take the full
screen.
Thank you.
I can't get to File->Quit in full screen, are you sure? Maybe you maximized the window?
Use F11 to switch in and out of full screen mode.
Expanding the window to fill the entire screen is different, and controlled by resizing the window or using the maximize icon in the top right of the window frame.
For me on Ubuntu 20.02 it appears Neo4j remembers the window size/location each time I quit, so when you launch it again it restores to that size/location.
Try F11 and/or manually resizing the window as required, then exit the app, fingers crossed the window will open to the size and location you last moved it to.

Stack Windows Manager Program How-to's

I download the Stack Windows Manager from Microsoft store. Someone introduced it to me and said it is a great program.
Oddly, after installing it and setting it up, I cannot find out how to start using it? There is no instruction to show me how to at least organize my desktop into this "layout tool". Is there a video anywhere?
At the first launch on each screen it shows you a few layouts to select from.
After you made the selection, either use Win+Arrow keys to move windows around, or drag windows between areas with middle mouse button (usually it is also the scroll button).

Electron BrowserWindow shows taskbar when focused

My application is an overlay (alwaysOnTop) for a full screen game and when the user clicks on my overlay it takes focus and shows the taskbar on top of their game as well. Taking focus is fine, but I can't have the taskbar show.
It says in the BrowserWindow docs:
not a toolbox window which can not be focused on
Implying that it is possible to create a window which cannot be focused on.
Does anyone know how to create a toolbox window, or to simply avoid having the taskbar showing when clicking on the electron window?
I should mention I've tried setAlwaysOnTop and skipTaskbar. I also have transparent: true and frame: false.
The overlay I've created is the "Safelane, Midlane, Offlane" buttons. When I run the application it shows on top of the full screen app (Dota 2) like this:
After clicking on the interface the taskbar appears. It would be fine that the full screen app (Dota) loses focus, the task bar appears on top which breaks the continuity of the experience:
I would like the experience to stay like the first image--when the user clicks on anything in my overlay, the taskbar should not show.
Electron GitHub Issue
Additional Solution Info -- After using Gaafar's solution below
Setting kiosk: true in the setup does not seem to allow it to render transparent. Using setKiosk(true) within a setTimeout after the window has been opened seemed to work.
I also found that any windows using kiosk or fullscreen with transparency had rendering issue. It would render multiple times on top of itself and could not unrender items (display: none in css would do nothing). The way I fixed this was by using Electron Window Manager creating a single kiosk window with nothing in it and creating other non-kiosk windows with the HTML / CSS interfaces. The result:
All of the interfaces can be interacted with, mouse and keyboard.
Rendering happens as it does regularly in electron.
The fullscreen application below receives input through any transparent areas.
Taskbar never shows up on any input.
skipTaskbar: true is to prevent showing your app in the taskbar.
To hide the taskbar altogether use fullscreen or kiosk mode instead
fullscreen: true
or
kiosk: true
EDIT:
There are some issues open where fullscreen or kiosk modes prevent the transparency of the window.
A solution that works for me is to run with these flags --enable-transparent-visuals --disable-gpu
issue & solution: https://github.com/electron/electron/issues/2170#issuecomment-145942717
showInActive();
set your BrowserWindows, focusable: false
Im gonna post a solution some might be facing with full screening, I was facing this issue and wandering here and there, this StackOverflow post kept coming up.
So Im posting it here so people getting similar problems can get help.
When fullscreening taskbar getting in way.
When you fullscreen using mainWindow.setFullScreen(true) taskbar will get in way when you are on home (all windows minimized) in windows.
Here is the solution:
ipcMain.on("fullscreenon",()=>{
mainWindow.setAlwaysOnTop(true, 'screen-saver');
mainWindow.setFullScreen(true);
})
//The order of the commands is important below
//don't setAlwaysOnTop() before getting out of fullscreen.
ipcMain.on("fullscreenoff",()=>{
mainWindow.setFullScreen(false);
mainWindow.setAlwaysOnTop(true, 'floating')
})
Basically, by default setFullscreen uses the level: "floating". We need a higher level, "screen-saver" is the highest level I think.

Windows appearing off edge of screen (Delphi)

Windows in my application are popping up off the edge of the screen, and this of course is a problem because some of the windows are modal and can't be dismissed (you don't even know they are there).
I'm using the TurboPower Orpheus component which remembers the location and size of each form, then restores it when the form is shown again. It saves the size and placement in an INI file.
What can I do to prevent windows from ever showing off the side of the screen?
It's common for this sort of thing to happen if you use multiple monitors and then disconnect one, such as when undocking a laptop. Or if you dock a laptop to a screen with a higher resolution. Or use remote desktop, etc..
The remedy is to override the "remember my position" behavior with a sanity check, to see if the left+width exceeds the width of the screen (Screen.Monitors array, actually - thanks guys), and vice-versa for the top+height.
Ideally, you "bump" by subtracting the difference, so you're butting up against the edge that the window wanted to straddle.
Also, see if there are updates to Orpheus that fix this. If not, you can get the source, make the correction (optional), and contribute it back to the project. It's OSS, as I recall.
You may want to give a look at their DefaultMonitor property and read the code from TCustomForm.SetWindowToMonitor to see how to deal with positioning relatively to Screen.Monitors.
Use DefaultMonitor to associate a form with a particular monitor in a multi-monitor application. The following table lists the possible values:
Value Meaning
dmDesktop No attempt is made to position the form on a specific monitor.
dmPrimary The form is positioned on the first monitor listed in the global screen object's Monitors property.
dmMainForm The form appears on the same monitor as the application's main form.
dmActiveForm The form appears on the same monitor as the currently active form.
Note: DefaultMonitor has no effect if the application does not have a main form.
To recall the previous position of a form, without having it suddenly in an area which is no longer available (due to a plugged off screen or changed resolution), you just call
TForm.MakeFullyVisible;
That's it. See the documentation.

Resources