システム トレイ アイコンは、今日でも魔法のような機能です。アイコンを右クリックして目的のアクションを選択するだけで、生活を大幅に簡素化し、日常の活動における不要なクリックを大幅に減らすことができます。 便利なシステム トレイ アイコンといえば、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 の高メモリ使用量のトラブルシューティング実戦記録
仕事のプロジェクトのニーズにより、曲の再生が必要となり、さまざまな資料を参考にして、NetEase ...
目次1. ワークフローを実行する2. ミラーリングの基本コマンド1. ワークフローを実行するDock...
MySQL レプリケーションの詳細な説明と簡単な例マスタースレーブレプリケーション技術は、MySQL...
1. はじめにまず、1 台のマシンで複数のインスタンスを使用する理由という質問に答える必要があります...
目次1. はじめに2. シンプルなepollの例2.1、epoll_create 2.2、構造体イベ...
1. ファイアウォール設定ファイルを変更する # vi /etc/sysconfig/iptable...
Iframe 使用状況の詳細な分析<iframe frameborder=0 width=17...
プロジェクトでは、現在地の緯度経度を取得したり、場所を検索して緯度経度情報を取得したりする必要があり...
DTD はマークアップの文法規則のセットです。これは XML 1.0 仕様の一部であり、HTML フ...
目次序文コンポーネントの作成要約する序文Vue3 には多くの注目すべき機能が追加されましたが、サスペ...
目次1. 脱構築とは何か? 2. 配列の分割3. 配列モードと代入モードの統一4. デフォルト値の構...
まずは栗を見てみましょう EXPLAIN select * from employees where...
Word of Mouth に入社して 3 ~ 4 か月が経ちました。仕事の中で一番の収穫は、ビジュ...
質問Alibaba Cloud イメージを使用して Docker をインストールすると、次の図に示す...
1. RPMバージョンのインストールデータベースの他のバージョンがあるかどうかを確認し、ある場合は完...