flyingpie / windows-terminal-quake

Enable Quake-style dropdown for (almost) any application.
https://wtq.flyingpie.nl
MIT License
594 stars 39 forks source link

Cannot Use With Vertically Stacked Monitors #146

Closed jpotter23 closed 2 weeks ago

jpotter23 commented 3 weeks ago
/// How the terminal actually gets toggled on- and off the screen.
/// "Resize" (default) or "Move".
/// "Resize" should work on any setup, but may cause characters in the terminal to jump around after toggling.
/// "Move" keeps the size of the terminal constant, but moves the terminal off-screen to the top, which won't work great with vertically stacked monitors.
"ToggleMode": "Move",

Do you have a solution for the issue with vertically Stacked Monitors? I am unable to use the app becuase of this. Setting to resize seems to make no difference either.

Would it be possible to make the window opacity 100% as another method?

flyingpie commented 3 weeks ago

@jpotter23 Hey Jason, thank you for reaching out about this!

The "Move" method has not been implemented in version 2 (yet?), because it causes some pretty annoying issues in the apps themselves, such as text moving around in terminals and Electron apps specifically going haywire (lots of flickering and parts of the window not being repainted).

However, I am still looking for a way to properly support vertically-stacked monitors. One way I've come up with so far, is to vary the direction in which the app window is toggled on/off.

E.g. instead of moving off the top of the screen, moving off the bottom, or even off either side.

Another method could be to keep moving off the top until the top monitor has also been cleared, but that seems a little less clean imho.

Would this solve the issue for you, and do you have other suggestions?

jpotter23 commented 3 weeks ago

Indeed allowing control of the direct the app is moved to hide it would work for me.

Down would probably be the most reliable for people, but both down and right would work in my setup. Or even diagonally.

Thanks for your quick reply and interest in my personal issue!

flyingpie commented 3 weeks ago

@jpotter23 You're welcome! I appreciate hearing from people's fun and interesting ways of using the software, and you taking the time to report back about it :)

A plan is to have the direction be based on what monitor the window is on, something like so: image

But I'll start with one where it's merely based on a setting (so single direction for everything, all the time), and I'll try to have a prerelease ready this weekend.

Diagonal is an interesting one I didn't even think of, maybe useful for 5-monitor setups :D

I'll ping back when it's ready for testing.

jpotter23 commented 3 weeks ago

I have an x4 monitor setup, used to have x6 but traded 3 of them for one 42" 4k TV, which I often divide up into 4 virtual monitors. So down or right works for me easy enough:

image

flyingpie commented 3 weeks ago

The PR went pretty smoothly, I've a first version ready for testing. The release: https://github.com/flyingpie/windows-terminal-quake/releases/tag/v2.0.11

There are now 5 off-screen locations that an app window can be moved to when toggled off: "Above", "Below", "Left", "Right", and "Behind".

When toggling off an app, WTQ goes through these locations in order, and determines whether there is space there to put the window (e.g. if it does not intersect with a monitor), until it finds one.

So, if things work alright on your end as well, the prerelease should be enough, no additional configuration is necessary.

However, the feature also introduces a new setting, called "OffScreenLocations", which allows customizing the list of locations, including its order.

Here's an example snippet of wtq.jsonc, with the default settings (so this does not need to be added, but it's to illustrate what's going on by default):

{
  "Apps": [
    // Per app:
    {
      "Name": "...",
      "OffScreenLocations": ["Above", "Below", "Left", "Right", "Behind"]
    }
  ],

  // Or globally:
  "OffScreenLocations": ["Above", "Below", "Left", "Right", "Behind"]
}

Here's an example of my setup, where I've changed the locations, so I get different behavior on a single-monitor laptop:

{
  "Apps": [
    {
      "Name": "WezTerm",
      "OffScreenLocations": ["Above"]
    },

    {
      "Name": "Dolphin",
      "OffScreenLocations": ["Left"]
    },

    {
      "Name": "System Monitor",
      "OffScreenLocations": ["Below"]
    },

    {
      "Name": "KeePass",
      "OffScreenLocations": ["Right"]
    },

    {
      "Name": "Spotify"
    }
  ]
}

https://github.com/user-attachments/assets/56fec36a-3f88-4437-90cc-b3ee53b51755

Please let me know if this works for you!

jpotter23 commented 3 weeks ago

Working perfectly! tyvm!

flyingpie commented 2 weeks ago

Thank you for testing :heart: I'll merge this into the next release :slightly_smiling_face: