터미널 프로그램에 이상하게 보이는 오른쪽 및 아래쪽 테두리가 나타납니다.

터미널 프로그램에 이상하게 보이는 오른쪽 및 아래쪽 테두리가 나타납니다.

꽤 오랫동안 나는 아래 이미지에 제시하고 싶은 문제로 인해 "고심"했습니다.

문제는 터미널 에뮬레이터에서 여는 프로그램 주위에 이상한 경계선이 있다는 것입니다. 하지만 기본적으로 Vim이나 유사한 프로그램(배경을 불투명하게 설정한 경우)을 사용할 때만 이를 알 수 있습니다.

그래서 mpv, ranger 등을 사용하면 같은 문제가 발생하지만 배경과 TE의 배경이 모두 투명하기 때문에 알아차리기 힘든 반면, Vim 같은 경우에는 작업하는 것을 좋아합니다. 불투명한 배경을 사용하면 이 차이를 보는 것이 짜증스럽습니다.

저는 현재 Manjaro를 사용하고 있습니다. 과거에는 XFCE를 DE로 사용했지만, 도움이 되는지 알아보기 위해 i3을 WM으로 전환했습니다. 힌트 힌트, 아니요.

나는 이 문제를 해결하기 위해 다양한 방법을 시도했습니다. 나는 시도했다:

  1. 아래 그림에서 볼 수 있듯이 다양한 터미널 에뮬레이터를 사용해 보았습니다. 현재 xfce-256color를 사용하고 있지만 이 문제에 대한 해결 방법으로 urxvt를 사용해 보았지만 "운이 없습니다".
  2. 다른 TE도 사용해 봤습니다. 나는 시도했습니다: Kitty, Alacritty, xterm, dwm, 이름을 지정하고 시도했지만 아무것도 바뀌지 않았습니다. 그래서 TE가 아닌 것 같아요.
  3. "-u NONE -X" 옵션을 사용하여 Vim을 실행해 보았고 즉시 배경을 colorscheme=darkblue로 설정하여 테두리가 그대로 있는지 확실히 알 수 있었습니다.
    불행히도 모든 것이 동일합니다.
  4. 나는 실행해 보았습니다. urxvt -b 0이것이 뭔가 효과가 있었지만 베젤이 더 얇아졌음에도 불구하고(아래 세 번째 그림에서 볼 수 있듯이) 여전히 유지되었습니다.
  5. 또한 i3의 구성에서 테두리를 0으로 설정했습니다. for_window [class="^.*"] border Pixel 0이지만 이야기는 같습니다.

xterm-256color i3 간격 없음 xterm-256color에는 i3 간격이 있습니다.

urxvt i3 간격 없음 urxvt와 i3 사이의 간격

urxvt -b 0 i3 간격 없음 urxvt -b 0(i3 간격 포함)

제가 지적하고 싶은 것은내 배경이 내 TE와 같은 색상이 되는 것을 원하지 않습니다.이 문제에 대한 "수정"으로. 이것은 본질적으로 Ranger, MPV 등을 사용하여 암묵적으로 수행하는 작업입니다. 이것도 짜증나지만 Vim은 내가 가장 많은 시간을 보내는 곳이고 Vim의 배경색을 투명하게 설정하여 "더 이상 문제가 발생하지 않게" 하고 싶지 않습니다. highlight Normal ctermbg=none

xterm-256color의 글꼴 크기를 변경해 보았습니다. 기본적으로 위 이미지에서는 Source Code Pro Regular 9로 설정되어 있습니다.

사진 두 장을 더 찍었습니다.

  1. 왼쪽 터미널 글꼴 크기: 10, 오른쪽 터미널 글꼴 크기: 11 여기에 이미지 설명을 입력하세요.

  2. 왼쪽 터미널 글꼴 크기: 10, 오른쪽 터미널 글꼴 크기: 8 여기에 이미지 설명을 입력하세요.

보시다시피 눈에 보이는 "이상한 테두리" 부분은 크기가 증가하거나 감소하지만 여전히 존재합니다.

읽어 주셔서 감사합니다.

내 시스템에 대한 일부 정보(무엇이 필요한지 잘 모르기 때문에):
Distro: Manjaro
WM: i3
TE: xterm-256colors/urxvt

lspci -vnn | grep VGA출력:
00:02.0 VGA 호환 컨트롤러 [0300]: Intel Corporation Mobile 4 시리즈 칩셋 통합 그래픽 컨트롤러 [8086:2a42] (개정 07) (prog-if 00 [VGA 컨트롤러])

무엇이 필요한지 잘 모르겠습니다. 추가 정보를 제공해야 할 경우 알려주시기 바랍니다.

답변1

터미널 에뮬레이터는 문자 셀의 직사각형 격자를 사용하며 각 셀의 크기는 동일합니다.

"일반" 창 관리자를 사용하면 대부분의 터미널 에뮬레이터가 픽셀 단위로 크기를 부드럽게 조정하는 대신 갑자기 크기 조정을 하는 것을 알 수 있습니다. 이는 내부에서 실행되는 애플리케이션에 보기 좋은 모양을 제공하기 위해 오른쪽과 아래쪽 가장자리의 사용할 수 없는 영역을 피하고 싶기 때문입니다.

이는 소위 "기하학적 힌트"를 통해 달성됩니다. 문자 단위가 10×20픽셀인 글꼴을 선택하고 터미널 에뮬레이터가 전체 터미널 에뮬레이션 영역 주위에 1픽셀 테두리도 추가한다고 가정해 보겠습니다. 단순화를 위해 탭바, 스크롤바 등이 없다고 가정해 보겠습니다. 즉, 기본 창 너비는 12, 22, 32, 42...픽셀이고 기본 창 높이는 22, 42, 62, 82...픽셀입니다. 대부분의 터미널 에뮬레이터에는 기하학 힌트가 설치되어 있으며 일부 정수의 경우 너비는 10*w+2픽셀 단위이고 높이는 픽셀 단위여야 합니다(분명히 정확한 숫자는 항상 실제 셀 크기, 기본 테두리 너비, 스크롤 막대 너비 및 기타 계산할 추가 기능을 기반으로 합니다). ) 정신).20*h+2wh

이름에서 알 수 있듯이 이것들은힌트, 규칙이 아닙니다. 창 관리자는 원하는 대로 이를 존중하거나 무시할 수 있습니다. 일반적인 창 관리자는 창을 최대화하고 전체 화면으로 표시할 때 이를 무시하지만 그 외에는 존중합니다. 나는 타일링 창 관리자에 익숙하지 않지만 항상 이러한 팁을 무시하는 것 같습니다. 타일링 창 관리자는 창을 이동할 수 있는 위치를 보다 엄격하게 제어하기를 원합니다. 이는 창 관리자가 응용 프로그램을 조정해야 한다고 알려주는 것이지 그 반대가 아닙니다.

그렇다면 창 크기가 프롬프트와 일치하지 않는 경우 터미널 에뮬레이터는 어떻게 해야 할까요? 오른쪽과 아래쪽에 w*h문자 셀 수에 포함되지 않는 일부 사용되지 않는 영역을 남겨 두었습니다. 거기에서는 정말 아무것도 할 수 없습니다. (글쎄요, 몇 가지 트릭이 있습니다. 예를 들어 VTE(GNOME 터미널 및 기타 터미널에서 사용)는 스크롤할 때 하단의 추가 영역을 사용합니다. Kitty는 셀 사이에 추가 공간을 할당하므로 셀의 크기가 모두 동일하지는 않습니다. 하지만 일반적으로 해당 지역은 이용이 불가능합니다.)

여기서 무엇을 할 수 있나요?

한 가지 방법은 남은 영역이 없는지 확인하는 것입니다. 즉, 창 관리자가 기하학 힌트를 존중합니다. Manjaro 또는 i3가 이 작업을 수행하도록 허용하는지 여부와 방법을 모르겠습니다.

또 다른 점은: 많은 터미널 에뮬레이터에는 동적으로(즉, 런타임) 변경하는 방법이 있다는 것입니다.기본배경색. 이 기본 배경색은 일반적으로 w*h문자 셀(배경색이 명시적으로 설정되지 않은 셀)뿐만 아니라 기하학적 단서가 존중되지 않으면 더 커질 수 있는 주변 테두리에도 사용됩니다.

지원되는 터미널 에뮬레이터에서는 OSC 11 이스케이프 시퀀스를 사용하여 기본 배경색(따라서 테두리 색상)을 설정하거나 OSC 111을 사용하여 기본값으로 되돌립니다. 예:

printf '\e]11;#abcdef\e\\'
printf '\e]111\e\\'

시작/종료 vim및 친구와 연결하여 해당 맥락에서 원하는 색상으로 테두리를 칠합니다.

답변2

나는 같은 문제가 있었고 적어도 상단 패널(KUbuntu)의 크기를 조정하여 하단 섹션의 창을 최대화하여 문제를 해결했습니다.

관련 정보