Does screenvisible/screenindex miss the screen when an app runs fullscreen?

Referring to this topic: Display a usesr prompt on a SPECIFIC screen where there are multiple screens

It works as intended i.e. prompts etc are shown on the main screen if targeted with screenvisible/screenindex, as long as apps don´t take up the fullscreen.

BUT when I run apps (eg Preview) in fullscreen mode, then the prompts show up again on secondary screen, even if I try to target the main screen.

I went through all indices (from 0 to 2), tried the "Mouse" argument in SCREENVISIBLE, Front, etc.

When Preview is the front window and runs in fullscreen mode, the prompts, alerts etc always show on the secondary screen.

Is there a way to fix the screen on which they show to the main screen even if an app runs in fullscreen (and thus the menu bar is hidden, which I assume is the problem?)?

I don't believe the SCREENVISIBLE or other functions change when an app is in full screen, but you probably can't place a window above a full screen app, so likely the system is just ignoring the location and putting it somewhere else.

Create a specific macro that shows the issue and I can possibly give more specific answers.

Thanks for your reply. Here is a test macro for my usecase:

Just to show what I am trying:

Two screens setup, e.g. Preview app in fullscreen mode on the main screen, some other app on the secondary (not fullscreen), call a KM script which prompts the user for some input before it proceeds with next actions.

That prompt always gets shown first on the secondary screen.

I can get it to my main screen with a different script, searching a screencapture and using mouse actions, but that´s very hacky.

Is there a way to show the prompt directly on the main screen even if app is in fullscreen?.

The Prompt for User Input window is not a Keyboard Maestro (editor) window.

So your actions will not do anything except maybe move around the editor window.

You need to use the Set Next Engine Window Position action. Maybe that will work, maybe not, I'm not sure, Full Screen mode does interesting things.

Yeah, in my trials it doesn't work, because it wont place the window over the full screen window. Even though you can drag it there afterwards, you can't use accessibility to move it there.

Full Screen mode is weird.

That makes sense now, ofc.

Unfortunately, I´m still stuck on macos 10.11 (el cap) for some legacy software reason and hence can´t run KM 10 and up and it looks "Set Next Engine Window Position" was added from KM 10 on up.

Looking to finally make the upgrade this year though so will keep this on my list.

Thanks for the feedback!

I would second Peter's comment that Full Screen mode is weird. Try leaving say a five pixel border instead of maximising the screen . \

See WindowDual A set of Macros for the INTERNAL/EXTERNAL display user. for ideas.

Or just fill the screen, instead of using actual Full Screen mode. Not quite as much real estate for the window itself, but every pixel of the display is covered and yet it still behaves like a normal display.

Full Screen Mode makes sense on a 13" laptop, maybe. But on a Mac with dual 27" displays where it blanks out the second display when invoked, I find it completely asinine.

Note: It only does this if you have "Displays have separate Spaces" disabled, which is not the default. But when that mode is enabled, you can't have a window that spans two displays, which I do quite often…sigh.

-rob.

Hello @hsohn :wave:

First of all you’re right the action mentioned by Peter was first introduced with the release of KM 10.

But there is a way you can do this kind of thing with KM 8/9 (don’t know which version you have:

  • Go to your Applications Folder
  • Perform a right Click on Keyboard Maestro
  • select the Menu Entry „Show Package Contents“
  • open the Contents Folder (the only one)
  • navigate to the MacOS Folder

In the MacOS Folder you will see the Keyboard Maestro Engine.app.

  • create an Alias of this application
  • copy it
  • navigate back to your Applications Folder and Paste using option command + V
  • rename the Alias by removing „ Alias“ from the end and leave edit mode (note the leading space- this needs to go bye bye, too)

Back in Keyboard Maestro create a new Macro that is only for Moving Windows In Keyboard Maestro Engine - my Tip here is to create a create a dedicated Macro Group for Macros like this one with the setting „ allowed in these applications“ and pointing to the Alias you’ve created earlier.

In the macro you can use the manipulate a window action like you demonstrated it in your macro above but don’t forget that it must be the app based version of the action (manipulate window in app …).

Now copy this macro as an execute Macro Action and place this just before every Prompt for user input or Prompt with list action or even Custom Html action that you need to move and activate the „asynchronous“ checkbox using the cogwheel …

It sometimes can tend to delay a little bit but trust me this should work … I’ve done this in the past and still do in my old systems on a VM …

If you want you can try to pause the position macro with an until condition that tests for a window in Keyboard Maestro Engine … this should be doable, too I guess ( I haven’t touched the macro I made for myself since I made it back in the days of using KM 8 a few years ago)

Hope this helps - feel free to ask if you don’t understand something.

Edit:

This method also works with the Display Text in a Window Action as well as with Scripting Actions when the output is set to the option „display result in a window“.

Greetings from Germany

Tobias