Unverified Commit c7e65c09 authored by Jan Tojnar's avatar Jan Tojnar Committed by GitHub
Browse files

Merge pull request #314893 from honnip/gnome-extensions-collision

gnomeExtensions: count naming collisions only for the last three shell versions
parents 7ccd1516 820a0fea
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -56,7 +56,7 @@ let
      homepage = link;
      license = lib.licenses.gpl2Plus; # https://gjs.guide/extensions/review-guidelines/review-guidelines.html#licensing
      platforms = lib.platforms.linux;
      maintainers = with lib.maintainers; [ ];
      maintainers = [ lib.maintainers.honnip ];
    };
    passthru = {
      extensionPortalSlug = pname;
+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
+168 −102

File changed.

Preview size limit exceeded, changes collapsed.

+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(