システム トレイ アイコンは、今日でも魔法のような機能です。アイコンを右クリックして目的のアクションを選択するだけで、生活を大幅に簡素化し、日常の活動における不要なクリックを大幅に減らすことができます。 便利なシステム トレイ アイコンといえば、Skype、Dropbox、VLC が思い浮かびます。 ただし、システム トレイ アイコンは実際にはさらに便利であり、ニーズに応じて独自のシステム トレイ アイコンを作成できます。このガイドでは、いくつかの簡単な手順でこれを行う方法を説明します。 前提条件 Python を使用してカスタム システム トレイ インジケーターを実装します。 Python はおそらくすべての主要な Linux ディストリビューションにデフォルトでインストールされているため、インストールされていることを確認するだけです (ここではバージョン 2.7 が使用されています)。さらに、gir1.2-appindicator3 パッケージもインストールする必要があります。このライブラリを使用すると、システム アイコン インジケーターを簡単に作成できます。 Ubuntu/Mint/Debian へのインストール: Fedora へのインストール: 他のディストリビューションの場合は、「appindicator」を含むパッケージを検索してください。 GNOME Shell 3.26 以降では、システム トレイ アイコンが削除されました。デスクトップでこの機能を有効にするには、この拡張機能 (または他の拡張機能) をインストールする必要があります。そうしないと、作成したインジケーターが表示されません。 基本コード インジケーターの基本コードは次のとおりです。 #!/usr/bin/python インポートOS gi.repository から Gtk を gtk として、AppIndicator3 を appindicator としてインポートします。 main() を定義します: インジケーター = appindicator.Indicator.new("customtray", "semi-starred-symbolic", appindicator.IndicatorCategory.APPLICATION_STATUS) indicator.set_status(アプリインジケーター.IndicatorStatus.ACTIVE) インジケーター.set_menu(メニュー()) gtk.main() メニュー()を定義します: メニュー = gtk.Menu() command_one = gtk.MenuItem('マイノート') command_one.connect('activate', メモ) メニュー.append(command_one) exittray = gtk.MenuItem('トレイを終了') exittray.connect('activate', quit) menu.append(終了トレイ) メニュー.すべて表示() 戻るメニュー defノート(_): os.system("gedit $HOME/Documents/notes.txt") def quit(_): gtk.main_quit() __name__ == "__main__" の場合: 主要() このコードがどのように機能するかについては後ほど説明します。しかし今のところは、このテキストをtray.pyとして保存し、Pythonを使用して実行してみましょう。 以下のようにインジケーターが実行されます。
さて、この魔法がどのように機能するかを説明しましょう。 コードの最初の 3 行は、Python パスを指定して必要なライブラリをインポートするだけです。 def main(): これはインジケーターのメイン関数です。この関数のコードは、インジケーターを初期化して作成するために使用されます。 インジケーター = appindicator.Indicator.new("customtray","semi-starred-symbolic", appindicator.IndicatorCategory.APPLICATION_STATUS) : ここでは、customtray という名前の新しいインジケーターを作成することを指定します。これは、システムが他の実行中のインジケーターと混同しないようにするためのインジケーターの一意の名前です。同時に、インジケーターのデフォルト アイコンとして、semi-starred-symbolic というアイコンを使用します。これを、firefox (インジケーターで FireFox アイコンを使用する場合) などの他の値や、任意の他のアイコン名に変更できます。 indicator.set_menu(menu()) : ここでは、menu() 関数 (後で定義します) を使用して、インジケーターのメニュー項目を作成することを示します。これは、インジケーターを右クリックして実行可能なアクションのリストを表示できるようにするために重要です。 gtk.main() : GTK メイン ループを実行します。 menu() では、インジケーターに提供させたい動作または項目を定義します。 command_one = gtk.MenuItem('My Notes') は、単に最初のメニュー項目を「My notes」というテキストで初期化し、次に command_one.connect('activate', note) はメニューのアクティブ化信号を後で定義される note() 関数に接続します。つまり、システムに「このメニュー項目がクリックされたら、note() 関数を実行する」と指示します。最後に、menu.append(command_one) はメニュー項目をリストに追加します。 menu.show_all() と return menu は、メニュー項目をインジケーターに返す通常のコードです。 メモ(_)の下には、「マイ メモ」メニュー項目がクリックされたときに実行されるコードがあります。ここでは 必要なタスクを追加する コード内の 2 か所を変更するだけです。 メニュー() では、クリックすると VLC を使用してハードドライブから特定のビデオ/オーディオ ファイルを再生する新しいメニュー項目を作成したいとします。これを行うには、17 行目に次の 3 行を追加するだけです。 command_two = gtk.MenuItem('ビデオ/オーディオを再生') command_two.connect('activate'、再生) メニュー.append(command_two) 次に、30 行目に次のコードを追加します。 デフプレイ(_): os.system("vlc /home/<ユーザー名>/Videos/somevideo.mp4") / 次のように表示されます: Linux でタスク用のカスタム システム トレイ インジケーターを作成する 新しく作成されたメニュー項目をクリックすると、VLC の再生が開始されます。 他のプロジェクト/タスクを作成するには、上記の手順を繰り返します。ただし、変数間で競合が発生しないように、command_two を command_three などの別のものに置き換える必要があることに注意してください。次に、play(_) 関数と同じように新しい関数を定義します。 可能性は無限です。たとえば、このメソッドを使用して Web からデータを取得し (urllib2 ライブラリを使用)、表示します。また、mpg123 コマンドを使用してバックグラウンドで mp3 ファイルを再生するためにも使用し、いつでもオーディオを停止できるように killall mpg123 という別のメニュー項目を定義しました。たとえば、Steam で CS:GO を終了するのに時間がかかります (ウィンドウが自動的に閉じません)。そのため、回避策として、ウィンドウを最小化して、 このインジケーターを使用すると、システム パッケージのアップグレード、他のスクリプトの実行など、文字通り何でも実行できます。 自動スタート システムの起動後にシステム トレイ インジケーターを毎回手動で実行しなくても自動的に起動できるようになることを期待しています。これを行うには、起動アプリケーションに次のコマンドを追加するだけです (ただし、tray.py へのパスを独自のものに置き換える必要があります)。 次回システムを再起動すると、システムの起動後にインジケーターが自動的に動作を開始します。 結論は これで、必要なタスク用の独自のシステム トレイ インジケーターを作成する方法がわかりました。毎日実行する必要があるタスクの性質と数に応じて、このアプローチによりかなりの時間を節約できます。コマンドラインからエイリアスを作成することを好む人もいますが、その場合、毎回ターミナル ウィンドウを開いたり、ドロップダウン ターミナル エミュレーターを使用できるようにする必要があります。一方、ここでは、このシステム トレイ インジケーターが常に機能し、使用可能です。 これまでにこの方法を使用してタスクを実行したことがありますか?あなたの考えを聞きたいです。 要約する 上記は、Linux でのタスク用のカスタム システム トレイ インジケーターの作成についてご紹介したものです。お役に立てれば幸いです。ご質問がある場合は、メッセージを残していただければ、すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。 以下もご興味があるかもしれません:
|
<<: MySQL 外部キー制約の一般的な操作の例 [表示、追加、変更、削除]
>>: NodeJs の高メモリ使用量のトラブルシューティング実戦記録
HTML 中心のフロントエンド開発は、ほぼ Web 標準の意味です。共通しているのは「分離」という考...
別のライブラリから別のライブラリにデータをインポートする必要がある場合があり、このデータは CSV ...
序文JS の this ポインターは、初心者にとって常に頭痛の種でした。今日は、これが地面に落ちたと...
この記事では、Docker で新しいイメージを手動で構築する方法を紹介し、皆さんと共有します。詳細は...
目次MySQL 制約操作1. 非ヌル制約2. ユニーク制約3. 主キー制約4. 外部キー制約5. カ...
グローバルオブジェクトすべてのモジュールは呼び出すことができますglobal: ブラウザの wind...
公式 MySQL Web サイトから Ubuntu Linux 用の最新バージョンの MySQL を...
これは純粋に CSS のみを使用して作成されたエフェクトです。簡単に言うと、このエフェクトは画像処理...
環境に関する声明ホストOS: Cetnos7.9 最小インストールdocker バージョン: 20....
目次序文オプション1:オプション2:オプション3:オプション4(最終的に採用されたオプション):要約...
デザインの分野では、毎年さまざまなデザインのトレンドや流行があります。たとえば、近年のレスポンシブデ...
<br />適度に画像を追加すると、Web ページがより美しくなります。 画像タグ &l...
この記事の例では、カルーセルカルーセルを実装するためのJSの具体的なコードを参考までに共有しています...
1. コマンドの紹介ln コマンドは、ファイルのリンクを作成するために使用されます。リンクは、ハード...
目次DockerでTomcatをインストールするtomcatイメージを使用してコンテナを作成する(イ...