summary refs log tree commit diff
path: root/pkgs/desktops/gnome-3/extensions
diff options
context:
space:
mode:
authorRyan Horiguchi <ryan.horiguchi@gmail.com>2021-01-19 21:52:34 +0100
committerRyan Horiguchi <ryan.horiguchi@gmail.com>2021-01-22 22:55:51 +0100
commitb5fed71c86e5ea77add4f03809df8cafd7114c13 (patch)
tree08249fcb629ab356f50ec13035be86da42607261 /pkgs/desktops/gnome-3/extensions
parent57c198236a6c08f01286cfec6a5400383b561850 (diff)
downloadnixpkgs-b5fed71c86e5ea77add4f03809df8cafd7114c13.tar
nixpkgs-b5fed71c86e5ea77add4f03809df8cafd7114c13.tar.gz
nixpkgs-b5fed71c86e5ea77add4f03809df8cafd7114c13.tar.bz2
nixpkgs-b5fed71c86e5ea77add4f03809df8cafd7114c13.tar.lz
nixpkgs-b5fed71c86e5ea77add4f03809df8cafd7114c13.tar.xz
nixpkgs-b5fed71c86e5ea77add4f03809df8cafd7114c13.tar.zst
nixpkgs-b5fed71c86e5ea77add4f03809df8cafd7114c13.zip
gnomeExtensions.fuzzy-app-search: init at 4
Diffstat (limited to 'pkgs/desktops/gnome-3/extensions')
-rwxr-xr-xpkgs/desktops/gnome-3/extensions/fuzzy-app-search/default.nix29
-rwxr-xr-xpkgs/desktops/gnome-3/extensions/fuzzy-app-search/fix-desktop-file-paths.patch50
2 files changed, 79 insertions, 0 deletions
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