Ubuntu用のUnityレンズを作成する簡単な方法(翻訳)

この記事では、UbuntuのUnity環境の新機能であるレンズに焦点を当てています。 Unityのレンズとは何ですか? 簡単に言えば、レンズとは、ユーザーがローカルおよびネットワークコンテンツを検索できるメインメニューの領域です。 この記事では、単純に作成する方法について説明します。 元のテキストはここからです

必要条件



したがって、レンズを作成するには、次のものが必要です。

* Ubuntu 12.04 LTS - Ubuntuを入手
* すばやく - すぐに 無料でインストール
* クイックレンズテンプレート- クイックレンズテンプレートの設定

レンズ作り



まず、ウィキペディアの記事を検索するレンズを作成しましょう。 レンズの作成は、プロジェクトの作成という簡単なステップから始まります。 これを行うには、Ctrl + Alt + Tを押し、表示されるターミナルウィンドウで次のコマンドを入力します。

quickly create unity-lens wikipedia cd wikipedia 

画像
さあ始めましょう!

 quickly edit 


このコマンドは、デフォルトのテキストエディターで3つのファイルを開きます。興味があるのは__init__.pyのみです

最初に必要なのは、メタクラスです。 レンズの説明が含まれています。 参照:
     class Meta:    name = 'Wikipedia'    description = 'Wikipedia Lens'    search_hint = 'Search Wikipedia'    icon = 'wikipedia.svg'    search_on_blank=True 

まず、単純なレンズを作成するため、すべてをここで変更しないでおくことができます。

レンズには、さまざまなタイプの結果を視覚的に分離するためのカテゴリが必要です。 ウィキペディアの場合、必要なカテゴリは1つだけです。これを「記事」と呼びます
Metaクラスの後に、次のコード行があります。
     example_category = ListViewCategory("Examples", 'help') 

必要に応じて変更します。
*まず、カテゴリ名をarticles_categoryに変更します
*次に、カテゴリ内の結果の異なる表示のために、ListViewとIconViewの選択があります。 選択:ListView
*また、カテゴリの表示名を指定する必要があります。 シンプル:記事
*最後に、カテゴリのアイコンを選択する必要があり、システムワークスペースからそれを取得します。つまり、dialog-information-symbolic
その結果、次の行が得られます。
     articles_category = ListViewCategory("Articles", "dialog-information-symbolic") 


レンズの内部アーキテクチャの準備が整いました。現在、検索の設計を開始しています。
標準テンプレートコードは、結果がどのようにレンズに収まるかを示しています。
     def search(self, search, results):    # TODO: Add your search results    results.append('https://wiki.ubuntu.com/Unity/Lenses/Singlet',    'ubuntu-logo',    self.example_category,    "text/html",    'Learn More',    'Find out how to write your Unity Lens',    'https://wiki.ubuntu.com/Unity/Lenses/Singlet')    pass 


...しかし、ウィキペディアに聞いてみたい...

ウィキペディア検索



検索用に設計された新しい関数を作成しましょう。 次のようにします。

関数wikipedia_queryを呼び出します。 ユーザーからの検索文字列を引数として受け取ります。 また、ニーズに合わせてさらに2つのPythonモジュールを使用します。HTTP要求をネットワークに送信するurllib2と、Wikipediaからのデータを処理するsimplejsonです。

ファイルの最初に、importコマンドを使用して必要なモジュールを接続します
     import urllib2    import simplejson 


次に、メインクラスのWikipediaLens(SingleScopeLens)クラスにwiki変数を追加します。これにより、コードが簡素化されます。
     wiki = "http://en.wikipedia.org" 

そして関数を作成する
     def wikipedia_query(self, search): 

searchは、ユーザーが検索ボックスに入力する文字列です。 ウィキペディアを送信する前に少し調整し、スペースを「|」に置き換える必要があります。そうしないと、Vikaはリクエストを理解できません。
     search = search.replace(" ", "|") 

Wikipedia APIを使用してリクエストを作成します。
     url = ("%s/w/api.php?action=opensearch&limit=25&format=json&search=%s" % (self.wiki, search)) 

そして、jsonにあるresults変数に結果を出力します。これには、simplejsonモジュールを使用します
     results = simplejson.loads(urllib2.urlopen(url).read()) 

デバッグ出力を追加して、実行内容を理解します。
     print "Searching Wikipedia for %s" % (search) 

そして、それに応じて結果を出力することにより、関数の作業を終了します
     return results[1] 


wikipedia_query関数はほぼ見た目が似ていますが、try(ネットワークエラー、結果など)を防ぐためにtryを追加する必要もあります。 これを行うために、情報メッセージと空の出力を作成します。
     def wikipedia_query(self,search):    try:    search = search.replace(" ", "|")    url = ("%s/w/api.php?action=opensearch&limit=25&format=json&search=%s" % (self.wiki, search))    results = simplejson.loads(urllib2.urlopen(url).read())    print "Searching Wikipedia"    return results[1]    except (IOError, KeyError, urllib2.URLError, urllib2.HTTPError, simplejson.JSONDecodeError):    print "Error : Unable to search Wikipedia"    return [] 


次に、新しく作成された関数を既存の検索に接続する必要があります
     def search(self, search, results):    for article in self.wikipedia_query(search):    results.append("%s/wiki/%s" % (self.wiki, article),    "http://upload.wikimedia.org/wikipedia/commons/6/63/Wikipedia-logo.png",    self.articles_category,    "text/html",    article,    "Wikipedia Article",    "%s/wiki/%s" % (self.wiki, article))    pass 


これは次のように機能します。検索クエリはwikipedia_queryに分類され、Wikipediaに送信され、JSONの応答はwikipedia_queryに返され、 検索に渡されてレンズに表示されます。 results.appendで何が起こっているかを理解するには、レンズの出力を確認することが非常に重要です。 テンプレートによってUnityに渡されます:
     results.append (url,    icon,    category,    mime-type,    text,    comment,    drag and drop url) 


これですべて完了です!

レンズ使用



今、最も待望の瞬間が来ました-私たちはレンズを使用し始めています!
ターミナルでコマンドを入力します。

 sudo quickly install quickly run 


レンズの取り付け



レンズのテストとデバッグが正常に完了したら、システムに永久的にインストールできます。 これを行うために、その内部構造について簡単に説明します。 レンズの操作には、少なくとも3つのファイルが必要です。レンズに関する基本情報を含む.lensファイル。 すべての作業を実行する実行可能ファイル(デーモン)と、レンズ名と実行可能ファイルへのパスを含む.serviceファイル。 それらをシステムにインストールするには、setup.pyファイルがプロジェクトフォルダーに作成されました
インストールには次のコマンドを使用しました。

 chmod 777 setup.py ./setup.py build sudo ./setup.py install 


画像

参照資料


* レンズの構造とその作成に関する詳細な記事を読む (rus。)
* Unityおよび関連テクノロジーの詳細
* Unityレンズの詳細をご覧ください
* Unity API
* ウィキペディアopensearch API
* このガイド用に作られたレンズ
* ダッシュ用のレンズの選択

Source: https://habr.com/ru/post/J155465/


All Articles