web-dev-qa-db-ja.com

notify-osdはi3wmから単一に戻った後にdunstに置き換えられました

私はマシンでi3wm(Sudo apt-get install i3を実行し、ログイン画面からi3を選択しました)をテストしていましたが、しばらくしてからUnityに切り替えることにしました。元に戻すと、Unityを使用していても、i3と同様に右上隅に通知が表示されることに気付きました。

代わりに、通常のUnity通知バブルを使用したいです。

調べてみると、notify-osdの代わりにdunstが使用されています。

Sudo vim /usr/share/dbus-1/services/org.freedesktop.Notifications.serviceを使用してファイルを編集しようとしましたが、予想どおり正しい行(つまりExec=/usr/lib/x86_64-linux-gnu/notify-osd)が含まれています。

unity-Tweak-tool --reset-unityも試しましたが、何もしませんでした。

通常の通知に戻ることは可能ですか?どんな助けも大歓迎です。ありがとう:)

編集:i3wm自体(およびdunst)を削除することで、通常の通知に戻ることができました。私が実際に求めているのは、システムでi3とdunstを維持しながら、通常の通知に変更することは可能ですか?

注:これは Notify-osd通知が左上隅にテーマなしで表示される の複製ではありません。そこでの解決策は、dunstを削除することです。i3を選択すると、dunstを保持して動作し、Unityを選択すると、notify-osdが動作します。

6
Jay Bosamiya

私はパーティーに2年遅れていることに気づきましたが、他の誰かがこの問題に遭遇した場合、Unityにログインするときにnotify-osdを使用し、i3を実行するときにわからないソリューションを紹介します。

ダンストをインストールしたままにするだけで、DBus経由で自動起動しない場合は、「クイックハック」セクションに進んでください。

I3のダンスト、Unityのnotify-osd

ステップ1

/usr/share/dbus-1/services/org.freedesktop.Notifications.service、さらに重要なことは/usr/share/dbus-1/services/org.knopwob.dunst.serviceの動作をオーバーライドしたいです。

Dbusはサービスファイルを検索するときに$ XDG_DATA_HOMEを参照し、何らかの理由でUbuntuがその環境変数を設定しないので、自分で行う必要があります。

echo 'export XDG_DATA_HOME=${XDG_DATA_HOME:="$HOME/.local/share"}' >> ~/.profile 

ステップ2

サービスファイルを作成する必要があります。

mkdir -p $HOME/.local/share/dbus-1/services
nano $HOME/.local/share/dbus-1/services/usernotify.service

ファイルを次のようにします。

[D-BUS Service]
Name=org.freedesktop.Notifications
Exec=/usr/bin/my_notifier

ステップ3

I-3が実行中の場合はdunstを呼び出すD-BUSファイルで参照されるスクリプトを作成し、それ以外の場合はnotify-osdを作成します。

Sudo nano /usr/bin/my_notifier

次のようにします。

#!/bin/bash
set -euo pipefail
if pgrep -x i3 >/dev/null; then
    /usr/bin/dunst
else
    /usr/lib/x86_64-linux-gnu/notify-osd
fi

実行可能にする:

Sudo chmod a+x /usr/bin/my_notifier

ステップ4

それであるはずです。ログアウトしてから再度ログインします。実行してUnityとi3の両方でテストします

notify-send foo bar

クイックハック

Notify-osdのみを使用する場合は、それに応じて/usr/share/dbus-1/services/org.knopwob.dunst.serviceを編集するだけで十分です。

[D-BUS Service]
Name=org.freedesktop.Notifications
#Exec=/usr/bin/dunst
Exec=/usr/lib/x86_64-linux-gnu/notify-osd
6
imolit
Sudo apt-get purge dunst

それはそれを削除する必要があります。

0
user467364