mzomparelli / zVirtualDesktop

Windows 10 Virtual Desktop Hotkeys, System Tray Icon, Wallpapers, and Task View replacement
459 stars 44 forks source link

Persist pinned apps #104

Open fluffynuts opened 7 years ago

fluffynuts commented 7 years ago

One of the reasons I couldn't use the native desktops provided by Win10 is because there was no way to pin an app across all desktops. I run a dual-head display and I always want my browser on the left display, irrespective of which desktop I'm on (though I use desktops to separate working concerns).

zVD does this, but one feature I'd really like would be to be able to configure persistent settings for windows across sessions. Settings- and ui-wise, this may have reasonable cross-over with https://github.com/mzomparelli/zVirtualDesktop/issues/36

mzomparelli commented 7 years ago

It sounds like you want to be able to force certain windows to always load on a specific desktop. That is exactly what that other issue is referring to. It also sounds like you want to take that up a level and be able to control specific window settings as well. Like Maximize and minimize. Am I understanding you correctly?

fluffynuts commented 7 years ago

Yes to the first part -- I'd like to force certain windows to load on a specific desktop (my use-case is ALL desktops, but I'm sure the logic is similar -- although you already have the logic for pinning an app to all desktops, so perhaps not really). I don't really want to control window settings like Maximise and Minimise though. Not sure if anyone else wants this though.

Basically, the use-case is that I want my browser, (Firefox Nightly) to always be pinned to all desktops, even after restarting the browser or restarting my computer and then starting the browser. For an app which updates frequently (like FF Nightly), it would be hella convenient.

mzomparelli commented 7 years ago

Glued Apps

mzomparelli commented 7 years ago

How would you feel if it took a few seconds after you open the app to recognize it and send it where it should be? In your case it would pin the window as soon as it was recognized.

fluffynuts commented 7 years ago

I recognize that the solution probably lies in polling windows, so I accept that the final outcome may not be instantaneous. I would suggest that a delay of 500ms or less would feel practically instant to the user - not sure if this is practical?

M3Rocket commented 7 years ago

I think it is sufficient to have a option on the menu that allows someone to just rearrange all the windows of opened apps. That way, upon startup, I'd just open all the apps, then hit one menu selection on the tray to "arrange" all the open windows on the different desktops.

mzomparelli commented 7 years ago

@M3Rocket so you're saying pre-configure how windows should be arranged, but have the option to only apply it when you ask for it?

fluffynuts commented 7 years ago

I'm not really a fan of this idea. I'm going to end up hurting that button so often as I restart apps (like Firefox nightly), open them late because I don't remember (outlook - some days I forget to open it for ages and people wonder why I don't respond to mails 😒) or open new instances (visual studio). I'd really like this to "just happen" when an app opens.

M3Rocket commented 7 years ago

I would want the option to turn off that option then--I do not want a process polling multiple windows all the time. I much prefer this app to retain a low profile, small footprint and use as few resources as possible.

I tend to load up up to 10 desktops with different "tasks" in mind. All of them have a Chrome window open for instance. But I don't usually open many other applications in multiple desktops. So for my use, I'd only want it to setup the maybe three or four apps that I need on various desktops after I load those apps at startup or restart.

mzomparelli commented 7 years ago

My plan was to implement this like pinning windows. Instead you will click something like glue window and this will prevent the window from moving to another desktop and will automatically move new windows to the desktop you pre-configured for that window.

mzomparelli commented 7 years ago

My previous attempt at using an event hook caused extra cpu load. I don't have a choice though. I have to make it work because it sets me up for having timers for all windows. Desktop timer is going away and being replaced by window timers. DesktopView header row will display the sum of the time for each window on the desktop. And reports that you can export.

nicolasdejong commented 7 years ago

A use case I run into is that my windows are moved and resized by Windows because the resolution changes temporarily. I have a large resolution (4096x2160) screen both at home and at work. When I need to give a presentation and the projector has a resolution of e.g. 1024x768, the windows on all virtual desktops will move and resize to fit into that resolution (same if I accidentally open the laptop). Then when I go back to the monitor, all windows are in the left-top and I need to move and resize a few dozen windows.

So 'save windows positions' and 'restore windows positions' buttons (perhaps automatic if the resolution changed) would be a welcome addition for me.

fluffynuts commented 6 years ago

A thought occurs: one possible strategy would be to provide an api which users could program against. Whether this is a cli app or a dll with exports that could be consumed from, for example, Python, this would be a useful feature. It would allow users to script behaviors that they want. Popular behaviors could be incorporated into the core or shared amongst users. Thoughts?

mzomparelli commented 6 years ago

@fluffynuts I like where you are going with that idea. However, my goal is to keep this as a single executable with no external libraries even if it is my own library. Let me think about this more.

rbreaves commented 2 years ago

I'd buy this software and possibly multiple licenses if it supported this 1 feature. On Linux they have Devil's Pie and macOS I assume has something they already apply a PiP mode that works well btwn desktops for video and communications apps.

Windows 10/11 desperately needs this for their virtual desktops to be useful imho.