Manualinux
http://www.nvu.com http://www.gimp.org InicioPresentaciónActualizacionesManualesDescargasNoticiasAgradecimientoEnlaces

Entornos GráficosAplicaciones

DesarrolloEmuladoresInternetJuegosMultimediaSistema

Emuladores de Terminal - EtermEmuladores de Terminal - GTKTerm2

Emuladores de Terminal - FbTerm




Emuladores de Terminal - FbTerm




Copyright

Copyright © José Luis Lara Carrascal  2008-2023   http://manualinux.es



Sumario

Introducción
Características
Preliminares
Instalación
Opciones de línea de comandos de FbTerm
Configuración
Fbv
Opciones de línea de comandos de Fbv
Iniciamos FbTerm
Enlaces




Introducción  

FbTerm es un emulador de terminal para el dispositivo framebuffer de GNU/Linux, y supera en rendimiento y características a la terminal del kernel de GNU/Linux, una excelente y original opción de la cual trataremos su instalación desde código fuente en este manual.



Características  

* Mucho más rapido que la terminal del kernel cuando la aceleración del desplazamiento vertical está activada.
* Selección de fuente mediante Fontconfig y renderizado de ésta mediante Freetype2, al igual que cualquier aplicación con interfaz gráfica.
* Puede crear y destruir de forma dinámica hasta 10 ventanas, corriendo como intérprete por defecto.
* Guarda el historial del texto desplazado por cada ventana.
* Autodetecta las locales actuales y convierte la codificación de caracteres del texto, doble soporte con scripts como Chino, Japonés, etc.
* Puede conmutar al vuelo entre diferentes codificaciones de caracteres de texto previamente configuradas.
* Puede copiar y pegar el texto seleccionado con el ratón entre diferentes ventanas cuando el servidor gpm está corriendo.
* Soporte de rotación de pantalla.
* Ligero framework de método de entrada con arquitectura cliente/servidor.
* Soporte de imagen en el fondo de la pantalla.



Preliminares  

1) Comprobar que la ruta de instalación de los binarios del programa la tenemos en nuestro PATH


Abrimos una ventana de terminal y ejecutamos el siguiente comando:

[jose@Fedora-18 ~]$ echo $PATH
/usr/lib/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/jose/bin

Si no aparece entre las rutas mostradas el directorio /usr/local/bin, abrimos un editor de texto y añadimos lo siguiente:

#!/bin/sh

export PATH=/usr/local/bin:$PATH

Lo guardamos con el nombre variables.sh, y lo instalamos en /etc/profile.d.

$ su -c "install -m755 variables.sh /etc/profile.d"

Tenemos que cerrar el emulador de terminal y volverlo a abrir para que la variable de entorno aplicada sea efectiva. Es conveniente guardar una copia de este script para posteriores instalaciones de nuestro sistema, teniendo en cuenta que es el que se va a utilizar a partir de ahora en todos los manuales de esta web, para establecer variables de entorno globales, excepto en aquellas que sólo afectan al usuario, en las que se utilizará el archivo de configuración personal, ~/.bashrc.

La ventaja de utilizar el directorio /etc/profile.d es que es común a todas las distribuciones y nos evita tener que editar otros archivos del sistema como por ejemplo, /etc/profile.

2) Desinstalar versiones anteriores del programa ubicadas en el directorio /usr

Aún en el caso de que la versión a compilar la vayamos a instalar en el mismo directorio que la que proporciona la distribución, siempre se debe desinstalar previamente la versión antigua, para evitar conflictos innecesarios.



Instalación  

Dependencias

Herramientas de Compilación


Entre paréntesis la versión con la que se ha compilado FbTerm para la elaboración de este documento.

* GCC - (13.2.0) o Clang - (16.0.6)
* Gawk - (5.2.2)
* M4 - (1.4.19)
* Make - (4.4.1)
* Automake - (1.16.5)
* Autoconf - (2.71)
* Pkg-config - (0.29.2)

Librerías de Desarrollo

* Fontconfig - (2.14.2)
* Freetype2 - (2.13.1)
* Libx86 - (1.1) - opcional



Descarga

fbterm-1.8.tar.gz

Optimizaciones

$ export {C,CXX}FLAGS='-O3 -march=znver3 -mtune=znver3'

Donde pone znver3 se indica el procesador respectivo de cada sistema seleccionándolo de la siguiente tabla:
Nota informativa sobre las optimizaciones para GCC
* La opción '-march=' establece el procesador mínimo con el que funcionará el programa compilado, la opción '-mtune=' el procesador específico para el que será optimizado. 

* Los valores separados por comas, son equivalentes, es decir, que lo mismo da poner '-march=k8' que '-march=athlon64'.

* En versiones de GCC 3.2 e inferiores se utiliza la opción '-mcpu=' en lugar de '-mtune='.
Nota informativa sobre las optimizaciones para Clang
* La opción '-mtune=' está soportada a partir de la versión 3.4 de Clang.

* Los valores de color azul no son compatibles con Clang.

* Las filas con el fondo de color amarillo son valores exclusivos de Clang y, por lo tanto, no son aplicables con GCC.
Valores CPU
Genéricos
Intel
AMD

Optimizaciones adicionales

Optimizaciones adicionales
GCC
Graphite
$ export {C,CXX}FLAGS+=' -ftree-loop-linear -floop-strip-mine -floop-block'
IPA
$ export {C,CXX}FLAGS+=' -fipa-pta'
LTO
$ export AR=gcc-ar RANLIB=gcc-ranlib NM=gcc-nm
$ export {C,CXX}FLAGS+=' -fuse-linker-plugin -flto=auto'
En versiones inferiores a GCC 10, sustituir auto por el número de núcleos que tenga nuestro procesador. Si sólo tiene uno, utilizar el parámetro -flto
PGO
1) Fase inicial de compilación e instalación del paquete.
$ export {C,CXX}FLAGS+=' -O2 -g1 -fprofile-generate=/var/pgo/fbterm'
2) Ejecución y testeo del programa.
3) Fase final de compilación e instalación del paquete.
$ export {C,CXX}FLAGS+=' -fprofile-use=/var/pgo/fbterm -Wno-error=coverage-mismatch'
Clang
Polly
$ export {C,CXX}FLAGS+=' -O3 -mllvm -polly -mllvm -polly-vectorizer=stripmine'
LTO
$ export AR=llvm-ar RANLIB=llvm-ranlib NM=llvm-nm
$ export {C,CXX}FLAGS+=' -flto'
ThinLTO
$ export AR=llvm-ar RANLIB=llvm-ranlib NM=llvm-nm
$ export {C,CXX}FLAGS+=' -flto=thin'
La aplicación de esta optimización es alternativa a la tradicional LTO, a partir de Clang 3.9 y, por lo tanto, no es combinable con la misma.
PGO
1) Fase inicial de compilación e instalación del paquete.
$ export {C,CXX}FLAGS+=' -O2 -g1 -fprofile-generate=/var/pgo/fbterm'
2) Ejecución y testeo del programa.
3) Conversión del perfil de optimización a un formato legible por Clang.
$ PGODIR=/var/pgo/fbterm; llvm-profdata merge $PGODIR/default_*.profraw --output=$PGODIR/default.profdata
4) Fase final de compilación e instalación del paquete.
$ export {C,CXX}FLAGS+=' -fprofile-use=/var/pgo/fbterm'

Parámetros adicionales

Parámetros adicionales de eliminación de avisos en el proceso de compilación
$ export {C,CXX}FLAGS+=' -w'

Parámetros adicionales de eliminación de errores específicos en el proceso de compilación
GCC 6 y superiores
$ export CXXFLAGS+=' -Wno-narrowing'
Clang 6 y superiores
$ export CXXFLAGS+=' -Wno-c++11-narrowing'

Establecer la ruta de búsqueda de directorios de librerías en sistemas de 64 bits multiarquitectura
$ export LDFLAGS+=' -L/usr/lib64 -L/usr/local/lib64 -L/opt/gcc13/lib64'
Cada usuario tendrá que establecer la ruta de búsqueda de directorios, en función de la distribución que utilice.

Establecer el uso de librería estándar de C++ para Libc++
Clang
$ export CXXFLAGS+=" -stdlib=libc++ -I$(llvm-config --includedir)/c++/v1"
$ export LDFLAGS+=" -L$(llvm-config --libdir) -lc++"

Establecer el uso de enlazador dinámico para LLD
Clang
$ export LDFLAGS+=' -fuse-ld=lld'
Optimizaciones complementarias LTO/ThinLTO/PGO de LLD
$ export LDFLAGS+=' -Wl,--lto-aa-pipeline=globals-aa -Wl,--lto-newpm-passes=pgo-memop-opt'
Optimizaciones complementarias LTO de LLD
$ export LDFLAGS+=" -Wl,--lto-partitions=$(nproc)"
Optimizaciones complementarias ThinLTO de LLD
$ export LDFLAGS+=" -Wl,--thinlto-jobs=$(nproc)"

Establecer la variable de entorno de uso de compilador para Clang
$ export CC=clang CXX=clang++

Extracción y Configuración  Bloc de Notas Información general sobre el uso de los comandos

$ tar zxvf fbterm-1.8.tar.gz
$ cd fbterm-1.8
$ sed -i '46s:AR:&?:' src/lib/Makefile.in
$ ./configure

Explicación de los comandos

sed -i '46s:AR:&?:' src/lib/Makefile.in : Modificamos el archivo base de configuración src/lib/Makefile.in, para poder hacer uso de la variable de entorno AR establecida en el manual, para que la optimización LTO pueda aplicarse de forma correcta en el proceso de compilación del paquete. Si no tenemos pensado aplicar este tipo de optimización, omitiremos esta acción a realizar. 

Compilación

$ make
$ rm -f ~/.fbtermrc (si tenemos una versión anterior instalada)

Parámetros de compilación opcionales  

-j$(nproc) : Establece el número de procesos de compilación en paralelo, en función del número de núcleos e hilos que tenga nuestro procesador, tomando como referencia la información mostrada por el sistema con el comando correspondiente. Si nuestro procesador es mononúcleo de un solo hilo, no añadir esta opción.

Instalación como root

$ su
# make install-strip
# setcap 'cap_sys_tty_config+ep' /usr/local/bin/fbterm

Explicación de los comandos

setcap 'cap_sys_tty_config+ep' /usr/local/bin/fbterm : Requerido para poder ejecutar el programa como usuario normal.

Estadísticas de Compilación e Instalación de FbTerm

Estadísticas de Compilación e Instalación de FbTerm
CPU AMD Ryzen 5 5500
MHz 3593.250 (BoostMax=4457.000)
RAM 32 GB
Sistema de archivos XFS
Versión del Kernel 6.4.12-ml SMP PREEMPT_DYNAMIC x86_64
Modo de frecuencia de la CPU powersave (balance performance)
Versión de Glibc 2.38
Librería estándar de C++ Libc++ 16.0.6
Enlazador dinámico LLD 16.0.6
Compilador Clang 16.0.6
Parámetros de optimización -03 -march=znver3 -mtune=znver3 -mllvm -polly -mllvm -polly-vectorizer=stripmine -flto=thin -Wl,--lto-aa-pipeline=globals-aa -Wl,--lto-newpm-passes=pgo-memop-opt
Parámetros de compilación -j12
Tiempo de compilación 1"
Archivos instalados 2
Mostrar/Ocultar la lista de archivos instalados
Ocupación de espacio en disco 116 KB

Consumo inicial de CPU y RAM de FbTerm

Consumo inicial de CPU y RAM de FbTerm
Programa
CPU RAM
fbterm 0 % 1,7 MB
Para medir el consumo de CPU se utiliza el programa top, y para medir el consumo de RAM se utiliza el script de Python, ps_mem.py, creado por Pádraig Brady, que podemos encontrar en este enlace.

Archivo de configuración personal

~/.fbtermrc Es el archivo de configuración personal de FbTerm en nuestro home.

Desinstalación como root

1) MODO TRADICIONAL

En el directorio de compilación ejecutamos el siguiente comando:

$ su -c "make uninstall"

2) MODO MANUALINUX

El principal inconveniente del comando anterior es que tenemos que tener el directorio de compilación en nuestro sistema para poder desinstalar el programa. En algunos casos esto supone muchos megas de espacio en disco. Con el paquete de scripts que pongo a continuación logramos evitar el único inconveniente que tiene la compilación de programas, y es el tema de la desinstalación de los mismos sin la necesidad de tener obligatoriamente una copia de las fuentes compiladas.

fbterm-1.8-scripts.tar.gz

$ su
# tar zxvf fbterm-1.8-scripts.tar.gz
# cd fbterm-1.8-scripts
# ./Desinstalar_fbterm-1.8

Copia de Seguridad como root

Con este otro script creamos una copia de seguridad de los binarios compilados, recreando la estructura de directorios de los mismos en un directorio de copias de seguridad (copibin) que se crea en el directorio /var. Cuando se haya creado el paquete comprimido de los binarios podemos copiarlo como usuario a nuestro home y borrar el que ha creado el script de respaldo, teniendo en cuenta que si queremos volver a restaurar la copia, tendremos que volver a copiarlo al lugar donde se ha creado.

$ su
# tar zxvf fbterm-1.8-scripts.tar.gz
# cd fbterm-1.8-scripts
# ./Respaldar_fbterm-1.8

Restaurar la Copia de Seguridad como root

Y con este otro script (que se copia de forma automática cuando creamos la copia de respaldo del programa) restauramos la copia de seguridad como root cuando resulte necesario.

$ su
# cd /var/copibin/restaurar_copias
# ./Restaurar_fbterm-1.8



Opciones de línea de comandos de FbTerm 

[jose@localhost ~]$ fbterm -h
Uso: fbterm [opciones] [--] [comando [argumentos]]
Un emulador de terminal muy rápido para linux que funciona en los modos de vídeo: framebuffer y vesa

  -h, --help                      muestra esta ayuda y termina
  -V, --version                   muestra la versión de FbTerm y termina
  -v, --verbose                   muestra información extra
  -n, --font-names=TEXTO          especifica los nombres de una familia de fuentes de texto
  -s, --font-size=NÚM             especifica el tamaño de píxel de la fuente de texto
  -W, --font-width=NÚM            fuerza la anchura de la fuente de texto
  -H, --font-height=NÚM           fuerza la altura de la fuente de texto
  -B, --font-baseline=NÚM         fuerza la línea base de la fuente de texto
  -f, --color-foreground=NÚM      especifica un color de frente 
  -b, --color-background=NÚM      especifica un color de fondo
  -e, --text-encodings=TEXTO      especifica las codificaciones adicionales de texto
  -a, --ambiguous-wide            trata la anchura de los caracteres CJK ambiguos como ancho
  -r, --screen-rotate=NÚM         especifica la orientación de la pantalla
  -i, --input-method=TEXTO        especifica un programa para el método de entrada
  -c, --cursor-shape=NÚM          establece la forma del cursor predefinida
  -C, --cursor-interval=NÚM       establece el intervalo del parpadeo del cursor
      --vesa-mode=NÚM             fuerza un modo de vídeo VESA
                  list            muestra los modos de vídeo VESA disponibles

Ver comentarios en ~/.fbtermrc para los detalles de las opciones.

 La opción de modo de vídeo VESA es incompatible con el framebuffer y requiere de la ejecución de Fbterm como root.



Configuración de FbTerm  Bloc de Notas  

1) Optimizar el rendimiento de FbTerm


Para poder aprovechar las capacidades de FbTerm lo primero que tenemos que hacer es activar la aceleración del desplazamiento vertical y las MTRR del controlador de gráficos vesafb del kernel, mediante la edición de los archivos de configuración de los respectivos cargadores, GRUB o LILO. Añadimos lo que está de color rojo a los respectivos archivos de configuración:

a) GRUB >> /etc/default/grub


GRUB_DEFAULT=saved
GRUB_TIMEOUT=10
GRUB_TIMEOUT_STYLE=hidden
GRUB_DISTRIBUTOR="Manjaro"
GRUB_CMDLINE_LINUX_DEFAULT="quiet apparmor=1 security=apparmor udev.log_priority=3
video=vesafb:ywrap,mtrr:3"
GRUB_CMDLINE_LINUX=""
GRUB_DISABLE_OS_PROBER=false

$ su -c "update-grub"

El comando de actualización del archivo de configuración de GRUB puede variar según distribuciones.

b) LILO >> /etc/lilo.conf


# File generated by DrakX/drakboot
# WARNING: do not forget to run lilo after modifying this file

default="Linux"
boot=/dev/hda
map=/boot/map
vga=791
keytable=/boot/es-latin1.klt
menu-scheme=wb:bw:wb:bw
prompt
nowarn
timeout=100
message=/boot/message
image=/boot/vmlinuz-5.7.19-ck1
    label="Linux"
    root=/dev/hda1
    initrd=/boot/initrd-5.7.19-ck1.img
    append="quiet noapic acpi=off video=vesafb:ywrap,mtrr:3"
    vga=791
    read-only

$ su -c "lilo"

El programa funciona igual con cualquier otro controlador de gráficos para el framebuffer. En el caso de Nouveau, éste se conmuta de forma automática, desactivando por defecto la configuración que tengamos respecto al controlador de gráficos que hayamos establecido en los parámetros del kernel, en el correspondiente gestor de inicio que utilicemos.

2) Edición del archivo de configuración >> ~/.fbtermrc

Este archivo se crea de forma automática al ejecutar por primera vez el programa, a continuación un ejemplo con los comentarios traducidos al español.

# Configuración de fbterm

# Las líneas que empiezan con '#' son ignoradas.
# Tener en cuenta que los comentarios al final de línea NO están soportados. Éstos tienes que ir en su propia línea.


# fuente familia/tamaño en píxeles usada por fbterm, si se añade más de una separarlas con comas ','
font-family=mono
font-size=12

# fuerza la anchura/altura/línea base de la fuente, normalmente para las fuentes con anchura variable
# formato de valor correcto: n (fw_new = n), +n (fw_new = fw_old + n), -n (fw_new = fw_old - n)
#font-width=
#font-height=
#font-baseline=

# color por defecto para el frente/fondo del texto
# colores disponibles: 0 = negro, 1 = rojo, 2 = verde, 3 = marrón, 4 = azul, 5 = magenta, 6 = cian, 7 = blanco
color-foreground=7
color-background=0

# historial máximo de líneas desplazadas por cada ventana, el valor tiene que ser [0 - 65535], 0 lo desactiva.
history-lines=1000

# Hasta 5 codificaciones de texto adicional, si se añade más de una separarlas con comas ','
# ejecutar 'iconv --list' para obtener las codificaciones disponibles.
text-encoding=

# cursor shape (forma): 0 = subrayado, 1 = bloque
# intervalo del parpadeo del cursor en milisegundos, 0 lo desactiva.
cursor-shape=0
cursor-interval=500

# caracteres ascii adicionales considerados como parte de las palabras cuando se autoselecciona el texto, excepto ' ', 0-9, a-z, A-Z
word-chars=._-

# cambia el ángulo de orientación de la pantalla
# valores disponibles: 0 = 0 grados, 1 = 90 grados, 2 = 180 grados, 3 = 270 grados
screen-rotate=0

# especifica el programa de método de entrada favorito a ser ejecutado
input-method=

# trata la anchura de los caracteres ambiguos como ancho
#ambiguous-wide=yes

# Establece la variable de entorno TERM a 'linux' en lugar de la predefinida 'fbterm'
#term-is-linux=no


3) Atajos del teclado de FbTerm

Esta es la parte del manual que tendremos que aprendernos cuanto antes, porque es fundamental saber los atajos del teclado para poder salir del programa, crear nuevas ventanas, cambiar entre las mismas, etc.

Atajo del teclado Acción
CTRL + ALT + E Salir de FbTerm
CTRL + ALT + C Crea una nueva ventana
CTRL + ALT + D Destruye la ventana actual
CTRL + ALT + 1 Conmuta a la ventana 1
CTRL + ALT + 2 Conmuta a la ventana 2
CTRL + ALT + 3 Conmuta a la ventana 3
CTRL + ALT + 4 Conmuta a la ventana 4
CTRL + ALT + 5 Conmuta a la ventana 5
CTRL + ALT + 6 Conmuta a la ventana 6
CTRL + ALT + 7 Conmuta a la ventana 7
CTRL + ALT + 8 Conmuta a la ventana 8
CTRL + ALT + 9 Conmuta a la ventana 9
CTRL + ALT + 0 Conmuta a la ventana 10
MAYÚSC + FLECHA IZQUIERDA Conmuta a la ventana previa
MAYÚSC + FLECHA DERECHA Conmuta a la ventana siguiente
MAYÚSC + Repág Desplazamiento hacia arriba del historial de líneas de texto
MAYÚSC + Avpág Desplazamiento hacia abajo del historial de líneas de texto
CTRL + ALT + F1 Conmuta a la codificación de caracteres de las locales por defecto
CTRL + ALT + F2 a CTRL + ALT + F6 Conmuta a las codificaciones de caracteres adicionales
CTRL + ALT + K Mata el servidor de mensajería instántanea en caso de bloqueo del mismo
Ratón Acción
Mover con el botón izquierdo presionado Selecciona texto
Doble clic con el botón izquierdo del ratón Selección automática de texto
Clic con el botón derecho del ratón Pega el texto seleccionado



Fbv  

Desde la versión 1.5 de FbTerm, se puede utilizar una imagen de fondo para este emulador de terminal. Para poder hacerlo necesitamos un programa que coloque la imagen en el fondo y la creación de un script lanzador cuyo ejemplo viene reflejado en el man de FbTerm, para que todo esto se haga de forma automatizada. El programa se llama Fbv, es un visor de imágenes para el framebuffer y a continuación explico su instalación.

Instalación

Dependencias

Herramientas de Compilación


Entre paréntesis la versión con la que se ha compilado Fbv para la elaboración de este documento.

* GCC - (13.2.0) o Clang - (16.0.6)
* Make - (4.4.1)

Librerías de Desarrollo

* Libjpeg-turbo - (3.0.0)
* Libpng - (1.6.40)



Descarga

fbv-1.0b.tar.gz  |  fbv-1.0b_libpng15.diff

Optimizaciones

Optimizaciones adicionales

Optimizaciones adicionales
GCC
Graphite
$ export {C,CXX}FLAGS+=' -ftree-loop-linear -floop-strip-mine -floop-block'
IPA
$ export {C,CXX}FLAGS+=' -fipa-pta'
LTO
$ export {C,LD}FLAGS+=' -fuse-linker-plugin -flto=auto'
En versiones inferiores a GCC 10, sustituir auto por el número de núcleos que tenga nuestro procesador. Si sólo tiene uno, utilizar el parámetro -flto
Clang
New Pass Manager
$ export {C,CXX}FLAGS+=' -fexperimental-new-pass-manager'
Polly
$ export {C,CXX}FLAGS+=' -O3 -mllvm -polly -mllvm -polly-vectorizer=stripmine'
LTO
$ export {C,CXX}FLAGS+=' -flto'
ThinLTO
$ export {C,CXX}FLAGS+=' -flto=thin'
La aplicación de esta optimización es alternativa a la tradicional LTO, a partir de Clang 3.9 y, por lo tanto, no es combinable con la misma.

Parámetros adicionales

Establecer la ruta de búsqueda de directorios de librerías en sistemas de 64 bits multiarquitectura
$ export LDFLAGS+=' -L/usr/lib64 -L/usr/local/lib64 -L/opt/gcc13/lib64'
Cada usuario tendrá que establecer la ruta de búsqueda de directorios, en función de la distribución que utilice.

Establecer el uso de enlazador dinámico para LLD
Clang
$ export LDFLAGS+=' -fuse-ld=lld'
Optimizaciones complementarias LTO/ThinLTO/PGO de LLD
$ export LDFLAGS+=' -Wl,--lto-aa-pipeline=globals-aa -Wl,--lto-newpm-passes=memcpyopt'
Optimizaciones complementarias LTO de LLD
$ export LDFLAGS+=" -Wl,--lto-partitions=$(nproc)"
Optimizaciones complementarias ThinLTO de LLD
$ export LDFLAGS+=" -Wl,--thinlto-jobs=$(nproc)"

Eliminar los símbolos innecesarios para la ejecución del programa
$ export LDFLAGS+=" -Wl,-s"

Establecer la variable de entorno de uso de compilador para Clang
$ export CC=clang CXX=clang++

Extracción y Configuración  Bloc de Notas Información general sobre el uso de los comandos

$ tar zxvf fbv-1.0b.tar.gz
$ cd fbv-1.0b
$ sed -e '8s:=:?&:' -e '9s:= -O2:+=:' -i Makefile
$ patch -Np1 -i ../fbv-1.0b_libpng15.diff
$ ./configure --without-libungif --mandir=/usr/local/share/man

Explicación de los comandos

sed -e '8s:=?&:' -e '9s:= -O2:+=:' -i Makefile : Modificamos el archivo Makefile correspondiente para que el paquete acepte las variables de entorno de optimización y uso de compilador.

patch -Np1 -i ../fbv-1.0b_libpng15.diff : Aplicamos este parche personal para poder compilar el paquete con Libpng 1.5 >> 1.6. El error que soluciona es el siguiente:

png.c: En la función 'fh_png_getsize':
png.c:164:25: error: puntero deferenciado a tipo de dato incompleto
make: *** [png.o] Error 1

--without-libungif : Desactivamos el soporte de Giflib al no ser compatible con las versiones de la serie 5.1 y producir errores de compilación.

--mandir=/usr/local/share/manInstala el archivo man del programa en /usr/local/share/man, en lugar de /usr/local/man.

Compilación

$ make

Parámetros de compilación opcionales

Instalación como root

$ su -c "make install"

Estadísticas de Compilación e Instalación de Fbv

Estadísticas de Compilación e Instalación de Fbv
CPU AMD Ryzen 5 5500
MHz 3593.250 (BoostMax=4457.000)
RAM 32 GB
Sistema de archivos XFS
Versión del Kernel 6.4.12-ml SMP PREEMPT_DYNAMIC x86_64
Modo de frecuencia de la CPU powersave (balance performance)
Versión de Glibc 2.38
Enlazador dinámico LLD 16.0.6
Compilador Clang 16.0.6
Parámetros de optimización -03 -march=znver3 -mtune=znver3 -mllvm -polly -mllvm -polly-vectorizer=stripmine -flto=thin -Wl,--lto-aa-pipeline=globals-aa -Wl,--lto-newpm-passes=memcpyopt
Parámetros de compilación -j12
Tiempo de compilación 1"
Archivos instalados 2
Mostrar/Ocultar la lista de archivos instalados
Ocupación de espacio en disco 32 KB

Consumo inicial de CPU y RAM de Fbv

Consumo inicial de CPU y RAM de Fbv
Programa
CPU RAM
fbv 0 % 7,2 MB
Para medir el consumo de CPU se utiliza el programa top, y para medir el consumo de RAM se utiliza el script de Python, ps_mem.py, creado por Pádraig Brady, que podemos encontrar en este enlace.

Desinstalación como root

1) MODO TRADICIONAL

En el directorio de compilación ejecutamos el siguiente comando:

$ su -c "make uninstall"

2) MODO MANUALINUX

fbv-1.0b-scripts.tar.gz

$ su
# tar zxvf fbv-1.0b-scripts.tar.gz
# cd fbv-1.0b-scripts
# ./Desinstalar_fbv-1.0b

Copia de Seguridad como root

$ su
# tar zxvf fbv-1.0b-scripts.tar.gz
# cd fbv-1.0b-scripts
# ./Respaldar_fbv-1.0b

Restaurar la Copia de Seguridad como root

$ su
# cd /var/copibin/restaurar_copias
# ./Restaurar_fbv-1.0b

Creación del script para la imagen de fondo

Abrimos un editor de texto y añadimos lo siguiente:

#!/bin/bash

# fbterm-bi: un script lanzador para activar una imagen de fondo con fbterm
# uso: fbterm-bi /ruta/a la/imagen opciones de fbterm

echo -ne "\e[?25l" # hide cursor

fbv -ciuker "$1" << EOF
q
EOF

shift
export FBTERM_BACKGROUND_IMAGE=1
exec fbterm "$@"

Lo guardamos con el nombre fbterm-bi, y lo instalamos en /usr/local/bin. La desinstalación y respaldo de este archivo viene incluida en los scripts correspondientes proporcionados en este manual.

$ su
# install -m755 fbterm-bi /usr/local/bin

Ahora sólo nos queda usarlo del siguiente modo, un ejemplo:

$ fbterm-bi ~/Fotos/imagen-1.jpg (opciones de fbterm)

Si tenemos pensado usar una imagen fija definida, podemos crear otro script con el comando de arriba, las opciones de uso son muy variadas. Las opciones de FbTerm siempre van a continuación de la ruta de la imagen de fondo a utilizar, si es que queremos pasarle alguna mediante la línea de comandos.



Opciones de línea de comandos de Fbv  

A continuación pongo las opciones de línea de comandos del programa para facilitar su uso como visor de imágenes. Recordar que sólo funciona con el framebuffer activado. He añadido más atajos de teclado de los que muestran las opciones del programa, extraídos del código fuente del mismo.

[jose@localhost fbv-1.0b]$ fbv -h
Uso: fbv [opciones] imagen1 imagen2 imagen3 ...

Opciones disponibles:
 --help        | -h : Muestra esta ayuda
 --alpha       | -a : Utiliza el canal alfa (si es aplicable)
 --dontclear   | -c : No limpia la pantalla antes de mostrar la imagen
 --donthide    | -u : No oculta el cursor antes y después de mostrar la imagen
 --noinfo      | -i : Suprime la información de la imagen
 --stretch     | -f : Redimensiona (usando una rutina de redimensionado simple) las imágenes grandes al tamaño de la pantalla
 --colorstretch| -k : Redimensiona (usando una rutina de redimensionado de 'promedio de color') las imágenes grandes al tamaño de la pantalla
 --enlarge     | -e : Redimensiona las imágenes pequeñas al tamaño de la pantalla
 --ignore-aspect| -r : Ignora el aspecto de la imagen cuando se redimensiona
 --delay <d>   | -s <retardo> : Presentación, 'retardo' es el retardo en décimas de segundo de la presentación de imágenes.

Atajos de teclado:
 r            : Redibuja la imagen 
 a, d, w, x   : Navega por la imagen cuando ésta es de mayor resolución que la pantalla
 f            : Activa/desactiva el redimensionado de la imagen
 k            : Activa el redimensionado de calidad
 e            : Activa/desactiva la ampliación de la imagen
 i            : Activa/desactiva la razón de aspecto de la imagen
 n            : Rota la imagen 90 grados a la izquierda
 m            : Rota la imagen 90 grados a la derecha
 p            : Desactiva todas las transformaciones
 >            : Avanza a la siguiente imagen si hemos cargado más de una
 <            : Retrocede a la imagen anterior si hemos cargado más de una
 q            : Finaliza el programa



Iniciamos FbTerm  

Si estamos ejecutando una sesión gráfica, ejecutamos por ejemplo, CTRL + ALT + F2 y saldremos a una consola de texto libre, introducimos nuestro nombre de usuario y contraseña y posteriormente ejecutamos el comando fbterm y el programa se iniciará, recordar que sin el framebuffer activado este programa no funciona en el modo de vídeo predefinido. Si queremos usar una imagen de fondo, usaremos el script fbterm-bi con la ruta a la imagen indicada como ya he explicado en la sección anterior.


Captura - FbTerm - 1




Enlaces  


https://github.com/sfzhi/fbterm >> Enlace al proyecto en GitHub.


Foro Galería Blog


Actualizado el 25-08-2023

Emuladores de Terminal - FbTerm

Emuladores de Terminal - EtermEmuladores de Terminal - GTKTerm2