বিজ্ঞপ্তি এবং বিজ্ঞপ্তি ডেমন উইন্ডো ম্যানেজারে কাজ করছে না


13

বিজ্ঞপ্তিগুলি লিনাক্সের স্বতন্ত্র উইন্ডো পরিচালকদের (ওপেনবক্স, দুর্দান্ত ডাব্লুএম এবং একইভাবে) কাজ করে না। আমি নোটিফিকেশন-ডিমন এবং ডানস্ট ইনস্টল করার চেষ্টা করেছি, তবে পাঠানো notify-send "something"কোনও উইন্ডো পপ-আপে পরিণত করে না।

আমি পোলকিট-জিনোম-এজেন্ট চালানোর এবং সরাসরি নোটিফিকেশন ডেমোন চালানোর চেষ্টা করেছি, তবে এটি কোনও লাভ করে না (যখন আগে আমি এইভাবে একইভাবে সমস্যার সমাধান করেছি, তবে এখন এটি কিছুই করেনি)।

অজগরটির সাথে তুচ্ছ বিজ্ঞপ্তি না পাঠালে ত্রুটির কোনও ইঙ্গিত পাওয়া যায় না, তবে আমি কেবল অস্পষ্ট ত্রুটি বার্তা পাই: 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 তুচ্ছ সি প্রোগ্রাম আউটপুট কিছুই না (উদাহরণস্বরূপ কোনও ত্রুটি নেই)।

আমি সিস্টেমড এবং ডি-বাসের সাহায্যে আর্চলিনাক্স ব্যবহার করছি, আমার সন্দেহ হয় যে এটি পোলকিট বা কোনও ধরণের ডিমন উইন্ডো ম্যানেজারের সূচনাতে চালিত হচ্ছে না, তবে আমি কী চেষ্টা করতে পারি বা কীভাবে আরও অর্থবহ ত্রুটি বার্তা পেতে পারি তাতে কোনও সমস্যা নেই।

সম্পাদনা: আমি সেখান থেকে নমুনা কোড নিয়েছি: https://wiki.archlinux.org/index.php/Libnotify# পাইথন

ডিবিবাস চলতে হবে কারণ সিস্টেমডে এটি নির্ভরতা হিসাবে রয়েছে। আমি libnotifyইনস্টল করেছি - এটি প্যাকেজ যা সরবরাহ করে notify-send। এছাড়াও ডেস্কটপ ফাইলটি অনুসরণ করে নোটিফিকেশন ডিমনটি প্রয়োজন অনুসারে শুরু করা উচিত (কেবলমাত্র বিজ্ঞপ্তিটি উপস্থিত হলে) /usr/share/dbus-1/services/org.freedesktop.Notifications.service:

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

এমনকি আমি সরাসরি ডেমন চালানোর চেষ্টা করেছি (কেবল চালানো) এবং বিজ্ঞপ্তি প্রেরণের চেষ্টা করেছি। যদি কেউ জানতে পারে যে কীভাবে আমি আমাকে আরও তথ্য পেতে পারি তবে দয়া করে পরামর্শ দিতে দ্বিধা করবেন না।

সম্পাদনা 2: আমি সূডো দিয়ে নোটিফিকেশন ডেমন চালানোর চেষ্টা করেছি: sudo notification-daemon_name &(আমার ক্ষেত্রে sudo dunst &) এবং sudo notify-send somethingতারপরে বিজ্ঞপ্তিটি কাজ করে। তবে যখন আমি পূর্ববর্তী কোনও পদক্ষেপটি অননুমোদিত ব্যবহারকারীর হিসাবে করার চেষ্টা করি (যা গুরুত্বপূর্ণ বেশিরভাগ প্রোগ্রাম অবাঞ্ছিত ব্যবহারকারী হিসাবে বিজ্ঞপ্তি পাঠায়) কিছুই দেখায় না।

notification-daemon কোনও ত্রুটি বা সতর্কতা ছাড়াই মোটেই কাজ করতে অস্বীকার করে।

সম্পাদনা 3: স্পষ্টতই এটি অনুমতিগুলির সমস্যা: আমি রুট অ্যাক্সেস ছাড়াই বিজ্ঞপ্তিগুলি পাঠাতে পারি না। পরিষ্কার পুনরায় বুট করার পরে: sudo notify-send "something"কোনও ডেমোন ম্যানুয়ালি চালু না করেও কাজ করে, তবে জিনোম বা অন্য কোনও সম্পূর্ণ ডেস্কটপ পরিবেশে এটি সম্ভব হওয়ায় রুট সুবিধাগুলি ছাড়াই বিজ্ঞপ্তি পাঠাতে আমার (এবং আমার চালু প্রোগ্রামগুলি) কী করা উচিত?


1
"নোটিফিকেশন-ডিমন ইনস্টল করার চেষ্টা করা" এর অর্থ কী? libnotifyএটি notify-sendকমান্ড সরবরাহ করে যা আপনি ইনস্টল করেছেন (যা আপনার প্রয়োজন সমস্ত)?
জেসনওয়ারিয়ান

এই প্রশ্নের সঠিকভাবে উত্তর দেওয়ার জন্য আপনি খুব অল্প তথ্য দিয়েছেন। আপনি যে একমাত্র ত্রুটি বার্তা দিয়েছেন তার ভিত্তিতে, আমি সন্দেহ করি যে ডিবিস চলছে না এবং সুতরাং এতে সংযোগের জন্য বিজ্ঞপ্তি-পাঠানোর কিছুই নেই। আপনি যদি আপনার "তুচ্ছ বিজ্ঞপ্তি" কোড এবং সঠিক ত্রুটিটি দিয়ে থাকেন তবে আমরা একটি উত্তরের নিকটে যেতে সক্ষম হতে পারি।
এমএসডাব্লু

আমি সেখান থেকে নমুনা কোডগুলি নিয়েছি: wiki.archlinux.org/index.php/Libnotify# পাইথন
আইবিআর

ডানস্টের সাথে আমার সাফল্য ছিল। আর কোনও "সংযোগ প্রত্যাখ্যান" বার্তা নেই।
sshow

উত্তর:


6

শেষ পর্যন্ত আমি নিজেই সমস্যার সমাধান করেছি।

আমি যা করলাম সে বিষয়ে আমি নির্দেশাবলী রেখে দেব।

সমস্যাটি দুটি অংশ নিয়ে গঠিত:

  1. উইন্ডোজ ম্যানেজারের মধ্যে থেকে ডিবিএস অ্যাক্সেস করা যায় না
  2. বিজ্ঞপ্তি ডিমন dbus থেকে বার্তা পেতে পারে না

1 ম সমস্যা সমাধান:

আসল সমস্যাটি হ'ল, আমার উইন্ডোজ ম্যানেজারটি এলএক্সডিএম থেকে চালিত হয়েছিল, যা কোনও কারণে /etc/X11/xinit/xinitrc.dএলএক্সডি অধিবেশন ব্যতীত কনফিগার ফাইলগুলিকে মার্জ করে না (এলএক্সডিডি ডিবিএস কাজ করে, ভয়ঙ্কর ডাব্লুএম না করে)। এই ফোল্ডারে 30-dbusনীচের বিষয়বস্তু সহ ফাইলটির নাম বিদ্যমান রয়েছে :

#!/bin/bash

# launches a session dbus instance
if [ -z "$DBUS_SESSION_BUS_ADDRESS" ] && type dbus-launch >/dev/null; then
  eval $(dbus-launch --sh-syntax --exit-with-session)
fi

কোডের এই অংশটি $DBUS_SESSION_BUS_ADDRESSভেরিয়েবলকে সংজ্ঞায়িত করে যা বিভিন্ন অ্যাপ্লিকেশনগুলির জন্য ব্যবহারের জন্য একটি ডিবিাস পোর্টকে সংজ্ঞায়িত করে। echo $DBUS_SESSION_BUS_ADDRESSডিবিাস সেশনটি বিদ্যমান কিনা তা দেখতে এটি সাধারণ স্যানিটি পরীক্ষা হিসাবে ব্যবহার করা যেতে পারে (এটি ডিবিএস সেশন ফাইলটি ফিরিয়ে আনবে)।

এই ফোল্ডারটি থেকে কনফিগার করা ফাইলগুলি সেশন শুরুর সময় সাধারণ শেল স্ক্রিপ্টের সাথে একত্রীকরণ করা যেতে পারে (কোড থেকে নেওয়া .xinitrc):

#!/bin/bash

if [ -d /etc/X11/xinit/xinitrc.d ]; then
  for f in /etc/X11/xinit/xinitrc.d/*; do
    [ -x "$f" ] && . "$f"
  done
  unset f
fi

২ য় সমস্যা সমাধান:

Dbus চলমান রয়েছে এবং অন্যান্য প্রোগ্রামে উপলভ্য থাকার সময়ও এটি সঠিকভাবে কাজ করার জন্য বিজ্ঞপ্তিগুলির জন্য আরও অ্যাক্সেসের প্রয়োজন, তাই আমার পোলকিট এজেন্ট চালানো দরকার, কারণ আশ্চর্যজনক ডাব্লুএম-এর একটি নেই। আমি বেছে নিয়েছিলাম lxpolkit, কারণ ইতিমধ্যে আমার প্রায় সম্পূর্ণ lxde পরিবেশ ছিল। আমার ক্ষেত্রে, কেবল আমার ~/.config/awesome/rc.luaফাইলে যুক্ত হয়েছে awful.util.spawn_with_shell("dex /etc/xdg/autostart/lxpolkit.desktop"):, কোনও কারণ ছাড়াই এই লাইনটি lxdm দিয়ে ডিফল্টরূপে শুরু করতে অস্বীকার করেছিল।

আমি মনে করি জিনোম পোলকিট এজেন্টেরও কাজ করা উচিত।


1
দ্রষ্টব্য: আপনার ডিসপ্লে ম্যানেজারটি এর সাথে কিছু করে না এবং করা উচিত নয় .xinitrc/ অন্য স্বাদটি কী বলা হয় তা আমি ভুলে যাই। এই ফাইলগুলির সমতুল্য (কোনটি ডিস্ট্রো অনুসারে ব্যবহৃত হয়) এবং আপনি যখন আবেদন করেন startxবা xinitকনসোল থেকে তখনই ব্যবহৃত হয় । সম্ভবত সিস্টেম ফাইলটি লোড হওয়ার কারণ হ'ল এটি এলএক্সডিইডি হয়, এলএক্সডিএম নয়।
strugee

বিবৃতির জন্য ধন্যবাদ. দেখে মনে হচ্ছে নিজেকে অ্যাডিশনাল কনফিগারেশন লোড করা দরকার।
আইবিআর

হ্যাঁ, আপনার কীভাবে এটি করা উচিত তা নির্ভর করে ডেস্কটপ পরিবেশ / ডাব্লুএমএম এর উপর।
strugee

সাধারণত আপনি যা করতে চান .xinitrcতা হ'ল যে কোনও ব্যাকগ্রাউন্ড ডেমনগুলি পরে সক্ষম করা হবে না (আপনি যদি gnome-sessionএটি ব্যবহার না করতেন তবে আপনি এটি করতেন ), তবে execডাব্লুএম / ডেস্কটপ পরিবেশ আপনি যেটুকু ব্যবহার করেন না কেন তার পরের শেষ লাইনে ।
strugee

0

এটি কোনও উত্তর নয়, পরবর্তী প্রশ্ন উত্পন্ন করতে সম্ভবত একটি বড় স্পষ্টতা।

অতিরিক্ত বিশদ যুক্ত করার জন্য ধন্যবাদ। আপনার সম্ভবত কোনও অনুমতি সংক্রান্ত সমস্যা আছে তবে দুর্ভাগ্যক্রমে এটি সম্ভবত ডিবিস ইউনিক্স ডোমেন সকেটে সংযোগের জন্য প্রয়োজনীয় অনুমতিগুলির মধ্যে রয়েছে।

এই রানটিকে অ-মূল হিসাবে নিশ্চিত করতে:

$ strace -o /tmp/ns.out notify-send "why will this not connect"
$ grep '^connect' /tmp/ns.out
connect(4, {sa_family=AF_FILE, path=@"/tmp/dbus-6AIOJVWzCC"}, 23) = 0

বাদে আপনি সম্ভবত কিছু পাবেন

connect(…) = -1 ECONNREFUSED  (Connection refused)

কেন? আমার কোন ধারণা নাই. আমি জানি যে বিজ্ঞপ্তি সাবসিস্টেমটি জেনোম বিকাশকারী সম্প্রদায়ের তুলনায় অনেক বেশি মনোযোগ পেয়েছে যেহেতু আমি এর আগেও এর মতো অতি সাধারণ বৈশিষ্ট্যটি মনে করি নি। আমি জিলিয়নে কিছু কনফিগারেশন ফাইল বা এটির জন্য জিটিকে কনফিগারেশন অবস্থানগুলিতে সন্দেহ করব তবে আমি জানি যে এটি খুব বেশি সহায়ক নয়।


প্রকৃতপক্ষে আমি পেয়েছি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)
আইবিআর

0

আমার জন্য এটি i3wm এ নোটিফাই-ওএসডি এবং ডানস্ট ইনস্টল করার কাজ করেছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.