*n*x GUI 기반 프로그램에서 벨소리/경고음을 생성하는 모범 사례

*n*x GUI 기반 프로그램에서 벨소리/경고음을 생성하는 모범 사례

나는 GUI 프로그램이 간단한 소리를 내도록 하기 위해 aplay를 호출하는 라이브러리를 누군가 작성하는 것을 막으려고 다른 곳에서 논쟁을 벌였습니다. 텍스트 콘솔에서 \a가 수행하는 것과 같은 일입니다.

제가 이해한 바에 따르면 하위 시스템으로서의 ALSA는 매우 일반적이며 클라이언트 라이브러리로서의 libasound.so는 전체 데스크톱 환경이 없더라도 GUI 지향 프로그램을 실행할 수 있는 모든 (Linux) 호스트에 설치할 수 있는 것 같습니다( 즉, SSH를 통한 X11 터널링에 대한 프로그램 종속성 등).

반면에 나는 깨달았다.https://www.gnu.org/software/emacs/manual/html_node/elisp/Desktop-Notifications.html이는 최소한 Emacs가 D-Bus를 통해 경고음을 울릴 수 있다는 것을 의미하며, 아직 메시지 내부를 자세히 살펴보진 않았지만 KDE의 konsole도 비슷한 기능을 수행하는 것처럼 보입니다. 이런 경우 테마별로 기본 알림음이 선택된다는 사실을 믿을 수 있을지 모르겠습니다.

wmctrl을 사용하는 것과 같은 동등한 것을 찾지 못했습니다.

커뮤니티에서는 libasound를 통해 ALSA와 상호 작용하는 것이 가장 좋은 방법이라고 생각합니까? 아니면 실제로 D-Bus나 데스크톱 환경(창 관리자 등)과 조정하는 다른 수단을 사용하는 등 더 나은 방법이 있습니까?

답변1

통제할 수 없는 소음을 발생시키는 프로그램보다 더 짜증나는 것은 없습니다. 입력하거나 클릭하는 내용에 대해 즉각적인 피드백을 제공하려면 시각적 콘텐츠를 사용하세요. 가장 기본적인 수준에서 터미널 벨에 해당하는 X11은 XBell()모든 X11 연결에서 작동하는 기능입니다 . xkb는 더 많은 기능을 추가 XkbBell()합니다 XkbForceBell().

그렇지 않고 일부 백그라운드 작업이나 오래 지속되는 작업의 상태가 변경되었다는 알림을 받으려면 libnotify사용자가 알림 데몬을 구성하도록 하세요.

난쟁이사양힌트가 있습니다. 예를 들어 다음을 지정할 수 있습니다.

  • "sound-file" 알림 팝업 시 재생할 사운드 파일 경로, 또는
  • "sound-name" freedesktop.org의 사운드라는 테마사운드 명명 규칙알림이 뜨면 재생하세요.

그러나 서버에서 프롬프트를 구현하는 것은 선택 사항입니다. 시험을 받다

notify-send --hint string:sound-name:dialog-ok myheader 'my msg'

관련 정보