Unverified Commit 7d150337 authored by Honnip's avatar Honnip
Browse files

gnomeExtensions: count naming collisions only for the last three shell versions

Before this commit, we counted naming collisions of extensions for each shell version.
With this commit, we count naming collisions of extensions for the last three shell versions, because `gnomeExtensions` contains extensions for the last three shell versions.
parent 52389292
Loading
Loading
Loading
Loading
+48 −369
Original line number Diff line number Diff line
{
  "38": {
  "applications-menu": [
      "apps-menu@gnome-shell-extensions.gcampax.github.com",
      "Applications_Menu@rmy.pobox.com"
    "Applications_Menu@rmy.pobox.com",
    "apps-menu@gnome-shell-extensions.gcampax.github.com"
  ],
  "workspace-indicator": [
      "workspace-indicator@gnome-shell-extensions.gcampax.github.com",
      "horizontal-workspace-indicator@tty2.io"
    ],
    "lock-keys": [
      "lockkeys@vaina.lt",
      "lockkeys@fawtytoo"
    ],
    "fuzzy-clock": [
      "Fuzzy_Clock@dallagi",
      "fuzzy-clock@keepawayfromfire.co.uk"
    ],
    "hide-activities-button": [
      "Hide_Activities@shay.shayel.org",
      "hide-activities-button@nmingori.gnome-shell-extensions.org"
    ],
    "shutdowntimer": [
      "ShutdownTimer@neumann",
      "ShutdownTimer@deminder"
    ],
    "bottompanel": [
      "bottompanel@tmoer93",
      "bottom-panel@sulincix"
    ],
    "noannoyance": [
      "noannoyance@sindex.com",
      "noannoyance@daase.net"
    ],
    "virtualbox-applet": [
      "vbox-applet@gs.eros2.info",
      "vbox-applet@buba98"
    ],
    "transparent-window": [
      "transparent-window@pbxqdown.github.com",
      "transparentwindows.mdirshad07"
    ],
    "azan-islamic-prayer-times": [
      "azan@faissal.bensefia.id",
      "azan@hatem.masmoudi.org"
    ],
    "floating-dock": [
      "floatingDock@sun.wxg@gmail.com",
      "floating-dock@nandoferreira_prof@hotmail.com"
    ],
    "gnome-trash": [
      "gnome-trash@gnome-trash.b00f.gitlab.com",
      "gnome-trash@b00f.github.io"
    ],
    "true-color-invert": [
      "true-color-invert@jackkenney",
      "true-color-window-invert@lynet101"
    ],
    "volume-scroller": [
      "volume_scroller@trflynn89.pm.me",
      "volume_scroller@francislavoie.github.io"
    ]
  },
  "40": {
    "applications-menu": [
      "apps-menu@gnome-shell-extensions.gcampax.github.com",
      "Applications_Menu@rmy.pobox.com"
    ],
    "workspace-indicator": [
      "workspace-indicator@gnome-shell-extensions.gcampax.github.com",
      "horizontal-workspace-indicator@tty2.io"
    ],
    "lock-keys": [
      "lockkeys@vaina.lt",
      "lockkeys@fawtytoo"
    ],
    "system-monitor": [
      "system-monitor@paradoxxx.zero.gmail.com",
      "System_Monitor@bghome.gmail.com"
    ],
    "hide-activities-button": [
      "Hide_Activities@shay.shayel.org",
      "hide-activities-button@nmingori.gnome-shell-extensions.org"
    ],
    "clipboard-indicator": [
      "clipboard-indicator@tudmotu.com",
      "clipboard-indicator@Dieg0Js.github.io"
    ],
    "shutdowntimer": [
      "ShutdownTimer@neumann",
      "shutdown-timer-gnome-shell-extension",
      "ShutdownTimer@deminder"
    ],
    "noannoyance": [
      "noannoyance@sindex.com",
      "noannoyance@daase.net"
    ],
    "fuzzy-clock": [
      "fuzzy-clock@keepawayfromfire.co.uk",
      "FuzzyClock@johngoetz"
    ],
    "virtualbox-applet": [
      "vbox-applet@gs.eros2.info",
      "vbox-applet@buba98"
    ],
    "panel-date-format": [
      "panel-date-format@keiii.github.com",
      "panel-date-format@atareao.es"
    ],
    "disable-unredirect-fullscreen-windows": [
      "unredirect@vaina.lt",
      "unredirect@aunetx"
    ],
    "floating-dock": [
      "floatingDock@sun.wxg@gmail.com",
      "floating-dock@nandoferreira_prof@hotmail.com"
    ],
    "extension-list": [
      "extension-list@tu.berry",
      "screen-lock@garciabaameiro.com"
    ],
    "wireguard-indicator": [
      "wireguard-indicator@gregos.me",
      "wireguard-indicator@atareao.es"
    ],
    "true-color-invert": [
      "true-color-invert@jackkenney",
      "true-color-window-invert@lynet101"
    ],
    "volume-scroller": [
      "volume_scroller@trflynn89.pm.me",
      "volume_scroller@francislavoie.github.io"
    ],
    "floating-panel": [
      "floating-panel@aylur",
      "floating-panel-usedbymyself@wpism"
    ]
  },
  "41": {
    "applications-menu": [
      "apps-menu@gnome-shell-extensions.gcampax.github.com",
      "Applications_Menu@rmy.pobox.com"
    ],
    "workspace-indicator": [
      "workspace-indicator@gnome-shell-extensions.gcampax.github.com",
      "horizontal-workspace-indicator@tty2.io"
    ],
    "lock-keys": [
      "lockkeys@vaina.lt",
      "lockkeys@fawtytoo"
    ],
    "shutdowntimer": [
      "ShutdownTimer@neumann",
      "ShutdownTimer@deminder"
    ],
    "noannoyance": [
      "noannoyance@sindex.com",
      "noannoyance@daase.net"
    ],
    "fuzzy-clock": [
      "fuzzy-clock@keepawayfromfire.co.uk",
      "FuzzyClock@johngoetz"
    ],
    "virtualbox-applet": [
      "vbox-applet@gs.eros2.info",
      "vbox-applet@buba98"
    ],
    "panel-date-format": [
      "panel-date-format@keiii.github.com",
      "panel-date-format@atareao.es"
    ],
    "disable-unredirect-fullscreen-windows": [
      "unredirect@vaina.lt",
      "unredirect@aunetx"
    ],
    "floating-dock": [
      "floatingDock@sun.wxg@gmail.com",
      "floating-dock@nandoferreira_prof@hotmail.com"
    ],
    "wireguard-indicator": [
      "wireguard-indicator@gregos.me",
      "wireguard-indicator@atareao.es"
    ],
    "true-color-invert": [
      "true-color-invert@jackkenney",
      "true-color-window-invert@lynet101"
    ],
    "volume-scroller": [
      "volume_scroller@trflynn89.pm.me",
      "volume_scroller@francislavoie.github.io"
    ],
    "floating-panel": [
      "floating-panel@aylur",
      "floating-panel-usedbymyself@wpism"
    ]
  },
  "42": {
    "applications-menu": [
      "apps-menu@gnome-shell-extensions.gcampax.github.com",
      "Applications_Menu@rmy.pobox.com"
    ],
    "workspace-indicator": [
      "workspace-indicator@gnome-shell-extensions.gcampax.github.com",
      "horizontal-workspace-indicator@tty2.io"
    ],
    "lock-keys": [
      "lockkeys@vaina.lt",
      "lockkeys@fawtytoo"
    "horizontal-workspace-indicator@tty2.io",
    "workspace-indicator@gnome-shell-extensions.gcampax.github.com"
  ],
  "persian-calendar": [
      "PersianCalendar@oxygenws.com",
      "persian-calendar@iamrezamousavi.gmail.com"
    "persian-calendar@iamrezamousavi.gmail.com",
    "PersianCalendar@oxygenws.com"
  ],
  "openweather": [
    "openweather-extension@jenslody.de",
    "openweather-extension@penguin-teal.github.io"
  ],
  "clipboard-indicator": [
    "clipboard-indicator@tudmotu.com",
    "clipboard-indicator@Dieg0Js.github.io"
  ],
    "noannoyance": [
      "noannoyance@sindex.com",
      "noannoyance@daase.net"
    ],
    "fuzzy-clock": [
      "fuzzy-clock@keepawayfromfire.co.uk",
      "FuzzyClock@johngoetz"
  "system-monitor": [
    "system-monitor@gnome-shell-extensions.gcampax.github.com",
    "System_Monitor@bghome.gmail.com"
  ],
  "virtualbox-applet": [
    "vbox-applet@gs.eros2.info",
    "vbox-applet@buba98"
  ],
  "panel-date-format": [
      "panel-date-format@keiii.github.com",
      "panel-date-format@atareao.es"
    ],
    "wireguard-indicator": [
      "wireguard-indicator@gregos.me",
      "wireguard-indicator@atareao.es"
    ],
    "true-color-invert": [
      "true-color-invert@jackkenney",
      "true-color-window-invert@lynet101"
    ],
    "volume-scroller": [
      "volume_scroller@trflynn89.pm.me",
      "volume_scroller@francislavoie.github.io"
    ],
    "auto-activities": [
      "auto-activities@acedron.github.io",
      "auto-activities@CleoMenezesJr.github.io"
    ],
    "floating-panel": [
      "floating-panel@aylur",
      "floating-panel-usedbymyself@wpism"
    ]
  },
  "43": {
    "applications-menu": [
      "apps-menu@gnome-shell-extensions.gcampax.github.com",
      "Applications_Menu@rmy.pobox.com"
    ],
    "workspace-indicator": [
      "workspace-indicator@gnome-shell-extensions.gcampax.github.com",
      "horizontal-workspace-indicator@tty2.io"
    ],
    "lock-keys": [
      "lockkeys@vaina.lt",
      "lockkeys@fawtytoo"
    ],
    "persian-calendar": [
      "PersianCalendar@oxygenws.com",
      "persian-calendar@iamrezamousavi.gmail.com"
    ],
    "clipboard-indicator": [
      "clipboard-indicator@tudmotu.com",
      "clipboard-indicator@Dieg0Js.github.io"
    "panel-date-format@atareao.es",
    "panel-date-format@keiii.github.com"
  ],
    "keep-awake": [
      "KeepAwake@jepfa.de",
      "awake@vixalien.com"
  "battery-time": [
    "batterytime@typeof.pw",
    "batime@martin.zurowietz.de"
  ],
    "noannoyance": [
      "noannoyance@sindex.com",
      "noannoyance@daase.net"
  "kernel-indicator": [
    "kernel-indicator@elboulangero.gitlab.com",
    "kernel-indicator@pvizc.gitlab.com"
  ],
  "fuzzy-clock": [
    "fuzzy-clock@keepawayfromfire.co.uk",
    "FuzzyClock@johngoetz"
  ],
    "virtualbox-applet": [
      "vbox-applet@gs.eros2.info",
      "vbox-applet@buba98"
    ],
    "panel-date-format": [
      "panel-date-format@keiii.github.com",
      "panel-date-format@atareao.es"
    ],
    "battery-time": [
      "batime@martin.zurowietz.de",
      "batterytime@typeof.pw"
    ],
    "volume-scroller": [
      "volume_scroller@trflynn89.pm.me",
      "volume_scroller@francislavoie.github.io"
    ],
    "floating-panel": [
      "floating-panel@aylur",
      "floating-panel-usedbymyself@wpism"
    ]
  },
  "44": {
    "applications-menu": [
      "apps-menu@gnome-shell-extensions.gcampax.github.com",
      "Applications_Menu@rmy.pobox.com"
    ],
    "workspace-indicator": [
      "workspace-indicator@gnome-shell-extensions.gcampax.github.com",
      "horizontal-workspace-indicator@tty2.io"
    ],
    "persian-calendar": [
      "PersianCalendar@oxygenws.com",
      "persian-calendar@iamrezamousavi.gmail.com"
    ],
    "clipboard-indicator": [
      "clipboard-indicator@tudmotu.com",
      "clipboard-indicator@Dieg0Js.github.io"
    ],
    "virtualbox-applet": [
      "vbox-applet@gs.eros2.info",
      "vbox-applet@buba98"
    ],
    "panel-date-format": [
      "panel-date-format@keiii.github.com",
      "panel-date-format@atareao.es"
    ],
    "battery-time": [
      "batime@martin.zurowietz.de",
      "batterytime@typeof.pw"
    ]
  },
  "45": {
    "applications-menu": [
      "apps-menu@gnome-shell-extensions.gcampax.github.com",
      "Applications_Menu@rmy.pobox.com"
    ],
    "persian-calendar": [
      "PersianCalendar@oxygenws.com",
      "persian-calendar@iamrezamousavi.gmail.com"
    ],
    "battery-time": [
      "batime@martin.zurowietz.de",
      "batterytime@typeof.pw"
    ],
  "power-profile-indicator": [
    "power-profile-indicator@laux.wtf",
    "power-profile@fthx"
  ]
  },
  "46": {
    "applications-menu": [
      "apps-menu@gnome-shell-extensions.gcampax.github.com",
      "Applications_Menu@rmy.pobox.com"
    ],
    "persian-calendar": [
      "PersianCalendar@oxygenws.com",
      "persian-calendar@iamrezamousavi.gmail.com"
    ],
    "power-profile-indicator": [
      "power-profile-indicator@laux.wtf",
      "power-profile@fthx"
    ]
  }
}
+22 −84
Original line number Diff line number Diff line
@@ -3,111 +3,49 @@
# - Every item from ./collisions.json (for the respective Shell version) should have an entry in here
# - Set the value to `null` for filtering (duplicate or unmaintained extensions)
# - Sort the entries in order of appearance in the collisions.json
# - Make a separate section for each GNOME version. Collisions will come back eventually
#   as the extensions are updated.
{
  # ####### GNOME 45 #######

  "apps-menu@gnome-shell-extensions.gcampax.github.com" = "applications-menu";
  "Applications_Menu@rmy.pobox.com" = "frippery-applications-menu";
  "apps-menu@gnome-shell-extensions.gcampax.github.com" = "applications-menu";

  "PersianCalendar@oxygenws.com" = "persian-calendar";
  "persian-calendar@iamrezamousavi.gmail.com" = "persian-calendar-2";

  "batime@martin.zurowietz.de" = "battery-time";
  "batterytime@typeof.pw" = "battery-time-2";

  "power-profile-indicator@laux.wtf" = "power-profile-indicator";
  "power-profile@fthx" = "power-profile-indicator-2";

  # ############################################################################
  # These are conflicts for older extensions (i.e. they don't support the latest GNOME version).
  # Make sure to move them up once they are updated
  "horizontal-workspace-indicator@tty2.io" = "workspace-indicator-2";
  "workspace-indicator@gnome-shell-extensions.gcampax.github.com" = "workspace-indicator";

  # ####### GNOME 44 #######
  "persian-calendar@iamrezamousavi.gmail.com" = "persian-calendar-2";
  "PersianCalendar@oxygenws.com" = "persian-calendar";

  "workspace-indicator@gnome-shell-extensions.gcampax.github.com" = "workspace-indicator";
  "horizontal-workspace-indicator@tty2.io" = "workspace-indicator-2";
  "openweather-extension@jenslody.de" = "openweather";
  "openweather-extension@penguin-teal.github.io" = "openweather-refined";

  "clipboard-indicator@tudmotu.com" = "clipboard-indicator";
  "clipboard-indicator@Dieg0Js.github.io" = "clipboard-indicator-2";

  "system-monitor@gnome-shell-extensions.gcampax.github.com" = "system-monitor";
  "System_Monitor@bghome.gmail.com" = "system-monitor-2";

  "vbox-applet@gs.eros2.info" = "virtualbox-applet";
  "vbox-applet@buba98" = "virtualbox-applet-2";

  "panel-date-format@keiii.github.com" = "panel-date-format";
  "panel-date-format@atareao.es" = "panel-date-format-2";
  "panel-date-format@keiii.github.com" = "panel-date-format";

  # ####### GNOME 43 #######

  "lockkeys@vaina.lt" = "lock-keys";
  "lockkeys@fawtytoo" = "lock-keys-2";

  # DEPRECATED: Use "Caffeine" instead
  "KeepAwake@jepfa.de" = "keep-awake";
  "awake@vixalien.com" = null;
  "batterytime@typeof.pw" = "battery-time-2";
  "batime@martin.zurowietz.de" = "battery-time";

  "noannoyance@sindex.com" = "noannoyance";
  "noannoyance@daase.net" = "noannoyance-2";
  # No longer maintained: https://gitlab.com/arnaudr/gnome-shell-extension-kernel-indicator
  "kernel-indicator@elboulangero.gitlab.com" = null;
  "kernel-indicator@pvizc.gitlab.com" = "kernel-indicator";

  "fuzzy-clock@keepawayfromfire.co.uk" = "fuzzy-clock-2";
  "FuzzyClock@johngoetz" = "fuzzy-clock";

  "volume_scroller@trflynn89.pm.me" = "volume-scroller";
  "volume_scroller@francislavoie.github.io" = "volume-scroller-2";

  # no source repository can be found for this extension
  "floating-panel@aylur" = "floating-panel";
  "floating-panel-usedbymyself@wpism" = null;

  # ####### GNOME 42 #######

  "wireguard-indicator@gregos.me" = "wireguard-indicator-2";
  "wireguard-indicator@atareao.es" = "wireguard-indicator";

  "auto-activities@acedron.github.io" = "auto-activities-2";
  "auto-activities@CleoMenezesJr.github.io" = "auto-activities";

  "true-color-invert@jackkenney" = "true-color-invert";
  "true-color-window-invert@lynet101" = "true-color-window-invert";

  # ####### GNOME 41 #######
  "power-profile-indicator@laux.wtf" = "power-profile-indicator";
  "power-profile@fthx" = "power-profile-indicator-2";

  # ############################################################################
  # These extensions no longer collide. We preserve the old attribute name for backwards compatibility.
  "floatingDock@sun.wxg@gmail.com" = "floating-dock-2";
  "floating-dock@nandoferreira_prof@hotmail.com" = "floating-dock";

  "unredirect@vaina.lt" = "disable-unredirect-fullscreen-windows";
  "unredirect@aunetx" = "disable-unredirect-fullscreen-windows-2";

  # At the moment, ShutdownTimer@deminder is a fork of ShutdownTimer@neumann which adds new features
  # there seem to be upstream plans, so this should be checked periodically:
  # https://github.com/Deminder/ShutdownTimer https://github.com/neumann-d/ShutdownTimer/pull/46
  "ShutdownTimer@neumann" = null;
  "shutdown-timer-gnome-shell-extension" = "shutdowntimer-2";
  "ShutdownTimer@deminder" = "shutdowntimer";

  # ####### GNOME 40 #######

  "System_Monitor@bghome.gmail.com" = "system-monitor-2";

  "Hide_Activities@shay.shayel.org" = "hide-activities-button";
  "hide-activities-button@nmingori.gnome-shell-extensions.org" = "hide-activities-button-2";

  "extension-list@tu.berry" = "extension-list";
  "screen-lock@garciabaameiro.com" = "screen-lock"; # Don't know why they got 'extension-list' as slug

  # ####### GNOME 3.38 #######

  "bottompanel@tmoer93" = "bottompanel";
  "bottom-panel@sulincix" = "bottompanel-2";

  # See https://github.com/pbxqdown/gnome-shell-extension-transparent-window/issues/12#issuecomment-800765381
  "transparent-window@pbxqdown.github.com" = "transparent-window";
  "transparentwindows.mdirshad07" = null;

  # Forks of each other, azan@faissal.bensefia.id is more recent
  "azan@faissal.bensefia.id" = "azan-islamic-prayer-times";
  "azan@hatem.masmoudi.org" = null;
  "true-color-window-invert@lynet101" = "true-color-window-invert";
  "volume_scroller@francislavoie.github.io" = "volume-scroller-2";

  # ############################################################################
  # Overrides for extensions that were manually packaged in the past but are gradually
+15 −9
Original line number Diff line number Diff line
@@ -9,7 +9,7 @@ import urllib.error
import urllib.request
from operator import itemgetter
from pathlib import Path
from typing import List, Dict, Optional, Any, Tuple
from typing import List, Dict, Optional, Any, Tuple, Set

# We don't want all those deprecated legacy extensions
# Group extensions by GNOME "major" version for compatibility reasons
@@ -302,15 +302,21 @@ if __name__ == "__main__":
        json.load(out)

    with open(updater_dir_path / "collisions.json", "w") as out:
        # Find the name collisions only for the last 3 shell versions
        last_3_versions = sorted(supported_versions.keys(), key=lambda v: float(v), reverse=True)[:3]
        package_name_registry_for_versions = [v for k, v in package_name_registry.items() if k in last_3_versions]
        # Merge all package names into a single dictionary
        package_name_registry_filtered: Dict[PackageName, Set[Uuid]] = {}
        for pkgs in package_name_registry_for_versions:
            for pname, uuids in pkgs.items():
                if pname not in package_name_registry_filtered:
                    package_name_registry_filtered[pname] = set()
                package_name_registry_filtered[pname].update(uuids)
        # Filter out those that are not duplicates
        package_name_registry_filtered: Dict[ShellVersion, Dict[PackageName, List[Uuid]]] = {
            # The outer level keys are shell versions
            shell_version: {
                # The inner keys are extension names, with a list of all extensions with that name as value.
                pname: extensions for pname, extensions in collisions.items() if len(extensions) > 1
            } for shell_version, collisions in package_name_registry.items()
        }
        json.dump(package_name_registry_filtered, out, indent=2, ensure_ascii=False)
        package_name_registry_filtered = {k: v for k, v in package_name_registry_filtered.items() if len(v) > 1}
        # Convert set to list
        collisions: Dict[PackageName, List[Uuid]] = {k: list(v) for k, v in package_name_registry_filtered.items()}
        json.dump(collisions, out, indent=2, ensure_ascii=False)
        out.write("\n")

    logging.info(