Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature request: hot key drop down ala quake/guake/tilda #653

Open
NOFUNEVER opened this issue May 10, 2019 · 42 comments

Comments

@NOFUNEVER
Copy link

commented May 10, 2019

The petty thing I miss most when I pop into Windows is having a separate hot key terminal for each of my three monitors. The closest i've ever been to believing in god was when I realized that was obtainable and if you could make that happen in Windows I just might have to kiss you.

@oising

This comment has been minimized.

Copy link
Collaborator

commented May 10, 2019

So you mean if you have three monitors (for example), you could hit a different hotkey to cause the terminal to slide down quake console style from whichever monitor you choose?

@NOFUNEVER

This comment has been minimized.

Copy link
Author

commented May 10, 2019

So you mean if you have three monitors (for example), you could hit a different hotkey to cause the terminal to slide down quake console style from whichever monitor you choose?

Exactly, exactly. I know it seems a bit outlandish/unnecessary/gimmicky for what's meant to be a heavily used mainstream terminal but I promise you the productivity is what really makes hot key drop downs shine.

Ideally each monitor is has it's own terminal that can be kept open simultaneously with the others.
In nix using 3 instances of Tilda I have it set up so that f1 drops,closes,or select if open but not active the left monitor. F2 does my center screen and f3 does my right. I can use these hot key's to jump between these three terminals if they are open already as well. The end result makes moving between terminals and other background applications a workflow dream. It's also looks pretty dang cool if I do say so myself.

Guake another alternative I like is limited to only one window/instance at a time and it simply drops down on whatever monitor the mouse currently resides in at the time the hot key is pressed. This is also a very neat feature however not what I'm looking for. I wouldn't object to a choice in behavior but lines of code dont grow on trees so made to choose i'd prefer the tilda design.

We really are spoiled terminal wise on the nix side of things and that's what makes Microsoft endeavor to build a new more advanced feature rich terminal so exciting. It really feels like Microsoft is fighting for the time devs and future devs(student here) spend in their operating system and if you pair'd WSL2 with a drop down terminal I know for a fact i'd spend a lot less time booting back and forth between Mint and 10.

@kimbirkelund

This comment has been minimized.

Copy link

commented May 10, 2019

Quake mode would be a requirement for me to switch from ConEmu. However I'd much prefer for it to always open the same instance regardless of which monitor/virtual desktop is currently in focus.

Personally I use win+tilde to open ConEmu, but obviously the shortcut should be configurable.

@miniksa miniksa added this to the Windows Terminal Backlog milestone May 14, 2019
@cyberhck

This comment has been minimized.

Copy link

commented May 16, 2019

Yes, one instance dropping down, it should drop down on the monitor where our mouse cursor is, and should focus, but it shouldn't show up when you're doing Alt + Tab, so it's feels like it's kinda baked into OS. Like guake.

@Jaykul

This comment has been minimized.

Copy link
Contributor

commented May 20, 2019

@cyberhck are you sure it should be where the mouse is, and not where the currently focused window is?

@NOFUNEVER

This comment has been minimized.

Copy link
Author

commented May 20, 2019

@Jaykul
Guake's default behavior is such that the hot key activates the terminal in what ever monitor the mouse currently resides as Cyberhck described. It also has the option to assign it a specific monitor if so desired. It's limited only in that only one instance can run at at time, something windows Terminal has no issue with. If Windows Terminal could be set up the way guake is with the choice between static or follow behavior all it would need is independent settings per instance to match the functionality of both guake(follow or static) and tilda(multiple instances).

@cyberhck

This comment has been minimized.

Copy link

commented May 21, 2019

Yes, we could have 3 way configuration, one on one specific monitor, one on whatever window is focused, and one where mouse is present, (also it's quite important to have an option to hide from list of application (alt + tab) if this mode is enabled, because I'd imagine users won't want to see that while switching between IDE and browser)

:)

@jakul, the reason I say where the mouse is present is because when you are browsing through something, mouse is always likely to be in front of your eyes, and if you're using short keys, it's really easy to switch your eyes rather than having to move your mouse all the way.

@sdistefano

This comment has been minimized.

Copy link

commented May 22, 2019

+1

@zadjii-msft

This comment has been minimized.

Copy link
Member

commented May 22, 2019

Please don't reply to threads with a "+1" without providing useful additional feedback. Github has a perfectly good +1 that doesn't ping everyone on the thread's inbox right here:
image

@DHowett-MSFT DHowett-MSFT added this to Spec Needed in Specification Tracker May 28, 2019
@nofunatall

This comment has been minimized.

Copy link

commented May 29, 2019

So you mean if you have three monitors (for example), you could hit a different hotkey to cause the terminal to slide down quake console style from whichever monitor you choose?

The default behaviour on multi monitor for Guake is wherever the mouse is is where the terminal drops down.

You can however set it to drop down to whatever monitor you want via the settings if you don't want this behaviour.

@zakius

This comment has been minimized.

Copy link

commented Jun 24, 2019

Things I need with this are ability to disable animation and hiding the window completely (from taskbar, alt+tab, win+tab etc.)

Additional option to never show taskbar button would be desired by me too but might be out of scope for this issue

@zikhan

This comment has been minimized.

Copy link

commented Jul 16, 2019

I love the proposal, and it is the only thing that would keep from using it daily (once released). I love using the ctrl+` in ConEmu and don't even use VSCode integrated terminal because of it. However, I'm not sure if I care much about the key binding per monitor idea though.

Also, Would this proposal include starting an instance of the terminal if none were running, similar to other linux terms like xfce terminal dropdown with application shortcut? I wouldn't mind if it were Win+` as a system shortcut, similar to Win+<num> for taskbar shortcuts.

@zakius

This comment has been minimized.

Copy link

commented Jul 16, 2019

That would be doable with shortcut existing somewhere with global hotkey bound to it and that shortcut using CLI to call toggle if some instance is already running. Making it systemwide hotkey seems like a bad idea imo

@stanfieldr

This comment has been minimized.

Copy link

commented Jul 16, 2019

I would consider developing on windows more (currently 95% done on Linux) if I had a terminal that could drop down like guake.

@wouldntsavezion

This comment has been minimized.

Copy link

commented Jul 26, 2019

I mainly use cmder/conemu on windows as well and this is also the main reason I'm not switching yet, especially since I'm using two monitors and (usually) 3 desktops, without a global way to just call down the terminal I essentially have 6 places where the actual window could be, sounds silly, but it's annoying.

Also, many of you mention using a keyboard shortcut for this but you all should consider mapping it on a dedicated mouse button as well, and if possible, gesture. Thank me later.

@NOFUNEVER

This comment has been minimized.

Copy link
Author

commented Jul 30, 2019

Glad to see other people are excited by the idea of a configurable drop down terminal. It's clear people have very distinct preferences on how these drop downs behave by default but believe most everyone's preference becomes possible so long as

  1. Each instance can be configured for either mouse follow or binding to one monitor.
  2. Each instance can have its own hot key.

Then it doesn't matter what you like its within the realm of configurable possibilities.

I personally use a combo of quake and tilda so that I have one terminal bound to each screen and one that follows the mouse.

@wouldntsavezion

This comment has been minimized.

@cyberhck

This comment has been minimized.

Copy link

commented Aug 2, 2019

Ahh how I wish ConEmu was a solution for me, it doesn't work for everyone, it's built on top of Hotkey, and anything on top of hot key is detected as trojan (false alarm).

A lot of people are using terminal for work, and their work don't allow them to install something which is detected as a trojan. (same as Qonsole) joedf/Qonsole#9

@jdgregson

This comment has been minimized.

Copy link

commented Aug 7, 2019

Another important thing to consider when implementing this is that the drop-down should appear on the currently active virtual desktop. I use virtual desktops heavily. When I first started using ConEmu, I found that the drop-down terminal would always move me back to desktop 1 and then show the drop-down. I eventually found the settings to get it working as expected in ConEmu, and it is critical that Windows Terminal behave the same way.

@cyberhck

This comment has been minimized.

Copy link

commented Aug 8, 2019

Yeah, that should have been obvious actually :D imagine pressing hot key and terminal appearing on the first one when you're on other workspace.

@flyingpie

This comment has been minimized.

Copy link

commented Aug 8, 2019

So until our overlords add this to the terminal, I've concocted a simple piece of C# that fixes this for me in the mean time: https://github.com/flyingpie/windows-terminal-quake.

It does Quake-style drop down using CTRL+~ and CTRL+Q, which is totally changeable of course. Currently does fullscreen drop and comes down on the screen + workspace where the mouse is.

Should anyone be drawn, I'm open to suggestions and/or PRs.

@zadjii-msft

This comment has been minimized.

Copy link
Member

commented Aug 8, 2019

@flyingpie That's a pretty neat piece of code you've got there. Looks like most of it would work in c++ as well, so that's good to know.

I just want to re-iterate that while no one on the team is going to have the cycles to do this for 1.0, we'd pretty happily review a contribution from the community. Ideally someone in the community would be able to compile the suggestions and comments from this thread into the Spec Template and submit a PR for that spec. Once that spec is approved, we'd happily review a PR with the code change needed. Looks to me like @flyingpie has really got 90% of the basics down, it'd mostly be polishing the edge cases.

@rlabrecque

This comment has been minimized.

Copy link

commented Aug 10, 2019

I have a similar usecase. I don't use Quake style, but I do really like the always open terminal.

My ConEmu setup does the following that wt.exe seems to lack so far (in rough order of importance):

  1. My ConEmu literally does not quit except at shutdown or when explicitly asked. If I close the last tab, it's still open just with no tabs.
  2. It launches to the same location every time. (0,0) on my second monitor.
  3. I have a global hotkey to toggle focus of it (ctrl+`).
  4. It does not show up on the task bar. It has a tray icon.
  5. You can only start one instance of it.
  6. It automatically launches upon windows login. (important for the following)
  7. It is the default terminal, automatically consuming other terminals (I.E. If I 'Run' wt.exe, then run cmd.exe, I would expect that wt.exe would just open a new tab with the new cmd.exe tab)***

All of those are roughly blockers for me switching to wt.exe from ConEmu.

Additionally:

  • Some people would want always on top.
  • Some people want minimize on focus lost, and those people generally want to disable the minimizing/maximizing animation.
  • Some want the terminal to jump to their 'active' monitor upon focus.
  • Some want multiple terminal instances?***

These are all different features which should have their own specs IMO. I'm willing to drive some of this spec process. @zadjii-msft Do you know of any of these bullet points that either have specs already, won't be accomplished for some reason, etc?

*** Tricky?

@zadjii-msft

This comment has been minimized.

Copy link
Member

commented Aug 12, 2019

So you've listed a number of separate issues, lemme see if I can link them all:

  1. #2080 is the WIP spec for this feature, that's going to turn into a massive spec by the time it's done.
  2. #1043 probably doesn't need a spec TBH, just needs someone to do the work
  3. #653 (this issue)
  4. I frankly haven't heard the request to not have it in the taskbar before. So that definitely doesn't have it's own issue. Having a tray icon seems necessary for not having a taskbar icon, so these could probably be a single spec/task
  5. This falls under #2080
  6. #2189
  7. #492 is tracking this, but it's going to require some OS changes likely. This also comes up frequently in #2080.
  8. I could have sworn this had it's own issue, but looks like it doesn't.
  9. Never heard this request before, but sounds neat to me
  10. Seems vaguely similar to this feature TBH. Maybe we should consider both these scenarios in this spec?
  11. Not sure what you mean on this point - do you mean panes, like #1000?

Out of those, #1043, #653, #2189 are all marked "Help-Wanted" 😉

@zakius

This comment has been minimized.

Copy link

commented Aug 12, 2019

I mentioned 4. before, and to make sure that Terminal doesn't appear on Alt+Tab nor Win+Tab when window is hidden

multiple instances means multiple windows that may but don't have to be spread across multiple screens or virtual desktops I assume, but that would make handling global hotkeys much more complex or even impossible (I think conemu disables multi instance when enabling quake mode)

@rlabrecque

This comment has been minimized.

Copy link

commented Aug 12, 2019

For 11/"multiple instances means multiple windows", I specifically mean what the OP described here: #653 (comment)

I don't particularly care about that, but it's a separate related issue. I guess they want multiple global hotkeys to open/activate/focus multiple instances in the same way that I want one hotkey for item # 3 on my list.

@nofunatall

This comment has been minimized.

Copy link

commented Sep 16, 2019

@zakius

I mentioned 4. before, and to make sure that Terminal doesn't appear on Alt+Tab nor Win+Tab when window is hidden

multiple instances means multiple windows that may but don't have to be spread across multiple screens or virtual desktops I assume, but that would make handling global hotkeys much more complex or even impossible (I think conemu disables multi instance when enabling quake mode)

Multiple instances disabled is what happens on ConEmu when quake dropdown is used.
It's near impossible to handle that behaviour in a logical manner you must utilize your tabs or use a terminal multiplexer if you want something like multiple instances WITH quake dropdown.

EDIT:
You could possibly work in something where the first terminal window opened is the master and this is the window that is always called down when using the Quake hotkey.

Could be tricky to work that in with tab support - which perhaps is why no other terminal that I know of supports that behaviour. There is also some edge case to consider in that scenario like what happens if you close your main master window and there is a secondary window still open - would the hotkey continue ignoring this secondary terminal window etc.

For ConEmu when Quake is enabled and you try to open ConEmu again (Say from the desktop shortcut) it won't open a new window, instead it will just bring to focus the existing running terminal.

@zakius

This comment has been minimized.

Copy link

commented Sep 16, 2019

You could possibly work in something where the first terminal window opened is the master and this is the window that is always called down when using the Quake hotkey.

there's also the possibility of allowing to run single instance per physical screen per virtual desktop and this way main hotkey would always bring up the instance on your current active VD and screen, but that's pretty complicated, I think disabling multiple instances is reasonable

@wouldntsavezion

This comment has been minimized.

Copy link

commented Sep 16, 2019

I think multiple instances can be ignored if the tabs keep being improved on and the quake-style window can be called from anywhere. At least for now.

@nofunatall

This comment has been minimized.

Copy link

commented Sep 16, 2019

there's also the possibility of allowing to run single instance per physical screen per virtual desktop and this way main hotkey would always bring up the instance on your current active VD and screen, but that's pretty complicated, I think disabling multiple instances is reasonable

I wouldn't ignore multiple instances entirely - sometimes it is very handy to have open a terminal on one screen that streams logs or shows system load while working within another terminal on na adjacent screen.

I have previously been using Ubuntu desktop for the last few years (just went back to Windows since WSL v2) and since Guake and the Ubuntu terminal are very similar in terms of responsiveness, UI design / themes etc I often had the default Ubuntu terminal open on my vertical screen watching logs and system load.

That is obviously the easy way around the issue if multiple instances with dropdown is disabled - Use a different terminal.
Problem is most terminals on Windows are complete garbage (Hence this project ofc).

@NOFUNEVER

This comment has been minimized.

Copy link
Author

commented Sep 16, 2019

@mlewand

This comment has been minimized.

Copy link

commented Sep 17, 2019

Guys, we clearly have two separate issues here. Could we edit this one to just be about the "Quake style" (global/single terminal) hotkey?

Then a second issue, that would be blocked by this one, to enable assigning a dedicated "Quake style" hotkey to a different displays.

The first one seems to be more popular and desired. I'd love to see the second one too (cool idea @NOFUNEVER never thought of such feature, seems useful), but it would be nice if we could clear up the topic a bit.

@rlabrecque

This comment has been minimized.

Copy link

commented Sep 19, 2019

The OP's issue is actually more of the second, despite the name of this issue. Regardless, I think having a hotkey open a single terminal is largely blocked by #2080. We can't really have a hotkey open a single terminal until we can enforce a single terminal.

#653 (comment)

This is the best breakdown I think.

@mlewand

This comment has been minimized.

Copy link

commented Sep 19, 2019

@rlabrecque Yes, I know that original issue was related to more fancier solution, but looking at the comments most people expressed a desire for "quake"-style only, much less people were interested in custom hotkeys for any display.

That's why I proposed converting this issue into a quake-style related and extract the followup feature request to a separate issue where we'll be able to track it too.

@markrendle

This comment has been minimized.

Copy link

commented Oct 11, 2019

It seems to me this needs to be broken down into multiple issues for each of the various features, starting with the fundamental hotkey-to-toggle-visibility feature. That can be done without any of the other features, right?

With multiple issues, it would be much easier to see what the demand was for each particular twist on the recipe and prioritize development. It does seem like the minimum viable feature would scratch a lot of people's itches.

@rlabrecque

This comment has been minimized.

Copy link

commented Oct 11, 2019

Is that not what comment #653 (comment) is describing?

@alirezajm

This comment has been minimized.

Copy link

commented Oct 12, 2019

For anyone waiting for this to switch from conemu (like myself), etc. You can use autohotkey and a pinned taskbar item as a workaround.

autohotkey script:

^`::Send #5

This will map ctrl+` to winkey+5, change that to your needs.

@zakius

This comment has been minimized.

Copy link

commented Oct 12, 2019

the tool provided by flyingpie is much better: doesn't require pinning and hides taskbar button completely, tbh I'm using it with other app (since Terminal misses few other things too)

@kimbirkelund

This comment has been minimized.

Copy link

commented Oct 13, 2019

Taking the AutoHotKey solution a bit further:

#SC29::ToggleTerminal()

ShowAndPositionTerminal()
{
    WinShow ahk_class CASCADIA_HOSTING_WINDOW_CLASS
    WinActivate ahk_class CASCADIA_HOSTING_WINDOW_CLASS

    WinMove, ahk_class CASCADIA_HOSTING_WINDOW_CLASS,, -5, -10, A_ScreenWidth + 10, A_ScreenHeight * 0.7,
}

ToggleTerminal()
{
    WinMatcher := "ahk_class CASCADIA_HOSTING_WINDOW_CLASS"

    DetectHiddenWindows, On

    if WinExist(WinMatcher)
    ; Window Exists
    {
        DetectHiddenWindows, Off

        ; Check if its hidden
        if !WinExist(WinMatcher) || !WinActive(WinMatcher)
        {
            ShowAndPositionTerminal()
        }
        else if WinExist(WinMatcher)
        {
            ; Script sees it without detecting hidden windows, so..
            WinHide ahk_class CASCADIA_HOSTING_WINDOW_CLASS
            Send !{Esc}
        }
    }
    else
    {
        Run "c:\Users\kim\AppData\Local\Microsoft\WindowsApps\wt.exe"
        Sleep, 1000
        ShowAndPositionTerminal()
    }
}

This script binds win+½ (on Danish keyboard, the top left button below escape) to a function that brings a running terminal instance into focus, or starts a new instance if non is running, and resizes and positions it "correctly". If terminal is already in focus it hides the window (so it doesn't show up in alt+tab).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.