উত্তর:
ব্যবহার করার একটি উপায় আছে zenity
zenity --question --text "Are you sure?"
সাথে আপনি সেই কমান্ডের প্রস্থান অবস্থা পরীক্ষা করতে পারেন $?
পরিবর্তনশীল, ভালো কিছু: if [ $? -eq 1 ];then exit 1 ; fi
। 0
হয় OK
, 1
বাতিল হয়। আপনার যদি পরে পপআপের প্রস্থান স্থিতি পরীক্ষা করতে হয়, $?
পপআপটি কোনও ভেরিয়েবলের বাইরে বেরিয়ে যাওয়ার ঠিক পরে সঞ্চয় করতে পারে তবে এই নির্মাণটি ভালভাবে কাজ করবে । মন্তব্যগুলিতে আলোচিত হিসাবে, বেলোর মতো কাঠামোগুলিও কাজ করবে:
if zenity --question --text "Are you sure"
then
runSumeFunction
else
exit 1
fi
অথবা
zenity --question --text "Are you sure?" || echo "User isn't sure:/"
আপনি xmessage
স্ক্রিপ্ট নিজেই ব্যবহার করতে পারেন । "শেবাং" এর পরে এই জাতীয় কিছু রাখুন:
xmessage "Are you sure?"
এটি একটি গ্রাফিকাল বার্তা প্রদর্শন করবে "আপনি কি নিশ্চিত?" একটি "ঠিক আছে" বোতাম দিয়ে।
আপনি xmessage
একাধিক বোতাম থাকতে কনফিগার করতে পারেন এবং এতে যা লেখা আছে তা পরিবর্তন করতে পারেন। আপনি প্রতিটি বোতাম দ্বারা সম্পন্ন ক্রিয়াগুলিও কনফিগার করতে পারেন।
উদাহরণ স্বরূপ,
xmessage -buttons ok:0,cancel:1 "Are you sure?"
man xmessage
সমস্ত বিকল্পের জন্য দেখুন (সেগুলি প্রচুর রয়েছে)।
কীভাবে এটি করবেন তা বলার পরিবর্তে, আমি আপনাকে বলব যে আপনার এটি করা উচিত নয়।
TL; DR - আপনার স্ক্রিপ্ট পরিবর্তন করবেন না change পরিবর্তে আপনার ফাইল পরিচালককে কনফিগার করুন বা আপনার ব্যবহারকারীরা দুর্ঘটনাক্রমে কেন এটি চালান তা নির্ধারণ করুন।
সম্পাদনা: আপনি আপনার স্ক্রিপ্টটিকে কোনওরকম বিশেষ হিসাবে দেখছেন বলে মনে হচ্ছে, সাধারণ সেটিংস যদি যথেষ্ট পরিমাণে ভাল না থাকে এবং আপনার স্ক্রিপ্টটির ব্যবহারকারীর কাছ থেকে বিশেষ নিশ্চিতকরণ প্রয়োজন। এটা উপর ডবল ক্লিক করা হয় নিশ্চিতকরণ। যদি আপনি দেখতে পান যে আপনার ব্যবহারকারীরা এটি দুর্ঘটনাবশত চালাচ্ছেন তবে তারা কেন এটি করেন তা বুঝতে হবে এবং পরিবর্তে এটি সমাধান করতে হবে। তাহলে আপনার আসল সমস্যাটি কীভাবে নিশ্চিতকরণের প্রয়োজন তা নয় তবে কীভাবে আপনার ব্যবহারকারীদের এটি দুর্ঘটনাক্রমে চালানো থেকে রোধ করবেন to
আপনি যেভাবে আপনার সমস্যাটি প্রকাশ করেছেন তা থেকে মনে হয় যে আপনি ফাইলটি কোথায় রয়েছে সেদিকে ন্যাভিগেট করে এবং তারপরে ফাইল পরিচালক থেকে এটি ক্লিক করে আপনার প্রোগ্রাম (স্ক্রিপ্ট) চালিত হবে। আপনার সিস্টেমের অন্যান্য সমস্ত প্রোগ্রাম সম্পর্কে চিন্তা করুন। আপনি কত এটি শুরু করেন? /usr/local/bin
ফায়ার ফক্স শুরু করার সময় আপনি কি নেভিগেট করেন ? অবশ্যই আপনি না। আপনি অ্যাপ্লিকেশন মেনু থেকে এটি ক্লিক করুন। (জিনোম টুইক একটি অজগর স্ক্রিপ্ট এটি সম্ভবত একটি ভাল উদাহরণ)
আশা করি আপনি কোনও অ্যাপ্লিকেশন মেনু থেকে এটি ক্লিক করা বিবেচনা করবেন না। সুতরাং আপনার সমস্যা ফাইল ম্যানেজার ব্যবহারের পরিবর্তে কীভাবে আপনাকে সেখানে স্ক্রিপ্ট উপস্থিত করা যায় তা হয়ে যায়। এটি করার জন্য, আপনি নিম্নলিখিত জিনিসগুলি করুন:
আপনার স্ক্রিপ্টটি অন্য ফাইলগুলি থেকে দূরে রাখুন যেখানে ব্যবহারকারী দুর্ঘটনাক্রমে এটিতে ক্লিক করতে পারে (সাধারণ জায়গাটি /usr/local/bin/
সিস্টেম ওয়াইড ইনস্টলেশন বা ~/.local/bin/
ব্যবহারকারী ইনস্টলের জন্য)
একটি ডেস্কটপ এন্ট্রি ফাইল তৈরি করুন ( স্ট্যান্ডার্ড স্পেসিফিকেশন পড়ুন )। এখানে একটি ন্যূনতম কেস:
[Desktop Entry]
Name=Your script name
Exec=path/for/your/script
Icon=path/for/your/icon/can/be/svg
Terminal=false
Type=Application
এবং এটা ঠেলা /usr/local/share/applications/your-script.xml
বা ~/.local/share/your-script.xml
।
শেষ পর্যন্ত চালান update-desktop-database
।
যেহেতু আপনি স্ক্রিপ্টে ডাবল ক্লিক করছেন তাই এটি নিশ্চিত করা আপনার ফাইল ম্যানেজারের কাজ। এটি চালানো উচিত কিনা তা নিশ্চিত হওয়া স্ক্রিপ্টের কাজ নয়। এটিকে চরম দিকে নিয়ে যান। আপনি কল্পনা করতে পারেন যে এটি যে কতটা হাস্যকর হবে যে আপনি যখনই কোনও প্রোগ্রামকে কল করেছেন তখন এটির নিশ্চয়তা দিতে হয়েছিল?
কোনও প্রোগ্রামের যখন নিশ্চিতকরণের জন্য জিজ্ঞাসা করা উচিত কেবল তখনই যখন এটি বিপজ্জনক এবং অপরিবর্তনীয় কিছু করতে চলেছে। উদাহরণস্বরূপ, কোনও ফাইলকে ওভাররাইট করা বা ট্র্যাশটিকে বাইরে রেখে। এবং নোট করুন যে এমনকি এই উদাহরণগুলি একটি প্রোগ্রামকে সুনির্দিষ্ট কিছু করার বিষয়ে করে। তারা এই জাতীয় কর্মসূচি শুরু করার বিষয়ে নয়। যদি কোনও প্রোগ্রামের উদ্দেশ্য কেবল এই জাতীয় বিপজ্জনক কাজ করা হয়, তবে এটির নিশ্চয়তাও জিজ্ঞাসা করা উচিত নয়।
প্রকৃতপক্ষে, নটিলাস (জিনোম ফাইল ম্যানেজার) ইতিমধ্যে ডিফল্টরূপে আপনাকে কোনও স্ক্রিপ্ট কার্যকর করতে চান কিনা তা নিশ্চিত করতে জিজ্ঞাসা করবে (বা কেবল এটি কোনও পাঠ্য সম্পাদককে খুলতে হবে)।
এবং অবশ্যই, এই আচরণটি কনফিগারযোগ্য, ব্যবহারকারীকে এটি বন্ধ করার সম্ভাবনা দেয় ( এক্সিকিউটেবল টেক্সট ফাইলগুলিতে নোট এন্ট্রি )।
সুতরাং আপনার স্ক্রিপ্টে একটি বিরক্তিকর নিশ্চিতকরণ ডায়ালগ যুক্ত করবেন না। আপনার ফাইল পরিচালককে সঠিকভাবে কনফিগার করুন। এবং আপনার ব্যবহারকারীদেরও এটি করতে দিন।
আপনি ইয়াড ব্যবহার করতে পারেন যা স্টেরয়েডগুলিতে জেনিটির মতো কারণ এটি অনেক বেশি কনফিগারযোগ্য। আপনি এটি উবুন্টুর সফটওয়্যার সেন্টার থেকে ইনস্টল করতে পারেন। এর সর্বাধিক প্রাথমিক আকারে, আপনি টাইপ করতে পারেন
yad --title=Question --image=dialog-question --text="Are you sure?"
যদি ওকে চাপ দেওয়া হয় তবে আমরা 0 এর একটি রিটার্ন কোড পাই, বাতিল চাপলে আমরা 1 এর একটি রিটার্ন কোড পাই।
বক্সটিটিকে কেন্দ্রে রেখে তার প্রস্থকে সামঞ্জস্য করা আরও ভাল হবে, "আপনি কি নিশ্চিত?" পাঠ্যের অবস্থানের জন্য একটি শীর্ষস্থানীয় ট্যাব ব্যবহার করুন? আরও ডানদিকে এবং এটি সর্বদা শীর্ষে থাকে। এর জন্য আমাদের দরকার:
yad --center --on-top --title=Question --image=dialog-question --text="\tAre you sure?" --width 200
"আপনি কি নিশ্চিত?" এর আগে "\ t" ব্যতীত বেশিরভাগ স্যুইচগুলি স্ব-বর্ণনামূলক? যা টেক্সট মুদ্রণের আগে কেবল একটি ট্যাব স্পেস যুক্ত করে। এখন আমাদের এটি দেখতে হবে:
বাক্সটি কেন্দ্রীভূত থাকে, সর্বদা শীর্ষে থাকে এবং আরও ভাল দেখায়। কোন বোতামটি চাপছিল তার পরীক্ষার জন্য ভেরিয়েবল সেট করতে, ব্যবহার করুন:
yad --center --on-top --title=Question --image=dialog-question --text="\tAre you sure?" --width 200;result=$?;echo $result
এই উদাহরণে আমরা ভেরিয়েবল $ ফলাফলটি ব্যবহার করছি যা ঠিক আছে যদি 0 চাপায় বা বাতিল চাপলে 1 তে সেট করা হবে।
ইয়াডের সাহায্যের জন্য আপনি ব্যবহার করতে পারেন man yad
বা yad --help-all
আমি খুঁজে পেয়েছি ব্যবহারিক উদাহরণগুলি মানিয়ে নেওয়া সহজ। এখানে কিছু আছে । ইয়াদ অনেক বেশি কনফিগারযোগ্য এবং তাই আমার মতে জেনেনিটির চেয়ে বেশি ব্যবহারযোগ্য।
if zenity...
বাzenity... || exit