모두.
문제는 여기에서 찾을 수 있는 설정과 관련이 있습니다.https://github.com/filmil/bugreports/blob/master/dialog/README.md
대화형 Docker 터미널 세션에서 대화 상자 유틸리티를 실행하면 세션에서 실행될 때와 "일반" 터미널에서 실행될 때 다른 결과가 나타나는 것으로 나타났습니다 screen
.
전자의 경우 샘플 애플리케이션이 예상대로 나타납니다. 아래를 참조하세요.
후자의 경우 샘플 애플리케이션이 표시되지만 화면이 완전히 "채색"되지는 않습니다. 아래를 참조하세요.
처음에는 TERM 설정 문제인 줄 알았습니다. 그러나 나는 그것이 무엇인지 찾을 수 없습니다 screen
. 스크린 세션을 작동시키는 방법에 대한 아이디어가 있습니까? Docker 없이 "일반" 대화 상자를 실행하면 정상적으로 표시됩니다. "구멍"이 나타나는 것은 docker가 작동할 때만입니다.
당신의 생각에 감사드립니다!
답변1
대화형 유틸리티의 경우 터미널은 프로그램에 의해 에뮬레이트된 터미널입니다 screen
. 차례로 screen
프로그램은 메뉴를 통해 볼 수 있는 다른 터미널(GNOME 터미널, MATE 터미널 또는 이와 유사한 터미널)과 통신합니다.
대화 상자 유틸리티는 제어 시퀀스를 사용하여 한 번에 많은 수의 문자 셀을 지웁니다. ECMA-48 표준은 줄 끝, 디스플레이 끝 또는 다음 줄까지 지울 수 있는 다양한 "지우기" 제어 시퀀스를 정의합니다.질소수치. 이러한 제어 시퀀스는 에서 처리됩니다 screen
.
터미널에는 이러한 삭제 시퀀스를 처리하기 위한 두 가지 동작 모드가 있습니다.현재의배경색 또는 지우기 사용기본배경색. 두 번째 스크린샷에서는 터미널이 실제로 기본 배경색을 사용하여 와이프를 구현할 때 와이프가 현재 배경색을 사용하고 있다고 생각하는 프로그램(이 경우 대화 상자 유틸리티)의 결과를 볼 수 있습니다. (첫 번째 스크린샷은 두 가지 방식으로 진행됩니다. 터미널이 현재 배경색을 사용하여 지우거나, 응용 프로그램이 먼저 배경색 지우기 기능이 없음을 인식하고 이에 따라 출력을 조정하거나, 그렇지 않으면 큰 빈 영역을 만듭니다.)
의 경우 screen
다른 터미널 및 터미널 에뮬레이터의 경우와 마찬가지로 이 동작을 전환할 수 있습니다. 기본적으로 screen
소위배경색 지우기꺼지고 제어 순서에 따라 기본 색상이 삭제에 사용됩니다. 명령 으로 켜면 bce
현재 배경색을 사용하여 지워집니다. bce
모든 새 화면에서 이 명령을 사용하여 설정 자체의 기본값을 설정할 수 있습니다 defbce
.
대화 유틸리티는 이를 이해해야 합니다. 모든 터미널에서 사용할 수는 없습니다.배경색 지우기, 전환 가능하게 만드는 것은 말할 것도 없습니다.
대화 유틸리티에 알려주는 것은 터미널 유형에 해당하는 레코드입니다( TERM
환경 변수의 값으로 표시됨을 기억하세요).대화 프로그램에서 볼 수 있습니다.) terminfo 데이터베이스에 있습니다. 이 레코드에는 프로그램이 대화 중인 터미널이 무엇을 할 것인지 결정할 수 있는 기능이 있습니다. 이름은 입니다 bce
. (termcap에 해당하는 이름은 입니다 ut
.)
이를 복잡하게 만드는 것은 screen
이러한 프로그램에 터미널이 무엇인지 알려주는 방법입니다. 다른 터미널 에뮬레이터는 단순히 터미널처럼 동작하는 방식을 정의하고 터미널 에뮬레이션의 특정 터미널 유형을 사용하여 프로그램을 실행하도록 요구합니다. tmux에는 터미널 유형만 있습니다.tmux
그리고tmux-256color
예를 들어, tmux의 단일 시뮬레이션 터미널 동작을 설명합니다. screen
그에 비해 이상한잡종에뮬레이션 유형과 외부 유형을 결합한 터미널 유형 screen
이 터미널에 표시됩니다.screen.xterm-256color
귀하의 경우, terminfo 데이터베이스에 일치하는 잡종 항목이 있어야 합니다.
여기서 문제의 일부는 screen
처음에 외부, 렌더링 대상 및 터미널 대상을 잘못 설명했다는 것입니다. XTerm이 아니며 XTerm과 완전히 호환되지 않습니다.여러분이 들어본 내용에도 불구하고 올바른 터미널 유형은 아닙니다.xterm
. 올바른 터미널 유형은 다음과 같습니다.gnome-256color
또는vte-256colour
, 이는 실제로구체적인 설명GNOME 터미널과 같은 libvte 기반 에뮬레이터. ( 를 실행하면 infocmp {xterm,vte}-256color
시스템에서 이 두 터미널 에뮬레이터가 다르다고 어떻게 생각하는지 확인할 수 있습니다. 이는 terminfo 데이터베이스가 실제로 다루는 에뮬레이션의 일부일 뿐입니다.)
다음을 수행해야 합니다.
screen
libvte 기반 터미널 에뮬레이터를 올바르게 설명하려면 (프론트 엔드 렌더링 부분)에 올바른 터미널 유형을 제공하십시오 .screen
실행 중인 애플리케이션에 올바른 터미널 유형을 제공하세요.내 자신의터미널 에뮬레이션.screen
하이브리드를 만들 것이다screen.vte-256color
유형. 다음과 같은 것을 사용할 수도 있습니다.screen-256color-bce
대신에.- 화면을 생성하기 전에
screen
설정이나 명령을 통해 배경색 삭제 기능을 켜도록 지시하세요. 이는 호출하는 컨텍스트에 관계없이 파일의 가시성에 영향을 받습니다.bce
defbce
${HOME}/.screenrc
screen
또 다른 열악한 접근 방식(배경색 삭제는 화면의 큰 빈 블록에 색상을 지정하는 대화 상자 유틸리티와 같은 프로그램에 유용한 최적화이기 때문에)은 다음과 같습니다.
- 아직
screen
libvte 기반 터미널 에뮬레이터를 올바르게 설명하려면 (프론트 엔드 렌더링 부분)에 올바른 터미널 유형을 제공하십시오 . screen
실행 중인 애플리케이션에 올바른 터미널 유형을 제공하세요.내 자신의터미널 에뮬레이션이지만 이번에는 다음 중 하나입니다.아니요단색 등 배경색 삭제 기능 홍보screen-256color
유형.screen
배경색은 그대로 두고 지웁니다.
추가 읽기
- "문자 처리", 화면 매뉴얼. GNU 프로젝트.
- 줄 끝까지 지우면 화면에서 잘못된 배경색이 사용됩니다.
- 줄 끝까지 지우면 tmux에서 잘못된 배경색이 사용됩니다.
- Curses 인터페이스에는 GNU 화면 및 SSH 아래에 공백이 있습니다.
- 디키, 토마스 E. (1997). "VT220이란 무엇입니까?".xterm FAQ. 보이지 않는 섬.
- 디키, 토마스 E. (2018). "XTerm 및 유사 항목의 알려진 버그:그놈 터미널".xterm FAQ. 보이지 않는 섬.