In C/GTK+, templates allow one to define the UI in .ui files, from which implementations can be instantiated. This significantly reduces boilerplate code that creates widgets, sets their desired properties and connects their signals[1, 2]. For several reasons, this does not work in Python[3]. gi_composites.py[4] is an implementation in Python that does make this work. It's been used by several projects for a few months now and none report issues. See the project's README for more information[5]. Taking these facts into mind, let's experiment for a bit and see how it can serve Piper. [1]: https://wiki.gnome.org/HowDoI/CustomWidgets#Templates [2]: https://blogs.gnome.org/tvb/2013/04/09/announcing-composite-widget-templates/ [3]: https://bugzilla.gnome.org/show_bug.cgi?id=701843 [4]: https://github.com/virtuald/pygi-composite-templates/ [5]: https://github.com/virtuald/pygi-composite-templates/blob/master/README.rst
Piper 
Piper is a GTK+ application to configure gaming mice, using libratbag via ratbagd. For the design mockups, see the Redesign Wiki.
In order to run Piper, ratbagd has to be running (without it, you'll get to
see a pretty mouse trap). To see how, see its
README.
Installing Piper
Piper uses the meson build system which in turn uses ninja to build and install itself. Run the following commands to clone Piper and initialize the build:
$ git clone https://github.com/libratbag/piper.git
$ cd piper
$ meson builddir --prefix=/usr/
To build or re-build after code-changes, run:
$ ninja -C builddir
$ sudo ninja -C builddir install
Note: builddir is the build output directory and can be changed to any other
directory name.
Contributing
Yes please. It's best to contact us first to see what you could do. Note that the devices displayed by Piper come from libratbag.
Piper tries to conform to Python's PEP8 style guide. To verify your code before
opening a PR, please install flake8 and run the following commands to install
its pre-commit hook:
$ flake8 --install-hook git
$ git config --bool flake8.strict true
Source
git clone https://github.com/libratbag/piper.git
Bugs
Bugs can be reported in the issue tracker on our GitHub repo: https://github.com/libratbag/piper/issues
License
Licensed under the GPLv2. See the COPYING file for the full license information.