Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

This seems like a good time to plug my tiling window manager for Windows, workspacer. https://www.workspacer.org/

I use xmonad on my linux machines, and wanted something similar for Window, so workspacer trys to replicate that style of window manager (configurable via writing C#, dynamic layouts, etc).

I've been using it every day for about a year, but its still pretty early, there are some applications for which it freaks out, but for the most part it works! What it really needs is a good set of docs and a bunch of examples, but I haven't had any time to flesh it out.

I was hoping to see some unique tricks in the source for Fancy Zones, but it looks like it more or less does the same thing as workspacer, managing the set of open windows and occasionally calling SetWindowPos.



Oh! This is the closest I've seen to what I want when on Windows. I run linux at home but Windows at work, so I miss i3 a lot. I've tried some other tiling WM attempts for Windows before but none of them have worked very well...

I'll definitely give this a try!


Please do! I haven't had time to work on it lately, but if there is interest in it I wouldn't mind picking it back up!


Just downloaded it and I have some pretty specific/opinionated requests already :P

I like it when the config file is explicit - as in that there are no defaults outside of what is specified in the config file. This way it's very easy for a new user (like me) to edit things like keybinds, colors, etc. without having to basically recreate the default config to then edit it.

Also, since I'm an i3 user, I'd like if there was the possibility of navigating windows using directions instead of in a sequence, and to create layouts on the fly by doing splits and resizing. Maybe this is already possible by writing some code in the code though?

Nothing too important, but thought I'd voice my initial thoughts. Thanks for your work!

I'll go ahead and plug my dmenu equivalent[0], since that's also something I use when on Windows and which someone might find useful.

[0]: https://github.com/jerwuqu/wlines


on default config: yeah, I'm not sure what the best story is here. I would like the out of the box experience to be nice, and I want to be able to configure anything, but I also want to be able to ship nice improvements to the defaults without making all users update their own config. For example, I just pushed a commit that adds a default ignore for a new start menu process in 1903. If I place that ignore in the "template" for the config file, then all users with a custom config will need to somehow diff their config with the default. I am 10000% open to suggestions on how to make this better.

On direction changes, I've gotten this request a few times. It should be pretty easy, but I haven't gotten around to it: https://github.com/rickbutton/workspacer/issues/43

On the fly layouts would be neat. Since layouts are just an instance of ILayoutEngine, you could probably just write a bunch of custom code to allow you to make splits however you want. I would be super interested in seeing what this looks like!

wlines is awesome! There is a feature in workspacer similar to dmenu called "menus", but there are a few bugs, mostly around it sometimes not showing up in focus, which is a pain. I have some config on my work machine that lets me press alt-shift-p and navigate to a bunch of work projects I maintain, only typing the first few characters of the project I'm looking for.


The way most software I've seen resolve this is to have a defaults config file and a user config file. defaults is defined by the application maintainers and the user config overrides any settings in the defaults.

So you can do updates to the defaults but if users wanted to specify specific customisations those would be preserved. Also users can browser the defaults config and copy/paste chunks of that config into the user config file.

Those files are often named differently and/or located in different parts of the file system hierarchy; but the concept is the same.


thats an interesting idea.

right now, configuring workspacer is a very imperative, mutable process, because you just setup instances of objects, and call functions that setup some state. some care would need to be taken to design an API that could be "layered" in that it could be easily overridden by the user. this is a good idea!


Might be just as easy as making sure that all of your defaults are documented in the doc-comments of relevant properties and encouraging people to use CSX editors that have good documentation tooltips for API exploration (like VS Code with OmniSharp)?


If you want to add the complexity of diff, you could do what Debian does[0][1].

[0] https://askubuntu.com/questions/365840/compare-differences-w...

[1] https://raphaelhertzog.com/2010/09/21/debian-conffile-config...


Fun! I created a configuration that lays out tiles following the Fibonacci pattern:

https://gist.github.com/Fusion/8ad05ac05948b3397516aa836f0a1...


Honest question here: what are the advantages over fancy zones? I'm a linux i3 user and want to give a try on windows with fancy zones, I can give workspacer a try as well.


fancy zones is very different conceptually from i3/xmonad or workspacer.

fancy zones allows you to define a static layout, and then drag windows into the zones you create.

layouts in workspacer are defined in code, and are "always on", in that the window position/size is always handled by workspacer, instead of only when you ask for it.


Looks like the venerable i3 (https://i3wm.org/ ). The workhorse of workspacing for this guy.


What is different about some applications?


Some applications like to reset their own position occasionally, or don't take kindly to being resized from an outside process. WinSCP is an example where workspacer tries to resize/position the window, and WinSCP itself listens for the move event, and moves itself. workspacer gets that second move event, and cycles back and forth forever.

For the few cases where it doesn't work right now, I have ignore routes setup in my config file (so workspacer will just ignore any matching window). I should probably make a list of the few common apps that are weird.


Martin Prikryl (the WinSCP main developer) is quite active on their forums and on StackOverflow questions about WinSCP; might be worth asking why or if it could be turned off;

https://winscp.net/forum/viewforum.php?f=2&sid=5a9eada96b43f...


> WinSCP is an example where workspacer tries to resize/position the window, and WinSCP itself listens for the move event, and moves itself.

Why?


Slightly off topic, but openscp comes with Windows now:

    $ which scp
    C:\WINDOWS\System32\OpenSSH\scp.exe
So no need for WinSCP if you just want to use the terminal.


¯\_(ツ)_/¯


What's your use cases for workspacer? How do you use it yourself?




Consider applying for YC's Fall 2026 batch! Applications are open till July 27.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: