Gnome deskbar-appletは、Gnomeパネルのアプレットで、ファイルの検索、名前の最初の文字を入力してプログラムを実行することができます(Quicksilverまたはポピーのスポットライトを連想させる)
この記事では、このアプレット用のPythonアドオンを作成するのがどれほど簡単かを説明します。 Habréでシーカーを作成します。
habr-suggestions.pyファイルをどこかに作成し、お気に入りのエディターで開きます。
まず、「スケルトン」を作成しましょう。
gettextからgettextを_としてインポート
import deskbar.interfaces.Module
import deskbar.interfaces.Match
deskbar.handlers.actions.ShowUrlActionからimport ShowUrlAction
deskbar.core.Utilsからimport load_icon
ハンドラー= ["HabrSuggestHandler"]
クラスHabrSuggestHandler(deskbar.interfaces.Module):
INFOS = {'icon':load_icon( "habr.png")、
'名前':_( "Habrahabr.ru Suggest")、
'説明':_(「入力すると、Habrが提案を提供します。」)、
'バージョン': '1.0.0.0'}
def __init __(self):
deskbar.interfaces.Module .__ init __(self)
defクエリ(self、qstring):
合格する
- 必要なモジュールをインポートします
HANDLERS = ["HabrSuggestHandler"]
モジュールのどのクラスがメインでHANDLERS = ["HabrSuggestHandler"]
アプレットにHANDLERS = ["HabrSuggestHandler"]
ますINFOS = ...
アドオンの説明deskbar.interfaces.Module.__init__(self)
親コンストラクターを呼び出しますdef query(self, qstring):
検索に入るときに呼び出される関数、空の場合
どうぞ 検索自体は、
habrahabr.ru / search /?q =探しているページを介して実行されます。いわゆる「仮定」に機能を追加します。これは、Googleを通じて実装する提案です。
Googleの応答を
解析するには、
simplejsonモジュールが必要です。
gettextからgettextを_としてインポート
import deskbar.interfaces.Module
import deskbar.interfaces.Match
deskbar.handlers.actions.ShowUrlActionからimport ShowUrlAction
deskbar.core.Utilsからimport load_icon
urllibをインポートする
試してください:
インポートsimplejson
を除く:
合格する
ハンドラー= ["HabrSuggestHandler"]
GOOGLE_SUGGEST_URL = "http://suggestqueries.google.com/complete/search"
HABR_SEARCH_URL = "http://habrahabr.ru/search/"
クラスHabrSuggestAction(ShowUrlAction):
def __init __(自己、クエリ):
ShowUrlAction .__ init __(self、query、GOOGLE_SEARCH_URL + '?' + Urllib.urlencode({'q':query}))
def get_verb(self):
return _( "<i>%(name)s </ i>を<b> Habrahabr.ru </ b>で検索")
クラスGoogleSuggestMatch(deskbar.interfaces.Match):
def __init __(self、query、** args):
deskbar.interfaces.Match .__ init__(self、name = query、category = "web"、icon = "habr.png"、** args)
self._query = query
self.add_action(HabrSuggestAction(クエリ))
def get_hash(self、text = None):
self._queryを返します
クラスHabrSuggestHandler(deskbar.interfaces.Module):
INFOS = {'icon':load_icon( "habr.png")、
'名前':_( "Habrahabr.ru Suggest")、
「説明」:_(「入力すると、Habrが提案を提供します。」)
'バージョン': '1.0.0.0'}
def __init __(self):
deskbar.interfaces.Module .__ init __(self)
defクエリ(self、qstring):
args = {'output': 'firefox'、 'qu':qstring、 'as_sitesearch': 'http://habrahabr.ru'}
url = GOOGLE_SUGGEST_URL + '?' + urllib.urlencode(引数)
result = simplejson.load(urllib.urlopen(url))
結果が「エラー」でない場合:
一致= []
#結果は[[qstring "、["提案1 "、"提案2 "、]]のようになります
結果[1]の提案:
matches.append(GoogleSuggestMatch(提案))
self._emit_query_ready(qstring、一致)
@staticmethod
def has_requirements():
試してください:
インポートsimplejson
真を返す
を除く:
HabrSuggestHandler.INSTRUCTIONS = _(「Pythonモジュールsimplejsonは使用できません」)
偽を返す
アドオンは簡単にインストールできます。tar.bz2ファイルを.pyファイルと.pngファイルとともに、次のようにDeskbar-applet設定ウィンドウにドラッグアンドドロップするだけです。

それにチェックを入れると動作します:
追加で.tar.bz2をダウンロードします// Habrのpythonコードの場所を教えてください。