우분투가 알림을 읽도록 만드는 방법이 있습니까?


9

우분투에는 매우 멋진 알림 시스템이 있습니다. Ubuntu가 알림을 표시 할 때 알림을 읽도록하는 방법이 있습니까?

또는 알림의 텍스트를에 연결할 수 espeak있습니까?



1
orca는 모든 것을 읽으며 찾고있는 것이 매우 성가시다. 어쨌든 지원에 감사드립니다. :)
Meow

답변:


17

이 질문은 정말 흥미로운 답변입니다.

dbus-monitor실행될 때 신호를 기다리며 도착하면 신호를 포착하고 적절한 정보를 제공합니다. 마찬가지로 Notifications에 대한 정보를 얻기 위해 실행될 수 있습니다 . 실행될 때 :

dbus-monitor "interface='org.freedesktop.Notifications'" | grep --line-buffered "member=Notify\|string"

알림을 기다리며 알림이 도착하면 알림 정보를 제공합니다.

예를 들어 사운드가 증가 / 감소하거나 노래 트랙이 변경되거나 기타 메시지가 표시 될 때. notify-send 다른 터미널에서 명령을 사용하여 수동으로 데스크탑 알림을 작성하고 있습니다 .

notify-send "Hello How are you?"

그런 다음 dbus-monitor명령이 실행 되는 첫 번째 터미널은 다음 과 같은 메시지를 표시합니다.

saurav@saurav-P4I45Gx-PE:~$ dbus-monitor "interface='org.freedesktop.Notifications'" | grep --line-buffered "member=Notify\|string"
   string ":1.473"
method call sender=:1.474 -> dest=:1.475 serial=7    path=/org/freedesktop/Notifications; interface=org.freedesktop.Notifications;  member=Notify
   string "notify-send"
   string ""
   string "Hello How Are You?"
   string ""
         string "urgency"

이제 위의 출력을 쉽게 전달하여 espeak메시지를 읽을 수 있습니다 . 예를 들어

위의 dbus-monitor명령을 다음으로 바꾸면 알림 메시지가 표시됩니다.

확인, 작동 방식 :

  • 터미널에서이 명령을 실행하고 실행 상태를 유지하십시오.

    dbus-monitor "interface='org.freedesktop.Notifications'" | grep --line-buffered "string" | grep --line-buffered -e method -e ":" -e '""' -e urgency -e notify -v | grep --line-buffered '.*(?=string)|(?<=string).*' -oPi | grep --line-buffered -v '^\s*$' | xargs -I '{}' espeak {}
    

    나는 그것이 매우 길어 졌다는 것을 알고 있지만 실제 알림을 필터링하면 시간이 오래 걸리기 때문에 작게 만드는 다른 방법은 없습니다.

  • 그런 다음 위에서 설명한 방식 notify-send이나 다른 방식으로 데스크탑 알림을 실행하십시오 . 을 사용하고 notify-send있습니다. 따라서 다른 터미널에서 다음 명령을 실행하십시오.

    notify-send "Hello! I am Saurav Kumar."
    

    명령을 실행하자마자 알림을 말 (읽기)합니다.

4-5 시간을 먹었지 만 지금은 작동하게되어 기쁩니다.

또한saynoti 읽기 알림을 원할 때마다 자신 만의 명령을 만들고 실행할 수 있습니다. 다음 단계에 따라 수행 할 수 있습니다.

  • 먼저 실제 명령을이라는 파일에 저장하십시오 saynoti. 실제 명령 이름이 될 파일 이름을 사용할 수 있습니다.

  • 그런 다음 파일을 실행 가능하게 만들고 다음으로 이동하거나 복사하십시오 /bin.

    chmod +x saynoti
    sudo cp saynoti /bin
    
  • 이제 새 명령을 실행하여 말하기 알림 을 시작할 수 있습니다 .

    saynoti
    
  • 실행중인 프로세스를 종료하려면 다음 명령을 실행할 수 있습니다.

    pkill dbus-monitor
    

    또는 실행중인 터미널에서 Ctrl+ C를 누르기 만하면 saynoti됩니다.

  • saynoti시스템을 시작 응용 프로그램 으로 만들어 시스템을 시작할 때마다 실행할 수도 있습니다 .

이 질문에 감사드립니다. 이 질문 때문에 많은 것을 배웠습니다. :)

문제가 발생하거나 추가 변경 / 수정이 필요한 경우 회신하십시오. 최종 작업 버전을 얻게되어 기쁩니다.


@ Meow : 결과에 만족하는 것이 좋습니다. 나중에 수정이 필요한 경우 여기에 핑하십시오.
Saurav Kumar

@ Meow : 최종 작업 버전을 확인하십시오. 나는 모든 문제를 해결했으며 훌륭하게 작동하고 있습니다. 이 버전을 얻게되어 기쁩니다.
Saurav Kumar

2
굉장한 친구는 다른 것을 요청할 수 없습니다. 나는 그것을 내 스타트 업 목록에 넣고 완벽하게 작동합니다. merci beaucoup
Meow

어디서 배웠습니까? dbus-monitor저는 배우기를 시작하고 싶습니다
Edward Torvalds

@edwardtorvalds : 공식 사이트에서 Dbus 및 Dbus-Monitor에 대해 배울 수 있습니다. 1. freedesktop.org/wiki/Software/dbus 2. dbus.freedesktop.org/doc/dbus-monitor.1.html
Saurav Kumar

0

나는 "내 이메일 주소에 여분의 문제가 있었기 때문에 위의 코드 라인에 이것을 추가 할 필요가 없기 때문에 추가했습니다."

| sed 's / \ "// g'|

=>

| grep --line-buffered -v '^ \ s * $'| sed 's / \ "// g'| xargs -I '{}'이 (가) 말합니다}

멋진 일. notify-send lib 자체를 조정하는 것보다 훨씬 낫습니다. 4 "안녕하세요! 저는 Saurav Kumar입니다."

업데이트 : 꾸준히 작동하지 않습니다. 내가 사용할 것이다 | 티 -a $ 파일 |

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.