microsoft / PowerToys

Windows system utilities to maximize productivity
MIT License
111.28k stars 6.55k forks source link

Always on Top #13

Closed anythingwithawire closed 2 years ago

anythingwithawire commented 5 years ago

crutkas: Should look at #49 also for additional feature implementation idea

And #641 for transparency

scottven commented 5 years ago

If this could be made to survive windows closing and reopening, like the Outlook reminders pop-up, that would be super helpful.

veree-ozom commented 5 years ago

This has been long overdue and should have been standard. Wish this gets implemented.

bergamin commented 5 years ago

This is one of those things I always wondered... Why only task manager has that? Why isn't it standard for every window?

DarylGraves commented 5 years ago

I really hope this is implemented as a default. I might even give it a go myself if I can figure out what I'm doing!

For those who want a workaround, AutoHotKey can do this - You'd need to install AHK, paste the below to a script, save it as an .ahk file and place it in your startup folder. Then, load the script once (or restart) and then whenever you push Ctrl+Alt+A it sticks it. Push it again to unstick.

I hope this because a built in thing though - I can't really install AHK at work.

^!A:: Winset, Alwaysontop, , A Return

Sollace commented 5 years ago

@anythingwithawire @bergamin brought this issue to my attention. I'm just going to c/p the relevant segments for what I detailed for this request:

How it works:

As I have it at the moment, pressing Ctrl+Space on any desktop window will toggle the always on top state of that window. When that's done, they effectively stay in front, even when focus changes to another window after that.

What it's for:

Doing that allows me to put some content I want to see (a video, browser tab, some instructions, or notes) on my display whilst I work/type into a different window.

When I'm done I just focus my pinned window and use Ctrl+Space to return it to normal.

What I'd change:

Admittedly, the Ctrl+Space key combination is sometimes problematic when gaming, where I might need the same combination for something else. That's why I suggest changing it to some combination with the Win key instead.

Win+Space is (annoying) used to switch keyboard layouts, so it might have to become something like Win+Alt instead.

It would also help, though, to allow the user to configure the shortcut, as well as a visible button to pin/unpin windows similar to the "Maximize to new desktop widget".

glen-84 commented 5 years ago

I'm currently using DeskPins, but it's a bit outdated and is not able to pin all types of windows.

Sollace commented 5 years ago

@glen-84 Unfortunately I can't link the tool I use. It's literally just a little 200kb exe I got from somewhere. I run it from my startup folder and it allows the key combination to work on literally any window.

Edit: lmao found it

User2020 commented 5 years ago

This has been desperately needed for decades. A new window titlebar button or even if it was just accessible by right-clicking the titlebar. I always have to use utilities to add the ability but they either half-work or don't look good.

hereafter commented 5 years ago

you may try "Sticky Windows" modern fluent app for Windows 10 It is on the windows store, https://github.com/hereafter/stickywindows/wiki

it not free though.

fredskis commented 5 years ago

Just read about PowerToys and this is definitely something Windows has needed forever. I used DisplayFusion in the past but it doesn't feel native and doesn't work with 100% of windows.

Might give Sticky Windows a try too.

LuminarySage commented 5 years ago

you may try "Sticky Windows" modern fluent app for Windows 10 It is on the windows store, https://github.com/hereafter/stickywindows/wiki

it not free though.

What a shameless plug by the dev... Not to mention that that thing works so inconsistently as well

DarylGraves commented 5 years ago

I feel like, if AutoHotKey can achieve it in 2 lines of code the functionality must already be there in Windows, just hidden away somewhere... Some programs like Skype for Business have the option for it. Maybe it's a registry that gets toggled or something?

Sollace commented 5 years ago

@DarylGraves It's actually an attribute (sometimes called AlwaysOnTop) that can be toggled on and off for a given window.

That feature is actually used a lot for all kinds of windows programs, including media players., so a user-accessible toggle is indeed a very easy thing to do.

DarylGraves commented 5 years ago

@DarylGraves It's actually an attribute (sometimes called AlwaysOnTop) that can be toggled on and off for a given window.

That feature is actually used a lot for all kinds of windows programs, including media players., so a user-accessible toggle is indeed a very easy thing to do.

How do we do it boss? I was trying to see if there was a registry that's toggled or something but couldn't find it.

Sollace commented 5 years ago

@DarylGraves If you're looking for a way to get the feature, see my comment further up the page for a downloadable utility.

From the linked article:

The program is written in Autohotkey with a single line of code: ^SPACE:: Winset, Alwaysontop, , A

It's an attribute, so you literally just need to get a handle onto the window and do some system call to modify its state. Probably would have to be written in WinForms.

User2020 commented 5 years ago

I prefer XtraButtons for now, but I wish Windows had this built-in: http://www.xtrabuttons.com/

enricogior commented 5 years ago

Don't tell anybody... Always On Top will arrive soon ;)

Sollace commented 5 years ago

@enricogior proceeds to tell everyone

LuminarySage commented 5 years ago

Don't tell anybody... Always On Top will arrive soon ;)

@enricogior Subtle...

crutkas commented 4 years ago

Should Always On Top be named "PowerMenu" like the original tool?

LuminarySage commented 4 years ago

I mean, if you intend to add more stuff later on to the menu then yeah

taikulawo commented 4 years ago

@enricogior what's time this feature will be implemented? It has been six months since you say Don't tell anybody... Always On Top will arrive soon ;) But I found that the feature has been moved into Backlog milestone which means work we are thinking about doing but has not been scheduled. It's a very nice we wanted to power our workflow 😁

crutkas commented 4 years ago

It is not a v1 item. If memory serves, we hit a roadblock on it for uwp vs native and then got focused on other hard issues. We should have updated this issue. Sorry.

MOrlassino commented 4 years ago

For some possible inspiration for the UX of the 'Always on Top' Microsoft PowerToys functionality:

Sollace commented 4 years ago

@MOrlassino I'm always going to be in favour of the simple "ctrl+space" key combo to toggle the state.

Easiest and simplest solution. Only hiccup are games which make use of control and space, as rare as that can be.

MOrlassino commented 4 years ago

@Sollace, I agree that having a (configurable) shortcut to toggle 'Always on Top' functionality of any window is important. I use that exact same key combo all the time with an AutoHotkey script (https://www.autohotkey.com/) to do the same.

Beyond the shortcut functionality, I still believe there are other useful features to would add to the usability of "Always on Top". IMO, doing so would completely enhance and elevate the Windows platform as the best platform for developers and consumers alike. I listed five possible feature areas (with UX references) at the bottom of this post.

The Ideal Situation - Build all functionality into the Windows Desktop Shell

The Windows OS/Shell team eventually supports 'Always on Top' as a first-class feature and built-in so that it can be supported traditional (Win32) and UWP apps seamlessly. Adding, for example, a checkbox to a Windows Desktop Shortcut's Advanced Properties dialog to enable launching the application 'Always on top', similar to the 'Run as administrator' functionality.

Proposed High-level Windows 'Always-on-Top' Feature Set (w/ UX Examples)

nicolasprigent commented 4 years ago

I've got a suggestion instead of a keyboard shortcut, it would be to right click on the close button of the window you want to have always on top. The action should be a toggle. I've got an autohotkey script that does exactly this and it's really effective and works mostly on any case (no conflict with keyboard shortcut of applications). The only thing on my autohotkey script is when a program doesn't use the default windows 10 interface (like photoshop for example) it doesn't work.

Sollace commented 4 years ago

@nicolasprigent I believe I'm using the same autohotkey (always-on-top.exe ?) and I haven't noticed very many programs that haven't worked with the key combination.

Only exception I can think of off the top of my head are applications that mess with the same flag, like Task Manager.

Edit: Oh yeah, and Eclipse. Eclipse randomly steals the "always on top state" and I have to occasionally alt-tab back to my video to get the layering fixed.

nicolasprigent commented 4 years ago

Ctrl+space is not really the ideal shortcut (for me), for example it's used to toggle view to full size in blender, it's the shortcut for "zoom in" in photoshop and illustrator. In a lot of program that have extensive use of shortcut, ctrl + space is often used.

bergamin commented 4 years ago

@Sollace, I don't remember a game that uses Ctrl+Space, but it would get in my way every day as a developer trying to get intellisense to trigger before it pops on its own...

Win+Space, similarly would not be ideal as it triggers keyboard language switch on Windows 10.

What I wold like to see is something like this (that changes to show if it is pinned or not):

image

And a shortcut that uses the Win key (to follow the same pattern as Win+Up, Win+Down, etc.)

crutkas commented 4 years ago

no matter what, the shortcut would be able to be overridden

patarok commented 4 years ago

Deserves an upvote. Plus despite some assume it wouldnt be possible... I am still convinced that setting windows to certain layer levels already was possible back in the days with some 3rd party software but i cant remember which.

gczark commented 4 years ago

Nobody mentioned MenuTools https://github.com/navossoc/MenuTools

Sollace commented 4 years ago

@gczark Very nice. Plus it has more features than the basic On-Top toggle.

Edit: And it plays nicely with my keyboard toggle. It properly check/unchecks the option in the menu when toggling with the other program.

gczark commented 4 years ago

@Sollace If you haven't read from its changelog, it also have a RollUp feature. Just middle click the title bar, and poof. It was sad that the project is likely abandoned.

You can also check this one https://github.com/AlexanderPro/SmartSystemMenu, yet this is not furnished as MenuTools, but has more features.

munael commented 4 years ago

For keyboard shortcuts, I currently use Win+Esc to toggle AlwaysOnTop, and Ctrl+Esc to completely minimize the active window. They feel natural enough, and somewhat complementary. Got no use the original Ctrl+Esc. Also debating if I should wire Alt+Esc to toggle transparency of active window. All done with AutoHotKey.

maxcarl commented 3 years ago

Don't tell anybody... Always On Top will arrive soon ;)

Any updates on this issue? ;-)

enricogior commented 3 years ago

@maxcarl it's in the official roadmap https://github.com/microsoft/PowerToys/wiki/Roadmap

thedaveCA commented 3 years ago

I think it is worth considering that this feature should also be able to work in reverse: Remove Always On Top from windows that assigned it to themselves needlessly.

The use case: Installation and license registration forms that literally blocking my ability to find the information it is requesting.

bobaoapae commented 3 years ago

any news on that? Because i'm working to do this function for i can use locally... If nobody working on this feature i can try and make a pull request when it's done

enricogior commented 3 years ago

@bobaoapae before considering opening a PR, we need a full specification of the feature.

crutkas commented 3 years ago

For me, i think we should just quickly discuss how we'll 'enable' it.

I don't think title bar is a good route since there are a lot of apps that draw it custom. To me, i'm thinking maybe some type of

  1. Keystroke for the window to enable/disable
  2. something via right click in taskbar
    1. How do you handle multiple windows/apps open?
  3. system menu via alt-space (conflicts with PT Run which overrided this)

The other big question is displaying that a window is set always on top.

fredskis commented 3 years ago

There's a paid application on the Windows Store called Sticky Windows that handles this very well. Option of a custom title-bar menu triggered by Windows + right click to enable/disable. Option to use a keyboard shortcut, Windows + F10 to enable/disable Closing app to taskbar where the UI shows a list of open applications/executables and whether they're pinned or not.

bburgin commented 3 years ago

I use TopMost2: https://github.com/Jerrylum/topmost2 It allows me to make the active window top most by just double-clicking the TopMost2 system tray icon. Then I don't have to remember a keyboard combination to invoke it. It does also have a keyboard shortcut, for those that want to set one.

Patabugen commented 3 years ago

I don't know how easy it is to add menus to "other" apps, but would it be possible to inject a menu item into the "View" menu? (e.g. the old-fashioned menu which comes up when you press the Alt button).

We don't need to reinvent anything (with floating buttons or new screens) if we can just add to the View menu.

Also any news on this? It may be because of how they work, but most of the suggestions above are reported by VirusTotal as containing one kind of malware or another and it'd be great to get something trusted (and more reliable than the dated Desk Pins).

antoniogonzalezs commented 3 years ago

Any news on when this feature will be released? How long does post-stabilization take for a feature? I saw it in the roadmap list

WindowsTablet commented 3 years ago

@crutkas

For me, i think we should just quickly discuss how we'll 'enable' it.

I don't think title bar is a good route since there are a lot of apps that draw it custom.

ActualTools Title Buttons somehow handles this almost properly, and it also has exclusion options. Sadly its title buttons aren't tapable with touch on some apps that draw their custom title bar, such as Edge.

https://www.actualtools.com/titlebuttons/

To me, i'm thinking maybe some type of

  1. Keystroke for the window to enable/disable
  2. something via right click in taskbar

    1. How do you handle multiple windows/apps open?
    2. system menu via alt-space (conflicts with PT Run which overrided this)

AquaSnap uses Aero Shake for this. This is what I prefer, since it works with every window type, is direct, and it works with touch.

TopMost2 uses double click on systray or a keyboard shortcut, this also works with touch, but it's less direct and clutters the systray.

Whatever is decided, please make it also usable for touchscreen/tablet users.

Jay-o-Way commented 3 years ago

A "pin" button next to the window (min/max/close) buttons would be the most simple and logical to me. But if custom title bars mess that up, that's too bad:-(

ghost commented 3 years ago

I'm currently using TurboTop with a custom icon in the system tray. I like it

dp876 commented 3 years ago

For me, i think we should just quickly discuss how we'll 'enable' it.

I don't think title bar is a good route since there are a lot of apps that draw it custom. To me, i'm thinking maybe some type of

1. Keystroke for the window to enable/disable

2. something via right click in taskbar

   1. How do you handle multiple windows/apps open?

3. system menu via alt-space (conflicts with PT Run which overrided this)

The other big question is displaying that a window is set always on top.

Option to set custom keystroke to enable/disable. When enable, any window we click on becomes pinned to the top. And to display that window is set to always on top, just overlay a pinned icon/emoji on the window that is pinned. That's all I have to say, don't see the need for it to be anymore complex.