Author here. Wanted to make something to replace seemingly dead GridMove (http://jgpaiva.dcmembers.com/gridmove.html). Current version basically reimplements GridMove's functionality.
Features over GridMove:
- High DPI support
- layout is defined in XAML which should be familiar for many Windows .NET developers
- XAML allows some slick UI customizations
In plans:
- window filters by class, title, program (you don't want fullscreen games to be affected by this app)
- hotkey remapping (not hardcoded hotkeys)
- realtime layout editor with preview
In plans for paid version (likely around $3):
- support for StackPanel, WrapPanel, etc based layouts
- zones with tabs (multiple windows in a same rectangle with little "tabs" over it)
- automation rules (e.g. if there's a fullscreen app running, move windows to secondary screens; automatically move new windows to preferred zones; rearrange windows, that have not been used for a long time, etc)
Would definitely buy if it behaved like i3 on linux. i3 doesn't use predefined layouts like most WM. I find it much more logical than awesome, xmonad, etc.
I am hoping to eventually cover that approach as well. As long as you stay with simple non-overlapping grids, it should be easy to implement.
However, i3 is quite functional, and Stack supports overlapping when necessary. So there're some UX compatibility problems to think about.
I'd be interested to know what functionality do you really use on a regular basis. Especially, it would be interesting to know _why_ do you use it. E.g. not just "I want to split my screen in half and put W1 to the left, and W2 to the right" but "I want to see all my open windows the most comfortable way possible".
For example: generally you don't just want a chat window constantly visible, you also don't usually need it to take half of 30 inch screen. So with an ideal app you should say, that it does not require more than 10cm width and 6cm height, and WM will figure out the rest.
I use i3 (gaps, because it's pretty) and would also be excited about a windows version.
I'm not a super sophisticated user of it.
I appreciate ability to arbitrarily split panes vertically or horizontally and also moving windows around with alt+shift+hjkl. Alt + enter brings up a new terminal.
Ctrl + d brings up dmenu or similar "global search/run text input".
It's easy to jump around virtual screens/tabs (alt + tab#).
Alt+f full screens a pane.
Basically you don't need the mouse much and it uses hjkl so vim users like it.
If you get those, it's probably pretty good coverage for i3 fans.
- moving windows around is done with Win+Arrow key
- if you want to bring a new terminal with a hotkey, you can just assign one in shortcut properties (that's a Windows feature). Once automation feature is implemented, that terminal will behave similarly (or better than i3).
- sounds like Ctrl + d is basically Win key on Windows, that brings up start menu with integrated search
- virtual screens are already available on Windows 10, and there are hotkeys
- maximizing a window already has a hotkey in Windows 10 as well - Win + Up. Currently, Stack overrides that hotkey though
- hjkl sounds possible, however, I'd like to avoid modes, so they'll have to be used with modifiers
I will see what I can do to make it possible to run similarly to i3.
It does. Remapping Command onto Caps Lock helps a lot with the hand cramps, and Control makes a pretty good super key since almost nothing uses it. Still a mess, but it's manageable if you know how.
I'm also very interested in i3-style tiling instead of pre-configured layouts. I like being able to manage the splits more dynamically. I also really like i3's concept of hierarchies, being able to nest the splits. And being able to switch a particular group between tabbed and horizontal/vertical organization.
Regarding your $3 price for the paid version, I think you should be careful not to set the price too low. I happily paid $18 for the professional version of AquaSnap.
I've tried a bunch of tiling WMs and had this same frustration with predefined layouts. OpenBox has turned out to work best for me. It's not a tiling WM exactly but you can map "GrowToEdge(North|South|East|West)" and get a very tile-like effect.
Yep - I admit that the first thing I did was to middle-drag the window to the right edge expecting it to create a new 1/3 box on the right side of screen.
Hi so awesome to see work on a tiled window manager on windows.
I HATE paid programs and love donation model. I think my favorite is Synergy (Software Keyboard Mouse sharing) over say purchases from say Partition Magic (Live Linux OS for System repairs). Would be interesting to see how much they actually make.
Can I just say, it's worth easily ten bucks a copy, to me, to have the baseline settings configurable by group policy.
Super product useful for power users and developers: So many dollars.
Super window manager that I can set to increase productivity even on a sales floor, but where I want defaults for streamlining our help desk procedure: Above dollars plus about twenty to thirty per seat.
Glad to see people are still making better window managers!
Is this open source? I'd love to see how it works by reading the code. Which Windows APIs does it use? How is it customizable in XAML? Can it be extended in JavaScript?
I think extensibility and accessibility are extremely important for window managers.
There is a window manager for the Mac called Slate that is extensible in JavaScript -- it makes a hidden WebView and uses its JS interpreter by extending it with some interfaces to the app to do window management, using the Mac Accessibility API.
I'd like to take that idea a lot further, so I wrote up some ideas about programming window management, accessibility, screen scraping, pattern recognition and automation in JavaScript.
Check out Morgan Dixon's and James Fogarty's amazing work on user interface customization with Prefab, about which they've published several excellent CHI papers:
Imagine if every interface was open source. Any of us could modify the software we use every day. Unfortunately, we don't have the source.
Prefab realizes this vision using only the pixels of everyday interfaces. This video shows the use of Prefab to add new functionality to Adobe Photoshop, Apple iTunes, and Microsoft Windows Media Player. Prefab represents a new approach to deploying HCI research in everyday software, and is also the first step toward a future where anybody can modify any interface.
Presented by Morgan Dixon and James Fogarty at CHI 2010.
Imagine if every interface was open source. Any of us could modify the software we use every day. Unfortunately, we don't have the source.
Prefab realizes this vision using only the pixels of everyday interfaces. This video shows how we advanced the capabilities of Prefab to understand interface content and hierarchy. We use Prefab to add new functionality to Microsoft Word, Skype, and Google Chrome. These demonstrations show how Prefab can be used to translate the language of interfaces, add tutorials to interfaces, and add or remove content from interfaces solely from their pixels. Prefab represents a new approach to deploying HCI research in everyday software, and is also the first step toward a future where anybody can modify any interface.
Presented by Morgan Dixon and James Fogarty at CHI 2010.
We present a general-purpose implementation of Grossman and Balakrishnan's Bubble Cursor (http://www.tovigrossman.com/BubbleCursor/), the fastest general pointing facilitation technique in the literature. Our implementation functions with any application on the Windows 7 desktop. Our implementation functions across this infinite range of applications by analyzing pixels and by leveraging human corrections when it fails.
"Abstract:
Current methods for implementing graphical user interfaces
create fundamental challenges for HCI research and
practice. Researchers are often unable to demonstrate or
evaluate new techniques beyond small toy applications, and
practitioners are often unable to adopt methods from the
literature in new and existing applications. This position
statement examines a vision in which anybody can modify
any GUI of any application, similar to a scenario where
every GUI of every application is open-source. We are
currently working to enable this vision through our
development of Prefab, using pixel-based interpretation of
GUIs to enable modification of those GUIs without any
cooperation from the underlying application. We see
participation in the FLOSS HCI workshop as valuable in at
least two regards. First, fully realizing this vision will likely
require a community-based approach, so we are interested
in Prefab as a platform for collaboration between HCI
researchers and the FLOSS community. Second, enabling
arbitrary modification of any GUI would seem to blur many
current distinctions between open and closed applications,
introducing new research questions and further magnifying
the importance of the workshop’s focus."
And if you're into the history of window management, and would like to read some interesting discussions about many great ideas, check out this classic Springer Verlag book that's now available free online:
By F R A Hopgood, D A Duce, E V C Fielding, K Robinson, A S Williams. 29 April 1985.
This is the Proceedings of the Alvey Workshop at Cosener's House, Abingdon that took place from 29 April 1985 until 1 May 1985. It was input into the planning for the MMI part of the Alvey Programme.
The Proceedings were later published by Springer-Verlag in 1986.
Stack is not open source, however, some libs are (though only non-window management related). You can find them at https://github.com/losttech/
There's really not many WinAPI to call. SetWindowHookEx for handling global mouse events (there's an open source lib I use actually). MoveWindow to (guess what?) move windows. The rest is mostly hand-made.
There is no JavaScript extensibility right now, but I could think about one for the future versions.
Basically, extensibility right now is limited to decorations in XAML. However, that will be significantly extended when some features I mentioned above will land.
What I also though about is an open source library of pre-made screen layouts.
Hello, nice to see another big fan of Fogarty & Dixon's work ... such a pity that Microsoft or others didn't make these ideas mainstream! Dixon pointed me to his repo on github if you're interested...
Prefab is a set of software tools for reverse engineering graphical interfaces from their pixels. Prefab supports a variety of features for modeling the appearance of interface elements, identifying those elements in pixels, and applying semantic metadata to those elements. Prefab reverse engineers interfaces many times per second, making it possible to completely modify existing applications at runtime, independent of their underlying source code.
Prefab is written in C# and runs on Windows. However, because it only relies on the pixels of an interface, it can be combined with a remote desktop or virtual machine client to reverse engineer applications that run in Mac, Linux, or any other OS.
interesting. I tried to use WiLMA http://www.stefandidak.com/windows-layout-manager/ that has a super long list of features, but it was erroring frequently on Win10. If you already knew about WiLMA, how do you compare Stack to it?
looks cool, am giving it a spin. I have been using Aquasnap for now, and although it always suited my needs, it stopped working for unknown reasons, and am happy to look at this as an alternative. As a datapoint, I am happy to pay around $25 for a "pro" version with cool features.
Features over GridMove:
- High DPI support
- layout is defined in XAML which should be familiar for many Windows .NET developers
- XAML allows some slick UI customizations
In plans:
- window filters by class, title, program (you don't want fullscreen games to be affected by this app)
- hotkey remapping (not hardcoded hotkeys)
- realtime layout editor with preview
In plans for paid version (likely around $3):
- support for StackPanel, WrapPanel, etc based layouts
- zones with tabs (multiple windows in a same rectangle with little "tabs" over it)
- automation rules (e.g. if there's a fullscreen app running, move windows to secondary screens; automatically move new windows to preferred zones; rearrange windows, that have not been used for a long time, etc)