diff --git a/circle.yml b/circle.yml index a577f031..23888087 100644 --- a/circle.yml +++ b/circle.yml @@ -35,7 +35,6 @@ libratbag_references: command: | PREFIX=/usr/local/ diff -u <(cd data/devices; ls *.device) <(cd $PREFIX/share/libratbag/devices; ls *.device) - diff -u <(cd data/gnome; ls *.svg) <(cd $PREFIX/share/libratbag/gnome; ls *.svg) check_uninstall: &check_uninstall run: name: Checking if any files are left after uninstall diff --git a/data/devices/data-parse-test.py b/data/devices/data-parse-test.py index 71b01fc0..1882c384 100755 --- a/data/devices/data-parse-test.py +++ b/data/devices/data-parse-test.py @@ -29,9 +29,6 @@ import argparse import os import configparser -# Set on commandline with --svg-dir -svg_dirs = [] - def assertIn(element, l): if element not in l: raise AssertionError('{} must be in {}'.format(element, l)) @@ -42,18 +39,6 @@ def assertNotIn(element, l): raise AssertionError('{} must not be in {}'.format(element, l)) -def check_svg_str(string): - assert(string.endswith('.svg')) - - svg_file_found = False - for svg_dir in svg_dirs: - files = os.listdir(svg_dir) - if string in files: - svg_file_found = True - break - assert(svg_file_found) - - def check_match_str(string): bustypes = ['usb', 'bluetooth'] @@ -84,7 +69,7 @@ def check_ledtypes_str(string): def check_section_device(section): required_keys = ['Name', 'Driver', 'DeviceMatch'] - permitted_keys = required_keys + ['Svg', 'LedTypes'] + permitted_keys = required_keys + ['LedTypes'] for key in section.keys(): assertIn(key, permitted_keys) @@ -92,11 +77,6 @@ def check_section_device(section): for r in required_keys: assertIn(r, section) - try: - check_svg_str(section['Svg']) - except KeyError: - pass - try: check_ledtypes_str(section['LedTypes']) except KeyError: @@ -234,10 +214,6 @@ def parse_data_file(path): if __name__ == "__main__": parser = argparse.ArgumentParser(description="Device data-file checker") parser.add_argument('file', nargs='+') - parser.add_argument('--svg-dir', metavar='dir', action='append', - type=str, - help='Directory to check for SVG files (may be given multiple times)') args = parser.parse_args() - svg_dirs = args.svg_dir for path in args.file: parse_data_file(path) diff --git a/data/devices/device.example b/data/devices/device.example index d9ed1e51..9ceb2ecb 100644 --- a/data/devices/device.example +++ b/data/devices/device.example @@ -12,9 +12,6 @@ Name=Logitech Example Device # zeroes. DeviceMatch=usb:12ab:00f2 -# The file name of the SVG file representing this device -Svg=logitech-example.svg - # The libratbag driver backend Driver=hidpp10 diff --git a/data/devices/etekcity-scroll-alpha.device b/data/devices/etekcity-scroll-alpha.device index c65fae13..5605ce95 100644 --- a/data/devices/etekcity-scroll-alpha.device +++ b/data/devices/etekcity-scroll-alpha.device @@ -2,4 +2,3 @@ Name=Etekcity Scroll Alpha DeviceMatch=usb:1ea7:4011 Driver=etekcity -Svg=etekcity.svg diff --git a/data/devices/logitech-MX-Anywhere2.device b/data/devices/logitech-MX-Anywhere2.device index 924ea443..e4f14fd1 100644 --- a/data/devices/logitech-MX-Anywhere2.device +++ b/data/devices/logitech-MX-Anywhere2.device @@ -2,4 +2,3 @@ Name=Logitech MX Anywhere 2 DeviceMatch=usb:046d:404a;bluetooth:046d:b013 Driver=hidpp20 -Svg=logitech-mx-anywhere2.svg diff --git a/data/devices/logitech-MX-Anywhere2S.device b/data/devices/logitech-MX-Anywhere2S.device index 68979b52..793836fe 100644 --- a/data/devices/logitech-MX-Anywhere2S.device +++ b/data/devices/logitech-MX-Anywhere2S.device @@ -2,4 +2,3 @@ Name=Logitech MX Anywhere 2S DeviceMatch=usb:046d:406a Driver=hidpp20 -Svg=logitech-mx-anywhere2.svg diff --git a/data/devices/logitech-MX-Master-2S.device b/data/devices/logitech-MX-Master-2S.device index b642ab6d..706e24d2 100644 --- a/data/devices/logitech-MX-Master-2S.device +++ b/data/devices/logitech-MX-Master-2S.device @@ -3,4 +3,3 @@ Name=Logitech MX Master 2S DeviceMatch=bluetooth:046d:b019;usb:046d:4069 Driver=hidpp20 -Svg=logitech-mx-master-2s.svg diff --git a/data/devices/logitech-MX-Master.device b/data/devices/logitech-MX-Master.device index cb52bc4e..5159d4b8 100644 --- a/data/devices/logitech-MX-Master.device +++ b/data/devices/logitech-MX-Master.device @@ -3,4 +3,3 @@ Name=Logitech MX Master DeviceMatch=usb:046d:4041;bluetooth:046d:b012;usb:046d:4060 Driver=hidpp20 -Svg=logitech-mx-master.svg diff --git a/data/devices/logitech-g-pro-wireless.device b/data/devices/logitech-g-pro-wireless.device index 9da4e2d9..a3ab550d 100644 --- a/data/devices/logitech-g-pro-wireless.device +++ b/data/devices/logitech-g-pro-wireless.device @@ -1,7 +1,6 @@ [Device] Name=Logitech G Pro Wireless DeviceMatch=usb:046d:c539;usb:046d:c088 -Svg=logitech-g-pro-wireless.svg LedTypes=logo;battery;dpi; Driver=hidpp20 diff --git a/data/devices/logitech-g-pro.device b/data/devices/logitech-g-pro.device index 2f329706..38f01d88 100644 --- a/data/devices/logitech-g-pro.device +++ b/data/devices/logitech-g-pro.device @@ -1,6 +1,5 @@ [Device] Name=Logitech Gaming Mouse G Pro DeviceMatch=usb:046d:c085 -Svg=logitech-g-pro.svg Driver=hidpp20 LedTypes=logo;side diff --git a/data/devices/logitech-g102-g203.device b/data/devices/logitech-g102-g203.device index cb3e9531..6443a818 100644 --- a/data/devices/logitech-g102-g203.device +++ b/data/devices/logitech-g102-g203.device @@ -2,6 +2,5 @@ [Device] Name=Logitech Gaming Mouse G102/G103 DeviceMatch=usb:046d:c084 -Svg=logitech-g102-g203.svg Driver=hidpp20 LedTypes=logo;side; diff --git a/data/devices/logitech-g300.device b/data/devices/logitech-g300.device index fd0d86d0..fd2d298a 100644 --- a/data/devices/logitech-g300.device +++ b/data/devices/logitech-g300.device @@ -3,4 +3,3 @@ Name=Logitech G300 DeviceMatch=usb:046d:c246 Driver=logitech_g300 -Svg=logitech-g300.svg diff --git a/data/devices/logitech-g302.device b/data/devices/logitech-g302.device index 611553cb..1aed64c5 100644 --- a/data/devices/logitech-g302.device +++ b/data/devices/logitech-g302.device @@ -2,6 +2,5 @@ [Device] Name=Logitech Gaming Mouse G302 DeviceMatch=usb:046d:c07f -Svg=logitech-g303.svg Driver=hidpp20 LedTypes=logo;side; diff --git a/data/devices/logitech-g303.device b/data/devices/logitech-g303.device index 9b03fa01..7549b835 100644 --- a/data/devices/logitech-g303.device +++ b/data/devices/logitech-g303.device @@ -2,6 +2,5 @@ [Device] Name=Logitech Gaming Mouse G303 DeviceMatch=usb:046d:c080 -Svg=logitech-g303.svg Driver=hidpp20 LedTypes=logo;side; diff --git a/data/devices/logitech-g402.device b/data/devices/logitech-g402.device index 4bb7f2fc..9bb306c4 100644 --- a/data/devices/logitech-g402.device +++ b/data/devices/logitech-g402.device @@ -3,4 +3,3 @@ Name=Logitech G402 Gaming Mouse DeviceMatch=usb:046d:c07e Driver=hidpp20 -Svg=logitech-g402.svg diff --git a/data/devices/logitech-g403.device b/data/devices/logitech-g403.device index 76dc36f2..3279acbd 100644 --- a/data/devices/logitech-g403.device +++ b/data/devices/logitech-g403.device @@ -3,4 +3,3 @@ Name=Logitech G403 DeviceMatch=usb:046d:c082;usb:046d:c083 Driver=hidpp20 -Svg=logitech-g403.svg diff --git a/data/devices/logitech-g500.device b/data/devices/logitech-g500.device index 6e3806ac..a0d39542 100644 --- a/data/devices/logitech-g500.device +++ b/data/devices/logitech-g500.device @@ -2,7 +2,6 @@ Name=Logitech G500 DeviceMatch=usb:046d:c068 Driver=hidpp10 -Svg=logitech-g500.svg [Driver/hidpp10] DpiRange=0:5700@23.53 diff --git a/data/devices/logitech-g500s.device b/data/devices/logitech-g500s.device index c8fbf818..9a45df9c 100644 --- a/data/devices/logitech-g500s.device +++ b/data/devices/logitech-g500s.device @@ -2,7 +2,6 @@ Name=Logitech G500s DeviceMatch=usb:046d:c24e Driver=hidpp10 -Svg=logitech-g500s.svg [Driver/hidpp10] DpiRange=0:8200@50 diff --git a/data/devices/logitech-g502-HERO-over-USB.device b/data/devices/logitech-g502-HERO-over-USB.device index b6d05d11..706df800 100644 --- a/data/devices/logitech-g502-HERO-over-USB.device +++ b/data/devices/logitech-g502-HERO-over-USB.device @@ -3,4 +3,3 @@ Name=Logitech G502 HERO DeviceMatch=usb:046d:c08b Driver=hidpp20 -Svg=logitech-g502.svg diff --git a/data/devices/logitech-g502-Proteus-Core-over-USB.device b/data/devices/logitech-g502-Proteus-Core-over-USB.device index 04e3f65a..e7afd3b9 100644 --- a/data/devices/logitech-g502-Proteus-Core-over-USB.device +++ b/data/devices/logitech-g502-Proteus-Core-over-USB.device @@ -3,4 +3,3 @@ Name=Logitech G502 Proteus Core DeviceMatch=usb:046d:c07d Driver=hidpp20 -Svg=logitech-g502.svg diff --git a/data/devices/logitech-g502-Proteus-Spectrum-over-USB.device b/data/devices/logitech-g502-Proteus-Spectrum-over-USB.device index 40f19e4b..de33be16 100644 --- a/data/devices/logitech-g502-Proteus-Spectrum-over-USB.device +++ b/data/devices/logitech-g502-Proteus-Spectrum-over-USB.device @@ -3,4 +3,3 @@ Name=Logitech G502 Proteus Spectrum DeviceMatch=usb:046d:c332 Driver=hidpp20 -Svg=logitech-g502.svg diff --git a/data/devices/logitech-g600.device b/data/devices/logitech-g600.device index 0655428c..b261baeb 100644 --- a/data/devices/logitech-g600.device +++ b/data/devices/logitech-g600.device @@ -3,4 +3,3 @@ Name=Logitech G600 DeviceMatch=usb:046d:c24a Driver=logitech_g600 -Svg=logitech-g600.svg diff --git a/data/devices/logitech-g603.device b/data/devices/logitech-g603.device index 78f6c50c..577008cc 100644 --- a/data/devices/logitech-g603.device +++ b/data/devices/logitech-g603.device @@ -3,4 +3,3 @@ Name=Logitech G603 DeviceMatch=bluetooth:046d:b01c Driver=hidpp20 -Svg=logitech-g603.svg diff --git a/data/devices/logitech-g700.device b/data/devices/logitech-g700.device index 893d02cf..6a8787e3 100644 --- a/data/devices/logitech-g700.device +++ b/data/devices/logitech-g700.device @@ -4,7 +4,6 @@ Name=Logitech G700 DeviceMatch=usb:046d:c06b Driver=hidpp10 -Svg=logitech-g700.svg [Driver/hidpp10] DpiRange=0:5700@23.53 diff --git a/data/devices/logitech-g700s-wireless.device b/data/devices/logitech-g700s-wireless.device index 1996c1bd..65bdfad3 100644 --- a/data/devices/logitech-g700s-wireless.device +++ b/data/devices/logitech-g700s-wireless.device @@ -4,7 +4,6 @@ Name=Logitech G700s DeviceMatch=usb:046d:c531 Driver=hidpp10 -Svg=logitech-g700.svg [Driver/hidpp10] DpiRange=0:8200@50 diff --git a/data/devices/logitech-g700s.device b/data/devices/logitech-g700s.device index a1ff3896..ad3c2e62 100644 --- a/data/devices/logitech-g700s.device +++ b/data/devices/logitech-g700s.device @@ -4,7 +4,6 @@ Name=Logitech G700s DeviceMatch=usb:046d:c07c Driver=hidpp10 -Svg=logitech-g700.svg [Driver/hidpp10] DpiRange=0:8200@50 diff --git a/data/devices/logitech-g703.device b/data/devices/logitech-g703.device index 1e76b231..c9486caa 100644 --- a/data/devices/logitech-g703.device +++ b/data/devices/logitech-g703.device @@ -2,5 +2,4 @@ Name=Logitech G703 DeviceMatch=usb:046d:c087 Driver=hidpp20 -Svg=logitech-g703.svg diff --git a/data/devices/logitech-g9.device b/data/devices/logitech-g9.device index 34676734..80ecba53 100644 --- a/data/devices/logitech-g9.device +++ b/data/devices/logitech-g9.device @@ -5,7 +5,6 @@ Name=Logitech G9 DeviceMatch=usb:046d:c048 LedTypes=dpi Driver=hidpp10 -Svg=logitech-g9.svg [Driver/hidpp10] DpiList=200;400;600;800;1000;1200;1400;1600;1800;2000;2200;2400;2600;2800;3000;3200 diff --git a/data/devices/logitech-g900-wireless.device b/data/devices/logitech-g900-wireless.device index 715a0dbd..26f793db 100644 --- a/data/devices/logitech-g900-wireless.device +++ b/data/devices/logitech-g900-wireless.device @@ -3,7 +3,6 @@ Name=Logitech G900, G903, G603, G403 DeviceMatch=usb:046d:c539 Driver=hidpp20 -Svg=logitech-g900.svg [Driver/hidpp20] DeviceIndex=1 diff --git a/data/devices/logitech-g900.device b/data/devices/logitech-g900.device index f25896ca..750b752b 100644 --- a/data/devices/logitech-g900.device +++ b/data/devices/logitech-g900.device @@ -3,4 +3,3 @@ Name=Logitech G900 DeviceMatch=usb:046d:c081 Driver=hidpp20 -Svg=logitech-g900.svg diff --git a/data/devices/logitech-g903.device b/data/devices/logitech-g903.device index cf930b10..e901579b 100644 --- a/data/devices/logitech-g903.device +++ b/data/devices/logitech-g903.device @@ -3,4 +3,3 @@ Name=Logitech G903 DeviceMatch=usb:046d:c086 Driver=hidpp20 -Svg=logitech-g900.svg diff --git a/data/devices/logitech-gpowerplay-wireless.device b/data/devices/logitech-gpowerplay-wireless.device index e2f15693..f421564b 100644 --- a/data/devices/logitech-gpowerplay-wireless.device +++ b/data/devices/logitech-gpowerplay-wireless.device @@ -3,7 +3,6 @@ Name=Logitech G PowerPlay mouse pad. DeviceMatch=usb:046d:c53a Driver=hidpp20 -Svg=logitech-g900.svg [Driver/hidpp20] DeviceIndex=1 diff --git a/data/devices/roccat-kone-xtd.device b/data/devices/roccat-kone-xtd.device index 5bab13b0..872e60e7 100644 --- a/data/devices/roccat-kone-xtd.device +++ b/data/devices/roccat-kone-xtd.device @@ -2,4 +2,3 @@ Name=Roccat Kone XTD DeviceMatch=usb:1e7d:2e22 Driver=roccat -Svg=roccat-kone-xtd.svg diff --git a/data/devices/steelseries-kinzu-v2.device b/data/devices/steelseries-kinzu-v2.device index 6786f0e6..c11db589 100644 --- a/data/devices/steelseries-kinzu-v2.device +++ b/data/devices/steelseries-kinzu-v2.device @@ -2,7 +2,6 @@ Name=SteelSeries Kinzu V2 DeviceMatch=usb:1038:1378 Driver=steelseries -Svg=steelseries-kinzu-v2.svg [Driver/steelseries] DeviceVersion=1 diff --git a/data/devices/steelseries-rival-310.device b/data/devices/steelseries-rival-310.device index a1463bca..61af3f78 100644 --- a/data/devices/steelseries-rival-310.device +++ b/data/devices/steelseries-rival-310.device @@ -2,7 +2,6 @@ Name=SteelSeries Rival 310 DeviceMatch=usb:1038:1720 Driver=steelseries -Svg=steelseries-rival310.svg [Driver/steelseries] DeviceVersion=2 diff --git a/data/devices/steelseries-rival-600.device b/data/devices/steelseries-rival-600.device index d38e3639..c2b1badd 100644 --- a/data/devices/steelseries-rival-600.device +++ b/data/devices/steelseries-rival-600.device @@ -2,7 +2,6 @@ Name=SteelSeries Rival 600 DeviceMatch=usb:1038:1724 Driver=steelseries -Svg=steelseries-rival600.svg [Driver/steelseries] DeviceVersion=3 diff --git a/data/devices/steelseries-rival.device b/data/devices/steelseries-rival.device index 32d6a928..f0bb50c7 100644 --- a/data/devices/steelseries-rival.device +++ b/data/devices/steelseries-rival.device @@ -2,7 +2,6 @@ Name=SteelSeries Rival DeviceMatch=usb:1038:1384 Driver=steelseries -Svg=steelseries-rival.svg [Driver/steelseries] DeviceVersion=1 diff --git a/data/devices/steelseries-sensei-310.device b/data/devices/steelseries-sensei-310.device index 10d1839f..a0a745cb 100644 --- a/data/devices/steelseries-sensei-310.device +++ b/data/devices/steelseries-sensei-310.device @@ -2,7 +2,6 @@ Name=SteelSeries Sensei 310 DeviceMatch=usb:1038:1722 Driver=steelseries -Svg=steelseries-sensei310.svg [Driver/steelseries] DeviceVersion=2 diff --git a/data/devices/steelseries-sensei-raw.device b/data/devices/steelseries-sensei-raw.device index 3f13764e..fc71d927 100644 --- a/data/devices/steelseries-sensei-raw.device +++ b/data/devices/steelseries-sensei-raw.device @@ -2,7 +2,6 @@ Name=SteelSeries Sensei Raw DeviceMatch=usb:1038:1369 Driver=steelseries -Svg=steelseries-senseiraw.svg LedTypes=logo;dpi [Driver/steelseries] diff --git a/doc/dbus.rst b/doc/dbus.rst index 973759b1..4ceca2e7 100644 --- a/doc/dbus.rst +++ b/doc/dbus.rst @@ -90,18 +90,6 @@ interact with ratbagd. An array of read-only object paths referencing the available devices. The devices implement the :ref:`device` interface. -.. attribute:: Themes - - :type: as - :flags: read-only, constant - - The list of available theme names. This list is guaranteed to have - at least one theme available ('default'). Other themes are - implementation-defined. A theme listed here is only a guarantee - that the theme is known to libratbag and that SVGs *may* exist, it - is not a guarantee that the SVG for any specific device exists. In - other words, a device may not have an SVG for a specific theme. - .. _device: org.freedesktop.ratbag1.Device @@ -196,21 +184,6 @@ known to ratbagd. occurs, the :func:`Resync` signal is emitted and all properties are updated to the current state. -.. function:: GetSvgFd(s) → (h) - - :param s: the theme name - :returns: An open file descriptor to the SVG for the given theme - - Returns an open file descriptor to the SVG for the given theme or an - errno on error. The theme must be one of - :func:`org.freedesktop.ratbag1.Manager.Themes `. - - The theme **'default'** is guaranteed to be available. - - ratbagd may return ``ENOENT`` if a file doesn't exist. - This is the case if the device has SVGs available but not - for the given theme. - .. function:: Resync() :type: Signal diff --git a/meson.build b/meson.build index ca3dde2f..705458a9 100644 --- a/meson.build +++ b/meson.build @@ -319,47 +319,7 @@ install_data(data_files, install_dir : join_paths(get_option('datadir'), 'libratbag', 'devices')) data_parse_test = find_program(join_paths(meson.source_root(), 'data/devices/data-parse-test.py')) -test('data-parse-test', data_parse_test, - args : [ '--svg-dir', join_paths(meson.source_root(), 'data/default'), - '--svg-dir', join_paths(meson.source_root(), 'data/gnome') ] + data_files) - -#### svg files #### -# list ordered by git ls-files data/gnome/*.svg -gnome_svg_files = files( - 'data/gnome/fallback.svg', - 'data/gnome/logitech-g102-g203.svg', - 'data/gnome/logitech-g300.svg', - 'data/gnome/logitech-g303.svg', - 'data/gnome/logitech-g402.svg', - 'data/gnome/logitech-g403.svg', - 'data/gnome/logitech-g500.svg', - 'data/gnome/logitech-g500s.svg', - 'data/gnome/logitech-g502.svg', - 'data/gnome/logitech-g600.svg', - 'data/gnome/logitech-g603.svg', - 'data/gnome/logitech-g700.svg', - 'data/gnome/logitech-g703.svg', - 'data/gnome/logitech-g9.svg', - 'data/gnome/logitech-g900.svg', - 'data/gnome/logitech-g-pro.svg', - 'data/gnome/logitech-g-pro-wireless.svg', - 'data/gnome/logitech-mx-anywhere2.svg', - 'data/gnome/logitech-mx-anywhere2s.svg', - 'data/gnome/logitech-mx-master-2s.svg', - 'data/gnome/logitech-mx-master.svg', - 'data/gnome/roccat-kone-xtd.svg', - 'data/gnome/steelseries-kinzu-v2.svg', - 'data/gnome/steelseries-rival.svg', - 'data/gnome/steelseries-rival310.svg', - 'data/gnome/steelseries-rival600.svg', - 'data/gnome/steelseries-sensei310.svg', - 'data/gnome/steelseries-senseiraw.svg', -) -install_data(gnome_svg_files, - install_dir : join_paths(get_option('datadir'), 'libratbag', 'gnome')) - -test_svg_files = find_program('data/gnome/check-svg.py') -test('check-svg', test_svg_files, args : gnome_svg_files) +test('data-parse-test', data_parse_test, args: data_files) #### tests #### enable_tests = get_option('tests') diff --git a/ratbagd/ratbagd-device.c b/ratbagd/ratbagd-device.c index bdbef9cf..22b4510d 100644 --- a/ratbagd/ratbagd-device.c +++ b/ratbagd/ratbagd-device.c @@ -136,48 +136,6 @@ static int ratbagd_device_get_device_name(sd_bus *bus, return 0; } -static int ratbagd_device_get_theme_svg_fd(sd_bus_message *m, - void *userdata, - sd_bus_error *error) -{ - struct ratbagd_device *device = userdata; - char svg_path[PATH_MAX] = {0}; - const char *theme; - const char *svg; - const char *datadir; - _cleanup_close_ int fd = -1; - - datadir = getenv("LIBRATBAG_DATA_DIR"); - if (!datadir) - datadir = LIBRATBAG_DATA_DIR; - - CHECK_CALL(sd_bus_message_read(m, "s", &theme)); - - if (streq(theme, "default")) - theme = "gnome"; - - svg = ratbag_device_get_svg_name(device->lib_device); - if (!svg) { - log_error("%s: failed to fetch SVG, using fallback\n", - ratbagd_device_get_sysname(device)); - svg = FALLBACK_SVG_NAME; - } - - snprintf(svg_path, sizeof(svg_path), "%s/%s/%s", datadir, theme, svg); - - fd = open(svg_path, O_RDONLY); - if (fd == -1) { - log_error("%s: failed to open SVG '%s' (%m)\n", - ratbagd_device_get_sysname(device), - svg_path); - return -ENOENT; - } - - CHECK_CALL(sd_bus_reply_method_return(m, "h", fd)); - - return 0; -} - static int ratbagd_device_get_profiles(sd_bus *bus, const char *path, const char *interface, @@ -264,7 +222,6 @@ const sd_bus_vtable ratbagd_device_vtable[] = { SD_BUS_PROPERTY("Model", "s", ratbag_device_get_model, 0, SD_BUS_VTABLE_PROPERTY_CONST), SD_BUS_PROPERTY("Name", "s", ratbagd_device_get_device_name, 0, SD_BUS_VTABLE_PROPERTY_CONST), SD_BUS_PROPERTY("Profiles", "ao", ratbagd_device_get_profiles, 0, SD_BUS_VTABLE_PROPERTY_CONST), - SD_BUS_METHOD("GetSvgFd", "s", "h", ratbagd_device_get_theme_svg_fd, SD_BUS_VTABLE_UNPRIVILEGED), SD_BUS_METHOD("Commit", "", "u", ratbagd_device_commit, SD_BUS_VTABLE_UNPRIVILEGED), SD_BUS_SIGNAL("Resync", "", 0), SD_BUS_VTABLE_END, diff --git a/ratbagd/ratbagd-test.c b/ratbagd/ratbagd-test.c index 5a5e8a88..89492535 100644 --- a/ratbagd/ratbagd-test.c +++ b/ratbagd/ratbagd-test.c @@ -39,7 +39,6 @@ static const struct ratbag_test_device ratbagd_test_device_descr = { .num_resolutions = 3, .num_buttons = 4, .num_leds = 3, - .svg = "fallback.svg", .profiles = { { .name = NULL, diff --git a/ratbagd/ratbagd.c b/ratbagd/ratbagd.c index 29f62926..0b33f4c2 100644 --- a/ratbagd/ratbagd.c +++ b/ratbagd/ratbagd.c @@ -49,12 +49,6 @@ enum log_level { LL_RAW, } log_level = LL_INFO; -static const char *SVG_THEMES[] = { - "default", - "gnome", - NULL -}; - void log_info(const char *fmt, ...) { va_list args; @@ -170,34 +164,9 @@ static int ratbagd_get_devices(sd_bus *bus, return 0; } -static int ratbagd_get_themes(sd_bus *bus, - const char *path, - const char *interface, - const char *property, - sd_bus_message *reply, - void *userdata, - sd_bus_error *error) -{ - struct ratbagd *ctx = userdata; - const char **theme; - - CHECK_CALL(sd_bus_message_open_container(reply, 'a', "s")); - - theme = ctx->themes; - while(*theme) { - CHECK_CALL(sd_bus_message_append(reply, "s", *theme)); - theme++; - } - - CHECK_CALL(sd_bus_message_close_container(reply)); - - return 0; -} - static const sd_bus_vtable ratbagd_vtable[] = { SD_BUS_VTABLE_START(0), SD_BUS_PROPERTY("Devices", "ao", ratbagd_get_devices, 0, SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE), - SD_BUS_PROPERTY("Themes", "as", ratbagd_get_themes, 0, 0), #ifdef RATBAG_DEVELOPER_EDITION SD_BUS_METHOD("ResetTestDevice", "", "u", ratbagd_reset_test_device, SD_BUS_VTABLE_UNPRIVILEGED), #endif /* RATBAG_DEVELOPER_EDITION */ @@ -441,7 +410,6 @@ static int ratbagd_new(struct ratbagd **out) int r; ctx = zalloc(sizeof(*ctx)); - ctx->themes = SVG_THEMES; r = sd_event_default(&ctx->event); if (r < 0) diff --git a/src/driver-test.c b/src/driver-test.c index c5182f8e..2ef6d399 100644 --- a/src/driver-test.c +++ b/src/driver-test.c @@ -156,13 +156,6 @@ test_write_led(struct ratbag_led *led, return 0; } -static const char* test_get_svg_name(const struct ratbag_device *device) -{ - struct ratbag_test_device *d = ratbag_get_drv_data(device); - - return d->svg; -} - static int test_fake_probe(struct ratbag_device *device) { @@ -294,7 +287,6 @@ struct ratbag_driver test_driver = { .probe = test_fake_probe, .test_probe = test_probe, .remove = test_remove, - .get_svg_name = test_get_svg_name, .write_profile = test_write_profile, .set_active_profile = test_set_active_profile, .write_button = test_write_button, diff --git a/src/libratbag-data.c b/src/libratbag-data.c index 18e323e3..a8adeb08 100644 --- a/src/libratbag-data.c +++ b/src/libratbag-data.c @@ -81,7 +81,6 @@ struct ratbag_device_data { int refcount; char *name; char *driver; - char *svg; enum driver drivertype; @@ -261,12 +260,6 @@ ratbag_device_data_get_name(const struct ratbag_device_data *data) return data->name; } -const char * -ratbag_device_data_get_svg(const struct ratbag_device_data *data) -{ - return data->svg; -} - enum ratbag_led_type ratbag_device_data_get_led_type(const struct ratbag_device_data *data, unsigned int index) @@ -295,7 +288,6 @@ ratbag_device_data_destroy(struct ratbag_device_data *data) } free(data->name); free(data->driver); - free(data->svg); free(data); } @@ -436,8 +428,6 @@ file_data_matches(struct ratbag *ratbag, } } - data->svg = g_key_file_get_string(keyfile, GROUP_DEVICE, "Svg", NULL); - ledtypes_strv = g_key_file_get_string_list(keyfile, GROUP_DEVICE, "LedTypes", NULL, NULL); if (parse_ledtypes(ledtypes_strv, data->led_types, ARRAY_LENGTH(data->led_types)) < 0) { log_error(ratbag, "Invalid LedTypes string in '%s'\n", basename(path)); diff --git a/src/libratbag-data.h b/src/libratbag-data.h index ebf78a8a..7a258780 100644 --- a/src/libratbag-data.h +++ b/src/libratbag-data.h @@ -40,8 +40,6 @@ const char * ratbag_device_data_get_driver(const struct ratbag_device_data *data); const char * ratbag_device_data_get_name(const struct ratbag_device_data *data); -const char * -ratbag_device_data_get_svg(const struct ratbag_device_data *data); enum ratbag_led_type ratbag_device_data_get_led_type(const struct ratbag_device_data *data, unsigned int index); diff --git a/src/libratbag-private.h b/src/libratbag-private.h index e03f66bd..37aeb013 100644 --- a/src/libratbag-private.h +++ b/src/libratbag-private.h @@ -192,15 +192,6 @@ struct ratbag_driver { */ int (*commit)(struct ratbag_device *device); - /** - * Callback called when the device doesn't have a .device file with - * an SVG name set. - * - * The returned value must not be free by the caller, the driver - * has to free it during .remove(). - */ - const char *(*get_svg_name)(const struct ratbag_device *device); - /* * FIXME: This function is deprecated and should be removed. Once * we've updated all the device drivers to stop using it we'll remove diff --git a/src/libratbag-test.h b/src/libratbag-test.h index 233e0a6e..d3e3d53f 100644 --- a/src/libratbag-test.h +++ b/src/libratbag-test.h @@ -90,7 +90,6 @@ struct ratbag_test_device { unsigned int num_resolutions; unsigned int num_buttons; unsigned int num_leds; - const char *svg; struct ratbag_test_profile profiles[RATBAG_TEST_MAX_PROFILES]; void (*destroyed)(struct ratbag_device *device, void *data); void *destroyed_data; diff --git a/src/libratbag.c b/src/libratbag.c index 671b1576..0e2778f3 100644 --- a/src/libratbag.c +++ b/src/libratbag.c @@ -504,19 +504,6 @@ ratbag_device_get_name(const struct ratbag_device* device) return device->name; } -LIBRATBAG_EXPORT const char * -ratbag_device_get_svg_name(const struct ratbag_device* device) -{ - const char *name = NULL; - - if (device->data) - name = ratbag_device_data_get_svg(device->data); - if (!name && device->driver->get_svg_name) - name = device->driver->get_svg_name(device); - - return name; -} - LIBRATBAG_EXPORT const char * ratbag_device_get_bustype(const struct ratbag_device *device) { diff --git a/src/libratbag.h b/src/libratbag.h index 7947fada..ba93a6ed 100644 --- a/src/libratbag.h +++ b/src/libratbag.h @@ -430,16 +430,6 @@ ratbag_device_get_user_data(const struct ratbag_device *device); const char * ratbag_device_get_name(const struct ratbag_device* device); -/** - * @ingroup device - * - * @param device A previously initialized ratbag device - * @return The file name of the svg drawing associated with the given ratbag. - * If there is no file associated to the device, NULL is returned. - */ -const char * -ratbag_device_get_svg_name(const struct ratbag_device* device); - /** * @ingroup device * diff --git a/tools/ratbagc.py.in b/tools/ratbagc.py.in index e1ae49fd..00df2103 100644 --- a/tools/ratbagc.py.in +++ b/tools/ratbagc.py.in @@ -201,12 +201,6 @@ class Ratbagd(object): return self._devices[id] if id in self._devices.keys() else None - @property - def themes(self): - """A list of theme names. The theme 'default' is guaranteed to be - available.""" - return ["default", "gnome"] - def set_verbose(self, verbose): if verbose > 2: libratbag.ratbag_log_set_priority(self._ratbag, libratbag.RATBAG_LOG_PRIORITY_RAW) @@ -282,20 +276,6 @@ class RatbagdDevice(metaclass=MetaRatbag): print("No active profile. Please report this bug to the libratbag developers", file=sys.stderr) return self._profiles[0] - def get_svg_fd(self, theme): - """Returns a File-like object to the SVG for the given theme, or - raises FileNotFoundError if the file is not available. - - The theme must be one of org.freedesktop.ratbag1.Manager.Themes. The - theme 'default' is guaranteed to be available (but the file itself - may not be). - - @param theme The theme from which to retrieve the SVG, as str - """ - svg = libratbag.ratbag_device_get_svg_name(self._device) - path = os.path.join(LIBRATBAG_DATA_DIR, 'gnome', svg) - return open(path) - def commit(self): """Commits all changes made to the device. diff --git a/tools/ratbagctl.in b/tools/ratbagctl.in index ebff515f..37d035c4 100755 --- a/tools/ratbagctl.in +++ b/tools/ratbagctl.in @@ -217,18 +217,7 @@ def print_profile(d, p, level): def print_device(d, level): p = d.profiles[0] # there should be always one - svg_name = 'unknown' - try: - with d.get_svg_fd('gnome') as fd: - svg = fd.read() - match = re.search('sodipodi:docname=".*"\n', svg) - if match: - svg_name = match.group(0).split('"')[1] - except FileNotFoundError: - pass - print(" " * level + "{} - {}".format(d.id, d.name)) - print(" " * level + " SVG: {}".format(svg_name)) print(" " * level + " Number of Buttons: {}".format(len(p.buttons))) print(" " * level + " Number of Leds: {}".format(len(p.leds))) print(" " * level + "Number of Profiles: {}".format(len(d.profiles))) diff --git a/tools/ratbagd.py b/tools/ratbagd.py index caad8453..7d9d7584 100644 --- a/tools/ratbagd.py +++ b/tools/ratbagd.py @@ -216,35 +216,6 @@ class _RatbagdDBus(GObject.GObject): print(e.message, file=sys.stderr) raise - def _dbus_call_return_one_fd(self, method, type, *value): - # Calls a method synchronously on the bus, using the given method name, - # type signature and values. - # - # It the result is valid, it is returned. Invalid results raise the - # appropriate RatbagError* or RatbagdDBus* exception, or GLib.Error if - # it is an unexpected exception that probably shouldn't be passed up to - # the UI. - val = GLib.Variant("({})".format(type), value) - try: - res = self._proxy.call_with_unix_fd_list_sync(method, val, - Gio.DBusCallFlags.NO_AUTO_START, - 2000, None, None) - if res in EXCEPTION_TABLE: - raise EXCEPTION_TABLE[res] - # Result is a tuple of (GLib.Variant('(h)', (0,)), fd_list), - # we return the first file descriptor in that list - return res[1].get(0) - except GLib.Error as e: - if e.code == Gio.DBusError.FILE_NOT_FOUND: - raise FileNotFoundError('Failed to open SVG file') - elif e.code == Gio.IOErrorEnum.TIMED_OUT: - raise RatbagdDBusTimeout(e.message) - else: - # Unrecognized error code; print the message to stderr and raise - # the GLib.Error. - print(e.message, file=sys.stderr) - raise - def __eq__(self, other): return other and self._object_path == other._object_path @@ -301,12 +272,6 @@ class Ratbagd(_RatbagdDBus): return d return None - @GObject.Property - def themes(self): - """A list of theme names. The theme 'default' is guaranteed to be - available.""" - return self._get_dbus_property("Themes") or [] - def __enter__(self): return self @@ -374,19 +339,6 @@ class RatbagdDevice(_RatbagdDBus): print("No active profile. Please report this bug to the libratbag developers", file=sys.stderr) return self._profiles[0] - def get_svg_fd(self, theme): - """Returns a File-like object to the SVG for the given theme, or - raises FileNotFoundError if the file is not available. - - The theme must be one of org.freedesktop.ratbag1.Manager.Themes. The - theme 'default' is guaranteed to be available (but the file itself - may not be). - - @param theme The theme from which to retrieve the SVG, as str - """ - fd = self._dbus_call_return_one_fd("GetSvgFd", "s", theme) - return os.fdopen(fd) - def commit(self): """Commits all changes made to the device.