Live data from Hacker News

Show HN: Autumn – A macOS window manager for (Type|Java)Script hackers

sephware.com

21–30 of 40 posts

Re: Show HN: Autumn – A macOS window manager for (Type|Java)Script hackers

#21

It's a neat API as far as window managers go. But I'm afraid I can't use it unless it is open source. Most WMs are open source, Xmonad, awesome, and i3 come to mind. With a little bit of hacking, you can setup Xmonad w/ XQuartz on OS X, but it is a bit buggy. I couldn't get xmobar to work, and keybinds don't work all the time, especially if XQuartz has an existing keybind for that particular key.

That's why it's paid: I've tediously worked out all the kinks over months and months of work. Obviously no software can be guaranteed to be bug-free, but I'm the #1 user of Autumn and I have gotten rid of every single bug I could find and polished every single corner-case and sped up every operation. I generally avoid making bold claims, but I'm confident this is the smoothest, fastest, and most fun window manager for macOS as of 2019.

Re: Show HN: Autumn – A macOS window manager for (Type|Java)Script hackers

#22
post #8
post #7

see also: Slate window manager, configured with javascript. https://github.com/jigish/slate

Slate is great, it was one of the first window managers I ever tried. In fact Slate inspired a good portion of the early versions of Autumn. You can almost think of Autumn as Slate with an embedded IDE, built-in documentation, developer console, and an API designed with TypeScript in mind.

I was also quite inspired by Slate. Unfortunately there hasn't been any activity with it for about 5 years or so. It's great you're picking up the mantel and running with it, because the essential idea is great!

I was interested in Slate because I was looking for a good way to implement pie menus for a Mac window manager. And I'd already implemented pie menus for HTML, so I wanted to come up with a way to use that code (and any other html user interface or graphics too, of course) in the window manager.

About 5 years ago I opened this issue, describing an experiment I did making the web browser in a topmost window with a transparent background to implement user interface overlays scripted in HTML.

WebView window for HTML user interfaces like pie menus to Slate. #322: https://github.com/jigish/slate/issues/322

Slate used a hidden WebView for its scripting engine. So I made it un-hidden and float on top of all the other windows, and was easily able to use it to draw any kind of user interface stuff on top of all the other Mac windows. And I could track the position of windows and draw a little clickable tab next to or on top of the window title bar, that you could click on to pop up a pie menu.

It actually worked! But I didn't take it much further, because I never got any feedback on the issue I opened, so gave up on using Slate itself, and never got around to starting my own JavaScript window manager myself (like you did!). I opened my issue in June 2013, but the last commit was Feb 2013, so development must have stopped by then.

But I wrote up a description of my ideas about "aQuery" (like jQuery, for accessibility), and bounced the idea off of some people who are into accessibility and user interface design, and learned about Morgan Dixon's work on Prefab, something you should definitely check out if you're developing a window manager.

https://donhopkins.com/mediawiki/index.php/AQuery

Here's an HN posting that describes Morgan Dixon's "Prefab" -- imagine how powerful a window manager would be if it could do all that stuff, fully programmable from JavaScript, in combination with full access to the Accessibility APIs.

https://news.ycombinator.com/item?id=11520967

Morgan Dixon's work is truly breathtaking and eye opening, and I would love for that to be a core part of a scriptable hybrid Screen Scraping / Accessibility API approach.

Screen scraping techniques are very powerful, but have limitations. Accessibility APIs are very powerful, but have different limitations. But using both approaches together, screencasting and re-composing visual elements, and tightly integrating it with JavaScript, enables a much wider and interesting range of possibilities.

Think of it like augmented reality for virtualizing desktop user interfaces. The beauty of Morgan's Prefab is how it works across different platforms and web browsers, over virtual desktops, and how it can control, sample, measure, modify, augment and recompose guis of existing unmodified applications, even dynamic language translation, so they're much more accessible and easier to use!

Re: Show HN: Autumn – A macOS window manager for (Type|Java)Script hackers

#24

It's a neat API as far as window managers go. But I'm afraid I can't use it unless it is open source. Most WMs are open source, Xmonad, awesome, and i3 come to mind. With a little bit of hacking, you can setup Xmonad w/ XQuartz on OS X, but it is a bit buggy. I couldn't get xmobar to work, and keybinds don't work all the time, especially if XQuartz has an existing keybind for that particular key.

Generally speaking with those sorts of small indie programs you are paying for quality and convenience. Having to do "a little bit of hacking" and - especially - running an X server on macOS as your primary window system so that you can have some customizability doesn't exactly bring quality to my mind, but it might be me :-P

(of course for some the ability to be able to edit the source code of their window manager might be something they absolutely need, but they may just not be the target audience and... well, even then, you don't need the license to be open source, just the source code available and perhaps a license that allows sharing patches among people who already have the code)

Re: Show HN: Autumn – A macOS window manager for (Type|Java)Script hackers

#25

It's a neat API as far as window managers go. But I'm afraid I can't use it unless it is open source. Most WMs are open source, Xmonad, awesome, and i3 come to mind. With a little bit of hacking, you can setup Xmonad w/ XQuartz on OS X, but it is a bit buggy. I couldn't get xmobar to work, and keybinds don't work all the time, especially if XQuartz has an existing keybind for that particular key.

Generally speaking with those sorts of small indie programs you are paying for quality and convenience. Having to do "a little bit of hacking" and - especially - running an X server on macOS as your primary window system so that you can have some customizability doesn't exactly bring quality to my mind, but it might be me :-P (of course for some the ability to be able to edit the source code of their window manager m…

> Generally speaking with those sorts of small indie programs you are paying for quality and convenience.

If I care about convenience, why wouldn't I just use the default WM? Quality is also debatable. For a WM productivity is far more important than quality.

Re: Show HN: Autumn – A macOS window manager for (Type|Java)Script hackers

#26

Earlier quoted context omitted.

Generally speaking with those sorts of small indie programs you are paying for quality and convenience. Having to do "a little bit of hacking" and - especially - running an X server on macOS as your primary window system so that you can have some customizability doesn't exactly bring quality to my mind, but it might be me :-P (of course for some the ability to be able to edit the source code of their window manager m…

> Generally speaking with those sorts of small indie programs you are paying for quality and convenience. If I care about convenience, why wouldn't I just use the default WM? Quality is also debatable. For a WM productivity is far more important than quality.

> If I care about convenience, why wouldn't I just use the default WM?

Because it might not have the functionality you want. Things aren't black and white, but one solution might be closer to what you need than jury rigging something yourself.

> Quality is also debatable. For a WM productivity is far more important than quality.

We'd need to agree both on "quality" and "productivity" here since those do not have well defined meaning. For me when it comes to software that helps me be productive, quality includes it helps me be productive, so there isn't a relationship where i can say that one is more important than the other since one implies the other.

Re: Show HN: Autumn – A macOS window manager for (Type|Java)Script hackers

#27
post #9

Some more macOS window managers, all free and opensource: Spectacle, Slate, Phoenix (similar to Slate) And by far my personal favorite: Mjolnir which is extensible in Lua! Also, Hammerspoon its continuation. [1] https://github.com/eczarny/spectacle [2] https://github.com/jigish/slate [3] https://github.com/sdegutis/Phoenix [4] https://github.com/sdegutis/mjolnir/ [5] https://github.com/Hammerspoon/hammerspoon

Here are some other interesting things related to scriptable window management and accessibility to check out:

aQuery -- Like jQuery for Accessibility

https://donhopkins.com/mediawiki/index.php/AQuery

It would also be great to flesh out the accessibility and speech recognition APIs, and make it possible to write all kinds of intelligent application automation and integration scripts, bots, with nice HTML user interfaces in JavaScript. Take a look at what Dragon Naturally Speaking has done with Python:

https://github.com/t4ngo/dragonfly

Morgan Dixon's work with Prefab is brilliant.

I would like to discuss how we could integrate Prefab with a Javascriptable, extensible API like aQuery, so you could write "selectors" that used prefab's pattern recognition techniques, bind those to JavaScript event handlers, and write high level widgets on top of that in JavaScript, and implement the graphical overlays and gui enhancements in HTML/Canvas/etc like I've done with Slate and the WebView overlay.

Web Site: Morgan Dixon's Home Page. http://morgandixon.net/

Web Site: Prefab: The Pixel-Based Reverse Engineering Toolkit. https://web.archive.org/web/20130104165553/http://homes.cs.w...

Video: Prefab: What if We Could Modify Any Interface? Target aware pointing techniques, bubble cursor, sticky icons, adding advanced behaviors to existing interfaces, independent of the tools used to implement those interfaces, platform agnostic enhancements, same Prefab code works on Windows and Mac, and across remote desktops, widget state awareness, widget transition tracking, side views, parameter preview spectrums for multi-parameter space exploration, prefab implements parameter spectrum preview interfaces for both unmodified Gimp and Photoshop: http://www.youtube.com/watch?v=lju6IIteg9Q

PDF: A General-Purpose Target-Aware Pointing Enhancement Using Pixel-Level Analysis of Graphical Interfaces. Morgan Dixon, James Fogarty, and Jacob O. Wobbrock. (2012). Proceedings of the SIGCHI Conference on Human Factors in Computing Systems. CHI '12. ACM, New York, NY, 3167-3176. 23%. https://web.archive.org/web/20150714010941/http://homes.cs.w...

Video: Content and Hierarchy in Prefab: What if anybody could modify any interface? Reverse engineering guis from their pixels, addresses hierarchy and content, identifying hierarchical tree structure, recognizing text, stencil based tutorials, adaptive gui visualization, ephemeral adaptation technique for arbitrary desktop interfaces, dynamic interface language translation, UI customization, re-rendering widgets, Skype favorite widgets tab: http://www.youtube.com/watch?v=w4S5ZtnaUKE

PDF: Content and Hierarchy in Pixel-Based Methods for Reverse-Engineering Interface Structure. Morgan Dixon, Daniel Leventhal, and James Fogarty. (2011). Proceedings of the SIGCHI Conference on Human Factors in Computing Systems. CHI '11. ACM, New York, NY, 969-978. 26%. https://web.archive.org/web/20150714010931/http://homes.cs.w...

Video: Sliding Widgets, States, and Styles in Prefab. Adapting desktop interfaces for touch screen use, with sliding widgets, slow fine tuned pointing with magnification, simulating rollover to reveal tooltips: https://www.youtube.com/watch?v=8LMSYI4i7wk

Video: A General-Purpose Bubble Cursor. A general purpose target aware pointing enhancement, target editor: http://www.youtube.com/watch?v=46EopD_2K_4

PDF: Prefab: Implementing Advanced Behaviors Using Pixel-Based Reverse Engineering of Interface Structure. Morgan Dixon and James Fogarty. (2010). Proceedings of the SIGCHI Conference on Human Factors in Computing Systems. CHI '10. ACM, New York, NY, 1525-1534. 22% https://web.archive.org/web/20150714010936/http://homes.cs.w...

PDF: Prefab: What if Every GUI Were Open-Source? Morgan Dixon and James Fogarty. (2010). Proceedings of the SIGCHI Conference on Human Factors in Computing Systems. CHI '10. ACM, New York, NY, 851-854. https://web.archive.org/web/20141024012013/http://homes.cs.w...

Morgan Dixon's Research Statement: http://morgandixon.net/morgan-dixon-research-statement.pdf

Community-Driven Interface Tools

Today, most interfaces are designed by teams of people who are collocated and highly skilled. Moreover, any changes to an interface are implemented by the original developers and designers who own the source code. In contrast, I envision a future where distributed online communities rapidly construct and improve interfaces. Similar to the Wikipedia editing process, I hope to explore new interface design tools that fully democratize the design of interfaces. Wikipedia provides static content, and so people can collectively author articles using a very basic Wiki editor. However, community-driven interface tools will require a combination of sophisticated programming-by-demonstration techniques, crowdsourcing and social systems, interaction design, software engineering strategies, and interactive machine learning.

Re: Show HN: Autumn – A macOS window manager for (Type|Java)Script hackers

#29

Have you taken a look at Hammerspoon?

Yes, Hammerspoon goes in many different directions with its API, providing not only the kitchen sink but the house and the neighbors' houses, but lacking the paintings and many walls. That inspired a lot of decisions in how I designed Autumn's API, because I wanted the user experience to be buttery smooth from start to finish, and I wanted the API to be both useful and comprehensive without being overwhelming or spartan.
Post reply on HN