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

우분투 리눅스에서 작은 bash 스크립트를 작성하고 있습니다. 입력을 입력하거나 출력을 볼 수있는 터미널 창이 필요없이 GUI에서 실행할 수 있기를 원합니다.

지금까지 필요한 유일한 입력은 sudo의 비밀번호이며 gksudo는이를 잘 처리합니다. 그러나 아직 메시지 상자를 표시하는 쉬운 방법을 찾지 못했습니다. 사용 가능한 ‘gkmessage’명령이 있습니까? 기본 우분투 설치에 존재하는 것을 선호하지만 필요한 경우 새 패키지를 설치하는 것은 중요하지 않습니다.



답변

나는 Zenity 가 당신이 원하는 것을 할 것이라고 믿습니다 . 커맨드 라인에서 GTK 대화 상자를 표시하도록 특별히 설계되었으며 Ubuntu 패키지 로 사용할 수 있습니다 .


답변

당신이 사용하는 경우 우분투에게 많은 배포판을 notify-send명령은 오른쪽 상단 모서리에있는 그 좋은 부패하기 쉬운 통지 중 하나를 던질 것이다. 이렇게 :

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

아름다운!


답변

모두가 선량함을 언급하지만 다른 많은 사람들이있는 것 같습니다. 혼란 스럽지만 흥미로운 목록은 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"

gxmessage

gxmessage "my text"

xmessage

xmessage매우 오래되어 안정적이며 X를 사용하는 모든 배포판에서 사용할 수 있습니다 (X와 함께 배포되므로). X 자원을 통해 커스터마이징이 가능합니다. Linux 또는 Unix를 오랫동안 사용해온 사람들은 그것이 무엇을 의미하는지 ( .Xdefaults아무도?) 알 수있을 것 입니다.

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

kdialog

(검증되지 않은)

PPA에서

YAD : 스테로이드 온전함 [쉘 스크립트에서 그래픽 대화 상자 표시] ~ 웹 Upd8 : Ubuntu / Linux 블로그 . 대화 상자의 크기를 자동으로 조정하지 않는 것 같습니다.

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"

Ubuntu 표준 리포지토리에없는 기타

  • shellgui
  • xdialog
  • gtkdialog

주 제외 (터미널 용)

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

자유롭게 편집하십시오.


답변

zenity의 응용 프로그램이 나타납니다 당신이 찾고있는 무엇을 할 수 있습니다.

zenity 에서 입력을 받으려면 변수를 지정하고 zenity –entry 출력을 저장하십시오. 다음과 같이 보입니다 :

my_variable=$(zenity --entry)

my_variable 의 값을 보면 zenity pop-up entry 대화 상자에 입력 된 값이됩니다.

사용자 (또는 사용자)가 대화 상자에 입력해야하는 내용에 대한 프롬프트를 표시 하려면 원하는 레이블이 있는 –text 스위치를 추가하십시오 . 다음과 같이 보입니다 :

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

Zenity에는 특정 작업을위한 다른 유용한 옵션이 많이 있으므로 zenity –help를 사용 하여 해당 옵션을 확인할 수도 있습니다 . 그래픽 달력에서 날짜를 선택할 수 있는 –calendar 옵션이 그 예입니다 .

my_date=$(zenity --calendar)

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

echo ${my_date}

제공합니다 :

2009 년 8 월 5 일

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

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


답변

xmessage 명령을 찾았 습니다.


답변

다음은 원하는 것을 수행하는 작은 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"`


답변

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