I've been writing Autumn on and off for a few months, because there's something really satisfying and rewarding about automating something you do often, and then using that to automate more, and building upward in a cycle.
That, plus I wanted to see how close to building a "legit IDE" I could get while completely faking it with WKWebViews. So Autumn kind of grew from those two principles and I'm really happy with how it turned out.
I'd be glad to answer any questions, I'll be here for a few more hours. (I don't have internet at home so I use the library's wifi for stuff like this, and it closes early today.)
It would be nice if the documentation was available without having to download this, so people could see what the API is like.
It would also be super duper epic if this supported ESM properly.
Regarding online documentation, good idea, thanks! I'll try to add that this week. Although, the app is so much more than its API, which is what makes it so unique, and I think if people just look at the API itself, they don't quite get to feel the experience of using Autumn to create their own automation workflows, which is what I'm most proud of about Autumn.
Things I noticed right a way:
- The logo and the title font. There's nothing wrong about them, but they don't reflect much about the application - Scrolling, there are a few elements that appear over the header bar
It's hard for me to evaluate how useful this would be to my workflow without seeing the API, and it looks like I have to actually run the app to do that. It might be worth putting a copy on the website.
https://productforums.google.com/forum/#!topic/webmasters/pV...
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
For me that is always one of the most sore points of almost every single desktop application, or at least those released this side of the millennium (older stuff tend to have actual offline documentation with them).
I don't use macOS these days (i dislike how Apple doesn't care about backwards compatibility and every time i upgrade macOS i have apps i bought break left and right - at this point almost nothing works on my oldest iMac), but thumbs up for providing your users documentation with the software they bought instead of sticking it to some wiki in a web server somewhere and hoping for the best (of course having the docs available on the web is fine and for some welcome, since they can check out what the app can do before even buying it, just not as a replacement for local docs you can pull up at any moment regardless of your internet connectivity - or even version of the software).
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.
Depending on a given indivudual's opinions, availability, etc tends to be at odds with hackability.
At the same time I respect the author's desire to be rewarded for his work. Perhaps Patreon or the like could be a sustainable model. It's what the iTerm author uses (and quite a few other people who I do support).
[1] https://www.peppercarrot.com (highly recommended if your tolerance for cute/silly is high :-)
Oh, and the author's patreon page: https://www.patreon.com/davidrevoy
(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)
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.
7 days for trial isn’t that much for productivity app. Then again its only 8 dollars or so.
I wish there was repository or discussion forum for automation scripts.
Also, I would like to react to Mac notifications. That has been seemingly impossible to do...
I will look into reacting to Mac notifications, that sounds like it could be useful but I'm not sure I understand what it means. Could you elaborate?
If the subject is interesting/useful I don’t believe forum software matters that much to us users. All those that you mentioned would work fine, I’d say.
Notification issues I have tried to solve with Bettertouchtool and Hammerspoon, but I havent been able to find notification API access in them. Though I don’t know if Apple provides such access to notifications. Use cases I have are reacting to Slack, iTerm, Mail and browser notifications as events. I’d like to access the notification content in plain text or object and then decide how to process it. Depending on message content, time of day, place, connected network &c I could put up rules on how to proceed. I could show notifications on touchbar or on screen in less distracting ways than what notification center allows. I could pool certain notifications and check them all in one place, such as bot messages from various slack channels.
Notifications seem easier way to get information moving between apps than trying to use their specific APIs (if such is even available). Sort of light weight RPC from apps to my custom tools.
A fellow developer does this via some app on his Windows box to keep entire projects grouped together.
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!