Repository: terminal
Issue: [MEGATHREAD] Quake Mode & Global Summon
Labels: Product-Terminal,Issue-Scenario,Area-Windowing

##### [Original thread: #653] [Spec: #9274, [doc](https://github.com/microsoft/terminal/blob/main/doc/specs/%23653%20-%20Quake%20Mode/%23653%20-%20Quake%20Mode.md)] [[Project](https://github.com/microsoft/terminal/projects/5)]

### See also **[Quake Mode FAQ](https://github.com/microsoft/terminal/wiki/Frequently-Asked-Questions-(FAQ)#quake-mode--global-summon)**

<details>
<summary><b>1.9 tasks</b></summary>

* [x] Add support for <kbd>win</kbd> in keybindings (PR: #9783)
  - this is in `dev/migrie/f/win-in-keybindings`
* [x] _quake window opens in focus mode, on the top half, and can't be moved or resized (except on bottom) (PR: #9785)
  - This is in `dev/migrie/f/653-special-_quake-window`
* [x] `quakeMode` action activates the `_quake` window (or creates one) (PR: #9854)
  - This is in `dev/migrie/f/653-QUAKE-MODE`
* [x] `quakeMode` summons the window to the current desktop (PR: #9954)
  - This is implemented in `dev/migrie/f/quake-toCurrent-desktop`
* [x] `quakeMode`/`globalSummon` hides the window if it's currently active (PR: #9963)
* [x] `quakeMode` does the dropdown dance on entrance (PR: #9977)
  - Started this in a6cd981 but that feels really hacky and bad. See `dev/migrie/f/quake-dropdown` for more progress
  - `dev/migrie/f/quake-dropdown-2` has the most research notes in it, for future readers.
* [x] Exempt the `_quake` window from window glomming (PR: #9956)
* [x] `quakeMode` summons the window to the current monitor

</details>

### 2.0 tasks
* [x] `globalSummon` to summon a window by name (PR: #9854)
  - This is in `dev/migrie/f/653-QUAKE-MODE`
* [x] Basic `globalSummon` action (PR: #9854)
  * [x] Add support for the `toggleVisibility` property (PR: #9963)
  * [x] Add support for the `desktop` property to control how window summoning interacts with virtual desktops
    - This is implemented in `dev/migrie/f/quake-toCurrent-desktop`
  * [ ] Add support for the `monitor` which monitor the window appears on.
    * [x] `"monitor": "toCurrent"|"any"` for on the current vs where it is (PR #10092)
    * [x] `"monitor": "toMouse"` for _to where the mouse pointer is_ (PR #10092)
    * [ ] `"monitor": "onCurrent"` 
  * [x] Add support for the `dropdownDuration` property (PR: #9977)
* [ ] We need a commandline arg to force the window to ignore `initialPosition` and use the current monitor instead.
* [x] Add the `minimizeToTray` setting, and implement it without any sort of flyout
  * [x] `_quake` window is hidden when minimized (PR: #10113)
  * [x] Add tray icon when quake window is minimized #10179
  * [x] Add a list of windows to the right-click flyout on the tray icon
  * [x] Add support for the `alwaysShowTrayIcon` setting
* [ ] Exiting `_quake` mode should restore the focus mode state, window position that the window had before.
* [ ] There should maybe be a default action like:
```json
{ "name": "Promote to quake window", "command": { "action": "renameWindow", "name": "_quake" } }
```
* [ ] **KNOWN ISSUE**: If you try to summon the window while task manager is focused, the window will not get activated. Presumably this can happen with other apps as well. UWP OneNote seems affected as well.
* [x] Wrong size on Quake mode with hetero sized screens #10182
  * [x] #10805
* [x] Quake Mode has incorrect window size after toggling fullscreen mode #10199
* [x] 1px window border of the quake dropdown terminal "leaks" onto horizontally adjacent monitor: #10201
* [x] Make Quake mode work with a German keyboard layout #10203
* [x] Quake Mode multi monitor setup #10274
* [ ] More...


### Backlog
* [ ] Add per-window-name global settings #9992
  - **READ**: "configure the `_quake` window to have some different set of settings - size, profile, etc."
* [ ] Allow the tabs to be visible in quake mode / don't force `_quake` into focus mode. This might be best served by #9992
* [ ] Allow other, non-`_quake` windows to be locked to the top half of the display. Probably should be a global setting. Consider #9992 when authoring this.
* [ ] Allow windows to be docked to other sides of the display? That might be insane though.
* [ ] Enable `globalSummon` / `quakeMode` to work even when there isn't a running Terminal #9996
* [ ] `globalSummon` a new tab in explorer CWD #10202
* [x] Quake mode hot-key stops working after a while. Restart of terminal fixes it #10340
* [x] #10660
* [ ] #11162
* [ ] #11174
* [ ] #10534
* [ ] The animation is _wonky_:  
  * [ ] #12293: The dropdown animation could be better. It would be better if it animated the whole window frame, but it's gotta look good. #9977 has notes on what I tried and didn't work for me.
  * [ ] #12121
* [ ] #10279
  * [ ] Also: #13276, for `wt summon`
  * [ ] Closely related is #12135, for `wt summon --profile`
* [ ] #10197
* [ ] #10672
* [ ] #10999
* [ ] #11014
* [ ] #11125
* [ ] #12173
* [ ] #12594
* [x] #12894
* [ ] #12944
* [ ] #16175
* [ ] More...