একটি বিদ্যমান বিজ্ঞপ্তিটি অবিলম্বে প্রতিস্থাপন করতে আমি কীভাবে 'বিজ্ঞপ্তি-প্রেরণ' ব্যবহার করব?


23

আমি যখন notify-sendডেস্কটপে কোনও বিজ্ঞপ্তি দেখানোর জন্য ব্যবহার করি এবং তারপরে অন্যটি বিজ্ঞপ্তি দেখানোর জন্য এটি আবার ব্যবহার করি, আমি লক্ষ্য করেছি যে দ্বিতীয়টি কেবল প্রথমটি অদৃশ্য হওয়ার পরে দেখায় ।

notify-sendবিদ্যমান নোটিফিকেশনটিকে তাত্ক্ষণিকভাবে আলাদা করে প্রতিস্থাপন করার কোনও উপায় আছে কি ?

উত্তর:


16

আপনি, কিন্তু আপনি একটি তালি ব্যবহার করা আবশ্যক করতে libnotify তা করার

notify-sendবিদ্যমান বিজ্ঞপ্তিগুলির সময়সীমা শেষ হওয়ার আগে (বা অদৃশ্য হয়ে যাওয়ার) আগে প্রতিস্থাপনের সক্ষমতা নেই। এটি একটি পরিচিত বাগ । তবে, বাগের রিপোর্টে একজন মন্তব্যকারী এটি ঠিক করার জন্য একটি প্যাচ পোস্ট করেছে

পিপিএ থেকে প্যাচড লাইবনেটফাই-বিন ইনস্টল করা

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

ইনস্টল করতে, একটি টার্মিনাল খুলুন এবং:

sudo apt-add-repository ppa: izx / Askubuntu
sudo অ্যাপ্লিকেশন - আপডেট
sudo apt-get libnotify-bin ইনস্টল করুন

প্রতিস্থাপন ক্ষমতা কীভাবে ব্যবহার করবেন

প্যাচযুক্ত notify-sendদুটি নতুন স্যুইচ, -p(বা - প্রিন্ট-আইডি ), এবং -r(বা --replace-id ) অন্তর্ভুক্ত। --helpতাদের বর্ণনা

  -p, - প্রিন্ট-আইডি প্রজ্ঞাপন আইডি মুদ্রণ করুন।
  -r, --replace-id = REPLACE_ID প্রতিস্থাপনের জন্য বিজ্ঞপ্তির আইডি।
  • এর সাথে -pপ্রত্যেকে notify-sendএকটি আইডি এন (নম্বর / পূর্ণসংখ্যা) ফেরত দেবে ।
  • notify-sendসাথে অন্য ইস্যু করা -r Nপূর্ববর্তী বিজ্ঞপ্তিটি অবিলম্বে প্রতিস্থাপন করবে ।
  • উদাহরণস্বরূপ, ব্যাশের জন্য, আপনি এর মাধ্যমে আইডিটি সংরক্ষণ করতে পারেন notify-send -p ...:

    NID=$(notify-send -p "MESSAGE-1")

    এবং তারপরে এটি প্রতিস্থাপন করুন:

    notify-send -r $NID "MESSAGE-2"
  • আপনি স্ক্রিপ্টে পুনরাবৃত্তভাবে -p এবং -r উভয়ই ব্যবহার করতে পারবেন , যতক্ষণ না -r ভেরিয়েবলটি শুরুতে 0-এ শুরু হয়।

  • এখানে একটি সাধারণ স্ক্রিপ্ট যা অর্ধ-সেকেন্ডের বিরতিতে 0 থেকে 100 অবধি বিজ্ঞপ্তিগুলি দেখায়:

    #! / বিন / বাশ 
    এনআইডি = 0
    আমার জন্য .1 0..100..10 in    করা       এনআইডি = $ (অবহিত-প্রেরণ -p -r $ এনআইডি $ i)       ঘুম 0.5    সম্পন্ন


1
আপনি আমার পাইথন স্ক্রিপ্টটি ব্যবহার করতে পারেন যা বিজ্ঞপ্তি-প্রেরণের মতো কাজ করে: github.com/phuhl/notify-send.py
user3637541

11

আপনি একটি "নিশ্চিতকরণ" বিজ্ঞপ্তি তৈরি করতে "সিঙ্ক্রোনাস" ইঙ্গিতটি ব্যবহার করতে পারেন যা পূর্ববর্তী নিশ্চিতকরণ বিজ্ঞপ্তিগুলিকে প্রতিস্থাপন করবে। উদাহরণ স্বরূপ:

notify-send "Message" -h string:x-canonical-private-synchronous:anything

এই ডকুমেন্টটিতে "এক্স-ক্যানোনিকাল-প্রাইভেট-সিঙ্ক্রোনাস" ইঙ্গিতটি নির্দিষ্ট করা হয়েছে । একটি ইঙ্গিত নির্দিষ্ট করতে, ব্যবহার করুন -h type:name:value। এখানে টাইপটি হল string, নাম x-canonical-private-synchronousএবং এটি মনে হয় মানটি আপনি যা চান তা হতে পারে।

সুতরাং যদি আপনার প্রথম বিজ্ঞপ্তিটি সেই ইঙ্গিত দিয়ে তৈরি করা হয় এবং দ্বিতীয়টি পাশাপাশি হয়, তবে দ্বিতীয়টি অবিলম্বে প্রথমটিকে প্রতিস্থাপন করবে। ( "নিশ্চিতকরণ বুদবুদ" জন্য কলামে ডকুমেন্টেশনে অ্যানিমেশন এবং সময়সীমা দেখুন See )


string:x-canonical-private-synchronous:anythingআমার যা দরকার ছিল ঠিক তাই ছিল এই উত্তরের জন্য ধন্যবাদ। এছাড়াও ডকুমেন্টেশনের সাথে লিঙ্ক করার জন্য
avk

এটি জিনোমের সাথে কাজ করে না ....
জোহানেস লেমনডে

1
এটি কিছুটা স্পষ্টতই উবুন্টুতে কাজ করে।
bschlueter

10

এক্স-রেফ:
পূর্বেরটির বাইরে বেরোনোর ​​অপেক্ষা না করে কীভাবে নোটিফাই-ওএসডি-তে একটি নতুন বিজ্ঞপ্তি জোর করবেন?

প্যাচগুলি ছাড়া আপনি কেবল পারেন

#!/bin/bash

for i in {0..100..10}
    do
          killall notify-osd
          notify-send "testing" $i
          sleep 1
    done

বুকমার্ক:
একটি বিদ্যমান বিজ্ঞপ্তিটি অবিলম্বে প্রতিস্থাপন করতে আমি কীভাবে 'বিজ্ঞপ্তি-প্রেরণ' ব্যবহার করব?


একটি ত্রুটি বিজ্ঞপ্তি-ওএসডি (2592) প্রেরণ করে: অপারেশন অনুমোদিত নয়। ওটার মানে কি?

এর অর্থ হতে পারে যে সুবিধাগুলি অপর্যাপ্ত প্রয়োজন:

sudo killall notify-osd

একটি ত্রুটি প্রেরণ করে notify-osd(2592): Operation not permitted। ওটার মানে কি?
বেদভালস

5

আমি একটি সাধারণ পাইথন স্ক্রিপ্ট তৈরি করেছি যা বিজ্ঞপ্তি-প্রেরণের প্রায় একই রকম কাজ করে তবে এর জন্য সমর্থন রয়েছে --replaces-id

notify-send.py

ওয়েব: https://github.com/phuhl/notify-send.py

শেল থেকে ডেস্কটপ বিজ্ঞপ্তি প্রেরণের জন্য একটি অজগর স্ক্রিপ্ট।

সম্পর্কিত

লিবনোটাইফাই লিনাক্স বিশ্বের অনেক স্ক্রিপ্টের অংশ is এটি ডেস্কটপ বিজ্ঞপ্তিগুলির নির্দিষ্টকরণের অনেকগুলি বৈশিষ্ট্য ব্যবহার করে এবং এগুলি শেল-স্ক্রিপ্টগুলিতে অ্যাক্সেসযোগ্য করে তোলে। এটি তবে বিদ্যমান নোটিফিকেশনটি প্রতিস্থাপনের অনুমতি দেয় নাreplaces-id । এটি ২০০৮ সাল থেকে একটি পরিচিত বাগ এবং এটি ২০১২ সাল থেকে প্যাচ রয়েছে। প্যাচটি এখনও (2018) প্রবাহিত নয়।

এই অজগর স্ক্রিপ্ট notify2 প্যাকেজটি ব্যবহার করে এবং শেলের কার্যকারিতাটি প্রকাশ করে।

Notify-send.py এবং বিজ্ঞপ্তি-প্রেরণের মধ্যে পার্থক্য

  • ইন notify-send.py -h শো পরিবর্তে নির্দেশ জন্য প্যারামিটার হচ্ছে সাহায্য। ইঙ্গিত ব্যবহারের জন্য --hint
  • ইন notify-send.py -r IDএবং notify-send.py --replaces-id ID বিদ্যমান। notify-send.py আইডি সহ একটি বিজ্ঞপ্তি কলটি প্রতিস্থাপনের জন্য বিজ্ঞপ্তি দ্বারা ফিরে এসেছিল replace
  • notify-send.py সদ্য নির্মিত বিজ্ঞপ্তির আইডি প্রদান করে।
  • notify-send.py --replaces-process NAMEবিদ্যমান। একই NAME এর সাথে তৈরি হওয়া প্রতিটি বিজ্ঞপ্তি তার আগে প্রতিটি নোটিফিকেশন একই NAME এর সাথে প্রতিস্থাপন করবে। যদি এই পরামিতিটির সাথে কল করা হয় তবে এটি notify-send.pyব্লক হয়ে যেতে পারে, সবচেয়ে ভাল কোনও অনুসরণের সাথে কল করা উচিত &

স্থাপন

পাইথন 3 প্রয়োজন।

git clone https://github.com/phuhl/notify-send.py
cd notify-send.py
sudo pip install notify2
sudo python setup.py install

ব্যবহার

$ notify-send.py -h
usage: notify-send.py [-h] [-u LEVEL] [-t TIME] [-a APP_NAME]
                  [-i ICON[,ICON...]] [-c TYPE[,TYPE...]]
                  [--hint TYPE:NAME:VALUE] [-r ID]
                  [--replaces-process NAME]
                  SUMMERY [BODY]

positional arguments:
      SUMMERY
      BODY

optional arguments:
      -h, --help        show this help message and exit
      -u LEVEL, --urgency LEVEL
                        Specifies the urgency level (low, normal, critical).
      -t TIME, --expire-time TIME
                        Specifies the timeout in milliseconds at which to
                        expire the notification.
      -a APP_NAME, --app-name APP_NAME
                        Specifies the app name for the icon
      -i ICON[,ICON...], --icon ICON[,ICON...]
                        Specifies an icon filename or stock icon to display.
      -c TYPE[,TYPE...], --category TYPE[,TYPE...]
                        Specifies the notification category.
      --hint TYPE:NAME:VALUE
                        Specifies basic extra data to pass. Valid typesare
                        int, double, string and byte.
      -r ID, --replaces-id ID
                        Specifies the id of the notification that should be
                        replaced.
     --replaces-process NAME
                        Specifies the name of a process that should take care
                        of replacing notifications for this process.

[.py] কে মূল ব্যবহারকারী হিসাবে অবহিত করুন

বিজ্ঞপ্তি প্রদর্শন করতে, এমনকি libnotify বা

notify-send.py

মূল ব্যবহারকারী থেকে ব্যবহৃত হয় এই দুটি স্ক্রিপ্ট সহায়ক।

#!/bin/bash
username=<your username here>
if [ "$(id -u)" != "1000" ] ; then
    sudo -u $username DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus notify-send.sh "$@"
else
    notify-send.sh "$@"
fi

এর notify-send.shমতো:

#!/bin/bash
notify-send.py "$@" &

আরো দেখুন

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


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