Pemberitahuan tidak berfungsi pada manajer jendela mandiri Linux (Openbox, Awesome WM, dan yang serupa). Saya mencoba menginstal pemberitahuan-daemon dan dunst, tetapi mengirim dengan notify-send "something"
tidak membuat jendela apa pun untuk muncul.
Saya mencoba menjalankan polkit-gnome-agent dan langsung menjalankan daemon notifikasi, tetapi tidak membantu (sementara yang lalu saya memecahkan masalah yang sama dengan cara ini, tetapi sekarang tidak melakukan apa-apa).
Tidak ada indikasi kesalahan kecuali saya mengirim notifikasi sepele dengan python, maka saya hanya mendapatkan pesan kesalahan samar:
File "/usr/lib/python3.3/site-packages/gi/types.py", line 113, in function
return info.invoke(*args, **kwargs)
gi._glib.GError: Could not connect: Connection refused
Trivial C program tidak menghasilkan apa-apa (misalnya tidak ada kesalahan).
Saya menggunakan Archlinux dengan systemd dan d-bus, saya curiga ini masalah dengan polkit atau semacam daemon yang tidak berjalan di jendela manajer mulai, tetapi tidak tahu, apa yang bisa saya coba atau bagaimana saya bisa mendapatkan pesan kesalahan yang lebih bermakna.
EDIT: Saya mengambil kode sampel dari sana: https://wiki.archlinux.org/index.php/Libnotify#Python
Dbus harus dijalankan karena systemd memilikinya sebagai ketergantungan. Saya telah libnotify
menginstal - ini adalah paket yang menyediakan notify-send
. Daemon notifikasi juga harus dimulai sesuai kebutuhan (hanya ketika notifikasi arives), dengan mengikuti file desktop /usr/share/dbus-1/services/org.freedesktop.Notifications.service
:
[D-BUS Service]
Name=org.freedesktop.Notifications
Exec=/usr/bin/dunst
Saya bahkan telah mencoba menjalankan daemon secara langsung (hanya mengeksekusi) dan mencoba mengirim notifikasi. Jika seseorang tahu bagaimana saya bisa mendapatkan saya info lebih lanjut, jangan ragu untuk menyarankan.
EDIT 2: Saya mencoba menjalankan daemon notifikasi dengan sudo: sudo notification-daemon_name &
(dalam kasus saya sudo dunst &
) dan sudo notify-send something
, kemudian notifikasi berfungsi. Tetapi ketika saya mencoba melakukan tindakan sebelumnya sebagai pengguna tidakrivil (yang penting sebagian besar program mengirim pemberitahuan sebagai pengguna tidakrivil), tidak ada yang terlihat.
notification-daemon
menolak untuk bekerja sama sekali tanpa kesalahan atau peringatan.
EDIT 3: Jelas itu adalah masalah izin: Saya tidak dapat mengirim pemberitahuan tanpa akses root. Setelah reboot bersih: sudo notify-send "something"
berfungsi bahkan tanpa meluncurkan daemon secara manual, namun apa yang harus saya (dan program saya luncurkan) lakukan untuk dapat mengirim notifikasi tanpa hak root seperti yang dimungkinkan di Gnome atau lingkungan desktop penuh lainnya?
libnotify
karena ini memberikannotify-send
perintah (yang Anda butuhkan)?Jawaban:
Akhirnya saya memecahkan masalah sendiri.
Saya akan meninggalkan instruksi apa yang saya lakukan.
Masalahnya terdiri dari dua bagian:
Solusi masalah 1:
Masalah sebenarnya adalah, bahwa windows manager saya dijalankan dari lxdm, yang karena beberapa alasan tidak menggabungkan file config dari
/etc/X11/xinit/xinitrc.d
kecuali untuk sesi lxde (dalam LXDE dbus berfungsi, dalam wm yang mengagumkan tidak). Di folder ini ada file bernama30-dbus
dengan konten berikut:Bagian kode ini mendefinisikan
$DBUS_SESSION_BUS_ADDRESS
variabel yang menentukan port dbus untuk digunakan untuk berbagai aplikasi.echo $DBUS_SESSION_BUS_ADDRESS
dapat digunakan sebagai pemeriksaan kewarasan sederhana untuk melihat apakah ada sesi dbus (harus mengembalikan file sesi dbus).File konfigurasi dari folder ini dapat digabungkan dengan skrip shell sederhana pada awal sesi (kode diambil dari
.xinitrc
):Solusi masalah 2:
Saat dbus berjalan dan tersedia untuk program lain, masih memerlukan lebih banyak akses agar pemberitahuan berfungsi dengan baik, jadi saya perlu menjalankan agen polkit, karena Awesome WM tidak memilikinya. Saya telah memilih
lxpolkit
, karena saya sudah memiliki lingkungan yang hampir penuh. Dalam kasus saya, baru saja ditambahkan ke~/.config/awesome/rc.lua
file sayaawful.util.spawn_with_shell("dex /etc/xdg/autostart/lxpolkit.desktop")
:, karena alasan tertentu tanpa baris ini, ia menolak untuk memulai secara default dengan lxdm.Saya pikir agen polkit gnome harus bekerja dengan baik juga.
sumber
.xinitrc
/ saya lupa apa yang disebut rasa lainnya. file-file itu setara (yang digunakan bervariasi oleh distro) dan hanya digunakan ketika Anda memohonstartx
atauxinit
dari konsol. mungkin alasan mengapa file sistem dimuat adalah karena itu terjadi di LXDE, bukan LXDM..xinitrc
adalah memulai daemon latar belakang yang tidak akan diaktifkan nanti (Anda akan melakukan ini jika Anda tidak memiliki mis.gnome-session
melakukannya untuk Anda), kemudian pada baris terakhir,exec
apa pun lingkungan WM / desktop yang Anda gunakan .Ini bukan jawaban, hanya klarifikasi besar untuk mungkin membantu menghasilkan pertanyaan berikutnya.
Terima kasih telah menambahkan detail ekstra. Anda mungkin memiliki masalah izin, tetapi sayangnya kemungkinan dalam izin yang diperlukan untuk terhubung ke soket domain DBus Unix.
Untuk mengonfirmasi ini dijalankan sebagai non-root:
kecuali Anda mungkin akan mendapatkan sesuatu seperti
Mengapa? Saya tidak punya ide. Saya tahu bahwa subsistem notifikasi telah mendapat perhatian lebih besar dalam komunitas pengembangan GNOME daripada yang pernah saya pikirkan seharusnya fitur yang sangat dangkal. Saya menduga beberapa file konfigurasi di zillion atau lebih lokasi konfigurasi GTK, tapi saya tahu itu tidak terlalu membantu.
sumber
connect(4, {sa_family=AF_LOCAL, sun_path=@"/tmp/dbus-WC3XySChb5"}, 23) = -1 ECONNREFUSED (Connection refused)
connect(4, {sa_family=AF_LOCAL, sun_path=@"/tmp/dbus-b3oei13hP2"}, 23) = -1 ECONNREFUSED (Connection refused)
Bagi saya itu berhasil menginstal notify-osd dan dunst di i3wm.
sumber