Linux में bash script से GUI मेसेज बॉक्स कैसे दिखायें?


151

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

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


जवाबों:


143

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


4
zenity --helpइतना मददगार नहीं है। इसे उपयोगी बनाने के लिए, आपको यह सुनिश्चित करने की आवश्यकता है कि आप --text=My text hereइसे कुछ प्रदर्शित करने के लिए सेट करें ...
स्टीफन

10
जैसेzenity --info --text="Calculation complete"
क्रेग मैकक्यून

3
@Stephen, किसी विषम कारण के लिए सही कमांड है zenity --help-all
GKFX

3
मुझे उन कार्यक्रमों को पसंद नहीं है जो मदद संदेश को प्रिंट करने के लिए डिस्प्ले को खोलने की आवश्यकता है ...
thoni56

मैं .xinitrcअपने xorgसर्वर को शुरू करने के दौरान चेतावनी या त्रुटियों को प्रदर्शित करने के लिए इस पद्धति का उपयोग करता हूं । अन्यथा त्रुटियां पारदर्शी होंगी। मैं भी इस पसंद zenityसे अधिक kdialogके बाद से केडीई अभी तक शुरू नहीं किया और जीटीके libs अधिक हल्के हैं।
cmevoli

152

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

notify-send "My name is bash and I rock da house"

सुंदर!


2
यह फेडोरा के साथ भी काम करता है। मुझे पूरा यकीन है कि कोई भी लिनक्स डिस्ट्रो ऐसा कर सकता है।
किमीथैनी

4
रास्पियन जीएनयू / लिनक्स 7. पर काम नहीं करता है। क्या कोई पैकेज है जिसे स्थापित करने की आवश्यकता है?
कार्ल वर्बेस्ट

1
डेबियन रिपोज में: apt-cache search Inform-osd @carlverbiest
santa

2
उबंटू में 14.04 कम से कम, अगर कॉल-नोटिफ़िकेशन-टाइम-टू के साथ कॉल करें जैसे कि "सूचित-भेजें -t 0 'हाय वहाँ!" "आपको एक पॉपअप संवाद मिलेगा जो समाप्त नहीं होता है।
vancan1ty

डेबियन जेसी में libnotify-binपैकेज में notify-sendबाइनरी है। Gnome3 की आवश्यकता प्रतीत नहीं होती है, notify-osdलेकिन मुझे लगता है कि अन्य डेस्कटॉप वातावरणों की आवश्यकता हो सकती हैlibnotify-bin
जसेंन

78

सभी में ज़ेहनियत का उल्लेख है, कई अन्य प्रतीत होते हैं। एक मिश्रित लेकिन दिलचस्प सूची http://alternativeto.net/software/zenity/ पर है

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

zenity \
--info \
--text="<span size=\"xx-large\">Time is $(date +%Hh%M).</span>\n\nGet your <b>coffee</b>." \
--title="Coffee time" \
--ok-label="Sip"

gxmessage

gxmessage "my text"

xmessage

xmessageबहुत पुराना है इसलिए यह स्थिर है और शायद सभी वितरणों में उपलब्ध है जो एक्स का उपयोग करता है (क्योंकि यह एक्स के साथ वितरित किया गया है)। यह एक्स संसाधनों के माध्यम से अनुकूलन योग्य है, उन लोगों के लिए जो लंबे समय से लिनक्स या यूनिक्स का उपयोग कर रहे हैं यह जानने के लिए कि इसका क्या मतलब है ( .Xdefaults, किसी को?)।

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

kdialog

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

एक पीपीए में

YAD: स्टेरॉयड पर ज़ेनिटी [शेल लिपियों से प्रदर्शन ग्राफिकल संवाद] ~ वेब अपडेट 8: उबंटू / लिनक्स ब्लॉग । ऑटो-आकार के संवाद प्रतीत नहीं होते।

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

बेझिझक संपादित करें।



@ThorSummoner टिप के लिए धन्यवाद। इच्छुक पाठक के लिए, यह अंतर है whiptail --infobox(जो वैकल्पिक स्क्रीन का समर्थन करने वाले टर्मिनलों पर ठीक से काम नहीं करता है) उपयोगकर्ता इनपुट की प्रतीक्षा किए बिना वापस लौटता है, जबकि whiptail --msgbox(जो काम करता है) बाहर निकलने से पहले उपयोगकर्ता की पुष्टि का इंतजार करता है।
स्टीफन गौरिचोन

मुझे याद है कि मेसबॉक्स से असंतुष्ट होने के कारण, उस समय मेरे उद्देश्यों के लिए, मुझे लगता है कि मुझे लॉग में देखने योग्य वस्तु की आवश्यकता थी या ऐसा कुछ;
थोरसुमोनर

बहुत सारे विकल्प! बहुत अच्छे उदाहरण
आर्टू-एचएनआरके

49

Zenity आवेदन प्रकट होता है आप के लिए क्या देख रहे हो।

ज़ेनिटी से इनपुट लेने के लिए , आप एक वैरिएबल निर्दिष्ट कर सकते हैं और इसमें ज़ेनिटी - पेंट्री का आउटपुट सेव किया जा सकता है। यह कुछ इस तरह दिखता है:

my_variable=$(zenity --entry)

यदि आप अभी my_variable में मूल्य देखते हैं, तो यह वही होगा जो कि zenity पॉप अप प्रविष्टि संवाद में टाइप किया गया था।

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

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

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

my_date=$(zenity --calendar)

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

echo ${my_date}

देता है:

2009/08/05

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

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


मैं zentityअच्छा लग रहा है देख सकते हैं । हालाँकि यह उबंटू 12.04 का हिस्सा नहीं है, इसलिए मैं gxmessageइसके बजाय गया।
पीटर वी। मॉरच


8

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

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

इसे इस तरह से कॉल करें:

myanswer=`gui-prompt "type your answer and press enter"`

7

alertऔर notify-sendएक ही बात लगती है। मैं notify-sendगैर-इनपुट संदेशों के लिए उपयोग करता हूं क्योंकि यह ध्यान नहीं चुराता है और मुझे ऐसा करने से ज़ेनिटी आदि को रोकने का कोई तरीका नहीं मिल सकता है।

जैसे

# 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"

6

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


6

अगर कुछ और मौजूद नहीं है। आप इसमें एक 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);'

3

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

ls -la; alert

3

ज़ेनिटी वास्तव में सटीक उपकरण है जो मुझे लगता है कि आप ढूंढ रहे हैं।

या

zenity --help

0

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


0

Gambas GTK / QT Controls (GUI ऑब्जेक्ट) का उपयोग करने के लिए उदाहरण bash स्क्रिप्ट: Gambas IDE का उपयोग बड़े GUI को डिजाइन करने और GUI सर्वर के रूप में कार्य करने के लिए भी किया जा सकता है। उदाहरण एक्साम्स को गम्बास ऐप स्टोर से डाउनलोड किया जा सकता है।
https://gambas.one/gambasfarm/?id=823&action=search

यहाँ छवि विवरण दर्ज करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.