저는 창 관리자나 데스크톱 환경 없이 아치 리눅스 시스템을 실행하고 있습니다. 여러 터미널이 필요할 때 tmux를 사용합니다. tmux 없이 tty에서 실행하면 sudo showconsolefont
예상되는 기호 세트가 표시되지만 tmux를 열고 실행하면 sudo showconsolefont
다른 기호의 중복 세트가 표시됩니다.
내 글꼴은 ter-124b
Terminus 시리즈의 입니다.
스크린샷에서 상단 출력은 tmux에서 캡처되었으며 실행했을 때와 동일하게 보입니다 sudo showconsolefont
. 하단 출력에는 다른 기호가 포함되어 있지만 파일로 리디렉션한 다음 cat
해당 파일로 리디렉션하면 동일하게 보입니다. diff
그것들을 분석해 보면 그것들이 동일하다고 보고됩니다.
tmux에서 showconsolefont의 출력이 다른 이유는 무엇입니까?이 명령의 요점은 현재 글꼴로 사용 가능한 모든 기호를 표시하는 것입니다. tmux 내부와 외부에서 동일한 글꼴을 사용하고 있는데 왜 차이가 있는지 모르겠습니다. 여기에는 몇 가지 간단한 Linux 글꼴 개념이 빠져 있다고 확신합니다. 누군가 나에게 지적해 줄 수 있나요?
$TERM
tmux에 값이 있는지 확인하고 기본값이 해당 값인지 확인하려고 시도했지만 linux
(내 tty와 동일 $TERM
) 별 차이가 없었습니다. ( set -g default-terminal "linux"
)
답변1
간단히 말해서: tmux
256개 항목을 모두 글꼴로 표시할 수 없습니다.
긴:
소스코드를 보면 조금 어색한데, 그 이유는 (참조KBD - 리눅스 키보드 도구웹 페이지) tarball을 선호하지만 제안된 대로 git-cloning을 사용할 수 있습니다.소스 코드 찾아보기. 이것showconsolefont
프로그램이 이런 일을 해준다
- 열려 있는지정된 장치,
- 확인하다이것은편안,
- 얻다현재 모드에서 UTF-8이 사용되는지 확인하고,
- 만들다가상(사소한) 화면 맵
- 얻다현재 화면 지도
- 인쇄정렬...
- 각 행마다, 글꼴을 표시하기 위해 배열의 문자를 다시 매핑합니다.
- 다시 덮다콘솔 모드 및 화면 매핑
showconsolefont
256개 항목(예: 256 - 32개의 제어 문자 대신)을 표시할 수 있는 이유 는 콘솔에 직접 전송된 코드를 다시 매핑하기 때문입니다. 실제로는 그럴 것이다330x9b
처리가 다르기 때문에 제어합니다 . 충분히 가깝습니다. showconsolefont
인쇄 가능한 것처럼 보이는 문자가 쓰여지고 있지만 실제로 그려지는 문자는 한 줄씩 바뀌고 있습니다.
한 가지 주목할 만한 점은 콘솔 장치에 대한 모든 변경 사항은 실제 장치의 파일 설명자를 사용하고 문자 배열이 표준 출력에 기록된다는 것입니다. 이것을 실행하면외부티먹스, 이것들은동일한 장치. 하지만 달리고 있어~에 tmux
, 표준 출력은 다음과 같습니다.다른장치(특수 매핑을 문자와 분리하는 의사 터미널입니다. 예를 들어 쉘이 콘솔로 리디렉션되는 경우
$ tmux
$ sudo su -
# exec >/dev/console
# showconsolefont
너는 보게 될 것이다부분흥미로운 캐릭터. 그러나 의사 터미널은 캐리지 리턴/줄 바꿈을 예상대로 표시하지 않으며 상태 줄이 tmux
올바르게 그려지지 않을 수 있습니다.
(외부 tmux
):
읽을 수 있는 출력을 얻기 위해 루트의 터미널 모드를 설정하는 방법이 있을 수 있지만 일부 작업 없이는 불가능하거나 showconsolefont
달성 tmux
할 수 있습니다.