Por que o showconsolefont tem saída diferente no tmux?

4

Estou executando um sistema Arch Linux sem gerenciador de janelas ou ambiente de desktop (agora). Eu uso o tmux quando preciso de vários terminais. Quando executo sudo showconsolefont no meu tty (no tmux), vejo o conjunto esperado de símbolos, mas quando abro o tmux e executo sudo showconsolefont , vejo um conjunto diferente de símbolos que se repete.

Minha fonte é ter-124b , da família Terminus.

Nacapturadetela,asaídaprincipalfoicapturadadedentrodotmuxepareceidênticaàformacomofoiexibidaquandoexecuteisudoshowconsolefont.Asaídainferiorcontémsímbolosdiferentes,masseeuredirecionarparaumarquivoe,emseguida,catdoarquivo,elesterãoamesmaaparência.diffingtambémrelataqueelessãoidênticos.

Porqueasaídadoshowconsolefontédiferentenotmux?Euacheiqueoobjetivodessecomandoeraexibirtodosossímbolosdisponíveisnafonteatual.Comoestouusandoamesmafontedentroeforadotmux,nãoentendoporqueháalgumadiferença.Tenhocertezadequeháumconceitosimplesdefonteslinuxqueestouperdendoaqui.Alguémpoderiaindicarissoparamim?

Eutenteiverificarovalorde$TERMseestounotmuxegarantirqueelesejapadronizadocomolinux(omesmoque$TERMnomeutty),masissonãofeznenhumadiferença.(set-gdefault-terminal"linux" )

    
por Christopher Waldon 08.11.2016 / 04:46

1 resposta

3

curto: tmux não pode exibir todos os 256 itens em uma fonte

longo:

Refira-se ao código-fonte, que é um pouco estranho desde então (veja KBD - Ferramentas do teclado Linux página da web) prefere tarballs, mas você pode usar o conselho do git-cloning para conseguir pesquisar a origem . O showconsolefont programa faz isso

O motivo pelo qual showconsolefont pode mostrar 256 itens (em vez de dizer 256 - 32 caracteres de controle) é porque ele remapeia os códigos enviados diretamente para o console. Na verdade, isso seria 33 controles porque 0x9b é tratado de maneira diferente. Perto o suficiente. showconsolefont está escrevendo caracteres que parecem ser imprimíveis, mas é linha a linha mudando os caracteres que são realmente desenhados.

Uma coisa que você pode perceber é que todas as alterações no dispositivo de console usam o descritor de arquivo para o dispositivo real, enquanto a matriz de caracteres é gravada na saída padrão. Quando você executa este fora tmux, esses são o mesmo dispositivo . Mas rodando dentro tmux , a saída padrão é para um diferente dispositivo (um pseudo-terminal, que separa o mapeamento especial dos caracteres. Se você redirecionar o shell para o console, por exemplo,

$ tmux
$ sudo su -
# exec >/dev/console
# showconsolefont

você poderá ver parte dos personagens interessantes. Mas o pseudo-terminal não mostrará o retorno de linha / feed de linha como esperado, e a linha de status para tmux pode não ser desenhada corretamente:

versus(foradetmux):

Pode haver uma maneira de definir os modos de terminal do root para obter uma saída legível, mas isso não é o que showconsolefont ou tmux farão sem algum trabalho.

    
por 08.11.2016 / 23:49