GPG Agent Pinentry

Entrada exprés para contaros una pequeña batalla con pinentry-gnome3 y cifrado de mails en claws-mail, por si os topáis con el mismo problema. Resulta que claws-mail se congela cada vez que intento abrir un mail cifrado; raro, muy raro, llevo años utilizando este cliente de correo electrónico y es uno de los programas más sólidos con los que he trabajado, nunca falla. Dudo que el problema sea de claws-mail, así que me envío un mail sin cifrar y compruebo que lo abre sin rechistar. Vale, seguramente el error tenga que ver con alguno de los módulos que estoy utilizando para cifrar el correo: PGP/Core o PGP/MIME. Lanzo claws-mail en modo debug y me guardo la salida en un fichero de texto para revisarla después:

$ claws-mail --debug > debug.txt

Intento abrir un correo cifrado, la interfaz se vuelve a colgar. Compruebo el log y veo que los módulos asociados a GPG cargan sin problema. Ni idea de qué está pasando, pero se me ocurre que si el log no tira errores, pero la interfaz se cuelga quizá el problema es que el programa está esperando una acción por mi parte que no se muestra en pantalla… una acción como por ejemplo introducir la contraseña de cifrado para desencriptar los mensajes. Y allá voy, lanzo claws-mail desde el terminal y vuelvo a intentar abrir un mail cifrado ¿adivináis qué? El cuadro de diálogo para introducir la contraseña de cifrado (pinentry) me aparece en el terminal (en la versión ncurses). Acabamos de cazar el bicho, el fallo viene de la versión GUI de pinentry. Ni idea de qué versión estoy utilizando así que:

$ aptitude search '~i pinentry'

Me dice que tengo instalados:

pinentry-curses pinentry-fltk pinentry-gnome3 pinentry-gtk2

Así que me voy a /usr/bin a ver a donde apunta el binario:

$ ls -lah /usr/bin | grep pinentry
pinentry -> /etc/alternatives/pinentry

$ ls -lah /etc/alternatives/pinentry
/etc/alternatives/pinentry -> /usr/bin/pinentry-gnome3

Ahí tenemos el origen del problema, pinentry-gnome3. Si lo ejecuto desde el terminal, me dice que:

No $DBUS_SESSION_BUS_ADDRESS found, falling back to curses OK Pleased to meet you

Ahora podemos hacer dos cosas, intentar entender qué está fallando con ese programa en particular, o sustituirlo por otro. Empecemos por la segunda:
# update-alternatives --config pinentry

Y seleccionamos pinentry-gtk2. Reiniciamos gpg-agent, volvemos a probar y voilà, la ventana para meter contraseñas está de vuelta y ya podemos descifrar e-mails de nuevo. Decido desinstalar pinentry-gnome3, total claws-mail sigue estando en GTK2, así que me da un poco igual que el pinentry también lo esté.

Para los curiosos que queráis saber de dónde venía el error o cómo solucionarlo, echad un vistazo aquí.

Hacía tiempo que no me peleaba con mi debian, testing nos tiene muy mal acostumbrados…

Happy hacking!!

 

Sway: un tiling window manager para wayland

Gentes del ciberespacio, no quepo en mí de gozo al encontrarme por pura casualidad con que sway, el fork de i3 para Wayland, está disponible en los repositorios de Debian testing. A tiro de:

# aptitude install sway

Que te instala ya de paso un gestor de fondos de escritorio, unos cuantos wallpapers y las imprescindibles suckless tools. Tampoco está de más instalar el idle management daemon (la traducción es un poco peliaguda, viene a ser un demonio para Wayland para gestionar procesos idle -es decir, que no están siendo utilizados por ningún programa en un momento dado-):

# aptitude install swayidle

Y por supuesto el screenlocker para evitar que os curioseen en los tres minutos que dejáis el ordenador para ir a por café:

# aptitude install swaylock

Sway mola. Mola de cojones. Mola tanto como i3, sólo que en lugar de utilizar Xorg utiliza Wayland. Y tiene casi todas las funciones de i3 más algunas extra (como los famosos gaps). Y si ya usas i3, vas a poder reciclar tu configuración, para que la transición sea lo más suave e indolora posible.

Dicho esto, yo ahora estoy utilizando dwm, así que no he probado extensivamente la versión de sway empaquetada en testing (1.4). Si pensáis migrar desde lo que sea que estéis utilizando, yo recomendaría mantener ambos instalados durante un tiempo, al menos hasta que hayáis comprobado que todo va bien. A su favor tengo que decir que cuando utilizaba i3 compilé una versión seguramente anterior a esta y no encontré ningún fallo que impidiera utilizarlo en el día a día.

Si os animáis a juguetear un poco, sed buenos y dejadnos vuestras impresiones en los comentarios.

Happy hacking!

Enlaces de interés:

Documentación de sway
Guía de migración desde i3
Chat de soporte
Subreddit sway

 

Pandoc: la navaja suiza de los formatos markup

El título es explicativo en sí mismo, pandoc es un conversor de formato markup a un montón de formatos de salida:

  1. Otros formatos markup (markdown, restructured text, asciidoc…)
  2. HTML4/5
  3. Formatos e-book (EPUB, FictionBook2)
  4. Formatos de documentación (GNU TexInfo, Haddock markup)
  5. Formatos Roff
  6. Formatos TeX (LaTeX, ConTeXt)
  7. Formatos XML (DocBook, JATS, TEI)
  8. OPML
  9. Formatos de procesador de textos (docx, odt, open document xml)
  10. Jupyter notebooks (ipynb)
  11. Formatos Wiki markup (MediaWiki, DocuWiki…)
  12. Formatos de presentación (LaTeX Beamer, reveal.js…)
  13. PDF

Podemos encontrar el paquete en repositorios Debian, así que instalarlo es pan comido. Para convertir entre formatos:

El parámetro standalone indica que queremos generar un fichero html válido (incluyendo cabecera y cuerpo); los parámetros –from y –to indican los formatos de entrada y salida; el parámetro -o indica el fichero de salida.

Para convertir a PDF, necesitamos LaTeX (pdflatex, xelatex, lualatex) o alguno de estos paquetes: pdfroff, wkhtml2pdf, prince, weasyprint.

El comando es bastante sencillo, si queremos producir el fichero con LaTeX (pdflatex):

Y si queremos utilizar un motor alternativo (wkhtml2pdf en este ejemplo):

Para más información, siempre es recomendable acudir a la guía de usuario. Y si no os sentís muy cómodos con la línea de comandos, hay una demo del conversor en versión web aquí.

¡A darle caña al markdown!

 

Clipmenu: un gestor de portapapeles minimalista

Al hilo de la anterior entrada sobre la filosfía KISS, hoy vamos a hablar de clipmenu, un gestor de portapapeles minimalista que se integra a la perfección en dmenu. Desafortunadamente, no lo tenemos en repositorios Debian, pero instalarlo es tan sencillo como:

a) Instalar las dependencias:

b) Descargar los scripts de la web:

c) Lanzar el demonio al arranque:

Editamos el archivo .xinitrc en nuestra home y añadimos:

Ejemplo de uso:

(Autor: Chris Down. Fuente: https://github.com/cdown/clipmenu)

Y listo, ahora cada vez que lancemos el script clipmenu obtendremos una lista con el contenido de nuestro portapapeles (por defecto muestra 8 entradas, pero se puede editar el script para ampliarlo o reducirlo). Para copiar una de las entradas sólo hay que pulsar intro y para pegarla, la combinación de teclas habitual.

Fácil ¿verdad?

 

Keep It Simple Stupid

Hace tiempo que no dedicamos una entrada al principio KISS y a su aplicación al mundo del software. En pocas palabras, software sencillo que hace una cosa y la hace bien. Optimizar recursos. Hacer más con menos. Minimalismo.

La filosofía KISS no implica renunciar, sino optimizar. Significa pensar en qué necesitamos y cómo podemos conseguirlo de la manera más eficiente posible. Un concepto muy extendido cuandose habla de minimalismo en el software es el de bloat o bloatware. El significado de bloated es “hinchado, inflamado” y en este contexto hace referencia a código que añade características o funciones innecesarias que incrementan el uso de recursos. Por supuesto, existe un amplio debate en torno a qué es y que no es bloatware, y se trata de una cuestión fundamentalmente subjetiva. A mi el sentido común me dice que si lo utilizas, no es bloatware. Y por tanto, desde el entorno de escritorio más pesado hasta el gestor de ventanas más minimalista pueden ser considerados bloated, o no. Quizá necesites todas y cada una de las funciones de un gestor de archivos con interfaz GUI o quizá te sirva con ranger. Puede que no necesites que tu gestor de ventanas organice tus ventanas automáticamente. O a lo mejor es algo fundamental para tu flujo de trabajo. Gnome puede ser bloatware, dwm puede ser bloatware.

Disertaciones conceptuales a parte, en esto de programar software sencillo, la gente de suckless hace un trabajo excelente. Entre sus herramientas más famosas se encuentran el gestor de ventanas dwm, la suite suckless-tools (con dmenu y slock a la cabeza), el emulador de terminal st (simple terminal) y el navegador web surf. Hoy vamos a echar un vistazo a dwm y a algunas aplicaciones ligeras que conjugan la mar de bien con un flujo de trabajo minimalista. Casi, casi nos lo podemos tomar como un “aplicaciones ligeras (III)”. Hay infinidad de sitios donde podéis encontrar información sobre dwm, así que no me voy a extender demasiado.

Conceptos básicos sobre dwm:

  1. Es un tiling window manager, organiza ventanas automáticamente según una distribución (“layout”) predefinida para ocupar el máximo espacio posible en pantalla.
  2. Es sencillo (menos de 2000 líneas de código) y modular (hay una buena colección de parches que permiten personalizarlo.
  3. Está escrito en C, y se configura editando un header file (config.h) y recompilando.
  4. En lugar de escritorios virtuales trabaja con tags: la principal diferencia es que una misma ventana puede estar etiquetada en varios tags.

Compilación e instalación

Descargamos el código fuente de la web de suckless:

wget https://dl.suckless.org/dwm/dwm-6.2.tar.gz

Accedemos al directorio y compilamos:

make clean install

Y listo, en 2-3 segundos tenemos dwm compilado con la configuración por defecto. Para personalizarlo, editamos el fichero config.h y recompilamos. Aunque es bastante intuitivo, siempre es recomendable consultar el manual antes de tocar nada.

Aquí os dejo el mío como ejemplo:

Parcheando dwm

La idea detrás de dwm es ofrecer un software sencillo, que hace una cosa y la hace bien. Sin embargo, hay un montón de parches que permiten añadir distintas funcionalidades a dwm. El procedimiento es sencillo:

patch -p1 < parche
make clean install

El parámetro -p se refiere al nivel de directorio en el que se encuentra el código a parchear. Por ejemplo, si estamos en el mismo directorio, utilizaremos -p1. Aviso de que parchear el código fuente de dwm puede romper cosas, si pensáis utilizar más de un parche idlos incorporando uno a uno (parchear, compilar, parchear, compilar…).

Iniciando una sesión gráfica sin gestor de inicio de sesión

a. Instalamos xinit.

b. Creamos el archivo .xinitrc en nuestra /home:

Aquí podéis lanzar los programas que necesitéis al inicio. Importante, la última orden debe ser el exec dwm que lanza el gestor de ventanas.

c. Tecleamos startx después de loguearnos con nuestro usuario y contraseña.

KISS software

Estas son las aplicaciones ligeras que utilizo normalmente:

1) Gestor de ventanas: dwm
2) Compositor: compton
3) Demonio de notificaciones: dunst
4) Lanzador de aplicaciones: dmenu
5) Capturas de pantalla: scrot
6) Terminal: st
7) Editor de texto: vim / nano
8) Editor de texto GUI: mousepad
9) Gestor de fondos de escritorio: nitrogen
10) Gestor de temas GTK: lxappearance
11) Herramienta de configuración de monitores: lxrandr + xrandr
12) Navegador de archivos: pcmanfm / ranger
13) Lector RSS: newsbeuter (debian stable) / newsboat (debian testing/sid)
14) Cliente IRC: irssi
15) Cliente FTP: ftp/sftp en terminal / filezilla
16) Visor de imágenes: viewnior
17) Visor de PDF: zathura + tabbed / qpdfview (tiene pestañas)
18) Gestor de portapapeles: clipmenu

Lógicamente, esto no es una lista exhaustiva de todo el software que utilizo. Faltan muchos imprescindibles (GIMP, Inkscape, Darktable, LibreOffice, Calibre…) que no son tan ligeros y que seguro que todos conocéis.

Dudas, sugerencias y/o críticas en los comentarios.

Happy desktop hacking!!

[Editado 30/12/2019]

Para que las teclas de brillo funcionen con los comandos incluídos en el config.h con tarjeta gráfica intel:

  1. Creamos el archivo /usr/share/X11/xorg.conf.d/20-intel.conf como root
  2. Añadimos:

Guardamos ¡y listo!

Entradas anteriores:

¿Alguien dijo tiling?

Aplicaciones ligeras

Aplicaciones ligeras (II)

 

Calibre congelado en Debian testing

Me he topado con este mensaje en mi último update en Debian testing:

calibre (4.0.0+really3.48.dfsg-1) unstable; urgency=medium

Due to the removal of Python 2 from Debian, support for necessary modules
to run Calibre >= 4.0.0 are not available.

We recommend users to use upstream Calibre packages to obtain new
features and security fixes, until upstream together with plugin
authors switch to Python3. Until that point Calibre in Debian will be
frozen at the last 3.NN version (3.48) and no further features or security
fixes can be applied
.

— Norbert Preining <[email protected]> Sun, 06 Oct 2019 09:31:44 +0900

Que viene a decir que dado que se va a eliminar Python 2 de Debian, no habrá actualizaciones ni parches de seguridad en Calibre, que queda congelado en la versión 3.48 hasta nueva orden.

Como alternativa, se pueden descargar los binarios de la web de Calibre (versión 4.1.0).

 

Tres lecciones que aprender del caso Huawei

Creo que a estas alturas nadie es ajeno al caso Huawei. Es un ejemplo tan bueno de porqué debemos utilizar software libre que me voy a permitir reproducir aquí, en castellano, las tres lecciones que podemos aprender de todo esto según la FSFE (el original es de la Newsletter Digest de la FSFE, Vol 98, Issue 1).

  1. El software libre permite controlar la tecnología: cuanto más importante es la tecnología en nuestras vidas, más importante se torna el uso de software libre.

  2. La Unión Europea confía en exceso en proveedores extranjeros de tecnología: la Unión Europea y sus estados miembros deberían invertir en el desarrollo de software libre y enfocarse en apoyar organizaciones y negocios locales que fomentan el uso de software libre.

  3. El software libre otorga independencia económica a las empresas: la empresa que utiliza software propietario depende del proveedor de software y por tanto del gobierno del país que lo regula. La mejor estrategia para evitar esta dependencia es utilizar software libre en el mayor número de puntos de la cadena de suministro.

Podéis leer más aquí.

 

[Short] FreshRSS: aloja tu propio servidor RSS

Como un soplo de aire fresco, llega FreshRSS un agregador de canales RSS libre y ligero donde mantener al día y sincronizados vuestros feed RSS. Es compatible tanto con Apache como con Ngnix, así que debería funcionar sin problema aunque vayáis un poco justos de hardware (RasPi calling!). El funcionamiento es simple, instalas un servidor web (guía aquí -de momento sólo está en inglés-) y accedes a él desde cualquier dispositivo, bien vía web o desde la aplicación android (la podéis encontrar en F-droid pero ojo que aún está en versión alpha).

Aquí podéis indagar un poco sobre el funcionamiento de la aplicación y aquí se explica como programar cron para que actualice los feeds automáticamente cada cierto tiempo.

Happy hacking!

 

[Truco] Convierte un vídeo en imágenes con ffmpeg

¿Pulsaste el botón de vídeo en lugar del de la foto en aquel lugar y momento difícilmente repetible? ¿Te gustaría tener una de las escenas icónicas de tu película favorita de fondo de pantalla? Con ffmpeg es muy sencillo. Imaginemos que necesitamos extraer los primeros 30 segundos de un vídeo en fotogramas. Basta con teclear:

ffmpeg -ss 00:00 -i video.mp4 -t 00:30 fotograma%05d.png

En detalle:

  • -ss indica el inicio temporal a partir del cual empezar a extraer fotogramas.
  • -t el intervalo de tiempo en el que queremos extraerlos
  • %05d es una wildcard que sirve para añadir el número de fotograma con 5 dígitos al final del nombre de cada .png generado

Fácil ¿verdad? Esta es solo una pequeña muestra del potencial de ffmpeg, os invito a echar un vistazo más detallado a esta navaja suiza del multimedia. Aquí os dejo el enlace a la lista de formatos de vídeo soportados.

¡Que aproveche!