diff options
Diffstat (limited to 'pkgs/desktops/gnome/extensions/fuzzy-app-search')
-rwxr-xr-x | pkgs/desktops/gnome/extensions/fuzzy-app-search/default.nix | 29 | ||||
-rwxr-xr-x | pkgs/desktops/gnome/extensions/fuzzy-app-search/fix-desktop-file-paths.patch | 50 |
2 files changed, 79 insertions, 0 deletions
diff --git a/pkgs/desktops/gnome/extensions/fuzzy-app-search/default.nix b/pkgs/desktops/gnome/extensions/fuzzy-app-search/default.nix new file mode 100755 index 0000000000000..302b21f2aefc5 --- /dev/null +++ b/pkgs/desktops/gnome/extensions/fuzzy-app-search/default.nix @@ -0,0 +1,29 @@ +{ lib, stdenv, fetchFromGitLab, gnome, 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 gnome.gnome-shell.version "3.18"; + }; +} diff --git a/pkgs/desktops/gnome/extensions/fuzzy-app-search/fix-desktop-file-paths.patch b/pkgs/desktops/gnome/extensions/fuzzy-app-search/fix-desktop-file-paths.patch new file mode 100755 index 0000000000000..1795f998c9bde --- /dev/null +++ b/pkgs/desktops/gnome/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 |