Ubuntu 17.10以降のファイル検索ツールのバグを何とかしてみた件(仮)

技術評論社のサイトに掲載されているUbuntu Weekly Recipeにて、以下の記事が公開された。

最近ちょろっとtrackerのことを調べていたのでシンクロニシティかな、などと思ったりしたのだが、それはともかく、Ubuntu 17.04までデフォルトとして採用されていたUnity 7のDashには、ローカルに保存されているファイルを検索する機能が備わっており、Ubuntu 17.10からデフォルトになるGNOME Shellにも似たような機能は備わっているものの、ファイル検索機能としてはUnity 7と方向性が異なるようで、少々残念に思っていた。

というのも、GNOME Shellのファイル検索は全文検索がメインらしく、入力した文字列を含むPDFファイルなどが検索結果に表示され、それはそれで便利なのだが、単純にファイル名だけで検索しても引っかからないので、私的には非常に惜しい機能だと言わざるを得なかった。

上記の記事には 原則としてはファイル名を検索します と書かれているが、.txtや.html、拡張子が無いプレーンテキスト、.jpgや.pngといった画像などは検索対象にならないようで、あれこれ弄っているうちにファイル検索用のツールが別に用意されていることに気づいた。

それが上記の記事中にもある デスクトップの検索 というツールで、コマンド名は tracker-needle、パッケージ名は tracker-gui となっている。これを使えばファイル名のみで検索できるし、作成したばかりのファイルでもすぐ検索結果に出てきて中々便利なのだが、使っているうちに頻繁に検索結果が表示されなくなるバグがあることが判明した。

エラーメッセージが出力されないので、仕方なく何度も検索してみて結果が表示されないタイミングを調べた所、

f:id:sicklylife:20170802204605p:plain

↑この画面が表示されると、その次の検索結果が表示されないことが分かった。ので、とりあえずパッチを作成してみた。パッチと言っても該当部分をコメントアウトしただけのものだけど。

下記のパッチを当ててtrackerをビルドし直してみた所、検索結果が表示されない現象は収まったように見える。後日、下記のパッチを当てた17.10用のtrackerをppaにアップロードする予定。

--- a/src/tracker-needle/tracker-view.vala
+++ b/src/tracker-needle/tracker-view.vala
@@ -103,21 +103,21 @@
 
 		switch (display) {
 		case Display.NO_RESULTS:
-			Label l;
-
-			l = new Label ("");
-			l.set_justify (Justification.CENTER);
-
-			string results = _("No Search Results");
-			string help_views = _("Select the view on the toolbar for the content you want, e.g. everything, files or just images");
-			string help_search = _("Start to search using the entry box above");
-			string markup = @"<big>$results</big>\n\n$help_views\n\n$help_search";
-			
-			l.set_use_markup (true);
-			l.set_markup (markup);
-
-			view = l;
-			break;
+//			Label l;
+//
+//			l = new Label ("");
+//			l.set_justify (Justification.CENTER);
+//
+//			string results = _("No Search Results");
+//			string help_views = _("Select the view on the toolbar for the content you want, e.g. everything, files or just images");
+//			string help_search = _("Start to search using the entry box above");
+//			string markup = @"<big>$results</big>\n\n$help_views\n\n$help_search";
+//			
+//			l.set_use_markup (true);
+//			l.set_markup (markup);
+//
+//			view = l;
+//			break;
 
 		case Display.CATEGORIES:
 		case Display.FILE_LIST: