mutagen-io/mutagen

External project: MutagenMon (Visual interface for Mutagen)

rualark opened this issue · 4 comments

Hi! I started developing a visual interface for mutagen:

https://github.com/rualark/MutagenMon

This is my first GUI program with wxpython, so probably not everything is polished, but it works. There are some limitations currently:

  • I tested it only on Windows, but it probably has to work on Linux and Mac, maybe with some little changes. I am looking forward to test it on Linux and Mac
  • Works only with local and ssh mutagen transports
  • Requires that session names are unique
  • MutagenMon communicates with mutagen by calling mutagen sync list every second, which is not ideal - a better solution would be to subscribe to events

Is it possible to get mutagen.io sessions status more efficiently without launching mutagen binary every second?

Hey, very cool, thanks for sharing! I'm still playing catchup on the issue tracker, so I haven't had a chance to dive in yet, but I'll try to take a look ASAP. In the mean time, would you like a mention in the README?

It is possible to get session status through the daemon API, but it's quite complicated because (a) it's a gRPC API, (b) the API isn't stabilized yet, and (c) it runs over a Unix Domain Socket transport on POSIX systems and a Named Pipes transport on Windows. As far as I know, the Go gRPC implementation is the only one that supports using these transports, so connecting to the API directly via Python is going to be tricky (if not impossible).

There are existing requests (#38, #57) for improving API access and scripting. This is probably something coming in Mutagen v0.12. I'll most likely focus on #57 first, because I'm not sure of a good way to expose an HTTP-based API locally in a secure fashion.

What I imagine is that Mutagen list commands will have a JSON-based output mode and monitor commands will have a streaming JSON output mode. It'll take a little bit of work to figure out exactly what these JSON formats should look like, because I want to keep them stable even if the internal API changes. I'm going to open another issue into which we can consolidate all of the various requests so far and discuss the format for this output.

Thanks. I think mentioning is good, probably for some users like me GUI for monitoring (even such as additonal program) is important. But I have only tested MutagenMon on Windows yet.

Thanks again for this! I've gone ahead and added a link to the README. I'll keep an eye on how the project evolves. Be sure to monitor #38 and #57 for better integration options in upcoming releases. I'd definitely be keen to hear your feedback.

Thanks for that and for the links to issues