diff --git a/data/default/README.md b/data/default/README.md
deleted file mode 100644
index a271e328..00000000
--- a/data/default/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-libratbag default theme
-====================
-
-Requirements
-------------
-
-- Canvas size: 750x750 pixels
-- Two layers in the final SVG: a lower layer named "Device" with the device
- itself, "Leaders" with the buttons and leader-lines
-- The device should be approximately centered on the canvas and occupy a
- meaningful portion of the canvas without making it look cramped
-- Button labels must be in 12pt Sans, starting with Button0
-- Wheel buttons may be labeled separately if required (look at the Etekcity
- for an example)
-
diff --git a/data/default/etekcity.svg b/data/default/etekcity.svg
deleted file mode 100644
index 1be8a6c6..00000000
--- a/data/default/etekcity.svg
+++ /dev/null
@@ -1,436 +0,0 @@
-
-
diff --git a/data/default/logitech-g300.svg b/data/default/logitech-g300.svg
deleted file mode 100644
index 5d45bc6a..00000000
--- a/data/default/logitech-g300.svg
+++ /dev/null
@@ -1,754 +0,0 @@
-
-
diff --git a/data/default/logitech-g303.svg b/data/default/logitech-g303.svg
deleted file mode 100644
index 8dd57a65..00000000
--- a/data/default/logitech-g303.svg
+++ /dev/null
@@ -1,484 +0,0 @@
-
-
diff --git a/data/default/logitech-g500s.svg b/data/default/logitech-g500s.svg
deleted file mode 100644
index 61642980..00000000
--- a/data/default/logitech-g500s.svg
+++ /dev/null
@@ -1,1465 +0,0 @@
-
-
diff --git a/data/default/logitech-g502.svg b/data/default/logitech-g502.svg
deleted file mode 100644
index 23213e82..00000000
--- a/data/default/logitech-g502.svg
+++ /dev/null
@@ -1,564 +0,0 @@
-
-
diff --git a/data/default/logitech-g700.svg b/data/default/logitech-g700.svg
deleted file mode 100644
index 18636bb3..00000000
--- a/data/default/logitech-g700.svg
+++ /dev/null
@@ -1,527 +0,0 @@
-
-
diff --git a/data/default/logitech-g9.svg b/data/default/logitech-g9.svg
deleted file mode 100644
index cabda9e4..00000000
--- a/data/default/logitech-g9.svg
+++ /dev/null
@@ -1,594 +0,0 @@
-
-
diff --git a/data/default/logitech-g900.svg b/data/default/logitech-g900.svg
deleted file mode 100644
index f070d418..00000000
--- a/data/default/logitech-g900.svg
+++ /dev/null
@@ -1,1023 +0,0 @@
-
-
diff --git a/data/default/logitech-mx-master.svg b/data/default/logitech-mx-master.svg
deleted file mode 100644
index 8b73f555..00000000
--- a/data/default/logitech-mx-master.svg
+++ /dev/null
@@ -1,335 +0,0 @@
-
-
diff --git a/data/default/roccat-kone-xtd.svg b/data/default/roccat-kone-xtd.svg
deleted file mode 100644
index 892883a1..00000000
--- a/data/default/roccat-kone-xtd.svg
+++ /dev/null
@@ -1,445 +0,0 @@
-
-
diff --git a/data/gnome/README.md b/data/gnome/README.md
deleted file mode 100644
index 8ad4cdf4..00000000
--- a/data/gnome/README.md
+++ /dev/null
@@ -1,66 +0,0 @@
-libratbag gnome theme
-====================
-
-Requirements
-------------
-
-See the Logitech G403 for an example of a device with a small amount of buttons,
-and the Logitech G700 for an example of a device with a large amount of buttons.
-
-- Canvas size should be between 400x400 and 500x500 pixels.
-- Three layers in the final SVG:
- 1. a lower layer named "Device" with the device itself. Each button on the
- device should have an id `buttonX`, with `X` being the number of the button
- (so for button 0 the id would be `button0`). Similarly, each LED on the device
- should have an id `ledX`.
- 2. a middle layer named "Buttons" with the button leaders (see below for
- leaders).
- 3. an upper layer named "LEDs" with the LED leaders.
-- A leader line is a path that extends from the button or LED to the left or the
- right of the device (see below). Each leader line requires the following:
- - It should start with a 7x7 square placed on or close to the button or LED
- that it maps with.
- - From this square, a path should extend left or right (see below).
- - Each path should end with a 1x1 pixel with identifier `buttonX-leader` (or
- `ledX-leader`), where `X` is the number of the button (or LED) with
- which the leader maps. For button 0, this would be `button0-leader`.
- - All these elements should be grouped and given the identifier `buttonX-path`
- (or `ledX-path` for LEDs)
-- Leader lines should have a vertical spacing of at least 40 pixels. When there
- are several leader lines above and below each other, make the spacing between
- them equal.
-- If the device's scroll wheel supports horizontal tilting, add two small arrows
- left and right of the scroll wheel with the respective button identifiers (see
- the Logitech G700 for an example). Do not cut the scroll wheel in half
- vertically to map these buttons.
-- If there aren't too many buttons, preferably make the leaders point to the
- right with the device itself placed on the left. If the buttons would extend
- below or above the device, make some point to the left instead with the device
- itself centered in the middle. In this case, half of the leaders should extend
- to the left and the other half to the right.
-- When a leader points to the right, its 1x1 pixel should have a style property
- `text-align:start`. When a leader points to the left, its 1x1 pixel should
- have a style property `text-align:end`.
-- The canvas should be resized so that there is a 20px gap between the device
- and the edge of the canvas and no gap between the 1x1 pixels and the canvas.
-
-Please note that due to the way the SVG is drawn, you cannot rely on the
-z-ordering of elements to line up or cover elements (as noted in [this
-issue](https://github.com/libratbag/piper/issues/48), which includes links to
-examples). As such, please make sure that you align the elements appropriately;
-[this
-comment](https://github.com/libratbag/piper/issues/48#issuecomment-315979109)
-includes some helpful tips.
-
-Technique
----------
-
-The simplest approach is to find a photo of the device and import it into
-inkscape. Put it on the lowest layer, create a new layer "Device" above it
-and start tracing the outlines and edges of the device. Fill in the shapes
-and your device should resemble the underlying photo. Delete the photo
-layer, add leaders in their respective layers and you're done.
-
-Make sure the image looks ''toned-down'' and not realistic. Do not use dark or
-bright colors.
-
diff --git a/data/gnome/check-svg.py b/data/gnome/check-svg.py
deleted file mode 100755
index f6750092..00000000
--- a/data/gnome/check-svg.py
+++ /dev/null
@@ -1,122 +0,0 @@
-#!/usr/bin/python3
-# vim: set expandtab shiftwidth=4 tabstop=4:
-
-import sys
-from lxml import etree
-import logging
-
-ns = {'svg': 'http://www.w3.org/2000/svg'}
-style_query = '//svg:rect[@id=\"{}\"][contains(@style, \"{}\")]'
-
-logger = None
-
-class SVGLogger(logging.Logger):
- def __init__(self, name, level=logging.NOTSET):
- self.success = True
- return super().__init__(name, level)
-
- def error(self, msg, *args, **kwargs):
- self.success = False
- return super().error(msg, *args, **kwargs)
-
- @classmethod
- def get_logger(cls, path):
- logging.setLoggerClass(SVGLogger)
- logging.basicConfig(level=logging.DEBUG)
- return logging.getLogger(path)
-
-
-def check_size(root):
- width = float(root.attrib['width'])
- height = float(root.attrib['height'])
- if not 400 < width < 500:
- logger.error("Width is outside of range: {}".format(width))
- if not 400 < height < 500:
- logger.error("Height is outside of range: {}".format(height))
-
-
-def check_layers(root):
- """
- Check there are layers (well, groups) for the components we require.
- """
- layer_ids = [g.attrib['id'] for g in root.iterfind('svg:g', ns)]
-
- for layer in ["Device", "Buttons", "LEDs"]:
- if layer not in layer_ids:
- logger.error("Missing layer: {}".format(layer))
-
-
-def check_elements(root, prefix, required=0):
- """
- Checks for elements of the form 'prefixN' in the root tag. Any elements
- found must be consecutive or an warning is printed, i.e. if there's a
- 'button8' there has to be a 'button7'.
-
- If required is nonzero, an error is logged for any missing element with
- an index less than required.
- """
-
- # elements can be paths and rects
- # This includes leaders and lines
- element_ids = [p.attrib['id'] for p in root.xpath('//svg:path', namespaces=ns) if p.attrib['id'].startswith(prefix)]
- element_ids += [p.attrib['id'] for p in root.xpath('//svg:rect', namespaces=ns) if p.attrib['id'].startswith(prefix)]
- element_ids += [g.attrib['id'] for g in root.xpath('//svg:g', namespaces=ns) if g.attrib['id'].startswith(prefix)]
-
- idx = 0
- highest = -1
- for idx in range(0, 20):
- e = '{}{}'.format(prefix, idx)
- previous = '{}{}'.format(prefix, idx - 1)
- leader = '{}{}-leader'.format(prefix, idx)
- path = '{}{}-path'.format(prefix, idx)
- if e in element_ids:
- highest = idx
- if idx > 0 and previous not in element_ids:
- logger.warning("Non-consecutive {}: {}".format(prefix, e))
-
- if leader not in element_ids:
- logger.error("Missing {} for {}".format(leader, e))
- else:
- element = root.xpath(style_query.format(leader, 'text-align'), namespaces=ns)
- if element is None or len(element) != 1 or element[0] is None:
- logger.error("Missing style property for {}".format(leader))
-
- if path not in element_ids:
- logger.error("Missing {} for {}".format(path, e))
- elif leader in element_ids:
- logger.error("Have {} but not {}".format(leader, e))
- elif path in element_ids:
- logger.error("Have {} but not {}".format(path, e))
- elif idx < required:
- logger.error("Missing {}: {}".format(prefix, e))
-
- logger.info("Found {} {}s".format(highest + 1, prefix))
-
-
-def check_leds(root):
- check_elements(root, "led")
-
-
-def check_buttons(root):
- check_elements(root, "button", 3)
-
-
-def check_svg(path):
- svg = etree.parse(path)
- root = svg.getroot()
-
- check_size(root)
- check_layers(root)
- check_buttons(root)
- check_leds(root)
-
-if __name__ == "__main__":
- success = True
- for path in sys.argv[1:]:
- logger = SVGLogger.get_logger(path)
- check_svg(path)
- if not logger.success:
- success = False
-
- if not success:
- sys.exit(1)
diff --git a/data/gnome/fallback.svg b/data/gnome/fallback.svg
deleted file mode 100644
index 60bef3e3..00000000
--- a/data/gnome/fallback.svg
+++ /dev/null
@@ -1,506 +0,0 @@
-
-
-
-
diff --git a/data/gnome/logitech-g-pro-wireless.svg b/data/gnome/logitech-g-pro-wireless.svg
deleted file mode 100644
index 760fb774..00000000
--- a/data/gnome/logitech-g-pro-wireless.svg
+++ /dev/null
@@ -1,358 +0,0 @@
-
-
-
-
diff --git a/data/gnome/logitech-g-pro.svg b/data/gnome/logitech-g-pro.svg
deleted file mode 100644
index 84177e90..00000000
--- a/data/gnome/logitech-g-pro.svg
+++ /dev/null
@@ -1,416 +0,0 @@
-
-
-
-
diff --git a/data/gnome/logitech-g102-g203.svg b/data/gnome/logitech-g102-g203.svg
deleted file mode 120000
index c68bd608..00000000
--- a/data/gnome/logitech-g102-g203.svg
+++ /dev/null
@@ -1 +0,0 @@
-logitech-g-pro.svg
\ No newline at end of file
diff --git a/data/gnome/logitech-g300.svg b/data/gnome/logitech-g300.svg
deleted file mode 100644
index 80226974..00000000
--- a/data/gnome/logitech-g300.svg
+++ /dev/null
@@ -1,514 +0,0 @@
-
-
-
-
diff --git a/data/gnome/logitech-g303.svg b/data/gnome/logitech-g303.svg
deleted file mode 100644
index 1e63cc8a..00000000
--- a/data/gnome/logitech-g303.svg
+++ /dev/null
@@ -1,410 +0,0 @@
-
-
-
-
diff --git a/data/gnome/logitech-g402.svg b/data/gnome/logitech-g402.svg
deleted file mode 100644
index d4c96c94..00000000
--- a/data/gnome/logitech-g402.svg
+++ /dev/null
@@ -1,479 +0,0 @@
-
-
-
-
diff --git a/data/gnome/logitech-g403.svg b/data/gnome/logitech-g403.svg
deleted file mode 100644
index 4619e13c..00000000
--- a/data/gnome/logitech-g403.svg
+++ /dev/null
@@ -1,380 +0,0 @@
-
-
-
-
diff --git a/data/gnome/logitech-g500.svg b/data/gnome/logitech-g500.svg
deleted file mode 100644
index 5dd95329..00000000
--- a/data/gnome/logitech-g500.svg
+++ /dev/null
@@ -1,484 +0,0 @@
-
-
-
-
diff --git a/data/gnome/logitech-g500s.svg b/data/gnome/logitech-g500s.svg
deleted file mode 120000
index 5364df27..00000000
--- a/data/gnome/logitech-g500s.svg
+++ /dev/null
@@ -1 +0,0 @@
-logitech-g500.svg
\ No newline at end of file
diff --git a/data/gnome/logitech-g502.svg b/data/gnome/logitech-g502.svg
deleted file mode 100644
index 1ed154b4..00000000
--- a/data/gnome/logitech-g502.svg
+++ /dev/null
@@ -1,570 +0,0 @@
-
-
-
-
diff --git a/data/gnome/logitech-g600.svg b/data/gnome/logitech-g600.svg
deleted file mode 100644
index 83b7eacd..00000000
--- a/data/gnome/logitech-g600.svg
+++ /dev/null
@@ -1,1190 +0,0 @@
-
-
-
-
diff --git a/data/gnome/logitech-g603.svg b/data/gnome/logitech-g603.svg
deleted file mode 100644
index 9f712582..00000000
--- a/data/gnome/logitech-g603.svg
+++ /dev/null
@@ -1,331 +0,0 @@
-
-
-
-
diff --git a/data/gnome/logitech-g700.svg b/data/gnome/logitech-g700.svg
deleted file mode 100644
index 3ca02956..00000000
--- a/data/gnome/logitech-g700.svg
+++ /dev/null
@@ -1,576 +0,0 @@
-
-
-
-
diff --git a/data/gnome/logitech-g703.svg b/data/gnome/logitech-g703.svg
deleted file mode 120000
index 89ab5f93..00000000
--- a/data/gnome/logitech-g703.svg
+++ /dev/null
@@ -1 +0,0 @@
-logitech-g403.svg
\ No newline at end of file
diff --git a/data/gnome/logitech-g9.svg b/data/gnome/logitech-g9.svg
deleted file mode 100644
index 017dd1b7..00000000
--- a/data/gnome/logitech-g9.svg
+++ /dev/null
@@ -1,509 +0,0 @@
-
-
-
-
diff --git a/data/gnome/logitech-g900.svg b/data/gnome/logitech-g900.svg
deleted file mode 100644
index 1e1beb83..00000000
--- a/data/gnome/logitech-g900.svg
+++ /dev/null
@@ -1,554 +0,0 @@
-
-
-
-
diff --git a/data/gnome/logitech-mx-anywhere2.svg b/data/gnome/logitech-mx-anywhere2.svg
deleted file mode 100644
index acb95cdb..00000000
--- a/data/gnome/logitech-mx-anywhere2.svg
+++ /dev/null
@@ -1,349 +0,0 @@
-
-
-
-
diff --git a/data/gnome/logitech-mx-anywhere2s.svg b/data/gnome/logitech-mx-anywhere2s.svg
deleted file mode 120000
index d8feb6e8..00000000
--- a/data/gnome/logitech-mx-anywhere2s.svg
+++ /dev/null
@@ -1 +0,0 @@
-logitech-mx-anywhere2.svg
\ No newline at end of file
diff --git a/data/gnome/logitech-mx-master-2s.svg b/data/gnome/logitech-mx-master-2s.svg
deleted file mode 100644
index 5a9b820b..00000000
--- a/data/gnome/logitech-mx-master-2s.svg
+++ /dev/null
@@ -1,359 +0,0 @@
-
-
-
-
diff --git a/data/gnome/logitech-mx-master.svg b/data/gnome/logitech-mx-master.svg
deleted file mode 120000
index 315750e7..00000000
--- a/data/gnome/logitech-mx-master.svg
+++ /dev/null
@@ -1 +0,0 @@
-logitech-mx-master-2s.svg
\ No newline at end of file
diff --git a/data/gnome/roccat-kone-xtd.svg b/data/gnome/roccat-kone-xtd.svg
deleted file mode 100644
index 2492101c..00000000
--- a/data/gnome/roccat-kone-xtd.svg
+++ /dev/null
@@ -1,578 +0,0 @@
-
-
-
-
diff --git a/data/gnome/steelseries-kinzu-v2.svg b/data/gnome/steelseries-kinzu-v2.svg
deleted file mode 100644
index 967e48b1..00000000
--- a/data/gnome/steelseries-kinzu-v2.svg
+++ /dev/null
@@ -1,285 +0,0 @@
-
-
-
-
diff --git a/data/gnome/steelseries-rival.svg b/data/gnome/steelseries-rival.svg
deleted file mode 100644
index c7514550..00000000
--- a/data/gnome/steelseries-rival.svg
+++ /dev/null
@@ -1,443 +0,0 @@
-
-
-
-
diff --git a/data/gnome/steelseries-rival310.svg b/data/gnome/steelseries-rival310.svg
deleted file mode 100644
index 2a750923..00000000
--- a/data/gnome/steelseries-rival310.svg
+++ /dev/null
@@ -1,443 +0,0 @@
-
-
-
-
diff --git a/data/gnome/steelseries-rival600.svg b/data/gnome/steelseries-rival600.svg
deleted file mode 100644
index 643ddcc5..00000000
--- a/data/gnome/steelseries-rival600.svg
+++ /dev/null
@@ -1,637 +0,0 @@
-
-
-
-
diff --git a/data/gnome/steelseries-sensei310.svg b/data/gnome/steelseries-sensei310.svg
deleted file mode 100644
index 41f9d634..00000000
--- a/data/gnome/steelseries-sensei310.svg
+++ /dev/null
@@ -1,513 +0,0 @@
-
-
-
-
diff --git a/data/gnome/steelseries-senseiraw.svg b/data/gnome/steelseries-senseiraw.svg
deleted file mode 100644
index 41c69858..00000000
--- a/data/gnome/steelseries-senseiraw.svg
+++ /dev/null
@@ -1,497 +0,0 @@
-
-
-
-