viernes, 19 de diciembre de 2025

Instalando Wine con características avanzadas en Debian

Hasta ahora me había bastado con instalar el paquete wine para ejecutar el poco software de Windows que todavía necesito, muy poca cosa la verdad, hasta que me tropezado con Bricklink StudIO, que ya expliqué como instalarlo en GNU/Linux. 

Lo paradójico es que se trata de un programa que es un producto derivado de Blender, por tanto debería ser software libre y compilarlo nativo para GNU/Linux debería ser bastante trivial, pero como es un freeware privativo y a sus creadores no les da la gana pues hay que tragar la versión de Windows.

Bueno, a lo que vamos, para instalar wine para que sea lo más versátil posible hay que seguir una serie de pasos:

  1. Editamos el archivo /etc/apt/sources.list añadiendo después de cada línea las palabras "contrib" y "non-free" si no las tiene, ¡ojo! si tiene non-free-firmware también debe tener non-free, lo podemos editar con cualquier editor como root, por ejemplo:
    sudo nano /etc/apt/sources.list
    Al final del artículo pondré un ejemplo del contenido de este archivo.

  2.  Añadimos soporte a la arquitectura de 32 bits, para los programas antiguos:
    sudo dpkg --add-architecture i386
     
  3. Actualizamos el índice de software disponible:
    sudo apt-get update

  4. Instalamos primero la versión de 32 bits.
    sudo apt install wine32

  5. Instalamos el resto de versiones (si alguna no está disponible, no pasa nada):
    sudo apt install wine
    sudo apt install wine-stable
    sudo apt install wine64

  6. Instalamos la poderosa herramienta winetrick para gestionar wine:
    sudo apt install winetricks

  7. Con esta herramienta podemos instalar librerías Windows que necesitemos para determinados programas, por ejemplo, en el caso de Stud.IO tuvimos que hacer:
    winetricks dotnet48 vcrun2019 corefonts

  8. Otro truco para sacar más partido a wine es teclear wine y pulsar dos veces la tecla TAB, con lo que nos saldrá todos los comandos disponibles.

  9. Uno muy interesante es winecfg que nos permite elegir la versión de Windows a imitar, librerías DLL a sustituir por nativas, etc...


  10. También podemos asignar unidades a diversas rutas, una buena práctica de seguridad es quitar las que trae por defecto y poner en su lugar otra creada por nosotros.


  11. ¿Necesitas más rendimiento? Prueba con las siguientes opciones:
    1. Integración de escritorio > Tema > Ningún tema.
      Igual que en los Windows reales desactivar el servicio "temas" aumenta considerablemente el rendimiento, a cambio de ver las ventanas con un aspecto más antiguo.
    2. Gráficos > Configuración de las ventanas (más agresivo).
      Desactivando todas las opciones puede que consigas más rendimientos, aunque quitar las opciones para permitir que el gestor de ventanas decore y sobre todo controle las ventanas puede hacer más incómoda la interacción con las aplicaciones nativas. 
  12. Hay otras opciones avanzadas que no conozco porque aún no las he necesitado, si fuera así las añadiré a este artículo.

Hay otras opciones con lanzadores y paqueterías modernas, pero personalmente no me gustan porque las veo de funcionamiento oscuro, con requerimientos de hardware exagerados y complicada interoperatividad con otros programas.

Quien tenga curiosidad puede explorar esos caminos.

viernes, 12 de diciembre de 2025

Qemu gestionado por Virt manager

Qemu es un software de virtualización libre muy potente pero que requiere de complicados comandos y configuraciones para ponerlo en marcha.

Para facilitar la tarea tenemos el front-end virt-manager que facilita bastante el uso de qemu.


Antes de seguir debemos comprobar que nuestro sistema soporta virtualización nativa, para ello tecleamos el siguiente comando:

egrep -c '(vmx|svm)' /proc/cpuinfo

Debe darnos un valor mayor que 0, en caso contrario no seguimos. 

La siguiente comprobación es probar si tenemos kvm bien, para ello instalamos el paquete cpu-checker y tecleamos el siguiente comando, que de nuevo nos tiene que dar más de 0 para seguir:

sudo kvm-ok | grep '/dev/kvm exist' | wc -l 

Una vez hechas las comprobaciones instalamos tanto qemu como el front-end gráfico virt-manager con el comando:

sudo apt install virt-manager qemu-system-x86

También instalaría algunos paquetes extra más:

sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils vde2 

Una vez instalados tendremos un acceso directo en el menú de programas en;

Aplicaciones > Herramientas del Sistema > Gestor de Máquinas Virtuales

Puede que nos dé un error "QEMU/KVM - No conectado" en ese caso hay que revisar el servicio libvirtd y asegurarnos que aparece como "active (running)" para lo que tecleamos el comando:

systemctl status libvirtd

En caso de que aparezca como "inactive" podemos activarlo permanentemente con el comando:

systemctl enable --now libvirtd

Volveríamos a ejecutar el Gestor de Máquinas Virtuales y seguiremos los siguientes pasos:

  1. Nos vamos a las opciones:
    Archivo > Conexión > Añadir conexión
  2. Elegimos QEMU/KVM (sesión del usuario)


  3. Hacemos clic en esa sesión y creamos una máquina virtual:
    Archivo > Nueva Máquina Virtual
  4. Seguimos los pasos del asistente según lo que queramos hacer.

Encontraremos el acceso directo al font-end en el menú de sistema en:

Herramientas del sistema ► Gestor de Máquinas virtuales

En un próximo artículo veremos como crear y configurar máquinas virtuales. 

 

Enlaces de interés




viernes, 5 de diciembre de 2025

Chromium BSU, matamarcianos libre con gráficos espectaculares

Chromium BSU es un matamarcianos con licencia libre que más de uno hemos descubierto buscando cierto navegador y cometiendo el feliz error de equivocarnos de paquete.


Lo que hemos encontrado es un espectacular y trepidante matamarcianos de progreso vertical que no nos va a dejar ningún descanso hasta acabar con todas las naves enemigas.

El estado de la nave lo veremos como un destello rojo en la parte inferior de la pantalla que se va haciendo más intenso hasta que explotamos.

Está disponible para GNU/Linux, habitualmente en los repositorios oficinales, en el caso de Debian y derivadas lo podríamos instalar con un comando similar a éste:

sudo apt install chromium-bsu

Increíblemente, ocupa muy poco, en mi caso me descargó poco más de 4Gb pero dependerá lógicamente de si ya tenéis descargados paquetes necesarios que ya precisaban otros programas o no.

También está disponible para Windows, iPhone, PSP, Mac y varias versiones de UNIX que podéis encontrar en su página oficial:

https://chromium-bsu.sourceforge.io/

viernes, 28 de noviembre de 2025

Demo TENTE para Amstrad CPC, ¿cómo se hizo?

Hace unos años hice un carrusel de 43 imágenes de modelos de TENTE para simular lo que hubiera podido sacar la compañía como demo para los ordenadores de la época, en este caso en un Amstrad CPC.
 
Si todavía no tienes esta demo, la puedes descargar aquí
 


Esta demo la hice con mínima programación en Basic usando algunas herramientas que tenía a mano:

  • Las capturas ya las tenía echas hace tiempo para PC con los programa LDView y Povray, que no es que saque unos renders espectaculares pero precisamente por eso son imágenes ideales para pasarlas a ordenadores de 8 y 16 bits.
  • Para facilitar la conversión, algunas imágenes las retoqué con GIMP para reducirle el número de colores mediante la opción Colores y Posterizar.
    En su cuadro de diálogo vas subiendo la cantidad de colores hasta que se vea más o menos bien.
  • La conversión de las imágenes de PC a CPC la hice con el programa ConvImgCPC que te permite guardar imágenes comprimidas incluso con su paleta de colores. Aunque soporta la paleta de la gama plus opté por la estándar para poderlo ver en cualquier CPC, incluido mi Amstrad CPC6128.
    Con algunas tuve que jugar con diversas opciones hasta obtener un resultado aceptable.
    Por cierto, este programa incluye información para hacer el cargador Basic de las imágenes.
  • Para inyectar los archivos de imágenes resultantes usé CPCImgDSK pero bien podría haber usado directamente Retro Virtual Machine que sí usé para crear el cargador.

El listado del cargador fue éste:

10 ' TENTE 3D DEMO FOR AMSTRAD CPC
20 MEMORY &1FFF:LOAD"!dpkslide.bin",&A400
30 MODE 2:BORDER 0:INK 0,0:INK 1,26:PRINT"Tente 3D slide-show..."
40 READ numberofimages
50 FOR i=1 TO numberofimages
60 READ imagename$
70 LOAD"!"+imagename$+".scr",&2000
80 CALL &A400
90 NEXT
100 REM GOTO 50
110 CALL &BB18:REM pause
120 MODE 1
130 PRINT "DEMO TENTE 3D FINALIZADA"
140 PRINT "========================"
150 PRINT
160 DATA 43
170 DATA T3D,AUTOBUS,CRUZROJA,AERODESL,AUTOBAR
190 DATA AVION,LASERAY,BUSESPAC,VIKING,CASTILLO
200 DATA CENTROMC,COCHE,DEDALO,FICTENTE,CASA
210 DATA ADOSADO,TUXFLAT,USRESCUE,YATEXALO,VOLQUETE
220 DATA ERMITA,CHINESE,DESINALT,CABINA,LINKAUTO
230 DATA CHOZA,MOZAMBIQ,QUITANIE,TURANIO,TRENTOUR
240 DATA EXPLOESP,PAPAMOV,ESURANIO,HAITOBUS,PATRU91
250 DATA TRASHTRU,TUXTENTE,TRANSPSP,TRANSAER,SUNSHINE
260 DATA SUPERAT,SCUTTY,SATURNOM

Si no tienes un Amstrad real recuerda que puedes usar cualquier emulador de Amstrad que soporte disco para disfrutarla. 

viernes, 21 de noviembre de 2025

SANYO M2402-7F, reparaciones (I)

Voy a empezar una nueva sección donde contaré mis aventuras y desventuras reparando, o al menos intentando, mi colección de radiocassettes y otros aparatos que están faltos cariño para volver a ser lo que fueron.

El primer conejillo de indias va a ser este radiocassette Sanyo M2402-7F de los años 70 y que perteneció a mis abuelos.


Como veis, lo primero que hago es identificar el modelo, algo que suele aparecer en la parte de atrás del aparato, en este caso en una pegatina con las características, muy importante para conseguir información si hay complicaciones.

El problema de esta unidad es que el cassette se escucha lento, por lo que sospecho que toca cambiar la goma que ya tiene medio siglo.

Para acceder al mismo retiro los tornillos que hay en la parte de atrás y lo abro como un libro con cuidado con el cable de alimentación que está soldado a la fuente de alimentación, ya que aún no era común el conector de 8 de alimentación.


Me llama la atención que, incluso están indicados donde van los tornillos de la placa principal, igualito que ahora que casi hemos perdido el derecho a reparar.

Como siempre hay que tener mucho cuidado y orden para que no se estropeen los tornillos y luego lo volvamos a montar como antes, cada uno en su sitio.

Para retirar la goma y cambiar la nueva he tenido que retirar el tornillo de la rueda grande a la que va la goma porque no pasaba, también he tocado el tornillo que hay en el motor, me parece que esto ha sido un error.

Cierro el radiocassette y hago la prueba con una cinta que no sea muy valiosa por si se enrenda y... bueno, no se enreda pero ahora se escucha más rápido y con interferencia.

Así que toca vuelvo a abrir y repasar, pensando en que algún tornillo era el potenciómetro y resulta que el culpable era...

 

La goma que era muy gruesa, pongo otra más fina y ya suena la música a la velocidad correcta. 

Me queda quitarle un sonido de estática, pero la limpieza de E.T. la dejo para otro día. 

Continuará.... 


viernes, 14 de noviembre de 2025

Mostrar el contenido de un archivo de texto en Amstrad CPC

Si en un Amstrad CPC tecleas el comando:

CAT misdatos.txt

No te mostrará el contenido del archivo de nombre misdatos.txt, en el mejor de los casos te mostrará el nombre del archivo si está en el directorio del disquete o si lo encuentra recorriendo la cinta.

Entonces, ¿cómo puedo ver el contenido de un archivo de texto en el Amstrad CPC?

La idea es sencilla: 

  1. Para empezar ponemos el ordenador en MODE 2 para usa el modo de 80 columnas.
  2. Abrimos el archivo como texto con el comando:
    OPENIN "misdatos.txt"
  3. Abrimos un bucle que vaya leyendo líneas por el canal 9 hasta que llegue al final del archivo al tiempo que la sacamos por pantalla (canal por defecto) o por impresora (canal 8):
    WHILE NOT EOF
    LINE INPUT #9,l$
    PRINT l$
    WEND
  4. Cerramos el archivo como texto:
    CLOSEIN
  5. El programa lo podemos enriquecer para que nos pida el nombre del archivo a mostrar, detecte el final de línea y nos pida interacción, sacar la salida por pantalla o impresora (canal 8), etc... como podéis ver en este ejemplo real del programa que usaba en su momento para esta tarea.


Esta técnica es muy útil para acompañar de un manual interactivo a un programa o juego que se vea en el propio Amstrad.

Eso sí, si incluís un archivo creado en un PC hay que definir el archivo de texto con las siguientes propiedades:

  • Character encoding ASCII, ISO-8859-1 o ISO-8859-15. 
  • Saltos de línea de DOS/Windows.

Hay que tener especial cuidado con evitar acentos, eñes y otros caracteres especiales que no existan en los CPC o sean distintos.

viernes, 7 de noviembre de 2025

Accesos directos en el menú de MATE con categorías y subcategorias (niveles ilimitados)

Este artículo trata sobre algo que tenía ganas de hacer y que es muy difícil encontrar información: tener accesos directos en menús en categorías y subcategorías nuevas y distintas a las que ya tienes en el sistema. Vamos a verlo paso a paso.

Antes de continuar, recomiendo tener activado etckeeper por si nos equivocamos en la creación de la estructura de accesos directos y categorías, aunque en todo caso se pueden borrar los archivos que relacionan accesos directos y categorías.
 

1. Crear un acceso directo

Hace tiempo expliqué como crear un archivo .desktop para crear un acceso directo, en este caso, como queremos que sea un acceso en el menú del sistema, debemos crearlo en la carpeta /usr/share/applications, por poner un ejemplo muy simple, podríamos crear un archivo caprice32.desktop para crear un acceso directo al emulador Caprice32 con este contenido:

[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=Caprice 32 (Amstrad CPC)
Name[es]=Caprice 32 (Amstrad CPC)
Comment=Amstrad CPC/CPC+ Emulator
Comment[es]=Emulador de Amstrad CPC/CPC+
Icon=caprice32cp
Exec=./cap32
Path=/opt/linuxemus/caprice32
Terminal=false
Categories=Games;

En este ejemplo, definimos:

  1. Las dos primeras líneas definen que el tipo de acceso es para ejecutar una aplicación (Type=Application) y la codificaciones de caracteres, unicode (UTF-8) para representar acentos, por ejemplo. 
  2. El nombre del acceso directo (Name).
  3. La descripción que se mostrará al situar el ratón sobre el mismo (Comment).
  4. El nombre del icono, que en este caso debería estar creado en la ruta absoluta /usr/share/pixmaps/cap32.png (el formato de imagen recomendado es png).
  5. El comando a ejecutar, si se va a ejecutar en una ruta concreta debe ir precedido por ./ mientras que si se puede ejecutar en cualquier directorio sería simplemente:
    Exec=cap32
  6. La ruta desde la que se va a ejecutar el comando, en este caso /opt/linuxemus/caprice32, si es un comando que se puede ejecutar desde cualquier ruta no ponemos una línea que empieza por Path=
  7. Terminal, indica si se va a abrir una terminal para ejecutar el programa o no, es útil, cuando vamos a ejecutar programas que se muestran en consola.
  8. La categoría en la que va a estar el programa (Categories), en este caso iría a la de juegos pero en este ejemplo habría que eliminar esta línea si solo queremos que aparezca en la categoría que vamos a crear. 
  9. Las etiquetas que terminan en [es] indican el texto alternativo para el idioma español. 

 

2. Crear una nueva categoría (de primer nivel)

Si queremos crear una nueva categoría, por Ejemplo emuladores hay que añadir tres archivos más:

  1. Un nuevo icono para la categoría, por ejemplo,  /usr/share/pixmaps/emulators.png.
  2.  El archivo que define la nueva categoría, que debe estar en la ruta /usr/share/desktop-directories, vamos a llamar al archivo emulators.directory con el siguiente contenido:
    [Desktop Entry]
    Version=1.1
    Name=Emulators
    Name[es]=Emuladores
    Comment=Emulation and retrocomputing
    Comment[es]=Emuladores y retroinformática
    Icon=emulators
    Type=Directory
  3. El archivo que indica que el acceso directo previamente creado debe estar en esta nueva categoría que debe estar en la ruta absoluta /etc/xdg/menus/applications-merged/caprice32cp.menu con el siguiente contenido.
    <!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
        "http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd">
    <Menu>
        <Name>Applications</Name>
        <Menu>
             <Menu>
               <Name>Amstrad</Name>
               <Directory>amstrad.directory</Directory>
               <Include>
                 <Filename>caprice32cp.desktop</Filename>
               </Include>
             </Menu>
        </Menu>

 Y con esto ya tendríamos el acceso directo en nuestra nueva categoría emuladores.

Repetimos todo el proceso para todos nuestros emuladores, creando sus accesos directos y creando nuevos archivos para relacionarlos con la categoría, que deben ser exactamente iguales, salvo por la línea que empieza por <Filename> 

 

3. Crear más profundidad de categorías

Bueno, pues ya hemos creado accesos directo para las 3 docenas de emuladores que tenemos instalados, pero el menú se hace muy largo y desorganizado, ¿no podríamos crear subcategorías para cada tipo de emulador?

Pues sí, para ello solo tenemos que crear un nuevo acceso directo y un nuevo archivo de definición de categoría como hemos visto en el punto anterior, en las rutas:

  • /usr/share/pixmaps/amstrad.png
  • /usr/share/desktop-categories/amstrad.png

El archivo que va a tener que cambiar algo con respecto al anterior caso va a ser el de relaciona el acceso directo con la categoría ya que debe definir que dentro de la categoría Emuladores debe haber una categoría Amstrad y dentro de ella el acceso directo al emulador, de forma que el archivo /etc/xdg/menus/applications-merged/caprice32cp.menu ahora quedaría así:

 <Menu>
    <Name>Applications</Name>
    <Menu>
         <Name>Emulators</Name>
         <Directory>emulators.directory</Directory>
         <Menu>
           <Name>Amstrad</Name>
           <Directory>amstrad.directory</Directory>
           <Include>
             <Filename>caprice32cp.desktop</Filename>
           </Include>
         </Menu>
     </Menu>
</Menu>

El resto de emuladores de Amstrad deben tener un archivo igual para relacionar las categorías y el acceso directo que solo van a cambiar en el nombre del archivo y en la referencia a su acceso directo en la línea <FILENAME>

Igualmente podríamos crear más subcategorías para el resto de sistemas, que diferirían con ésta de Amstrad también en las dos líneas que definen la subcategoría y que deben ser iguales en las del mismo sistema para no duplicar subcategorías.

Este truco debe funcionar en la mayoría de entornos gráficos de GNU/Linux.