So happy to see so much more active development in windows stuff these days, for a while it looked like all the cool stuff was happening in the apple ecosystem, I’m happy to see developers starting to trust windows again.
One of the things that I’d love to see in this that fancy zones is missing is the ability of windows to remember where they should be after I reconnect to my dock. Like maybe I run some shortcut right before I disconnect the dock that stores window locations and then when I reconnect I click the shortcut again to restore them to those monitors.
> One of the things that I’d love to see in this that fancy zones is missing is the ability of windows to remember where they should be after I reconnect to my dock.
When I worked in an office, and had frequent meetings I had to take my laptop to, it irked me enough to come up with my own solution:
The tools included in the PsTools suite, which are downloadable as a package, are: PsExec - execute processes remotely,
PsFile - shows files opened remotely,
PsGetSid - display the SID of a computer or a user,
PsInfo - list information about a system,
PsPing - measure network performance,
PsKill - kill processes by name or process ID,
PsList - list detailed information about processes,
PsLoggedOn - see who's logged on locally and via resource sharing (full source is included),
PsLogList - dump event log records,
PsPasswd - changes account passwords,
PsService - view and control services,
PsShutdown - shuts down and optionally reboots a computer,
PsSuspend - suspends processes,
PsUptime - shows you how long a system has been running since its last reboot (PsUptime's functionality has been incorporated into PsInfo)
what do you mean by reconnect to my dock?
Feel free to open an issue if you'd like and I'll try and to my best to implement it.
edit: I think I understand, WinWM has a hotkey called refresh after you move windows you can use it to return all windows to the current layout.
On the subject of tiling managers (I use one since so long I don't even remember when I started using those), time for a rant...
I never ever understood why those who do allow gaps (i.e. some space between each window) are basically all, by default (and sometimes it's very hard to change), do add "gaps" near the monitor's borders.
I mean seriously: why on earth are empty pixels added between the leftmost window(s) and the left side of the monitor, between the rightmost window(s) and the right side of the monitor, between the bottommost window(s) and the bottom of the monitor?
This, to me, makes absolutely zero sense. And they all do that, including this one for Windows 10 (as can be seen in the screenshots).
Why? Really: just why? I want to rant and ask: what's wrong with people? : )
It just makes no sense. There's not a world in which it makes sense.
Worse, Awesome VM calls all the gaps "useless gaps" even though it's a fact that gaps between windows aren't useless (especially when you're tiling terminal windows with no borders or with a 1-pixel border, where it can be hard to detect boundaries between two terminals if there's no gap).
But gaps near the monitor's borders are really useless: it's ok, I don't risk mistaking what's at the right of my monitor (atm a physical cup of coffee) or what's at the right of my monitor (atm a tower with three Raspberry Pi stacked) for, say, a terminal window!?
I hacked my tiling VM (the "Awesome VM" on Linux) to not have these really useless gaps on the borders but the assumption that they should be there are so deeply tied in the code that's it's a PITA to do.
"Use the source Luke" and all that but, why, just why? And why hardcode these assumptions in the code? Why do they all do that?
I can't speak for everyone, but on my 4k 40" monitor I appreciate the gap at the left/right border because it can be quite difficult to read the text on the far left/right of the screen unless I'm sitting over 120cm away from the screen. It's literally only the first column of text (in a console) so the left gap just pushes everything over enough that I can see it easier.
Your perspective seems to be purely based on optimizing for screen real estate. I don't use a tiling VM for the efficient use of pixels but for the usability benefits they provide. Useless gaps are useless when optimizing for use of pixels for content that is relevant to you. I like to have some visual "breathing" space between object I look at for the same reason passe-partouts are a thing in art for a very long time and pauses matter in music.
If the window is sitting at the edge of the screen, with no gap at all, it can easily create the illusion that part of the window is off the edge of the screen. Especially when text sits right against the edge. The extra border is just a visual indicator that yes, you are seeing the entire window.
Looks cool. If you want to get rid of your hook DLLs and the need for the x86ipc child process, you can use SetWinEventHook() with EVENT_OBJECT_CREATE / EVENT_OBJECT_DESTROY as min/max event values and WINEVENT_OUTOFCONTEXT to get notification on newly created/destroyed windows, all within the context of your process. No hook DLLs required.
Oh wow, that's huge I'll definitely add that, that'll help a lot with dealing with processes that don't need injection, and protected processes (anticheats/drm etc...).
edit: though regardless, I need to inject ForceResize into them, but still maybe I can come up with some way to subclass windows without subclassing windows lmao, need some gui thread message hijacking
On Linux I’m a now full time sway-user, and a former i3 user.
While on Windows I never found a good i3-replacement, I found a fairly mature and stable tiling WM I’ve been contributing too, although it’s more in the style of xmonad.
So if you’re into tiling WMs and you’re stuck on Windows you may want to give that one a try too:
Great work! I love FancyZones but this is a bit more configurable (a friend on Twitter calls FZ “lighter touch,” which I think is a perfect descriptor, whereas this is more flexible and more of a traditional tiling manager) and it’s such a good start!
I’m primarily a macOS user, but projects like this really make me wish there were more options (yes, I’m aware of Amethyst, Yabai, Spectacle (now Rectangle), Hammerspoon, and so on. Those options all have their own deficits and trade-offs) in the Apple world.
If anyone here has a Dell monitor, they have a small tray application called "Dell Display Manager" and it can split your screen up into all kinds of different configurations (I use 1x pane on the left and 2x panes on the right). It works only on Windows though. It works great and easy to switch off if it gets in the way.
On the macOS front I’ve only heard of Yabai and amethyst. I settled on amethyst since it didn’t require disabling SIP but I’d be interested to hear about the drawbacks you’ve seen in others. Amethyst seems to work okayish, but I definitely would be interested in something more advanced if the drawbacks aren’t too painful.
One important distinction is that you can still resize the window without affecting other windows, so not really true tiling WM in linux sense, where you can never escape the tiles.
I have never seen Windows WM behave the way i3 does.
Windows can be made to behave like i3, with a lot of work. I've done a few different things over the years, but I never got into i3 so I haven't made my personal WM software work like that.
It's a bit of a curiosity nowadays, but Windows started out as a tiling system - if memory serves, overlapping windows were not supported until 2.1. But even then, it wasn't like i3.
- guy that worked on the Windows WM (USER & DWM) for over a decade
I'll have to try this one out, I've been using PyleWM[0] for a few months, and it works well, but doesn't have as much workspace support as this project, it seems.
One recent thing PyleWM has added, but isn't in the readme, is a fuzzy program launcher, does this have anything like that?
Gee, what the OP has is a LOT of advanced Windows software but, still, gives results not what I prefer!!
I don't want to change the sizes of the windows and but just move them so that I can easily make use of all of them and for that goal:
For each window, I want its UL (upper left) corner to be on a line from roughly the top center of the screen to roughly the left center of the screen. And I want all those UL corners equally spaced on that line.
So, for the goal: With this arrangement (1) can see at least a little of each of the windows, (2) usually can see the title of each of the windows, and (3) properties (1) and (2) continue to hold for any Z-order for the windows, i.e., can click on the windows in any order, thus, changing the Z-order, and still have properties (1) and (2). So, with (3) can just click on any window, bring it to the top of the Z-order, see all of that window, and still have (1) and (2). That is, can continue working with all the windows without more arranging.
I wrote a little script in Rexx to do this arranging and put an icon on the desktop to run that script. Best place for the icon? Sure, in the UL corner of the screen thus, not covered by any of the so arranged windows.
The version of the Firefox Web browser I'm using does something similar BUT with a difference: The line I mentioned goes from the top center of the screen to the center RIGHT of the screen instead of the center left. Sooo, when a window is brought to the top of the Z-order, usually all the windows with UL corner to the lower right are fully covered, i.e., usually can't see any part of any of them. So, lose property (3) and often soon also properties (1) and (2).
So, having that "line" go to the center left of the screen instead of the center right is a biggie!
I'm not too sure what you mean, if you mean the little inequalities from the top of the screen, the option
"adjust_for_nc" should be turned on, I should probably change that to include it.
As for the rest of the stuff I'm not sure
Kinda on-topic: if anyone here has a Dell monitor, they have a small tray application called "Dell Display Manager" and it can split your screen up into all kinds of different configurations (I use 1x pane on the left and 2x panes on the right). It works only on Windows though. It works great and easy to switch off if it gets in the way.
> The task bar must be at the bottom of the screen and not on the sides, this is something that will hopefully be fixed soon
That's a shame, I look forward to this restriction being lifted so I can check it out without rewiring my brain in two ways at once instead of just learning the new tool.
fancyzones is pretty good but it's more like fixed layouts that you can change to, where as i3wm and other twms let you change the layout on the fly making them a bit more flexible.
> The subtractive Grid model starts with a three column grid and allows zones to be created by splitting and merging zones, resizing the gutter between zones as desired.
i3wm is basically like that except ad-hoc instead of preconfigured, and starting from a single full-screen window.
Nice work! One thing I always miss from MacOS is per-monitor workspaces. Does your WM support this?
Gonna give it a shot. Right now I'm using the Microsoft's FancyZones PowerToy which is more about custom snap zones than proper tiling.
well each monitor has it own workspace, but when you change workspaces it will change them all in sync with each monitor, so I don't know if that's what you mean. you can have different layouts on different monitors if that is what you mean
Yeah, there are definitely a few, I've implemented an experimental thing that removes titlebars for windows, but that's totally dependant on the application it works on, so browers that do fancy things don't work as well, but something like notepad/cmd/etc... work pretty well.
Also the focus bar is a little overlay line that could be improved, but it's very difficult to make it like in i3wm without covering a significant portion of a windows content since you can't really control a windows rendering, etc....
Yes my bad, this is a debugging remnant because all UWP windows share the same name meaning that it gets very confusing when the settings and other applications get captured by WinWM, or like the wifi popup, etc...
yes it does have workspaces, 9 of them that aren't just moving around windows but windows's own Virtual Desktop, but no the state isn't stored through reboots, though that is one of the goals.
[+] [-] vxNsr|5 years ago|reply
One of the things that I’d love to see in this that fancy zones is missing is the ability of windows to remember where they should be after I reconnect to my dock. Like maybe I run some shortcut right before I disconnect the dock that stores window locations and then when I reconnect I click the shortcut again to restore them to those monitors.
[+] [-] 0xdba|5 years ago|reply
When I worked in an office, and had frequent meetings I had to take my laptop to, it irked me enough to come up with my own solution:
https://github.com/nearwood/windmill
[+] [-] NicoJuicy|5 years ago|reply
Search Everything ( https://www.voidtools.com/ & it's toolbar https://github.com/stnkl/EverythingToolbar - highly recommended )
Gif about search everything toolbar: https://user-images.githubusercontent.com/17520641/102723553...
PsTools - https://docs.microsoft.com/en-us/sysinternals/downloads/psto...
The tools included in the PsTools suite, which are downloadable as a package, are: PsExec - execute processes remotely, PsFile - shows files opened remotely, PsGetSid - display the SID of a computer or a user, PsInfo - list information about a system, PsPing - measure network performance, PsKill - kill processes by name or process ID, PsList - list detailed information about processes, PsLoggedOn - see who's logged on locally and via resource sharing (full source is included), PsLogList - dump event log records, PsPasswd - changes account passwords, PsService - view and control services, PsShutdown - shuts down and optionally reboots a computer, PsSuspend - suspends processes, PsUptime - shows you how long a system has been running since its last reboot (PsUptime's functionality has been incorporated into PsInfo)
[+] [-] mcyoloswagham|5 years ago|reply
[+] [-] TacticalCoder|5 years ago|reply
I never ever understood why those who do allow gaps (i.e. some space between each window) are basically all, by default (and sometimes it's very hard to change), do add "gaps" near the monitor's borders.
I mean seriously: why on earth are empty pixels added between the leftmost window(s) and the left side of the monitor, between the rightmost window(s) and the right side of the monitor, between the bottommost window(s) and the bottom of the monitor?
This, to me, makes absolutely zero sense. And they all do that, including this one for Windows 10 (as can be seen in the screenshots).
Why? Really: just why? I want to rant and ask: what's wrong with people? : )
It just makes no sense. There's not a world in which it makes sense.
Worse, Awesome VM calls all the gaps "useless gaps" even though it's a fact that gaps between windows aren't useless (especially when you're tiling terminal windows with no borders or with a 1-pixel border, where it can be hard to detect boundaries between two terminals if there's no gap).
But gaps near the monitor's borders are really useless: it's ok, I don't risk mistaking what's at the right of my monitor (atm a physical cup of coffee) or what's at the right of my monitor (atm a tower with three Raspberry Pi stacked) for, say, a terminal window!?
I hacked my tiling VM (the "Awesome VM" on Linux) to not have these really useless gaps on the borders but the assumption that they should be there are so deeply tied in the code that's it's a PITA to do.
"Use the source Luke" and all that but, why, just why? And why hardcode these assumptions in the code? Why do they all do that?
I just don't get it and never will.
Rant off : )
[+] [-] zwayhowder|5 years ago|reply
[+] [-] Galanwe|5 years ago|reply
Its purely esthetical :-)
[+] [-] nononononono__|5 years ago|reply
[+] [-] Izkata|5 years ago|reply
[+] [-] nvrspyx|5 years ago|reply
Some people prefer the aesthetic of the gaps, but it should at least be an option for tiling window managers.
[+] [-] ianhanschen|5 years ago|reply
[+] [-] mcyoloswagham|5 years ago|reply
edit: though regardless, I need to inject ForceResize into them, but still maybe I can come up with some way to subclass windows without subclassing windows lmao, need some gui thread message hijacking
[+] [-] josteink|5 years ago|reply
While on Windows I never found a good i3-replacement, I found a fairly mature and stable tiling WM I’ve been contributing too, although it’s more in the style of xmonad.
So if you’re into tiling WMs and you’re stuck on Windows you may want to give that one a try too:
https://workspacer.org/
[+] [-] filmgirlcw|5 years ago|reply
I’m primarily a macOS user, but projects like this really make me wish there were more options (yes, I’m aware of Amethyst, Yabai, Spectacle (now Rectangle), Hammerspoon, and so on. Those options all have their own deficits and trade-offs) in the Apple world.
[+] [-] abandonliberty|5 years ago|reply
https://docs.microsoft.com/en-us/windows/powertoys/fancyzone...
[+] [-] BatteryMountain|5 years ago|reply
[+] [-] memco|5 years ago|reply
[+] [-] kybernetikos|5 years ago|reply
[+] [-] majkinetor|5 years ago|reply
I have never seen Windows WM behave the way i3 does.
[+] [-] ianhanschen|5 years ago|reply
It's a bit of a curiosity nowadays, but Windows started out as a tiling system - if memory serves, overlapping windows were not supported until 2.1. But even then, it wasn't like i3.
- guy that worked on the Windows WM (USER & DWM) for over a decade
[+] [-] RMPR|5 years ago|reply
Tbf that's exactly what floating mode is for
[+] [-] Miner49er|5 years ago|reply
One recent thing PyleWM has added, but isn't in the readme, is a fuzzy program launcher, does this have anything like that?
[0]: https://github.com/GGLucas/PyleWM
[+] [-] graycat|5 years ago|reply
I don't want to change the sizes of the windows and but just move them so that I can easily make use of all of them and for that goal:
For each window, I want its UL (upper left) corner to be on a line from roughly the top center of the screen to roughly the left center of the screen. And I want all those UL corners equally spaced on that line.
So, for the goal: With this arrangement (1) can see at least a little of each of the windows, (2) usually can see the title of each of the windows, and (3) properties (1) and (2) continue to hold for any Z-order for the windows, i.e., can click on the windows in any order, thus, changing the Z-order, and still have properties (1) and (2). So, with (3) can just click on any window, bring it to the top of the Z-order, see all of that window, and still have (1) and (2). That is, can continue working with all the windows without more arranging.
I wrote a little script in Rexx to do this arranging and put an icon on the desktop to run that script. Best place for the icon? Sure, in the UL corner of the screen thus, not covered by any of the so arranged windows.
The version of the Firefox Web browser I'm using does something similar BUT with a difference: The line I mentioned goes from the top center of the screen to the center RIGHT of the screen instead of the center left. Sooo, when a window is brought to the top of the Z-order, usually all the windows with UL corner to the lower right are fully covered, i.e., usually can't see any part of any of them. So, lose property (3) and often soon also properties (1) and (2).
So, having that "line" go to the center left of the screen instead of the center right is a biggie!
[+] [-] mcyoloswagham|5 years ago|reply
[+] [-] aoloe|5 years ago|reply
https://github.com/prabirshrestha/dwm-win32
Maybe you can take inspiration from one another...
I'm really tempted to try them out, but I probably first need a spare Windows system...
[+] [-] BatteryMountain|5 years ago|reply
[+] [-] kybernetikos|5 years ago|reply
[+] [-] reificator|5 years ago|reply
That's a shame, I look forward to this restriction being lifted so I can check it out without rewiring my brain in two ways at once instead of just learning the new tool.
[+] [-] webgoat|5 years ago|reply
0 - https://github.com/TimUntersberger/nog
[+] [-] Already__Taken|5 years ago|reply
[+] [-] mcyoloswagham|5 years ago|reply
[+] [-] bondarchuk|5 years ago|reply
i3wm is basically like that except ad-hoc instead of preconfigured, and starting from a single full-screen window.
[+] [-] joombaga|5 years ago|reply
[+] [-] mcyoloswagham|5 years ago|reply
[+] [-] rtlfe|5 years ago|reply
[+] [-] gautamcgoel|5 years ago|reply
[+] [-] mcyoloswagham|5 years ago|reply
[+] [-] saint_angels|5 years ago|reply
[+] [-] mcyoloswagham|5 years ago|reply
Also the focus bar is a little overlay line that could be improved, but it's very difficult to make it like in i3wm without covering a significant portion of a windows content since you can't really control a windows rendering, etc....
[+] [-] ghostpepper|5 years ago|reply
[+] [-] mcyoloswagham|5 years ago|reply
I'll address the bug soon
[+] [-] fortran77|5 years ago|reply
[+] [-] lostmsu|5 years ago|reply
[+] [-] qwerty456127|5 years ago|reply
[+] [-] mcyoloswagham|5 years ago|reply
[+] [-] emily-c|5 years ago|reply