लिनक्स में बैश स्क्रिप्ट से जीयूआई संदेश बॉक्स कैसे दिखाएं?

मैं उबंटू लिनक्स के तहत कुछ छोटी बैश स्क्रिप्ट लिख रहा हूं। मैं किसी भी इनपुट में प्रवेश करने या किसी आउटपुट को देखने के लिए टर्मिनल विंडो की आवश्यकता के बिना जीयूआई से उन्हें चलाने में सक्षम होना चाहता हूं।

अब तक केवल एकमात्र इनपुट सूडो के लिए एक पासवर्ड है - और gksudo ठीक हैडल करता है। लेकिन मुझे अभी तक एक संदेश बॉक्स दिखाने का आसान तरीका नहीं मिला है। क्या कोई प्रकार का 'gkmessage' कमांड उपलब्ध है? मैं डिफ़ॉल्ट उबंटू इंस्टॉल में कुछ प्रस्तुत करना पसंद करूंगा, लेकिन यदि आवश्यक हो तो मुझे एक नया पैकेज इंस्टॉल करने में कोई फर्क नहीं पड़ता।

0
ro fr bn

11 उत्तर

यहां एक छोटी सी टीसीएल स्क्रिप्ट है जो आप चाहते हैं कि वह करेगी। इच्छा दुभाषिया को उबंटू पर डिफ़ॉल्ट रूप से स्थापित किया जाना चाहिए।

#!/usr/bin/wish
pack [label .msg -text [lindex $argv 0]]
pack [entry .ent]
bind .ent  { puts [.ent get]; destroy . }
focus .ent

इसे इस तरह बुलाओ:

myanswer=`gui-prompt "type your answer and press enter"`
0
जोड़ा

मुझे xmessage कमांड मिला, जो कि काफी अच्छा है।

0
जोड़ा
उन सभी का दादाजी है।
जोड़ा लेखक Ciro Santilli 包子露宪 六四事件 法轮功, स्रोत

मेरा मानना ​​है कि जेनिटी आप जो चाहते हैं वह करेंगे। यह विशेष रूप से कमांड लाइन से जीटीके संवाद प्रदर्शित करने के लिए डिज़ाइन किया गया है, और यह एक उबंटू पैकेज के रूप में उपलब्ध है।

0
जोड़ा
जैसे zenity --info --text = "गणना पूर्ण"
जोड़ा लेखक Craig McQueen, स्रोत
zenity --help इतना उपयोगी नहीं है। इसे उपयोगी बनाने के लिए, आपको यह सुनिश्चित करने की आवश्यकता है कि आप कुछ कोड प्रदर्शित करने के लिए - text = मेरा टेक्स्ट यहां सेट करें ...
जोड़ा लेखक Stephen, स्रोत
@Stephen, कुछ अजीब कारण के लिए सही आदेश zenity --help-all है।
जोड़ा लेखक GKFX, स्रोत
मैं अपने xorg सर्वर को शुरू करते समय अपने .xinitrc में चेतावनियां या त्रुटियों को प्रदर्शित करने के लिए इस विधि का उपयोग करता हूं। अन्यथा त्रुटियां पारदर्शी होंगी। मैं इस zenity को kdialog से भी अधिक पसंद करता हूं क्योंकि केडीई अभी तक शुरू नहीं हुआ है और जीटीके libs अधिक हल्के हैं।
जोड़ा लेखक cmevoli, स्रोत
मुझे उन कार्यक्रमों को पसंद नहीं है जिन्हें सहायता संदेश मुद्रित करने के लिए डिस्प्ले खोलने की आवश्यकता है ...
जोड़ा लेखक thoni56, स्रोत

Everyone mentions zenity, there seem to be many others. A mixed up but interesting list is at http://alternativeto.net/software/zenity/

सबसे पहले, टेक्स्ट स्वरूपण मार्कअप, विंडो शीर्षक, बटन लेबल वाली जेनिटी का एक उदाहरण।

zenity \
--info \
--text="Time is $(date +%Hh%M).\n\nGet your coffee." \
--title="Coffee time" \
--ok-label="Sip"

gxmessage

gxmessage "my text"

xmessage

xmessage is very old so it is stable and probably available in all distributions that use X (since it's distributed with X). It is customizable through X resources, for those that have been using Linux or Unix for long enough to know what it means (.Xdefaults, anyone ?).

xmessage -buttons Ok:0,"Not sure":1,Cancel:2 -default Ok -nearmouse "Is xmessage enough for the job ?" -timeout 10

kdialog

(टेस्ट नहीं हुआ)

एक पीपीए में

YAD: Zenity On Steroids [Display Graphical Dialogs From Shell Scripts] ~ Web Upd8: Ubuntu / Linux blog. Does not seem to auto-size dialogs.

echo My text | yad \
--text-info \
--width=400 \
--height=200

एक बड़ा उदाहरण

yad \
--title="Desktop entry editor" \
--text="Simple desktop entry editor" \
--form \
--field="Type:CB" \
--field="Name" \
--field="Generic name" \
--field="Comment" \
--field="Command:FL" \
--field="Icon" \
--field="In terminal:CHK" \
--field="Startup notify:CHK" "Application" "Name" "Generic name" "This is the comment" "/usr/bin/yad" "yad" FALSE TRUE \
--button="WebUpd8:2" \
--button="gtk-ok:0" \
--button="gtk-cancel:1"

अन्य उबंटू मानक भंडार में नहीं हैं

  • shellgui
  • xdialog
  • gtkdialog

ऑफ-विषय (टर्मिनल के लिए)

whiptail --msgbox "my text" 10 20
dialog --msgbox "my text" 10 20

संपादित करने के लिए स्वतंत्र महसूस करें।

0
जोड़ा
टिप के लिए @ThorSummoner धन्यवाद। इच्छुक पाठक के लिए, अंतर यह है कि whiptail --infobox (जो वैकल्पिक स्क्रीन का समर्थन करने वाले टर्मिनल पर ठीक से काम नहीं करता है) उपयोगकर्ता इनपुट की प्रतीक्षा किए बिना लौटाता है, जबकि whiptail --msgbox </कोड> (जो काम करता है) बाहर निकलने से पहले उपयोगकर्ता पुष्टि के लिए इंतजार कर रहा है।
जोड़ा लेखक Stéphane Gourichon, स्रोत
मुझे उस समय मेरे उद्देश्यों के लिए, संदेश के साथ असंतुष्ट होने की याद आती है, मुझे लगता है कि मुझे आउटपुट को लॉग में देखने योग्य या कुछ ऐसा देखने की आवश्यकता है;
जोड़ा लेखक ThorSummoner, स्रोत

उबंटू की अलर्ट के बारे में कैसे। इसे किसी भी ऑपरेशन के बाद इसे समाप्त करने के लिए इस्तेमाल किया जा सकता है और अगर ऑपरेटिंग त्रुटियों के साथ समाप्त हो गया तो लाल क्रॉस आइकन भी दिखाया जा सकता है

ls -la; alert
0
जोड़ा

संवाद और केडीई संस्करण kdialog भी है। संवाद का उपयोग स्लैकवेयर द्वारा किया जाता है, इसलिए यह अन्य वितरणों पर तुरंत उपलब्ध नहीं हो सकता है।

0
जोड़ा

Kdialog और संवाद दोनों अच्छे हैं, लेकिन मैं जेनिटी की सिफारिश करेंगे। त्वरित, आसान, और xmessage या संवाद को देखकर बहुत बेहतर।

0
जोड़ा

zenity एप्लिकेशन ऐसा प्रतीत होता है जो आप खोज रहे हैं।

zenity से इनपुट लेने के लिए, आप एक चर निर्दिष्ट कर सकते हैं और इसमें zenity --entry का आउटपुट सहेजा जा सकता है। ऐसा कुछ ऐसा दिखता है:

my_variable=$(zenity --entry)

यदि आप अब my_variable में मान देखते हैं, तो जो भी ज़ेनिटी पॉप अप एंट्री डायलॉग में टाइप किया गया होगा।

यदि आप किसी प्रकार के संकेत देना चाहते हैं कि उपयोगकर्ता (या आप) को संवाद में क्या दर्ज करना चाहिए, तो उस लेबल के साथ - text स्विच जोड़ें जो आप चाहते हैं। ऐसा कुछ ऐसा दिखता है:

my_variable=$(zenity --entry --text="What's my variable:")

जेनिटी के पास कई अन्य अच्छे विकल्प हैं जो विशिष्ट कार्यों के लिए हैं, इसलिए आप उन्हें zenity --help के साथ-साथ जांचना चाहेंगे। एक उदाहरण - कैलेंडर विकल्प है जो आपको ग्राफिकल कैलेंडर से दिनांक चुनने देता है।

my_date=$(zenity --calendar)

जो उपयोगकर्ता ने किस पर क्लिक किया है उसके आधार पर अच्छी तरह से स्वरूपित दिनांक देता है:

echo ${my_date}

देता है:

2009/08/05

स्लाइडर चयनकर्ताओं, त्रुटियों, सूचियों आदि के लिए विकल्प भी हैं।

उम्मीद है की यह मदद करेगा।

0
जोड़ा
मैं zentity देख सकता हूं अच्छा लगता है। हालांकि यह उबंटू 12.04 का हिस्सा नहीं है, इसलिए मैं इसके बजाय gxmessage के साथ गया।
जोड़ा लेखक Peter V. Mørch, स्रोत

यदि आप उबंटू का उपयोग कर रहे हैं तो कई सूचित करें-भेजें कमांड को शीर्ष दाएं कोने में उन अच्छी विनाशकारी सूचनाओं में से एक फेंक देगा। इस तरह:

सूचित करें- भेजें "मेरा नाम बैश है और मैं रॉक दा हाउस"

सुंदर!

0
जोड़ा
नोबंटू 17.10 में जीनोम-फ्लैशबैक के साथ काम नहीं करता है
जोड़ा लेखक Ondra Žižka, स्रोत
डेबियन रिपोज़ में: apt-cache खोज अधिसूचना-osd @carlverbiest
जोड़ा लेखक santa, स्रोत
यह फेडोरा के साथ भी काम करता है। मुझे पूरा यकीन है कि कोई भी लिनक्स डिस्ट्रो ऐसा कर सकता है।
जोड़ा लेखक kmatheny, स्रोत
डेबियन जेसी में libnotify-bin पैकेज में सूचित करें / भेजें बाइनरी शामिल है। Gnome3 को notify-osd की आवश्यकता नहीं दिखती है, लेकिन मुझे लगता है कि अन्य डेस्कटॉप वातावरणों के लिए libnotify-bin के अतिरिक्त आवश्यकता हो सकती है।
जोड़ा लेखक Jasen, स्रोत
जीनोम के साथ सेंट ओएस में काम करता है
जोड़ा लेखक Jerry T, स्रोत
यह डिफ़ॉल्ट रूप से स्लेकवेयर 14.2 पर भी उपलब्ध है
जोड़ा लेखक DaveGauer, स्रोत
धन्यवाद। यह वास्तव में b.e.a.utiful है!
जोड़ा लेखक James Selvakumar, स्रोत
रास्पियन जीएनयू / लिनक्स 7 पर काम नहीं करता है। क्या कोई पैकेज स्थापित करने की आवश्यकता है?
जोड़ा लेखक carl verbiest, स्रोत
कम से कम उबंटू 14.04 में, अगर कॉल अधिसूचित करें- समय-समय पर भेजें "जैसे सूचित करें- भेजें 0 'हाय वहाँ!' 'आपको एक पॉपअप संवाद मिलेगा जो समाप्त नहीं होता है।
जोड़ा लेखक vancan1ty, स्रोत
लेकिन अधिसूचना-प्रेषण किसी भी इनपुट को स्वीकार नहीं करता है
जोड़ा लेखक Xen2050, स्रोत

alert and notify-send seem to be the same thing. I use notify-send for non-input messages as it doesn't steal focus and I cannot find a way to stop zenity etc. from doing this.

जैसे

# This will display message and then disappear after a delay:
notify-send "job complete"

# This will display message and stay on-screen until clicked:
notify-send -u critical "job complete"
0
जोड़ा

अगर कुछ और मौजूद नहीं है। आप इसमें एक xterm लॉन्च कर सकते हैं और इस तरह गूंज सकते हैं:

 xterm -e bash -c 'echo "this is the message";echo;echo -n "press enter to continue "; stty sane -echo;answer=$( while ! head -c 1;do true ;done);'
0
जोड़ा