우분투 16.04에서 다음 메시지가 나타납니다.
Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged
내가 명령으로 정열을 열 때
zenity --text-info --filename=<filename>
이것은 14.04에서 발생하지 않았습니다. 답변 이이 게시물 과 관련 이 있다고 가정 하지만 게시물에는 제안 된 솔루션을 구현하는 방법이 설명되어 있지 않습니다. 제안 된 줄을 추가 해야하는 파일을 누군가 설명해 주시겠습니까?
GtkDialog에 모달이 될 부모를 제공함으로써이 경고를 수정한다. 관련 함수는 gtk_window_set_transient_for () (이 창은 항상 다른 창 위에 있거나 다른 창에 대해 일시적으로 설정 됨) 및 선택적으로 gtk_window_set_modal ()로 설정하여 모달 대화 상자로 만듭니다. 이것은 궁극적으로 다양한 GtkDialog 생성자가하는 일입니다.
답변
무시해.
그것은 A의 경고 가 아닌 오류입니다. 응용 프로그램이 작동하지만 모범 사례를 염두에두고 코딩되지 않았습니다. 당신은 수정해야 할 것이 zenity
너무 왜 귀찮게한다, 어쨌든 작동 … 자신을 연결된 질문에 설명 된 수정 프로그램을 구현하고 그것을 컴파일의 소스 코드를, 그러나?
터미널에서 출력을 제거 하려면 명령 끝에 /dev/null
추가 2> /dev/null
하여 STDERR (표준 오류 스트림, 경고가 인쇄되는 곳)를 (데이터를 삼키는 가상 문자 장치 )로 리디렉션하면됩니다 . 이처럼 :
zenity --text-info --filename=<filename> 2> /dev/null
답변
Gtk 개발자들은 많은 패키지에 영향을 미치는이 경고를 추가하기로 결정한 것 같습니다. Zenity 개발자가 Zenity를 따라 잡을 때까지 기다려야합니다.
와 bash는 쉘 (이 POSIX 호환되지 않습니다) 표준 에러까지 다른 메시지를 허용하고있는 동안은 억제 특정 오류 메시지에 상대적으로 간단합니다 :
zenity --info --text "hello" 2> >(grep -v 'GtkDialog' >&2)
이것은 stdout을 방해하지 않으므로 정상적으로 파이프 대체되거나 명령 대체에 사용될 수 있습니다.
echo message: $(zenity --entry 2> >(grep -v 'GtkDialog' >&2) )
답변
zenity ... 2>/dev/null
나를 위해 작동합니다. 내가 볼 수있는 유일한 문제는 다른 (중요한) 오류 메시지도 억제되므로 코드에서 어떻게 든 오류 캡처를 더 잘 빌드한다는 것입니다
답변
Dave Rove의 답변을 바탕으로 프롬프트가 많으면 다음과 같은 함수를 만들어 정리할 수 있습니다.
function zenityNoWarn() {
zenity "$@" 2> >(grep -v 'GtkDialog' >&2)
}
다음과 같이 사용하십시오 :
zenityNoWarn --question --text "Are you sure?"
이것은 다른 논리와 결합 할 때 사물을 조금 더 읽기 쉽게 만듭니다.
if [[ `zenityNoWarn --question --text "Are you sure?"; echo $?` -eq 0 ]]; then
echo "Yes!"
else
echo "No..."
fi