microsoft / PowerToys

Windows system utilities to maximize productivity
MIT License
110.86k stars 6.53k forks source link

Rethink integration of window walker into launcher #3357

Closed jsackmann closed 3 years ago

jsackmann commented 4 years ago

Starting from release v0.18.0, I can’t toggle WindowWalker with Ctrl + Windows anymore. I looked in settings and it appears to have disappeared.

However, the new “PowerToys run” has under “Attribution”, Beta’s WindowWalker, so I assume there is an attempt to merge window walker into a run experience?

If this is the case, I’d urge to reconsider. A launcher and a walker have different objectives and expectations, and they behave differently. Let me give a very concrete example of what I mean, with the current behavior of v0.18.

I have an outlook open and a notepad open. I hit the launcher, type “outlook” > enter. Expectation: I get the outlook window focused. Actual: I now have two outlook windows.

And it’s not a matter of “ah, this is a bug, we’ll fix it by having focus if it exists, and creating a new one if it doesn’t”. If I type outlook and I don’t have it open, I want to get that information.

I am a believer that tools, particularly tools like these need to not be “smart” and try to guess what the user wants. A tool needs to do ONE thing and do it right, with EXTREMELY clear expectations for the user. I need to be able to know, instinctively and with 100% accuracy what the tool will do. I’m all for having one tool that launches things (launcher > outlook > enter. I know that I will get a new outlook). And a separate tool that finds things (walker > outlook > enter. I know that it will focus on outlook if it exists, or not list it if it’s not there).

Anything that blurs that instinctive understanding is a problem IMO (magic tool that does both > outlook > new window? Finds the current one? What it I have more than one, which one? I have to be careful to see if it has a lnk file? What if I have an “outlook.txt file on my desktop”? Suddenly I have a notepad window open?).

Please bring back WindowWalker as a separate component to PowerToys. At least in spirit. It’s fine if it uses the new launcher UI or code, but at least something that I know it will only find and focus on opened windows, and do nothing else.

crutkas commented 4 years ago

one thought is we could do here is a different keystroke that directly only triggers window walker

jsackmann commented 4 years ago

Yeah, I thought about that and edited my comment a minute ago (I don’t know if before or after your comment @crutkas). That would absolutely work.

bestknighter commented 4 years ago

I've seen this same thing pop up in a few other issues, and not only related to the Window Walker. I created an specific issue to suggest what I saw in common appearing in all instances of it. @jsackmann, would you care to give a look and see if my suggestion would help you out with it? It's the issue #3347

jsackmann commented 4 years ago

I've seen this same thing pop up in a few other issues, and not only related to the Window Walker. I created an specific issue to suggest what I saw in common appearing in all instances of it. @jsackmann, would you care to give a look and see if my suggestion would help you out with it? It's the issue #3347

I like your proposal as a solution for this problem, and the possibility of expanding it (the web-search looks very appealing).

But there are a few caveats to consider:

jfgrtsn commented 4 years ago

I'm just now trying out PowerToys Run, but conceptually I have the opposite reaction. I've been using a utility called Switcheroo that searches running processes, so if I have Outlook (or Edge, or whatever) running, I can switch to it quickly, but if it's not currently running—dead end. I have to hit Esc, then Start, then type Outlook again, and hit Enter to run it. I've been wanting something that would combine the two functions.

It will be important to (1) visually distinguish already-running processes (will switch to) from not-yet running processes (will launch), and (2) give some careful thought to how to present both the option to switch to an existing process and the option to run a new instance even if there's already a running instance (intuitively, I'm thinking Ctrl-Enter, kinda like Ctrl-Click opens a link in a new browser tab instead of re-using the current tab).

betsegaw commented 4 years ago

@crutkas I really like the custom keyboard shortcut that opens up launcher in a WW mode. Since launcher will have many capabilities, using shortcuts will enable power users to filter down to the particular capability they use the most while still maintaining the ability to use the full power of launcher.

egeozcan commented 4 years ago

First of all, I really appreciate what you people are doing with these tools. Very cool, and I'm sincerely grateful.

However, I'm disappointed to see windowwalker being replaced by a generic run tool. I loved windowwalker, but now the shortcut problem (no more ctrl+win support) plus it prioritizing running new instances while a running instance already exists put it on the verge of unusable for me.

I hope this is really reconsidered.

Mrxx99 commented 4 years ago

I would suggest (like I did in https://github.com/microsoft/PowerToys/issues/3347#issuecomment-632025370) to have a special identifier that could be typed before a search term, e.g. "#w" for window walker. And if you can assign shortcuts in the settings for launching with an identifier than the window walker could be used again with a single shortcut. The window walker should probably already have a default shortcut assigned

ThaDaVos commented 4 years ago

Right after the installation of the update to 0.18 the Window Walker still functioned for me, but after a reboot later on, it was gone too.

I would propose one of the following:

  1. Re-add the window walker as separate application
  2. Add a second hotkey which launches the new PowerToys Run in Window Walker mode (maybe change colors or something to show the mode)
  3. Have settings in the PowerToys Run settings page which allows the user to select the behavior: Prefer running processes or Prefer new processes
  4. When the PowerToys Run is open show or a button or have a key, like for example tab, have the functionality to change between modes (and change the color to show the mode too) - maybe later more modes can be added like 'open files mode' or 'open selected file in program X mode'
jczimm commented 4 years ago

As I understand it, this seems like a question of whether the launcher should take on the responsibility of a window-switcher, as a power-user alternative to alt-tab.

I'd personally find this convenient and intuitive, but I'd definitely want to have quick access to the window-switching function using a dedicated shortcut (maybe using "#w" or "w" as a sort of command to trigger this function/mode, pre-filled via shortcut, as suggested by @Mrxx99 in #3347 (comment)). However, to replicate the core functionality of alt-tab, when in this window-switching mode, the results should automatically list all the open windows before I enter any search query, with the results sorted by MRU. Additionally, I'd want the previous active window item in the list already selected, for convenient toggling between windows, like alt-tab provides.

However, if the launcher should be limited as a more intelligent version of the start menu, then it wouldn't make sense to me for Window Walker to be integrated any differently than it is now--it would serve just to enhance the launcher's search results, to help people avoid opening a new instance of a program that they've already opened. In this case, if people want to use a window-switcher, they'd use a different program that is dedicated to window-switching. I'd definitely rather use a single program for both launching and window-switching (and the other features), though.

glima commented 4 years ago

Why not just prioritize opened apps over calling a fresh (same) one? Simple enough...

jsackmann commented 4 years ago

Why not just prioritize opened apps over calling a fresh (same) one? Simple enough...

IMO, this is not a good idea. Actually let me rephrase. It is good idea, but it’s not sufficient. Please read my original comment for my reasons on why.

glima commented 4 years ago

Why not just prioritize opened apps over calling a fresh (same) one? Simple enough...

IMO, this is not a good idea. Actually let me rephrase. It is good idea, but it’s not sufficient. Please read my original comment for my reasons on why.

I don't get that at all. By having a clear (sub) text field indication what is the case (instance or new), what could be clearer? Moreover, chances of one wanting to issue a new, fresh instance of something already running are low, that's why it matters to have running instances at the top (new instance being the following item good enough for both worlds). Now if someone is lazy to look at the screen for feedback on what's going on, that's a different story. I just find it useless if one goes the route of needing prefixes (those #whatever things before the actual name/action), because I don't want to type more to do things, but less.

Anyway, my two cents :)

jsackmann commented 4 years ago

Now if someone is lazy to look at the screen for feedback on what's going on, that's a different story. I just find it useless if one goes the route of needing prefixes (those #whatever things before the actual name/action), because I don't want to type more to do things, but less.

It’s not about lazyness. It’s about muscle memory. I want to be able to enter “shortcut > text > enter” and know exactly what is going to happen, consistently. I need to go to an application. If there is any error (like the application is not open), then nothing. What I don’t like about having a multi-purpose launcher [0] is that the expected output is not clear.

I completely agree with the prefixes. I’m not a fan of them, but I consider them acceptable if the three concerns of discoverability, usability and speed that I outlined above on this thread are met. Particularly, have a keyboard shortcut that will auto add the prefix for me without having to type it (effectively having the same behavior as the WindowWalker standalone application, and thus typing less as you said).

[0] Clarification: I don’t oppose having it. I love the idea, and in fact I would use it. Just not removing window walker.

glima commented 4 years ago

It’s not about lazyness. It’s about muscle memory. I want to be able to enter “shortcut > text > enter” and know exactly what is going to happen, consistently. I need to go to an application. If there is any error (like the application is not open), then nothing. What I don’t like about having a multi-purpose “launcher”[0] is that the expected output is not clear.

Thanks for taking the time to respond :) I should not have used that word, but you get the idea, I guess. About muscle memory and expectations, isn't it equally easy to implement launching the said typed thing, if an instance is not found (same as the first populated entry/hit will be for a new instance, person just typing and not looking still will get an acceptable behavior)?

Anyway, thanks for the work on PowerToys, it has helped me be more productive, even without WindowWalker now.

jsackmann commented 4 years ago

Thanks for taking the time to respond :) I should not have used that word, but you get the idea, I guess.

Yeah, no worries. I got your meaning :).

About muscle memory and expectations, isn't it equally easy to implement launching the said typed thing, if an instance is not found (same as the first populated entry/hit will be for a new instance, person just typing and not looking still will get an acceptable behavior)?

The issue I have with this is about consistency. WindowWalker has a very clear and consistent behavior. Bundling it with the launcher makes that a lot muddier. And it will get muddier the more (great!) features are added to it. This is a short example of why that I typed earlier:

Launcher > outlook > new window? Finds the current one? What it I have more than one, which one? I have to be careful to see if it has a lnk file? What if I have an “outlook.txt file on my desktop”? Suddenly I have a notepad window open?.

This is very personal of course. I find I’m a lot more productive with tools for which I can expect the output consistently compared with “smarter” tools that do more things and “try to guess” what I want.

Cry0nicS commented 4 years ago

I was a huge fan of Launcher. After I updated (without reading the entire changelog) I panicked a bit cause' the only feature from PowerToys I'm using was not there anymore.

one thought is we could do here is a different keystroke that directly only triggers window walker

As @crutkas already mentioned, I do hope Window Walker can be used independently. The whole point is to be fast. If I type "chrome" and then I have to go down 4-7 times and pay attention to each option in order to find my running process then I might as well just alt+tab to it.

Run can become a really cool app, but unless it prioritizes running processes so that the results from Window Walker are always first, I'd like to be able to keep using WW independently.

c-vetter commented 4 years ago

Since #4942 has been closed in favor of this issue, I think it's in order to reiterate here:

My understanding is that wox has been fully integrated, and WindowWalker made into a plugin. Therefore, a simple solution likely won't happen. With that in mind, what I'd like to see is the ability to launch PTRun with different hotkeys loading different sets of plugins. For example:

  • F13: launcher + switcher (as per @chrobs)
  • Alt+F13: process-killer
  • F14: file-finder
  • F15: clipboard-history

That way:

  • the full power of a god search à la wox would be available
  • each setup could be very fast
  • one would not need keywords as with wox
  • god search would not be a special case, but easily available to those who want it

The way I see it, having PTRun apply filters only after entering a special character or keyword must necessarily be slower than a process that is triggered with only those plugins that are actually relevant to what the user intends, no matter how well optimized. Therefore, I am positive that this is not just a matter of personal taste but a matter of architecture for speed, which is the most important aspect for such a tool, as @jsackmann has so well explained.

Beyond that, we can clearly see that different people have different usage scenarios. Having a straight-forward way of setting up those scenarios as needed would benefit everybody equally.

As for the sorting of results, my proposed separate plugin sets could be sorted sets. As a simple first version, results of different plugins could simply be concatenated. Later, they could be interleaved if a good, reliable weighting scheme can be implemented on top.

fvassura commented 4 years ago

Hi all, I just installed this PowerToys app. I was looking for a fast way to make a search between open windows, something like https://fwextensions.github.io/QuicKey/ for open tabs in Chrome. I googled it and found many links to WindowWalker that seemed perfect for my purpose. After installing and trying it I was disappointed to find out that has been "merged" with some launcher functionality. I use WIN and WIN+R to launch apps I don't need a new one. How can I disable the launch feature?

I see many issues on this topic and many ideas, but IMO if someone is looking for a "window walker" or "running process finder" like me, doesn't need launcher features so I propose (in order of preference):

Solution 1

separate Launcher and Walker in two different PowerToys utility

Solution 2

in PowerToys settings add a checkbox to disable the launcher (or a "result filter settings = running process only")

Solution 2

as someone proposed: add filter keyword like "/r" - running processes or "/a" - new apps

In any case when "launcher" and "walker" feature are both enabled you should really reconsider to separate results (giving the same icon to all running processes is not a good solution: #3320)

crutkas commented 4 years ago

6129 is a PR for helping do this. https://github.com/microsoft/PowerToys/issues/5823 is the e2e for getting additional aliases

We do also have the idea to do dedicated keys as well for launching

gordonwatts commented 4 years ago

I was the person that put forward #6129. You can check that out and build it*.

I've now been running this version on my desktop for a few weeks. It works well, and is fast. Currently, the keys are bound to single actions, as @jsackmann was discussing in the original post here.

Personally, this has fixed the issue for me. I type ": remember" and I get my "Remember the milk" window. If that isn't open, I get nothing. So I hit ^a to select the text, delete, and then type "$ remember" and I can start the program. So this works for me. And it gives a reasonable list of things. The ":" and "$" are now part of muscle memory.

BTW, with the current infrastructure, it is possible to specify more than one plug-in. So you could make ">" mean "window walker" and "start program"... and perhaps order them in the order they were listed in the config file. I didn't test the approach in the PR.

I like the idea of having a totally separate keyboard shortcut to start a particular search-plug-in. I do not think, for me, it would be any different than what I've got in that MR. Now that this keyword ability is in, I pretty much always use keywords when using the launcher now. (the calculator, the open web, the window, and the start program).

If you have suggestions for the PR, feel free to leave an idea there.

crutkas commented 4 years ago

@gordonwatts, we do provide a nice handy script :) https://github.com/microsoft/PowerToys/tree/master/doc/devdocs#prerequisites-for-compiling-powertoys

ghost commented 3 years ago

You can do that now with the "<" Action key

enricogior commented 3 years ago

Closing this since https://github.com/microsoft/PowerToys/pull/6129 provides the < action key