Web-based Launcher Alternative
Goal
Eliminate the dependency on Qt for GUIs not running from within a DCC like Maya
Motivation
Shipping Python and PyQt5 is a pain
Implementation
I stumbled upon an interesting Python framework that generates an HTML/CSS/JS application from your Python code, working a lot like Qt as a framework, and put this together.
- https://github.com/mottosso/avalon-launcher2
So far, it feels a bit raw, a little early. But the concept is quite neat.
Novel things:
- Vendorable, cross-platform GUI library without dependencies, nothing compiled
- Qt-like API
- Can serve from a central computer, for e.g. a project manager
- Accessible via your browser

Did you actually get it to launch a program?
I've previous tried to launch programs from the browser from there are security measures in place that prevents this.
Yes, the example program already works.
The browser calls the Python process which is also acting as the web server, Python is what launches processes, just like our current launcher.
https://github.com/mottosso/avalon-launcher2/blob/6d9f89f871e5930b88be533c275c69be2d9f3ac7/launcher/main.py#L93
How far did you get with the database integration? I would to see how fast this will be on a live one
The database is mocked in that example, you can find it here. It's just a dictionary.
The overhead from a database would be fetching that dictionary.
Have thought some more about this, and the concept is quite sound; the main crux so far is having to open a browser to show the app. Sometimes that's what you want (for e.g. the asset manager, like ftrack) but other times not (i.e. having a little taskbar icon with notifications and status, or just a smaller and separate window). But then I thought, why not make a Chrome/Firefox "app"? That'd enable not only a native-looking application but also a standalone window and taskbar icons etc. etc. It would effectively be identical to a Qt app, with the added benefit of (1) being usable from a browser, e.g. remotely like ftrack and (2) require no additional dependencies for the end-user (they'll already have a browser).
The framework itself is a little early, a little short on features, but the hard part of getting Python and the browser talking is there, the rest is HTML and things I think we could implement ourselves if needed.
With this, I think we could even make some remote actions :P
Edit: If it's running on each workstation
Can serve from a central computer
If it's served from central computer, would this be able to open local DCC tools :O ?
Edit: I had played with this a bit, running it on my machine, it can operate local stuff right, but if it's going remotely.., perhaps using current launcher as a job listener ? Just thinking though.
No, DCCs will open where the Python instance is runnnig, so for the launcher it would only make sense to serve it locally. But for the project manager, we could serve remotely, and then tying them together would be a possibility.
E.g. Project Manager is served from a computer A, and accessed from B via the browser. And then B could have a Python process of its own that A sends commands to. Because it's all in Python (as opposed to something like node-js) it means we can do stuff on A like..
def on_maya_clicked(self, client_ip):
self.send_command(client_ip, "subprocess.Popen('maya')")
So now we've got a one-in-all project management application, written in Python, accessible from all machines, that also launches Maya!
Sounds exciting !
So this would most possibly be a new Project manager, and the current Launcher would also be the minion to receive the remote command. Right ?
If it works, then we could strip out a vast majority of the current Launcher code, which mostly involves QML, and use it as a background process, running on each users machine instead. Something that runs on startup, for example, that doesn't need to be visible.
All interaction would happen via the served web application.