From b5fed71c86e5ea77add4f03809df8cafd7114c13 Mon Sep 17 00:00:00 2001 From: Ryan Horiguchi Date: Tue, 19 Jan 2021 21:52:34 +0100 Subject: [PATCH] gnomeExtensions.fuzzy-app-search: init at 4 --- .../extensions/fuzzy-app-search/default.nix | 29 +++++++++++ .../fix-desktop-file-paths.patch | 50 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 1 + 3 files changed, 80 insertions(+) create mode 100755 pkgs/desktops/gnome-3/extensions/fuzzy-app-search/default.nix create mode 100755 pkgs/desktops/gnome-3/extensions/fuzzy-app-search/fix-desktop-file-paths.patch diff --git a/pkgs/desktops/gnome-3/extensions/fuzzy-app-search/default.nix b/pkgs/desktops/gnome-3/extensions/fuzzy-app-search/default.nix new file mode 100755 index 00000000000..f8a8803435b --- /dev/null +++ b/pkgs/desktops/gnome-3/extensions/fuzzy-app-search/default.nix @@ -0,0 +1,29 @@ +{ lib, stdenv, fetchFromGitLab, gnome3, glib }: + +stdenv.mkDerivation rec { + pname = "gnome-shell-extension-fuzzy-app-search"; + version = "4"; + + src = fetchFromGitLab { + owner = "Czarlie"; + repo = "gnome-fuzzy-app-search"; + rev = "da9c15d39958d9c3b38df3b616fd40b85aed24e5"; + sha256 = "1r3qha530s97x818znn1wi76f4x9bhlgi7jlxfwjnrwys62cv5fn"; + }; + + uuid = "gnome-fuzzy-app-search@gnome-shell-extensions.Czarlie.gitlab.com"; + + nativeBuildInputs = [ glib ]; + + patches = [ ./fix-desktop-file-paths.patch ]; + + makeFlags = [ "INSTALL_PATH=$(out)/share/gnome-shell/extensions" ]; + + meta = with lib; { + description = "Fuzzy application search results for Gnome Search"; + license = licenses.gpl3Only; + maintainers = with maintainers; [ rhoriguchi ]; + homepage = "https://gitlab.com/Czarlie/gnome-fuzzy-app-search"; + broken = versionOlder gnome3.gnome-shell.version "3.18"; + }; +} diff --git a/pkgs/desktops/gnome-3/extensions/fuzzy-app-search/fix-desktop-file-paths.patch b/pkgs/desktops/gnome-3/extensions/fuzzy-app-search/fix-desktop-file-paths.patch new file mode 100755 index 00000000000..1795f998c9b --- /dev/null +++ b/pkgs/desktops/gnome-3/extensions/fuzzy-app-search/fix-desktop-file-paths.patch @@ -0,0 +1,50 @@ +diff --git a/applicationsUtils.js b/applicationsUtils.js +index 728223b..aa9f291 100644 +--- a/applicationsUtils.js ++++ b/applicationsUtils.js +@@ -44,27 +44,24 @@ var Search = new Lang.Class({ + * @return {Void} + */ + _init: function () { +- let dir = [ +- "/usr/share/applications", +- GLib.get_home_dir() + "/.local/share/applications", +- ]; +- +- // listen object - file/monitor list +- this._listen = dir.map((path) => { +- let file = Gio.File.new_for_path(path); +- let monitor = file.monitor(Gio.FileMonitorFlags.NONE, null); +- +- // refresh on each directory change +- monitor.connect( +- "changed", +- Lang.bind(this, this._handleMonitorChanged) +- ); +- +- return { +- file: file, +- monitor: monitor, +- }; +- }); ++ this._listen = [...new Set(GLib.get_system_data_dirs())] ++ .filter((path) => path.endsWith("/share")) ++ .map((path) => Gio.File.new_for_path(path + "/applications")) ++ .filter((file) => file.query_exists(null)) ++ .map((file) => { ++ let monitor = file.monitor(Gio.FileMonitorFlags.NONE, null); ++ ++ // refresh on each directory change ++ monitor.connect( ++ "changed", ++ Lang.bind(this, this._handleMonitorChanged) ++ ); ++ ++ return { ++ file: file, ++ monitor: monitor, ++ }; ++ }); + this._interval = null; + this._data = {}; + \ No newline at end of file diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 182c6f90454..9c5598a6d56 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -27267,6 +27267,7 @@ in easyScreenCast = callPackage ../desktops/gnome-3/extensions/EasyScreenCast { }; emoji-selector = callPackage ../desktops/gnome-3/extensions/emoji-selector { }; freon = callPackage ../desktops/gnome-3/extensions/freon { }; + fuzzy-app-search = callPackage ../desktops/gnome-3/extensions/fuzzy-app-search { }; gsconnect = callPackage ../desktops/gnome-3/extensions/gsconnect { }; icon-hider = callPackage ../desktops/gnome-3/extensions/icon-hider { }; impatience = callPackage ../desktops/gnome-3/extensions/impatience { };