We have a bunch more info that is nearly correct, though I haven't validated
this yet. Currently exploring using pipenv instead, since that helps manage
these more effectively.
There's really no point to switching to the switcher when the BD key always
brings it up. It was also causing problems since we introduced switching back to
the previous applet by pressing BD while the switcher is up.
This makes us use strings instead of numbers. This allows us to export more of
the G13's key matrix to applets, so we can include things like MR, BD, and the
rest of the keyboard matrix.
Most of this work is done in prep for the real-time macro recording
functionality that I'm attempting to hack in.
Something I've wanted for a while has been the ability to draw a rectangle
anywhere on the screen without it being filled in. Hopefully this does the
trick.
This adds a ton of new functionality to the clock widget, and exercises the
bitwidgets widgets a bit more. This adds a new button widget, called a
LabelWidget. These are pretty unsurprising -- they're just a label inside of a
button slot in the buttonbar. They do give us the ability to toggle and add
"more" glyphs in the button for more flexibility in the buttonbar.
- Make Clock toggle between 12 and 24 hour clock modes.
- Add CPU load and RAM load histograms.
- Create a new button type, LabelButton.
- Create a new widget, the Graph, which shows a histogram of values over
time.
- Make Button not assign values by way of accessors in the constructor.
- Make Label actually dynamically change its bounds based upon properties.
This wraps most of the proxy calls with some exception handling code which
removes an applet from the list of applets. This is kinda remedial, but should
make developing applets a bit smoother, as we end up restarting them
periodically. IOW, this prevents the configurator from completely crashing out.
- Give switcher the ability to handle applet removals
- Wrap most proxy methods in try...except blocks
- Add a removeActiveApplet method to kill off the currently stuck applet in
the face of an error.
This exposes the profile list, currently selected profile, and the ability to
set the selected profile via the AppletManager's D-Bus interface. This isn't
really the ideal place for it, but Gtk Actions aren't really suited for this,
either. Additionally, it creates the profile switcher applet as an external
applet to better exercise the Applet interface.
- Manager passes in the preferences object to the AppletManager, so that these
variables can be exposed over D-Bus.
- Exposed the list of profiles, get/set of active profile via D-Bus.
- Created the Profiles applet.
- Exposed a onRegistered / onUnregistered hook for Applets to make use of.
- Removed the onUpdateScreen hook from KeyPressed/KeyReleased, since the
onKeyPressed/onKeyReleased hooks handle this nicely already.
- Fixed the AppletManager's method authorization checks.
Since the migration to the G13 Configurator for everything, most of these files
have literally no use anymore. We can safely remove them from the project at
this point.
This allows us to have separate applications from the G13 Configurator render to
the G13's display, just like the way Logitech's design worked. It even includes
an applet switcher, and an example clock applet.
There's quite a few deficiencies in this model, not the least of which is the
fact that we're using dbus-python as the main communications channel. Things
that are broken include:
- We can't tell when an applet dies except when we fail a call.
- Applets have to be running at the same time G13 Configurator is to handle
the initial register call.
We can likely deal with these somehow using DBus signals.