Aquí está el problema: quiero poder discernir si mi terminal es capaz de unicode decente o no, para usar algunos caracteres o no, al igual que las miradas, que a veces usan colores y otros subrayan.
La motivación surge porque en cualquier tipo de terminal virtual obtengo fuentes decentes, pero entiendo que la consola básica de Linux tiene un conjunto de caracteres de 256 o 512 símbolos simultáneos, por lo que no puede esperar un soporte completo de fuentes.
Al principio pensé que podría usar $TERM
o tty, pero aquí está el truco: también estoy usando byobu, por $TERM
lo que siempre es "screen.linux". El resultado de tty tampoco es muy revelador: /dev/pts/<some number>
tanto en términos "reales" como virtuales.
$BYOBU_TTY
tampoco es una ayuda, porque, por ejemplo, puede serlo /dev/tty1
y cuando la sesión se abre en Ctrl+ Alt+ F1los caracteres no se muestran, pero cuando se adjuntan a la misma sesión desde un término X, se muestran correctamente y aún $BYOBU_TTY
no cambian. Además, me gustaría poder detectar esto sin suponer que byobu está allí o no.
Además, la configuración regional se muestra en todos los casos en_US.UTF-8
Sin embargo, de alguna manera echa un vistazo (para nombrar una herramienta particular que veo detectar esto), incluso dentro de byobu, usa diferentes resultados dependiendo del terminal que estoy conectando a la sesión de byobu.
Tengo problemas con google porque terminal y tty parecen términos de búsqueda demasiado comunes. A lo sumo llego a soluciones recomendadas $TERM
o tty.
La pregunta real de OP es: ¿qué valores Unicode admite la consola Linux? ¿Se pueden detectar estos durante la ejecución
screen
? En principio, uno puede hacer esto recuperando el mapa Unicode para la consola.El
kbd
árbol fuente contienegetunimap
(y su página de manual). La página del manual dice quelo cual no es exactamente cierto.
setfont
tiene una opción que hace aproximadamente lo mismo:Las diferencias:
setfont
escribe en un archivo, mientrasgetunimap
escribe en la salida estándargetunimap
muestra el carácter que se mapearía, como un comentario.Por ejemplo:
versus
Si está ejecutando
screen
(o, por ejemplo, ejecutandoxterm
y no en la consola), obtendrá un error de permisos que puede solucionar usandosudo
.Si sé qué fuente se cargó, puedo verificar eso (sin permisos especiales) usando
psfgettable
, por ejemplo,y vea los datos de mapeo que
setfont
usaría para cargar la fuente (con el mapeo Unicode):Ambos
getunimap
ysetfont
dan los datos sin clasificar, mientras quepsfgettable
parecen estar ordenados (además de combinar líneas para valores Unicode que se asignan al mismo glifo). Entonces hay diferencias, pero la información es accesible.Lectura adicional (que ilustra por qué no puede usar
showconsolefont
para resolver este problema):fuente
sudo
no es un obstáculo para mi caso de uso.setfont
no genera nada (no crea el archivo dado ni genera un error) dentro de terminales virtuales, pero funciona en terminales reales como se esperaba. Esto está en Ubuntu 16.04Me encontré con esta pregunta cuando intentaba lograr lo mismo, pero no quería dejar nada en la pantalla y configurar una variable, así que puse lo siguiente en un script de shell que obtuve:
fuente