Asignar icono en la barra de tareas a una aplicación AppImage

Estoy usando Todoist como aplicación de escritorio, y aunque le había creado un fichero de configuración para el menú en ~/.local/share/applications/todoist-appimage.desktop asignando un icono no me lo estaba mostrando en la barra de tareas, mostraba un icono genérico de una rueda tipo “cog”.

La solución es añadir la clase de ventana a ese fichero .desktop. Obtenemos la clase de ventana ejecutando

xprop WM_CLASS

y pulsando sobre la aplicación abierta de Todoist. Nos devuelve dos valores:

WM_CLASS(STRING) = "todoist", "Todoist"

Nos interesa el primero. Añadimos una línea en el fichero .desktop que sea

StartupWMClass=todoist

Y ya nos mostrará el icono en la barra de tareas al abrir la aplicación.

Como referencia, este es el fichero .desktop completo:

[Desktop Entry]
Name=Todoist AppImage
Exec=/media/koas/Ext4Bucket/AppImageApps/Todoist-linux-9.26.4-x86_64-latest.App>
Type=Application
Terminal=false
MimeType=x-scheme-handler/todoist;text/html;x-scheme-handler/com.todoist;
Icon=/usr/share/icons/hicolor/512x512/apps/todoist.png
Comment=
PrefersNonDefaultGPU=false
StartupWMClass=todoist

Problemas con xorg consumiendo mucha CPU

Estoy recolocando el ordenador en otra mesa y estoy continuamente cacharreando con los cables para ordenarlos y que estorben lo menos posible. Después de hacer uno de estos cambios vi que el teclado y el ratón iban con bastante lag y el proceso xorg estaba consumiendo muchos recursos de CPU

El problema era que el cable HDMI de uno de los monitores no estaba bien conectado, lo que hacía que se estuviera conectando / desconectando continuamente y eso era lo que provocaba el alto consumo de recursos. Después de apretarlo bien el problema desapareció.

Error de MokManager al instalar Linux Mint

Ha sido una pequeña odisea instalar Linux Mint en un portátil que ya traía Windows 11 instalado. Después de desactivar la opción Secure Boot de la BIOS y la de Fast Start en Windows al arrancar desde el lápiz USB de Linux Mint aparecía este error:

Failed to open \EFI\mmx64.efi - Not Found
Failed to load image : Not Found
Failed to start MokManager: Not Found
Something has gone seriously wrong: import_mok_state() failed: Not Found

La solución es descargar la versión más reciente de Ubuntu a un USB y arrancar desde ella. Ubuntu iniciará MokManager y nos presentará un menú donde debemos seleccionar la opción Continue boot. Tras hacer esto aparecerá el menú de GRUB de Ubuntu.

Ahora podemos apagar el equipo y volver a poner el USB de Linux Mint, y ya arrancará sin problema.

Solucionar error “the input device is not a TTY” al ejecutar comandos desde PHP

Al ejecutar desde PHP un comando que requiere una terminal nos encontraremos este error. Una forma de solucionarlo (¡gracias ChatGPT!) es utilizar el comando script:

script -q -c 'comando_a_ejecutar' /dev/null

-q es el modo silencioso y para evitar que se redirija la salida a un fichero usamos el /dev/null final.

Trazar imágenes (convertir de bitmap a svg)

Guardamos el logo o lo que queramos trazar en formato pbm (se puede hacer desde Photoshop) y nos instalamos potrace. Cuando lo tengamos ejecutamos este comando y ¡magia!

potrace input.pbm -s -o output.svg

Actualización abril 2026: al usar este método para la mascota de PadTap el resultado no ha sido del todo bueno, lo ha simplificado demasiado. Imagino que se podrá ajustar el proceso de alguna forma, pero al final he tardado menos usando https://www.logoai.com, que lo ha hecho perfecto, manteniendo todos los colores y formas originales.

Virtualhost de Apache para SPA de Vue y API con PHP

<VirtualHost *:9080>
    # Vue.js Single Page Application
    DocumentRoot /var/www/app/dist
    <Directory "/var/www/app/dist">
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted

        RewriteEngine On
        RewriteBase /
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule . /index.html [L]
    </Directory>

    # PHP API
    Alias "/api" "/var/www/app/api"
    <Directory "/var/www/app/api">
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted

        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^ index.php [L]
    </Directory>
</VirtualHost>

En un caso como este todas las peticiones a la API van a dominio.com/api/XXXXX