Linux의 bash 스크립트에서 GUI 메시지 상자를 표시하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/7035

문제

저는 Ubuntu Linux에서 몇 가지 작은 bash 스크립트를 작성하고 있습니다.입력을 입력하거나 출력을 보기 위해 터미널 창 없이 GUI에서 실행할 수 있기를 원합니다.

지금까지 필요한 유일한 입력은 sudo에 대한 비밀번호이며 gksudo는 이를 잘 처리합니다.하지만 아직 메시지 상자를 표시하는 쉬운 방법을 찾지 못했습니다.일종의 'gkmessage' 명령을 사용할 수 있나요?기본 Ubuntu 설치에 있는 것을 선호하지만 필요한 경우 새 패키지를 설치해도 괜찮습니다.

도움이 되었습니까?

해결책

나는 믿는다 제니티 당신이 원하는 것을 할 것입니다.이는 명령줄에서 GTK 대화상자를 표시하기 위해 특별히 설계되었으며 다음과 같이 사용할 수 있습니다. 우분투 패키지.

다른 팁

당신이 사용하는 경우 우분투 많은 배포판 notify-send 명령은 오른쪽 상단에 사라지기 쉬운 알림 중 하나를 표시합니다.다음과 같습니다:

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

아름다운!

모두가 젠티(zenity)를 언급하고 있고, 다른 사람들도 많이 있는 것 같습니다.혼합되어 있지만 흥미로운 목록은 다음과 같습니다. http://alternativeto.net/software/zenity/

먼저, 텍스트 서식 지정 마크업, 창 제목, 버튼 레이블을 갖춘 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"

gx메시지

gxmessage "my text"

x메시지

xmessage 매우 오래되었기 때문에 안정적이며 아마도 X를 사용하는 모든 배포판에서 사용할 수 있습니다(X와 함께 배포되므로).이는 Linux 또는 Unix를 오랫동안 사용하여 이것이 무엇을 의미하는지 알 수 있도록 X 리소스를 통해 사용자 정의할 수 있습니다(.Xdefaults, 누구나 ?).

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

k대화

(검증되지 않은)

PPA에서

야드:Zenity On Steroids [쉘 스크립트에서 그래픽 대화 상자 표시] ~ Web Upd8:우분투/리눅스 블로그.자동 크기 대화 상자가 아닌 것 같습니다.

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"

우분투 표준 저장소에 없는 기타

  • 쉘구이
  • x대화상자
  • gtk대화

주제에서 벗어남(터미널의 경우)

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

자유롭게 편집하세요.

그만큼 제니티 응용 프로그램이 당신이 찾고 있는 것 같습니다.

다음에서 입력을 받으려면 제니티, 변수를 지정하고 다음과 같은 출력을 얻을 수 있습니다. 제니티 --엔트리 그것에 저장되었습니다.다음과 같이 보입니다.

my_variable=$(zenity --entry)

의 값을 보면 내_변수 이제는 zenity 팝업 항목 대화 상자에 입력된 내용이 됩니다.

사용자(또는 당신)가 대화 상자에 무엇을 입력해야 하는지에 대한 일종의 프롬프트를 제공하려면 다음을 추가하십시오. --텍스트 원하는 라벨로 전환하세요.다음과 같이 보입니다.

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

Zenity에는 특정 작업을 위한 다른 멋진 옵션이 많이 있으므로 다음을 통해 해당 옵션도 확인해 보는 것이 좋습니다. 제니티 --도움말.한 가지 예는 --달력 그래픽 달력에서 날짜를 선택할 수 있는 옵션입니다.

my_date=$(zenity --calendar)

사용자가 클릭한 내용을 기반으로 멋진 형식의 날짜가 제공됩니다.

echo ${my_date}

다음을 제공합니다:

08/05/2009

슬라이더 선택기, 오류, 목록 등에 대한 옵션도 있습니다.

도움이 되었기를 바랍니다.

나는 찾았다 x메시지 명령이면 충분합니다.

여기에 당신이 원하는 것을 할 수 있는 작은 Tcl 스크립트가 있습니다.Wish 통역사는 Ubuntu에 기본적으로 설치되어야 합니다.

#!/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"`

alert 그리고 notify-send 같은 것인 것 같습니다.나는 사용한다 notify-send 입력되지 않은 메시지의 경우 포커스를 훔치지 않고 zenity 등을 중지하는 방법을 찾을 수 없습니다.이 일을 하는 것부터.

예를 들어

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

도 있습니다 dialog 그리고 KDE 버전 kdialog. dialog 슬랙웨어에서 사용되므로 다른 배포판에서는 즉시 사용하지 못할 수도 있습니다.

우분투는 어떻습니까? 알리다.모든 작업 후에 완료를 알리는 데 사용할 수 있으며 작업이 오류로 종료된 경우 적십자 아이콘도 표시할 수 있습니다.

ls -la; alert

다른 것이 없다면.다음과 같이 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);'

제니티 정말 당신이 찾고 있다고 생각하는 정확한 도구입니다.

또는

zenity --help

Kdialog와 다이얼로그 둘 다 좋지만 저는 Zenity를 추천하고 싶습니다.빠르고 쉬우며 xmessage나 대화상자가 훨씬 더 보기 좋습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top