「Dunst」の版間の差分
(Dunst を一時的に無効にするを翻訳して追加) |
細 (→通知の置き換え: 後者 => 前者) |
||
(5人の利用者による、間の12版が非表示) | |||
1行目: | 1行目: | ||
[[Category:X サーバー]] |
[[Category:X サーバー]] |
||
[[en:Dunst]] |
[[en:Dunst]] |
||
+ | [[pl:Dunst]] |
||
+ | [[ru:Dunst]] |
||
{{Related articles start}} |
{{Related articles start}} |
||
{{Related|デスクトップ通知}} |
{{Related|デスクトップ通知}} |
||
{{Related articles end}} |
{{Related articles end}} |
||
− | [ |
+ | [https://dunst-project.org/ Dunst] はデスクトップ環境に同梱されている通知デーモンを置き換える軽量な代替デーモンです。 |
== インストール == |
== インストール == |
||
− | {{Pkg|dunst}} パッケージを[[インストール]]してください |
+ | {{Pkg|dunst}} パッケージを[[インストール]]してください。 |
− | サンプル設定ファイルは {{ic|/ |
+ | サンプル設定ファイルは {{ic|/etc/dunst/dunstrc}} に存在します。 |
+ | ファイルを {{ic|~/.config/dunst/dunstrc}} にコピーして適宜編集してください。 |
||
+ | {{ic|/usr/bin/dunst}} を起動して、ウィンドウマネージャやデスクトップ環境がスタートアップ時やログイン時に起動できるようにしてください。 |
||
− | ファイルを {{ic|~/.config/dunst/dunstrc}} にコピーして適宜編集してください: |
||
+ | {{Note|プログラムが D-Bus を通じて通知を送った時に dbus-daemon によって dunst は自動で起動されるので、手動で起動する必要はないこともあります。しかし、環境によっては通知サービスが複数インストールされていることがあり、その場合どのデーモンが自動で起動されるか知るすべはありません。dbus-daemon のメンテナは明示的に、複数のプロバイダサービスについて自動起動について警告しておきます。}} |
||
− | $ cp /usr/share/dunst/dunstrc ~/.config/dunst/dunstrc |
||
− | == |
+ | == 外観 == |
+ | Dunst では HTML のマークアップを使って通知を表示できます。例えば太字・斜体・取り消し線・下線のサンプルが存在します。完全なリファレンスは [https://developer.gnome.org/pygtk/stable/pango-markup-language.html] を参照してください。{{ic|markup}} を {{ic|none}} に設定することで、通知から HTML を取り除くこともできます。 |
||
− | === 外観 === |
||
+ | 通知のフォーマットを指定できます。使用できるオプションは以下の通りです: |
||
− | Dunst では HTML を使って通知を表示できます。太字・斜体・取り消し線・下線のサンプルが存在します。詳しくは [https://developer.gnome.org/pango/stable/PangoMarkupFormat.html] を参照してください。{{ic|markup}} を {{ic|no}} に設定することで、通知から HTML を取り除くこともできます。 |
||
− | |||
− | また、通知のフォーマットを指定できます。使用できるオプションは以下の通り: |
||
%a アプリ名 |
%a アプリ名 |
||
%s 概要 |
%s 概要 |
||
32行目: | 33行目: | ||
上記のオプションは HTML と組み合わせて使うことができます。例えば {{ic|format}} を {{ic|<nowiki><b>%s</b>\n%b</nowiki>}} と設定することで、太字の概要に、改行の後に本文を表示します。 |
上記のオプションは HTML と組み合わせて使うことができます。例えば {{ic|format}} を {{ic|<nowiki><b>%s</b>\n%b</nowiki>}} と設定することで、太字の概要に、改行の後に本文を表示します。 |
||
− | ===アイコンセット=== |
+ | === アイコンセット === |
+ | |||
+ | アイコンはオプション {{ic|icon_path}} で設定されます。 ステータスとデバイス、レガシーアイコンが必要です。 デフォルトでは、 Dunst は {{Pkg|gnome-icon-theme}} アイコンを探します。たとえば、代わりに {{Pkg|adwaita-icon-theme}} (gnome-icon-theme の後継) を使用するには、次のようにします。 |
||
+ | |||
+ | icon_path = /usr/share/icons/Adwaita/16x16/status/:/usr/share/icons/Adwaita/16x16/devices/:/usr/share/icons/Adwaita/16x16/legacy/ |
||
+ | |||
+ | アイコンフォルダーへのパスを指定する代わりに、設定ファイルの {{ic|global}} セクションでアイコンテーマを直接指定することもできます。この場合、テーマのメインフォルダーのサブフォルダーでの検索を有効にするために、{{ic|1=enable_recursive_icon_lookup=true}} を設定する必要があります。 |
||
+ | 例: |
||
− | アイコンは {{ic|icon_folders}} オプションで設定できます。ステータスとデバイスアイコンは必須です。 |
||
+ | icon_theme = Papirus |
||
− | # Paths to default icons. |
||
+ | enable_recursive_icon_lookup = true |
||
− | icon_folders = /usr/share/icons/Arc/status/16/:/usr/share/icons/Arc/devices/16/ |
||
− | + | == ショートカット == |
|
− | Dunst は dunstctl で制御できます。 |
+ | Dunst は ''dunstctl'' で制御できます。[[キーボードショートカット]] を更新して、''dunstctl'' を呼び出すことができます。 |
例:すべての通知を閉じる |
例:すべての通知を閉じる |
||
59行目: | 66行目: | ||
新しいルールを作成するには、構成ファイルにカスタム名を使用して新しいセクションを作成します。 |
新しいルールを作成するには、構成ファイルにカスタム名を使用して新しいセクションを作成します。 |
||
そのセクションでは、属性 appname、 summary、 body、 icon、 category、 match_transient、および msg_urgency を使用して、 |
そのセクションでは、属性 appname、 summary、 body、 icon、 category、 match_transient、および msg_urgency を使用して、 |
||
+ | notification、 Globbing がサポートされています。例については、 [[#Scripting|Scripting]] を参照してください。 |
||
− | お知らせ。 |
||
− | グロブがサポートされています。例については、 [[#Scripting|Scripting]] を参照してください。 |
||
{{ic|-print}} オプションから始めて、適切なルールを作成するための通知に関する有用な情報を見つけてください。 |
{{ic|-print}} オプションから始めて、適切なルールを作成するための通知に関する有用な情報を見つけてください。 |
||
69行目: | 75行目: | ||
その場合は、 {{ic|1=format=""}} 行をルールに追加するだけです。 |
その場合は、 {{ic|1=format=""}} 行をルールに追加するだけです。 |
||
− | もう1つの便利な機能は、たとえば、 |
+ | もう1つの便利な機能は、たとえば、Dunst を使用している場合など、特定の通知を履歴から除外したい場合です。 |
[[#dunstifyを音量/明るさレベルインジケーターとして使用|音量インジケーター]] として。 |
[[#dunstifyを音量/明るさレベルインジケーターとして使用|音量インジケーター]] として。 |
||
これを実現するには、ルールに {{ic|1=history_ignore=yes}} を追加するだけです。 |
これを実現するには、ルールに {{ic|1=history_ignore=yes}} を追加するだけです。 |
||
87行目: | 93行目: | ||
== Dunst を一時的に無効にする == |
== Dunst を一時的に無効にする == |
||
− | Dunst を一時的に無効にするには、2つの |
+ | Dunst を一時的に無効にするには、2つの方法があります。 |
− | ;特別な通知を送信します |
||
− | :{{ic|notify-send "DUNST_COMMAND_PAUSE"}} を使用して無効にし、 {{ic|notify-send "DUNST_COMMAND_RESUME"}} を使用して再度有効にします。 {{ic|notify-send "DUNST_COMMAND_TOGGLE"}} を使用して、一時停止と再開を切り替えることもできます。 |
||
− | |||
− | ;{{ic|killall}} を使用する |
||
− | :{{ic|killall -SIGUSR1 dunst}} を使用して無効にし、 {{ic|killall -SIGUSR2 dunst}} を使用して再度有効にします |
||
;{{ic|dunstctl}} を使用します |
;{{ic|dunstctl}} を使用します |
||
:{{ic|dunstctl set-paused true/false/toggle}} を使用して、一時停止通知を無効化/再有効化または切り替えることができます。 そして、{{ic|dunstctl is-paused}} を使用して、 dunst が現在実行中か一時停止中かを確認します。 |
:{{ic|dunstctl set-paused true/false/toggle}} を使用して、一時停止通知を無効化/再有効化または切り替えることができます。 そして、{{ic|dunstctl is-paused}} を使用して、 dunst が現在実行中か一時停止中かを確認します。 |
||
+ | |||
+ | ;{{ic|killall}} を使用する |
||
+ | :{{ic|killall -SIGUSR1 dunst}} を使用して無効にし、 {{ic|killall -SIGUSR2 dunst}} を使用して再度有効にします |
||
一時停止すると、 Dunst はすべての通知を保留します。 |
一時停止すると、 Dunst はすべての通知を保留します。 |
||
102行目: | 106行目: | ||
== Dunstify == |
== Dunstify == |
||
− | Dunstify は、 [ |
+ | Dunstify は、 [[デスクトップ通知#プログラミングでの使い方|notify-send]] コマンドの代替手段です。 |
これは notify-send と完全に互換性があり、一緒に使用できますが、さらにいくつかの機能を提供します。 |
これは notify-send と完全に互換性があり、一緒に使用できますが、さらにいくつかの機能を提供します。 |
||
Dunstify は、 [[Dunst]] 通知デーモンでのみ機能します。 |
Dunstify は、 [[Dunst]] 通知デーモンでのみ機能します。 |
||
114行目: | 118行目: | ||
{{ic|1=dunstify -C ID}} を使用して通知を閉じることもできます。 |
{{ic|1=dunstify -C ID}} を使用して通知を閉じることもできます。 |
||
− | ただし、ほとんどのユースケースでは、IDのマイクロ管理よりもタグの実装が推奨されます。 |
+ | ただし、ほとんどのユースケースでは、IDのマイクロ管理よりもタグの実装が推奨されます。前者のオプションには、多くの隠れた落とし穴があるためです [https://github.com/dunst-project/dunst/issues/672] ID の置き換えは、一般的な方法ではなく、デバッグや非常に複雑な通知送信者に対して検討される場合があります [https://github.com/dunst-project/dunst/issues/672#issuecomment-554530659] |
同じタグ(この例では ''test'') を持つ通知は、 ID を気にすることなく置き換えられます。 |
同じタグ(この例では ''test'') を持つ通知は、 ID を気にすることなく置き換えられます。 |
||
127行目: | 131行目: | ||
dunstify --action="replyAction,reply" "メッセージを受信しました" |
dunstify --action="replyAction,reply" "メッセージを受信しました" |
||
− | その後、ユーザーは Dunst のコンテキストメニューから指定されたアクションにアクセスできます。 dunstify の呼び出しは、通知が消えるか、アクションが選択されるまでブロックされます。前者の場合、 dunstify は、通知がタイムアウトした場合は1を返し、手動で却下された場合は2を返します [https://developer.gnome.org/notification-spec/#signals] 後者の場合、Dunst のコンテキストメニューで選択されたアクションを返します。 |
+ | その後、ユーザーは Dunst のコンテキストメニューから指定されたアクションにアクセスできます。 dunstify の呼び出しは、通知が消えるか、アクションが選択されるまでブロックされます。前者の場合、 dunstify は、通知がタイムアウトした場合は1を返し、手動で却下された場合は2を返します [https://developer.gnome.org/notification-spec/#signals]。 後者の場合、Dunst のコンテキストメニューで選択されたアクションを返します。 |
コンテキストメニューを使用してアクションを呼び出すことに加えて、マウスイベントがアクションを呼び出す方法を定義することもできます [https://github.com/dunst-project/dunst/blob/3f3082efb3724dcd369de78dc94d41190d089acf/dunstrc#L237] これにより、 [https://github.com/dunst-project/dunst/issues/163#issuecomment-573191650] で提案されているように、Dunstをインタラクティブに使用できます。通知にアクションが1つしかない場合、またはアクションの名前が ''default'' の場合、そのアクションは、通知をミドルクリックすることで呼び出すことができます(デフォルト、または {{ic|dunstrc}} が {{ic|<nowiki>mouse_middle_click = do_action</nowiki>}})。 |
コンテキストメニューを使用してアクションを呼び出すことに加えて、マウスイベントがアクションを呼び出す方法を定義することもできます [https://github.com/dunst-project/dunst/blob/3f3082efb3724dcd369de78dc94d41190d089acf/dunstrc#L237] これにより、 [https://github.com/dunst-project/dunst/issues/163#issuecomment-573191650] で提案されているように、Dunstをインタラクティブに使用できます。通知にアクションが1つしかない場合、またはアクションの名前が ''default'' の場合、そのアクションは、通知をミドルクリックすることで呼び出すことができます(デフォルト、または {{ic|dunstrc}} が {{ic|<nowiki>mouse_middle_click = do_action</nowiki>}})。 |
||
178行目: | 182行目: | ||
# Show the volume notification |
# Show the volume notification |
||
dunstify -a "changeVolume" -u low -i audio-volume-high -r "$msgId" \ |
dunstify -a "changeVolume" -u low -i audio-volume-high -r "$msgId" \ |
||
− | "Volume: ${volume}% |
+ | -h int:value:"$volume" "Volume: ${volume}%" |
fi |
fi |
||
185行目: | 189行目: | ||
</nowiki>}} |
</nowiki>}} |
||
+ | {{ic|changeVolume 2dB+ unmute}} などをホットキーにバインドするだけで、完了です。また、 dunst に履歴内のこれらのタイプの通知を無視させることもできます。 [[#変更]] を参照してください。 |
||
− | {{ic|getProgressString}} は、文字列のようにプログレスバーを組み立てる関数である必要があります。このスクリプトは [https://github.com/Fabian-G/dotfiles/blob/master/scripts/bin/getProgressString] を使用します。 |
||
− | |||
− | {{ic|changeVolume 2dB+ unmute}} などをホットキーにバインドするだけで、完了です。また、 dunst に履歴内のこれらのタイプの通知を無視させることもできます。 [[#Modifying]] を参照してください。 |
||
=== 以前の通知を上書きする === |
=== 以前の通知を上書きする === |
||
− | 一部の通知(音や明るさなど)では、前の通知を上書きしたい場合があります。より一般的な例については、 [[# |
+ | 一部の通知(音や明るさなど)では、前の通知を上書きしたい場合があります。より一般的な例については、 [[#通知の置き換え]] で Dunst メソッドを使用するか、 [https://wiki.archlinux.org/index.php/Desktop_notifications#Replace_previous_notification Replacepreviousnotification] を参照してください。 |
== トラブルシューティング == |
== トラブルシューティング == |
||
201行目: | 203行目: | ||
これを修正するには、 {{ic|.xinitrc}} に以下を追加します。 |
これを修正するには、 {{ic|.xinitrc}} に以下を追加します。 |
||
systemctl --user import-environment DISPLAY |
systemctl --user import-environment DISPLAY |
||
+ | |||
+ | {{Tip|これは、最近の [[systemd]] の機能によって、{{ic|/etc/X11/xinit/xinitrc.d/50-systemd-user.sh}} の一段階で自動的に行われます。}} |
||
=== 一致しないフォントサイズ (テキストよりもはるかに大きい絵文字) === |
=== 一致しないフォントサイズ (テキストよりもはるかに大きい絵文字) === |
2023年9月25日 (月) 17:07時点における最新版
関連記事
Dunst はデスクトップ環境に同梱されている通知デーモンを置き換える軽量な代替デーモンです。
目次
インストール
サンプル設定ファイルは /etc/dunst/dunstrc
に存在します。
ファイルを ~/.config/dunst/dunstrc
にコピーして適宜編集してください。
/usr/bin/dunst
を起動して、ウィンドウマネージャやデスクトップ環境がスタートアップ時やログイン時に起動できるようにしてください。
外観
Dunst では HTML のマークアップを使って通知を表示できます。例えば太字・斜体・取り消し線・下線のサンプルが存在します。完全なリファレンスは [1] を参照してください。markup
を none
に設定することで、通知から HTML を取り除くこともできます。
通知のフォーマットを指定できます。使用できるオプションは以下の通りです:
%a アプリ名 %s 概要 %b 本文 %i アイコン名 (パスを含む) %I アイコン名 (パスは含まない) %p 進捗率 ([ 0%] から [100%])
上記のオプションは HTML と組み合わせて使うことができます。例えば format
を <b>%s</b>\n%b
と設定することで、太字の概要に、改行の後に本文を表示します。
アイコンセット
アイコンはオプション icon_path
で設定されます。 ステータスとデバイス、レガシーアイコンが必要です。 デフォルトでは、 Dunst は gnome-icon-theme アイコンを探します。たとえば、代わりに adwaita-icon-theme (gnome-icon-theme の後継) を使用するには、次のようにします。
icon_path = /usr/share/icons/Adwaita/16x16/status/:/usr/share/icons/Adwaita/16x16/devices/:/usr/share/icons/Adwaita/16x16/legacy/
アイコンフォルダーへのパスを指定する代わりに、設定ファイルの global
セクションでアイコンテーマを直接指定することもできます。この場合、テーマのメインフォルダーのサブフォルダーでの検索を有効にするために、enable_recursive_icon_lookup=true
を設定する必要があります。
例:
icon_theme = Papirus enable_recursive_icon_lookup = true
ショートカット
Dunst は dunstctl で制御できます。キーボードショートカット を更新して、dunstctl を呼び出すことができます。
例:すべての通知を閉じる
$ dunstctl close-all
例:履歴リストを表示する
$ dunstctl history-pop
ルール
特定の通知に一致するルールをdunstrcファイルに作成し、スクリプトの実行などのアクションを実行できます。
フィルタリング
新しいルールを作成するには、構成ファイルにカスタム名を使用して新しいセクションを作成します。
そのセクションでは、属性 appname、 summary、 body、 icon、 category、 match_transient、および msg_urgency を使用して、
notification、 Globbing がサポートされています。例については、 Scripting を参照してください。
-print
オプションから始めて、適切なルールを作成するための通知に関する有用な情報を見つけてください。
変更
通知が一致すると、フォーマット文字列の変更など、特定のアクションを実行できます。これは特に
特定の通知を完全に無視したい場合に便利です。
その場合は、 format=""
行をルールに追加するだけです。
もう1つの便利な機能は、たとえば、Dunst を使用している場合など、特定の通知を履歴から除外したい場合です。
音量インジケーター として。
これを実現するには、ルールに history_ignore=yes
を追加するだけです。
スクリプト
Dunst を設定することで特定の通知が表示されたときにスクリプトを実行することができます。以下は Pidgin から誰かがサインオンしたという通知がきたときにスクリプトを実行する例です:
[signed_on] appname = Pidgin summary = "*signed on*" urgency = low script = do_something.sh
指定されたスクリプトには、appname、 summary、 body、 icon、 urgency の順にパラメーターが渡されます。
Dunst を一時的に無効にする
Dunst を一時的に無効にするには、2つの方法があります。
dunstctl
を使用しますdunstctl set-paused true/false/toggle
を使用して、一時停止通知を無効化/再有効化または切り替えることができます。 そして、dunstctl is-paused
を使用して、 dunst が現在実行中か一時停止中かを確認します。
killall
を使用するkillall -SIGUSR1 dunst
を使用して無効にし、killall -SIGUSR2 dunst
を使用して再度有効にします
一時停止すると、 Dunst はすべての通知を保留します。 再び Dunst を有効にすると、すべての保留通知が表示されます。
Dunstify
Dunstify は、 notify-send コマンドの代替手段です。 これは notify-send と完全に互換性があり、一緒に使用できますが、さらにいくつかの機能を提供します。 Dunstify は、 Dunst 通知デーモンでのみ機能します。
通知送信で利用可能なオプションに加えて、dunstifyはIDやアクションなどのいくつかの機能を提供します。
通知の置き換え
-r ID
オプションを指定して dunstify を呼び出すことにより、通知に ID を割り当てることができます。ここで、ID
は整数である必要があります。
そのIDの通知がすでに存在する場合は、新しい通知に置き換えられます。
dunstify -C ID
を使用して通知を閉じることもできます。
ただし、ほとんどのユースケースでは、IDのマイクロ管理よりもタグの実装が推奨されます。前者のオプションには、多くの隠れた落とし穴があるためです [2] ID の置き換えは、一般的な方法ではなく、デバッグや非常に複雑な通知送信者に対して検討される場合があります [3]
同じタグ(この例では test) を持つ通知は、 ID を気にすることなく置き換えられます。
$ dunstify -h string:x-dunst-stack-tag:test Test -A 'tested,default' $ dunstify -h string:x-dunst-stack-tag:test Testing
アクション
1つ以上の --action=action,label
パラメータを指定することにより、通知から直接呼び出すことができるアクションを定義できます。
例えば:
dunstify --action="replyAction,reply" "メッセージを受信しました"
その後、ユーザーは Dunst のコンテキストメニューから指定されたアクションにアクセスできます。 dunstify の呼び出しは、通知が消えるか、アクションが選択されるまでブロックされます。前者の場合、 dunstify は、通知がタイムアウトした場合は1を返し、手動で却下された場合は2を返します [4]。 後者の場合、Dunst のコンテキストメニューで選択されたアクションを返します。
コンテキストメニューを使用してアクションを呼び出すことに加えて、マウスイベントがアクションを呼び出す方法を定義することもできます [5] これにより、 [6] で提案されているように、Dunstをインタラクティブに使用できます。通知にアクションが1つしかない場合、またはアクションの名前が default の場合、そのアクションは、通知をミドルクリックすることで呼び出すことができます(デフォルト、または dunstrc
が mouse_middle_click = do_action
)。
reply_action () {} forward_action () {} handle_dismiss () {} ACTION=$(dunstify --action="default,Reply" --action="forwardAction,Forward" "メッセージを受信しました") case "$ACTION" in "default") reply_action ;; "forwardAction") forward_action ;; "2") handle_dismiss ;; esac
ヒントとテクニック
ボリューム/明るさレベルのインジケーターとして dunstify を使用
ID の置換機能を使用して、この画像 [7] のような単純な音量または明るさインジケーターの通知を実装できます。
ボリュームインジケーターを実現するには、次のスクリプトを PATH
のどこかに配置します。
#!/bin/bash # changeVolume # Arbitrary but unique message id msgId="991049" # Change the volume using alsa(might differ if you use pulseaudio) amixer -c 0 set Master "$@" > /dev/null # Query amixer for the current volume and whether or not the speaker is muted volume="$(amixer -c 0 get Master | tail -1 | awk '{print $4}' | sed 's/[^0-9]*//g')" mute="$(amixer -c 0 get Master | tail -1 | awk '{print $6}' | sed 's/[^a-z]*//g')" if [[ $volume == 0 || "$mute" == "off" ]]; then # Show the sound muted notification dunstify -a "changeVolume" -u low -i audio-volume-muted -r "$msgId" "Volume muted" else # Show the volume notification dunstify -a "changeVolume" -u low -i audio-volume-high -r "$msgId" \ -h int:value:"$volume" "Volume: ${volume}%" fi # Play the volume changed sound canberra-gtk-play -i audio-volume-change -d "changeVolume"
changeVolume 2dB+ unmute
などをホットキーにバインドするだけで、完了です。また、 dunst に履歴内のこれらのタイプの通知を無視させることもできます。 #変更 を参照してください。
以前の通知を上書きする
一部の通知(音や明るさなど)では、前の通知を上書きしたい場合があります。より一般的な例については、 #通知の置き換え で Dunst メソッドを使用するか、 Replacepreviousnotification を参照してください。
トラブルシューティング
Dunst は systemd 経由で開始できません
ディスプレイマネージャなしで dunst を使用すると、 DISPLAY
環境変数が正しく設定されない場合があります。 [8]
これを修正するには、 .xinitrc
に以下を追加します。
systemctl --user import-environment DISPLAY
一致しないフォントサイズ (テキストよりもはるかに大きい絵文字)
これは、fontconfig がビットマップフォントを再スケーリングしないことが原因です。 これは通常、特定の絵文字フォントでのみ認識されます (例:noto-fonts-emoji)
解決するには、次のコマンドを実行します。
# ln -s /etc/fonts/conf.avail/10-scale-bitmap-fonts.conf /etc/fonts/conf.d/
Dunst を再起動します。