Merrit / nyrna

Suspend games and applications.
https://nyrna.merritt.codes
GNU General Public License v3.0
950 stars 17 forks source link

Hotkey to suspend an application doesn't seem to work? #220

Closed zarif98 closed 2 months ago

zarif98 commented 3 months ago

I just tried using this software to suspend Doom but it seems like it doesn't really like taking the hotkey I'm passing in. Any ideas on what I should do or where I'm going wrong?

Merrit commented 3 months ago

Does it work through the interface, and just not the hotkey?

Linux or Windows? Which version of Doom?

Check the logs under the Settings menu, paste results here.

zarif98 commented 2 months ago

Sorry for the late response but I am testing Doom 2016 atm. This is what I set my hotkey as here: image

I was able to suspend Doom 2016 when the game was going through the intro video but not when in gameplay. I also am not able to suspend the game when pausing either.

Here are the logs:

WARNING ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── WARNING │ #0 ActiveWindow._suspend (package:nyrna/active_window/src/active_window.dart:86) WARNING │ #1 <asynchronous suspension> WARNING ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ WARNING │ ⚠️ Active window is Nyrna, not suspending. WARNING └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ERROR ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ERROR │ #0 ActiveWindow.toggle (package:nyrna/active_window/src/active_window.dart:38) ERROR │ #1 <asynchronous suspension> ERROR ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ERROR │ ⛔ Failed to suspend successfully. ERROR └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── WARNING ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── WARNING │ #0 ActiveWindow._suspend (package:nyrna/active_window/src/active_window.dart:86) WARNING │ #1 <asynchronous suspension> WARNING ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ WARNING │ ⚠️ Active window is Nyrna, not suspending. WARNING └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ERROR ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ERROR │ #0 ActiveWindow.toggle (package:nyrna/active_window/src/active_window.dart:38) ERROR │ #1 <asynchronous suspension> ERROR ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ERROR │ ⛔ Failed to suspend successfully. ERROR └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── WARNING ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── WARNING │ #0 ActiveWindow._suspend (package:nyrna/active_window/src/active_window.dart:86) WARNING │ #1 <asynchronous suspension> WARNING ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ WARNING │ ⚠️ Active window is Nyrna, not suspending. WARNING └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ERROR ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ERROR │ #0 ActiveWindow.toggle (package:nyrna/active_window/src/active_window.dart:38) ERROR │ #1 <asynchronous suspension> ERROR ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ERROR │ ⛔ Failed to suspend successfully. ERROR └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── WARNING ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── WARNING │ #0 ActiveWindow._suspend (package:nyrna/active_window/src/active_window.dart:86) WARNING │ #1 <asynchronous suspension> WARNING ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ WARNING │ ⚠️ Active window is Nyrna, not suspending. WARNING └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ERROR ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ERROR │ #0 ActiveWindow.toggle (package:nyrna/active_window/src/active_window.dart:38) ERROR │ #1 <asynchronous suspension> ERROR ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ERROR │ ⛔ Failed to suspend successfully. ERROR └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── WARNING ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── WARNING │ #0 ActiveWindow._suspend (package:nyrna/active_window/src/active_window.dart:86) WARNING │ #1 <asynchronous suspension> WARNING ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ WARNING │ ⚠️ Active window is Nyrna, not suspending. WARNING └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ERROR ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ERROR │ #0 ActiveWindow.toggle (package:nyrna/active_window/src/active_window.dart:38) ERROR │ #1 <asynchronous suspension> ERROR ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ERROR │ ⛔ Failed to suspend successfully. ERROR └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── WARNING ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── WARNING │ #0 ActiveWindow._suspend (package:nyrna/active_window/src/active_window.dart:86) WARNING │ #1 <asynchronous suspension> WARNING ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ WARNING │ ⚠️ Active window is Nyrna, not suspending. WARNING └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ERROR ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ERROR │ #0 ActiveWindow.toggle (package:nyrna/active_window/src/active_window.dart:38) ERROR │ #1 <asynchronous suspension> ERROR ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ERROR │ ⛔ Failed to suspend successfully. ERROR └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── WARNING ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── WARNING │ #0 ActiveWindow._suspend (package:nyrna/active_window/src/active_window.dart:86) WARNING │ #1 <asynchronous suspension> WARNING ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ WARNING │ ⚠️ Active window is Nyrna, not suspending. WARNING └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ERROR ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ERROR │ #0 ActiveWindow.toggle (package:nyrna/active_window/src/active_window.dart:38) ERROR │ #1 <asynchronous suspension> ERROR ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ERROR │ ⛔ Failed to suspend successfully. ERROR └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── WARNING ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── WARNING │ #0 ActiveWindow._suspend (package:nyrna/active_window/src/active_window.dart:86) WARNING │ #1 <asynchronous suspension> WARNING ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ WARNING │ ⚠️ Active window is Nyrna, not suspending. WARNING └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ERROR ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ERROR │ #0 ActiveWindow.toggle (package:nyrna/active_window/src/active_window.dart:38) ERROR │ #1 <asynchronous suspension> ERROR ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ERROR │ ⛔ Failed to suspend successfully. ERROR └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── WARNING ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── WARNING │ #0 ActiveWindow._suspend (package:nyrna/active_window/src/active_window.dart:86) WARNING │ #1 <asynchronous suspension> WARNING ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ WARNING │ ⚠️ Active window is Nyrna, not suspending. WARNING └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ERROR ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ERROR │ #0 ActiveWindow.toggle (package:nyrna/active_window/src/active_window.dart:38) ERROR │ #1 <asynchronous suspension> ERROR ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ERROR │ ⛔ Failed to suspend successfully. ERROR └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Merrit commented 2 months ago

If you just Alt+Tab to the Nyrna window, and click the card for Doom - does it suspend/resume successfully?

Merrit commented 2 months ago

Please try running Nyrna as Admin, and see if it works then.

zarif98 commented 2 months ago

If you just Alt+Tab to the Nyrna window, and click the card for Doom - does it suspend/resume successfully?

Yes Alt-tabbing to Nyrna window does work!

Please try running Nyrna as Admin, and see if it works then.

Run it as admin and no dice. I do wonder if it's registering some in-game key that I'm not wary of. If there was a way to do three keys that might be able to circumvent but Nyrna does not support that feature.

Merrit commented 2 months ago

Please give this build a try:

Nyrna-Windows-Portable.zip

zarif98 commented 2 months ago

Hmmm no dice! Also ran it in admin mode.

Merrit commented 2 months ago

I looked into this, and it appears that on Windows apps/games are able to take exclusive control of the mouse & keyboard, so that nothing but built-in Windows shortcuts like Alt+Tab will work. Reference:

https://stackoverflow.com/a/23822429/9872288

We can see this with Doom 2016 in how it completely captures the mouse, even in borderless fullscreen or windowed mode.

So sadly Nyrna can't do anything about this for games that grab input in this manner; you can of course Alt+Tab to the Nyrna GUI to suspend, and you could also send a message to the developers of such games telling them that grabbing keyboard input in this manner causes you problems.

zarif98 commented 2 months ago

I do wonder if it's possible to add another hotkey to Windows that a user can set? Something that's not used by Windows and allows Nyrna to function on any application. Something like an alternative to Alt+tab?

Merrit commented 2 months ago

On Linux this is possible, on Windows it doesn't seem to be unfortunately.