우분투에서 bash 스크립트의 알림을 표시하는 방법이 있습니까?


103

대부분의 응용 프로그램은 화면의 오른쪽 상단 모서리에 나타나는 이벤트에 대해 적절한 형식의 알림을 표시 할 수 있습니다. 백그라운드에서 요정의 긴 처리를 수행하는 bash 스크립트를 작성하려고하며 완료되면 정말로 알고 싶습니다. bash 스크립트에서 멋진 알림을 표시하려면 어떻게해야합니까?


답변:


124

Jaunty에서 새 알림 시스템을 사용하는 경우 notify-send 명령 을 원합니다

notify-send - a program to send desktop notifications

SYNOPSIS

With notify-send you can sends desktop notifications to the user via
a notification daemon from the command line.  These notifications can be
used to inform the user about an event or display some form of information
without getting in the user's way.

OPTIONS

-u, --urgency=LEVEL
Specifies the urgency level (low, normal, critical).

-t, --expire-time=TIME
    Specifies the timeout in milliseconds at which to expire the notification.
-i, --icon=ICON[,ICON...]
    Specifies an icon filename or stock icon to display.
-c, --category=TYPE[,TYPE...]
    Specifies the notification category.

4
고마워, 방금 스스로 발견 :) apt-get install libnotify-bin을 실행하기 전에 실행해야합니다.
vava

루트 사용자는 어떻게 crons, init.d 등으로부터 메시지를 보내나요?
랜스 카라치 올리

6
예 : 알림 보내기 테스트 "Hello World"
Thaha kp

3
이 "기능"(버그) 덕분에 --expire-time 매개 변수가 Ubuntu에서 작동하지 않습니다. bugs.launchpad.net/ubuntu/+source/notify-osd/+bug/390508
axiopisty

그 발견 notify-send비디오 / 오디오 재생 중에 억제된다. 이것은 유효한 유스 케이스이지만 여전히보고 싶다면 --urgency = critical 을 추가해야합니다.
ccpizza

29

Zenity를 통해 다른 방법을 찾았 습니다.

echo 'message:hi' | zenity --notification --listen

(이것은 또한 우분투에 이미 설치되어 있다는 이점이 있습니다.)


이 대화 상자에 대한 사용자 상호 작용을 지원한다는 점에서 나는 Zenity를 좋아하는 (달리-전송 통지)
와플의 미친 땅콩

12

창을 팝업하는 xmessage 도 있으므로 모든 X11 시스템에서 작동해야합니다.

Pro : 대화식으로 사용자에게 버튼을 표시 할 수도 있습니다.

단점 : 다른 팝업 경고와 마찬가지로 일반적으로 포커스를 받기 때문에 입력하는 동안 메시지를 읽기 전에 사라질 수 있습니다.


4
단점 : 그것은 못생긴 것처럼 보이고, 사용자에게 항상 분명하지는 않은 매우 작은 창입니다. 어쨌든 그것은 보편적입니다. :)
Nik Reiman

Fedora에서는 xmessage가 작동하지 않습니다. 기본적으로 설치되지 않습니다.
Abhay Mittal

아치 리눅스의 기본 Xorg 설치에서도 사용할 수 없습니다.
friederbluemle

당신은 또한을 통해 "취소" "확인"버튼으로 팝업 창을 얻을 수 있습니다 notify-send --expire-time=0 "Hello World"또는 notify-send -t 0 "Hello world". 그렇지 않으면, -t바보 같은 "디자인 결정"으로 인해 옵션이 무시됩니다. askubuntu.com/questions/110969/notify-send-ignores-timeout
Gabriel Staples

나는 그것을 참을 수 없었다. 나는 내 자신의 대답 : 써야했다 superuser.com/a/1310142/425838
가브리엘 스테이플을

11

KDE 사용자의 경우 :

$ kdialog --title "Long process completed!" --passivepopup "This popup will disappear in 5 seconds" 5 &

알림 아이콘을 설정할 수 있습니까?
Malabarba

5

10 초 후에 자동 종료되는 팝업 알림 :

notify-send "Hello world"

출처 : https://superuser.com/a/31919/425838

클릭 버튼이있는 팝업 창 :

[창은 자동 초점을 얻지 못합니다]

notify-send -t 0 "Hello world"

출처 : 나 자신; 참고 : -t 0- 어리 석음을 제외한 모든 값에 대해서는 무시됩니다 . :(


또는
[창이 자동 초점을 얻음]

zenity --info --title "Hello" --text "World"

출처 : https://askubuntu.com/a/804475/327339


또는

[ --timeout초 단위로 지정된 시간이 지나면 창이 자동으로 닫히므로 즐겨 찾기 ]

zenity --info --title "Hello" --text "World" --timeout=2

출처 : 나 자신의 매뉴얼 페이지를 읽고 : man zenity


또는
[슈퍼 추악한]

xmessage 'hello world'

출처 : http://www.linux-commands-examples.com/xmessage


3

Yfiton 이라는 크로스 플랫폼 솔루션이 있습니다 .

$ yfiton -n desktop -Pmessage="Lunch time!" -Pposition=TOP_RIGHT

2

쉘 스크립트에서는 libxosd에서 osd_cat 유틸리티를 호출 할 수도 있습니다.


1
우분투 데스크탑 알림을 사용하지 않으므로 약간 다릅니다.
vava

예, 이것은 모든 Linux 배포판 및 모든 WM / DE와 함께 사용할 수있는 대안입니다.
괴짜
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.