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. 

viernes, 31 de octubre de 2025

Abbaye des morts (remake libre GPL3 hecho con Godot Engine)

El remake L'Abbaye des morts hecha por Nevat es una versión libre hecha con Godot bajo licencia GPL3 basada en el divertido juego freeware que en su día hizó Lomomalito con música de Gryzor.

Si pulsamos la tecla C al inicio del juego podemos disfrutar de los gráficos mejorados.


Curiosamente en la pantalla de inicio pone que es un juego Freeware, supongo que es un despiste porque en la web y en el código pone que es GPL/3.

La respuesta es muy buena y sigue siendo un juego muy divertido y absorbente.


Para descargarlo lo mejor es ir la página de descargas y bajarnos la última versión disponible, podemos elegir entre 4 arquitecturas: PC de 64 y 32 bits o ARM de 64 o 32 bits.

Como son binarios portables, los puedes descargar en cualquier carpeta, darle permisos de ejecución y ejecutarlo.

Mi recomendación es copiarlo luego a /usr/local/bin y así podemos ejecutarlo como un comando más del sistema como otro comando más del sistema, por ejemplo:

abbayedesmorts-godot-1.1.0-linux-arm64

También sería interesante crearle un acceso directo para nuestra mayor comodidad.

Por supuesto, como software libre, tenemos disponible el código fuente para analizarlo y compilar a partir de él.

viernes, 24 de octubre de 2025

ghostwriter: el editor de lenguaje markdown

Ghostwriter, es un editor de archivos de lenguaje de marcas, también conocido como markdown.


Markdown es un lenguaje para la creación de documentación técnica, los típicos archivos de documentación README.md que acompañan al código en sitios de hospedaje de código, tales como gitlab, github, etc...

Ghostwriter es software libre GPL3, está dentro del proyecto KDE y suele estar incluido en los repositorios de las distros, en el caso de Debian y derivadas se puede instalar con el comando:

sudo apt install ghostwriter 

Este programa permite crear, visualizar y ver estos archivos mostrando una pantalla principal dividida en tres zonas, de izquierda a derecha:

  • Información del documento: esta zona, que es la más pequeña, solo se muestra si hemos abierto algún documento y nuestra resolución horizontal es lo suficientemente amplia.
    Muestra unos iconos a la izquierda donde podemos elegir ver:
    • Esquema de documento: es un índice interactivo que nos permite ir rápidamente a diferentes zonas del documento, los items los genera a partir de los títulos que vayamos creando en el documento.
    • Estadísticas de la sesión actual: muestra información sobre nuestro trabajo en esta sesión de trabajo.
    • Estadísticas del documento: Da información como el número de palabras, caracteres, oraciones, párrafos, páginas. 
      También el tiempo, facilidad y nivel de lectura
    • Hoja de referencia: muestra la sintaxis del propio lenguaje markdown.
  • Código markdown: aquí es donde escribimos el código.
  • Resultado visual: muestra el resultado del código que introducimos reflejando los cambios en tiempo real.

También trae muchas funciones extra como generador de formatos, exportación html, corrector ortográfico, zoom, etc..

En conclusión, éste es uno de esos programas que debes tener instalado sí o sí en tu ordenador, en especial si haces documentación en formato markdown.

viernes, 17 de octubre de 2025

Controla tus cambios de configuración con etckeeper

etckeeper es una herramienta para controlar todos los cambios de configuración que hagas haciendo uso de git, de manera que si te equivocas al hacer una configuración vas a saber que has cambiado y hasta volver atrás.

Para que sea efectiva lo ideal es instalarla justo al completar la instalación del sistema operativo junto al propio git, en el caso de Debian y derivadas lo podrías hacer con un comando como éste:

sudo apt install git etckeeper

A partir de este momento la carpeta /etc estará controlada por git, de manera que cuando hagas ciertos cambios como instalar paquetes se van a crear commits registrando la operación.

Hay que tener en cuenta que dichos cambios se registran con permisos para root, por lo que tenemos que hacer las operaciones con ese usuario, ya sea con sudo o su-

Si queremos ver los cambios que se han ido haciendo:

sudo git log

Si hacemos cambios manuales y queremos registrarlos:

sudo git add .
sudo git commit -m "Descripción de los cambios en la configuración."

Si queremos renombrar el último commit:

sudo git commit --amend

Por lo demás podemos tener el mismo control que en cualquier otra carpeta con código gestionada por git.


viernes, 10 de octubre de 2025

Crear un disco de 3.5 para Amstrad CPC desde tu PC retro

Para crear discos de 3.5" que pueda leer tu Amstrad vas a necesitar varias cosas:

  • Un PC con disquetera con conexión interna clásica, NO USB con el sistema operativo Windows XP.
  • El programa CPCDiskXP.
  • Disquetes de 3.5" DD (double density), si no se tienen se pueden usar HD (high density) tapándoles el agujero de la derecha con cinta adhesiva que pegue bien y no se pueda desprender.
  • Un Amstrad CPC con controladora de disco al que se le haya conectado una disquetera de 3.5".

Instalación de CPCDiskXP

  1. Nos descargamos la última versión.
  2. Instalamos el driver para la disquetera, archivo FdInstall.exe.
  3. Copiamos el programa CPCDiskXP.exe en una carpeta.
  4. Creamos un acceso directo a CPCDiskXP.exe para nuestra comodida.

 

Uso de CPCDiskXP

  1. Ejecutamos el programa desde el acceso directo o haciendo doble clic en CPCDiskXP.exe
  2. Formateamos el disco DD, para ello hacemos clic en el botón FORMAT, seleccionamos la cara a formatear y pulsamos el botón Format Disk.



    No uséis la opción Side A & B porque suele fallar, tenéis que formatear primero la cara A y luego la cara B.
    El resto de opciones las dejamos con sus valores por defecto si queremos que funcione en un CPC con sus BIOS originales.

  3. Un vez formateado pulsamos en el botón Disk File => Floppy.

  4. Seleccionamos el archivo DSK.

  5. Seleccionamos la cara A (Floppy Head 1) o cara B (Floppy Head 2)

  6. Pulsamos Write Disk.



  7. Repetir las veces que se desee y pulsar Exit al terminar.

  8. Comprobar en el CPC que todos los discos y caras funcionan correctamente.

 

Como alternativa para los que uséis Windows más modernos o necesitéis crear disquetes en otros formatos está Omniflop 64, yo no lo he probado, si alguien lo prueba que nos cuente su experiencia en los comentarios. 

 

viernes, 3 de octubre de 2025

Descargar un sitio web con wget, opciones mejoradas y limitaciones

Voy a poner algunos ejemplos útiles del comando wget, si conocéis más podéis ponerlos en los comentarios:

  • Descargar archivos sueltos de Internet: simplemente pasánles su ruta completa en la red:
    wget http://www.sitioinventado.com/recurso.mp4

  • Continuar la descarga por donde se quedó:
    wget -c http://www.sitioinventado.com/recurso.mp4
    Con este parámetro, si se ha interrumpido la descarga continuará por donde se quedó en lugar de empezar por el principio.
    No debes usarlo si el archivo va cambiando de versión, pues en el mejor de los casos no hará nada y seguirás con la versión antigua.

  • Descargar un sitio web estático NO protegido:
    wget -rkc http://www.sitioinventado.com
    En esta caso pasamos varios parámetros:
    • -r : descarga recursiva
    • -k: convierte los enlaces en rutas relativas para navegar por el sitio descargado sin ir a Internet.
    • -c: continuar si se ha interrumpido el comando previamente.

  • Descargar un sitio web estático protegido por robots:
    wget -e robots=off -r -np  --page-requisites --convert-links http://www.sitioinventado.com
    En esta caso, aparte de los parámetros ya vistos pasamos algunos nuevos:
    • - e: ejecuta un comando, en este caso robots=off, para hacer caso omiso al archivo robots.
    • - np (--no-parent): Descarga recursiva en la que no descarga los archivos que están por encima de la ruta indicada.
    • -- page-requisites
    • -- convert-links: convierte los enlaces en rutas relativas para navegar por el sitio descargado sin ir a Internet (igual que -k).

  • Descargar archivos sin chequear el certificado:
    wget --no-check-certificate http://www.sitioinventado.com/recurso.mp4
    Esto puede tiene algún riesgo si no es un sitio confiable.

  • Profundidad ilimitada en los enlaces de descarga:
    wget -rkc -l 0 http://www.sitioinventado.com
    Por defecto el nivel máximo de profundidad es 5, pero lo podemos cambiar con el parámetro -l, si ponemos 0 significa profundidad ilimitada.

  • Simular que estamos descargando desde un navegador:
    Hay algunos sitios que solo nos permiten descargar si en la cabecera de la petición ven que estamos accediendo desde un navegador, eso también se puede simular:
    wget http://www.sitioinventado.com/recurso.mp4 --header="User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:23.0) Gecko/20100101 Firefox/23.0"


Todas estas opciones las puedes combinar según tus necesidades.

viernes, 26 de septiembre de 2025

Denise, emulador de Commodore 64 y Amiga

Denise, es un interesante emulador de ordenadores Commodore, en concreto del C64 y el Commodore Amiga.


Podéis instalarlo con RetroMultiInstaller, que ahora os creará el acceso directo en el menú en una nueva subcategoría Commodore dentro de la categoría Emuladores, aunque la instalación manual es tan sencilla como bajarse el último deb de su página oficial e instalarlo con dos comandos:

sudo apt install deniseXXX.deb
sudo apt install -f

Nada más iniciar el emulador os vais a encontrar un problema si no domináis el alemán, ya que los menús en principio aparecen en ese idioma, para cambiar el idioma, castellano en nuestro caso, vamos a las siguientes opciones:

Optionen ►  Einstellungen ► Sprache ► Spanisch

E instantáneamente aparecerán los menús en nuestro idioma.

En los menús tenemos opciones para el C64 y el Amiga, si le damos a reiniciar en el item correspondiente de cada uno de estas opciones arrancará una máquina u otra, ojo, el Commodore no necesita configuraciones ni archivos extra, mientras que si no configuramos el Amiga nos arrancará la distribución Aros.


En el modo Amiga si haces clic dentro de la pantalla captura el ratón, que puedes recuperar haciendo clic con el botón central (la rueda). 

Navega por los menús del emulador para descubrir todas sus posibilidades.