diff --git a/pkgs/desktops/gnome/extensions/collisions.json b/pkgs/desktops/gnome/extensions/collisions.json index 1ecf8d1b34e9..983940b88b27 100644 --- a/pkgs/desktops/gnome/extensions/collisions.json +++ b/pkgs/desktops/gnome/extensions/collisions.json @@ -1,371 +1,50 @@ { - "38": { - "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" - ], - "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" - ], - "persian-calendar": [ - "PersianCalendar@oxygenws.com", - "persian-calendar@iamrezamousavi.gmail.com" - ], - "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" - ], - "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" - ], - "keep-awake": [ - "KeepAwake@jepfa.de", - "awake@vixalien.com" - ], - "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" - ], - "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" - ] - } + "applications-menu": [ + "Applications_Menu@rmy.pobox.com", + "apps-menu@gnome-shell-extensions.gcampax.github.com" + ], + "workspace-indicator": [ + "horizontal-workspace-indicator@tty2.io", + "workspace-indicator@gnome-shell-extensions.gcampax.github.com" + ], + "persian-calendar": [ + "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" + ], + "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@atareao.es", + "panel-date-format@keiii.github.com" + ], + "battery-time": [ + "batterytime@typeof.pw", + "batime@martin.zurowietz.de" + ], + "kernel-indicator": [ + "kernel-indicator@elboulangero.gitlab.com", + "kernel-indicator@pvizc.gitlab.com" + ], + "fuzzy-clock": [ + "fuzzy-clock@keepawayfromfire.co.uk", + "FuzzyClock@johngoetz" + ], + "power-profile-indicator": [ + "power-profile-indicator@laux.wtf", + "power-profile@fthx" + ] } diff --git a/pkgs/desktops/gnome/extensions/extensionRenames.nix b/pkgs/desktops/gnome/extensions/extensionRenames.nix index 6d43b575c793..b23252b67879 100644 --- a/pkgs/desktops/gnome/extensions/extensionRenames.nix +++ b/pkgs/desktops/gnome/extensions/extensionRenames.nix @@ -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"; + + "horizontal-workspace-indicator@tty2.io" = "workspace-indicator-2"; + "workspace-indicator@gnome-shell-extensions.gcampax.github.com" = "workspace-indicator"; - "PersianCalendar@oxygenws.com" = "persian-calendar"; "persian-calendar@iamrezamousavi.gmail.com" = "persian-calendar-2"; + "PersianCalendar@oxygenws.com" = "persian-calendar"; + + "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@atareao.es" = "panel-date-format-2"; + "panel-date-format@keiii.github.com" = "panel-date-format"; - "batime@martin.zurowietz.de" = "battery-time"; "batterytime@typeof.pw" = "battery-time-2"; + "batime@martin.zurowietz.de" = "battery-time"; + + # 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"; "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 - - # ####### GNOME 44 ####### - - "workspace-indicator@gnome-shell-extensions.gcampax.github.com" = "workspace-indicator"; - "horizontal-workspace-indicator@tty2.io" = "workspace-indicator-2"; - - "clipboard-indicator@tudmotu.com" = "clipboard-indicator"; - "clipboard-indicator@Dieg0Js.github.io" = "clipboard-indicator-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"; - - # ####### 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; - - "noannoyance@sindex.com" = "noannoyance"; - "noannoyance@daase.net" = "noannoyance-2"; - - "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 ####### - + # 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 diff --git a/pkgs/desktops/gnome/extensions/update-extensions.py b/pkgs/desktops/gnome/extensions/update-extensions.py index 35e0c47d6048..ef6687a06f73 100755 --- a/pkgs/desktops/gnome/extensions/update-extensions.py +++ b/pkgs/desktops/gnome/extensions/update-extensions.py @@ -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(