78

I've checked the previous question here, but unfortunately:

  1. DeskPin mostly doesn't work since Windows 8, and it still doesn't work in Windows 10
  2. PowerMenu hasn't been updated since 2002, and does not seem to work in Windows 10
  3. AutoHotKey and AlwaysOnTopMaker requires a keyboard, there is no visual indication that a window is marked as Always on Top or not

I found a program called TurboTop that can do this from system tray, but in Windows 10, TurboTop list all programs that is not even running in its list, twice. It is a mess.

WindowPinner does it better, but it still include not running programs in the list.

Is there any solution that work GUI way without requiring keyboard, like long pressing/right click on title bar and select Always on Top? If you're used to Ubuntu Linux you know this functionality.

2
  • Pinwin is some kind of spiritual successor to deskpin.
    – mirh
    Mar 26 '20 at 16:51
  • DeskPins works well in Windows 10 and 8.x.
    – G4mo
    Mar 9 '21 at 22:28

11 Answers 11

36

Dexpot does that, it enables a "Clever use of title bars":

The title bar as well as the minimize, maximize and close buttons can be assigned with further functions (Role up, Minimize to system tray, etc.).

Always on top is one of the functions. You could, for example, make a right click on the maximize button activate the always on top.

6
  • 7
    Dexpot is free for personal use only. May 18 '16 at 16:51
  • 3
    Just want to add a better option for this, you can use AquaSnap, it is even easier since you just have to shake the window to make it always on top instead of right clicking/long tap.
    – Nur
    Jun 19 '16 at 8:14
  • 1
    @Nur this is also personal use only and useless if you have to bring your own hardware to work. Nov 3 '16 at 0:42
  • 1
    @JanDvorak Take a look at my answer - it's GPL, free to use as you please (shameless plug: I'm the author) Dec 30 '16 at 9:08
  • 2
    @JoshuaParnell Unless it can insert itself into the window's context menu, I'm sticking with Turbotop, for the reasons outlined in the comments to your answer. Dec 30 '16 at 11:42
29

Download the AlwaysOnTop installer and install it (choose the latest release). Run the app from Start -> All Programs -> AlwaysOnTop. It sits in the system tray. Click the icon in the tray, click "AlwaysOnTop", and then click the window you want to stay on top (the cursor will be the cross while waiting for the window).

Full disclosure, I am the app author and this was built using .Net (C#). Full source can be found at the link as well.

11
  • 33
    "Download this. Run the exe, ..." almost has the same effect on me as if you'd said "Take this syringe and inject the contents into your blood stream ..."
    – olafure
    Jul 22 '16 at 13:10
  • 3
    it's compiled as 32 bit - if you don't trust the compiled executable (and I'm not insinuating you don't, just putting this here for future readers), it is possible to decompile an executable made with AutoIt into the source au3 file (which can be read with notepad, notepad++, etc). Oct 28 '16 at 1:36
  • 3
    @srgb I wholeheartedly agree. I believe this to be because it is built in AutoIt. I have recently increased its functionality (slightly), but because AutoIt applications' GUI's require a constant while loop to remain active, this can consume CPU as more functions are added. I plan to rewrite this app in C# as I have time. Dec 23 '16 at 21:44
  • 2
    the screenshot looks better definitely :) I see you've updated Github. Will give it a spin. Cheers UPDATE: both cpu and memory usage seem stable while shifting through windows/desktops. Awesome. I'll continue to monitor and let you know if I come accross any issues.
    – srgb
    Jan 2 '17 at 0:41
  • 6
    There is a pretty big issue with this app, on Windows 10 it causes the keyboard to stop accepting input likely due to trying to register a keyboard hook. See Keyboard not working while using it. #15.
    – user692942
    Jul 3 '17 at 13:47
22

This is off the OP's original question, but seems like a good place to share information about 'always on top' utilities, even if it does require a few clicks.

From a programming standpoint, writing a simple utility like this is a very simple exercise. Maybe that's why there are so few solutions out there, or perhaps why there are so many home grown ones.

It's hard for me to trust utilities that are downloaded from somebody's Google Drive or Dropbox account. But I do trust Nir Sofer of Nirsoft. He has a tiny app called WinLister where we can set a window to be always on top. It's not very user friendly if you do it often, but I only occasionally need to pin a window to the top, so it works for me.

http://www.nirsoft.net/utils/winlister.html

4
  • 1
    I like that you reasoned why this simple feature is missing from pro apps but so common in home grown apps. That helps explain why apps for this feature may be hard to find from more reputable software companies and why the apps you do find make you cringe with virus fear. Also, I can confirm that this app suggestion does work with Windows 10 Store apps.
    – Thomas
    Dec 28 '16 at 3:04
  • 1
    winlister stops working the instant I open it. Both x64 and x86 version, even as admin. Win 10.
    – lucidbrot
    May 27 '17 at 17:17
  • works for me on windows server 2016 64 bit. thank you!
    – mit
    Jan 11 '19 at 14:12
  • 1
    Make sure to set compatibility mode to Windows 8 when you are on Windows 10.
    – Seva
    Nov 29 '19 at 8:40
16

You can use AutoHotkey and make a script with just a single line of code:

^SPACE:: Winset, AlwaysOnTop, , A

Ctrl+Space Will toggle a window to stay on top.


Have a look at the full syntax:

WinSet, AlwaysOnTop , OnOffToggle, WinTitle, WinText, ExcludeTitle, ExcludeText

A activates WinTitle A which means the Active Window.

Read more on Winset command here: https://autohotkey.com/docs/commands/WinSet.htm


If you're unfamiliar with AutoHotkey, download it from here: https://www.autohotkey.com/

And learn to use it: https://autohotkey.com/docs/Tutorial.htm

Explaining AutoHotkey would not be relative to this answer, and the tutorial link will explain much better than I can.


Using a hotkey for toggling AlwaysOnTop is the most convenient, but if you intent to not use your keyboard, here's a GUI way to do this since it was requested:

#Persistent
Menu, Tray, Add, Toggle Always On Top, AlwaysOnTop

AlwaysOnTop:
Sleep, 100
Winset, AlwaysOnTop, , A
return

Just right click on the Autohotkey script icon on your taskbar, and click "Toggle Always On Top".

7
  • Also check itechtics.com/10-tools-to-always-on-top-any-app-in-windows-10 for more.
    – Shayan
    Jan 2 '19 at 14:47
  • Confirmed this works as expected. Thanks for an elegant solution.
    – 7h3rAm
    May 16 '20 at 13:51
  • OP wanted a solution that didn't require a keyboard shortcut. Jun 13 '20 at 18:21
  • @Steamgamer OP got an answer 4 years ago.
    – Shayan
    Jun 13 '20 at 19:11
  • Didn't realize, but this still doesn't answer the actual question, which some have come to find, Jun 14 '20 at 13:20
6

I have been using VirtuaWin since many years for this. It allows me to middle click on the title-bar of any window to make it stay 'always on top'. Works fine on win 10. Free, open source.

1
  • This work great! Thanks, but the problem is it requires middle click which require wheeled mouse, anyway to change it to right click (integrate with default context menu) so it can be performed with touchpad or directly on the screen?
    – Nur
    Jan 25 '17 at 6:19
3

Another great portable&freeware tool from Nirsoft - NirCMD - allows to set top-most state via command line as in the following sample, making active foreground window sit on top till it is closed (or returned to normal via sending "0") -

nircmdc.exe win settopmost foreground 1

Best combined with a timeout, command will wait a bit (2 seconds) till you switch back to the desired window -

timeout 2 && nircmdc.exe win settopmost foreground 1

Personally, I use an awesome launcher ControlPad that sits in tray and waits for my action. I binded a dot . on my keypad to make any window on top (following command is specific for that launcher app only!) and double dot to disable that state

[Commands]
.=~Sleep 1000;@D:\Apps\Nirsoft\NirCMD\nircmdc.exe win settopmost foreground 1
..=~Sleep 1000;@D:\Apps\Nirsoft\NirCMD\nircmdc.exe win settopmost foreground 0

This NirCMD utility is very handy in many other occasions, so while it is already present why not employ it for this use case?) It really did help me!

2

Hold left click on the title bar to make a window always-on-top

With CClose, you can hold left click on a window's title bar to toggle it always-on-top. Simple as that.

1

Is there any solution that work GUI way without requiring keyboard, like long pressing/right click on title bar and select Always on Top? If you're used to Ubuntu Linux you know this functionality.

Yes, try WindowTop from here: http://windowtop.info/

from softpedia review (source: http://www.softpedia.com/get/Desktop-Enhancements/WindowTop.shtml) :

there are several functions at your disposal. These are accessed from a new menu attached to every window’s title bar. Menu options only appear on mouseover, and the container can be moved across the title bar.

It works really well on windows 10

0

You can use maComfort.

After installing, in addition to many features, you can middle mouse click on the title bar and choose the "always on top" option. You can disable it the same way.

0

This perhaps doesn't exactly address OP's request, but Stick-It! is a great option for keeping certain windows on-top of others.

Key features:

  • Portable
  • Works with Windows 10 (tested, even though the landing page for the software doesn't state as such)
  • System tray controls
  • Doesn't retain on-top window settings through log out/restart/shut down

Windows are selected to keep on-top by right clicking on the system tray icon the software sets up, selecting "Stick-It!", and then simply clicking anywhere in the window of choice, which wiggles the window side to side for a second or two.

0
0

Again using AHK, a similar solution like @Shayan purposed, but a better version given that you don't want shortcuts involved.

;First add the menu item

menu, tray, add, AlwaysTop, AlwaysTop

; After clicking the menu item, you can select the window you want to keep on top.
AlwaysTop:
SetTimer, FollowMouse, 50
KeyWait, LButton, D
Sleep, 200
WinGet, currentWindow, ID, A
WinGet, ExStyle, ExStyle, ahk_id %currentWindow%
if (ExStyle & 0x8)  ; 0x8 is WS_EX_TOPMOST.
{
   Winset, AlwaysOnTop, off, ahk_id %currentWindow%
   SplashImage,, b fs12, always on top = OFF
   SetTimer, FollowMouse, OFF
   ToolTip
   Sleep, 1500
   SplashImage, Off
}
else
{
   WinSet, AlwaysOnTop, on, ahk_id %currentWindow%
   SplashImage,, b fs12, always on top = ON
   SetTimer, FollowMouse, OFF
   ToolTip
   Sleep, 1500
   SplashImage, Off
}
return

; A tooltip following the mouse instructing you to select the window you want to keep on top
FollowMouse:
MouseGetPos, px, py
ToolTip, Select the window, px+10, py+10
return


Not the answer you're looking for? Browse other questions tagged or ask your own question.