web-dev-qa-db-ja.com

コマンドラインを使用してカスタムサイズ、色、位置で通知バブルを作成する方法は?

Ubuntuの通知バブルで通知を行うためのコマンドラインメソッドはあるのでしょうか。または、このタスクに属するファイルはありますか?
次の特性が必要です。

  • 通知バブルに自分のメッセージが表示されます。
  • これらの通知は、デフォルトの位置だけでなく、画面上の特定の位置に表示されます。
  • 通知バブルのサイズは変更できます。
  • 色は変更できます。

更新

「カスタムデスクトップ通知を送信するにはどうすればよいですか?」 を読み、notify-sendが目的に役立つことを知っています。ただし、このコマンドにはいくつかの制限があります。 sizeとなるように、使用する他のコマンドまたは変更するファイルがあるかどうかを知りたい通知バブルのcolorおよびpositionは変更できますか?

2
Mohammad

歴史的に、「通知」の問題にはさまざまなアプローチがありました。 「通知」とは何のコンセンサスさえありません。何かが起こったことをユーザーに伝えるためだけに使用しますか?彼から何か行動を期待していますか?その場合、入力はどのように収集されますか?そのアクションを遅らせることはできますか、それともユーザーはすぐに行動する必要がありますか?どれくらい遅れることがありますか?ユーザーは、保留中のすべてのアクションをどのようにレビューすることになっていますか?これらすべての質問に対する回答は、さまざまなチームによって提案されたソリューションを形作ります。

一番下の行は、あなたの質問に対する単一の明確な答えはありません。しかし、特定のユースケースに合ったものを試して選択できるさまざまなアプローチがあります。

通知送信

ある時点で、Linuxでの通知の標準が登場しました。その背後にある原動力は、記憶が私に役立っているなら、GNOME 3チームでした。彼らは、すべてのアプリケーションがユーザーに通知する統一された方法を求め、デスクトップ環境の一部のコンポーネントがすべての通知の処理(キューイング、表示、入力の収集)を担当する必要があると考えました。アプリケーションは単にそのコンポーネントに通知を送信し、ユーザーがそれを受信することを望みます。

notify-sendコマンドラインアプリを使用して、そのような通知を作成できます。意図的なカスタマイズではカスタマイズできないことに注意してください。メッセージを渡すだけで、残りはデスクトップ環境に残します。この種の通知は、Unity(Ubuntu)、GNOME 3、KDE ​​SC/Plasmaでサポートされています。

osd_cat

osd_catは、Xサーバー層のファイルのコンテンツを表示するアプリケーションです。 -dスイッチを使用すると、しばらくしてから自動的に非表示にできるため、通知アプリとしてある程度適しています。

デフォルトのフォントは見苦しくなりますが、-fスイッチを使用して改善できます。 -f引数は、xfontselによって構築された文字列でなければなりません。

サンプル通知は次の方法で作成できます。

echo -e "sample\nnotification" |osd_cat -p middle -A center -d 1 -f '-*-helvetica-*-r-*-*-34-*-*-*-*-*-*-*' -O 1 -c '#fff'

notify-sendとは異なり、画面上の任意の場所に通知を配置し、それを少しカスタマイズできます(フォントと色を選択します。背景色はありません)。主な欠点は、X固有であるため、MirまたはWaylandでは機能しないことです。

zenity/kdialog

zenity(GTKデスクトップの場合-UnityおよびGNOME)およびkdialog(Qtデスクトップの場合-KDEおよびLxQt)により、ユーザーはコマンドラインから簡単なダイアログウィンドウを作成できます。内部にテキストを入れることができますが、いくつかの事前定義されたアイコン、ボタン、入力フォーム、リスト、ファイルピッカーまたはプログレスバーも入れることができます。少し手間をかけて、ユーザーに通知する方法として使用できます。

zenity--width=および--height=コマンドラインスイッチをサポートしますが、ウィンドウの配置を変更する方法を提供しません。個人的に、私は--title=を使用して、ウィンドウにカスタムタイトルとウィンドウマネージャールールを与えています。ウィンドウマネージャー(私の場合はKWin)は、文字列を含むタイトルなど、特定の条件に一致するすべてのウィンドウを選択し、プロパティを変更します。通知については、これらのウィンドウを画面の右下隅に配置し、ウィンドウのタイトルバーを削除し、すべての仮想デスクトップに表示させ、タスクバーから削除します。

カスタムソリューション

上記のプログラムのいずれも要件に合わない場合は、いつでもカスタムソリューションを作成できます。 pythonはGTKとQtの両方にバインディングを提供し、比較的苦痛なくカスタムGUIを作成できるようにします。世界にはすべてのカスタマイズオプションがありますが、開始するには初期作業が必要です。

5