Compilando un menú global en Debian 9

Dada mi casi insana obsesión por aprovechar al máximo los cada vez más reducidos píxeles verticales de mi pantalla (gracias, wide screen formats) siempre he admirado la idea de integrar los menús de aplicaciones en el panel superior del escritorio. Sí, a lo Mac OS, a lo Unity, preparad los tomates fanboys y haters del ciberuniverso. Sin embargo, ni utilizo software privativo ni me gusta lo más mínimo el ahora moribundo Unity. Y desafortunadamente los vastos repostorios debianitas tampoco cuentan con una alternativa viable (tenemos el topmenu plugin para XFCE y Mate, pero no funciona bien con aplicaciones GTK3). Por suerte, rilian-la-te ha escrito este pequeño applet para sacarnos del apuro. Veamos cómo instalarlo en Debian 9:

1) Instalamos dependencias

A pesar de que en las instrucciones del autor la lista es mucho más pequeña, yo no he sido capaz de compilar el applet sin instalar este puñado de dependencias (todas en repos):

Si además queremos tener soporte para aplicaciones QT:

2) Clonamos el repositorio

Podéis crear un directorio específico o clonarlo directamente en vuestra home. Una vez dentro del directorio donde queremos clonar, tecleamos:

3) Descargamos los submódulos necesarios

4) Creamos un directorio específico para compilar el applet

5) Compilamos con make e instalamos

Configuramos la compilación:

Donde:

DENABLE_XFCE=ON compila la versión para el panel de XFCE4 (también existe la opción de hacerlo para Mate o para Vala Menu,

DENABLE_JAYATANA=ON compila soporte para aplicaciones Java Swing

DENABLE_UNITY_GTK_MODULE=ON compila el unity-gtk-module, imprescindible salvo que uses Ubuntu

DCMAKE_INSTALL_PREFIX=/usr define donde se va a realizar la instalación

Procedemos a la compilación e instalación:

(Instalo como root porque he indicado /usr como directorio de instalación. Podéis instalarlo en cualquier otro directorio sin privilegios de superusuario).

Tip

Para desinstalarlo, desde el propio directorio de instalación basta con teclear:

# xargs rm < install_manifest.txt

6) Configuraciones post-instalación

Editamos /etc/environment para que se ejecute appmenu-gtk-module:

export GTK_MODULES=appmenu-gtk-module
export UBUNTU_MENUPROXY=1

Ocultamos los menús de las aplicaciones individuales para que se muestren en el panel de XFCE:

Añadimos el applet al panel de XFCE, reiniciamos el servidor gráfico y ¡listo!

 

Buceando en los paquetes Debian con apt-file

Hoy os traigo una joya en bruto para el sistema de paquetes APT. Se trata de apt-file, un buscador de archivos para el sistema de paquetes Debian. Sí, habéis entendido bien, apt-file busca dentro de los paquetes Debian para encontrar en qué paquete (o paquetes) está dicho archivo. Una auténtica maravilla para cuando nos tenemos que pelear con dependencias a la hora de compilar software de terceros.

Lógicamente, podéis encontrarlo en repositorios:

Una vez instalado, actualizamos la cache de los paquetes (root):

(O simplemente el clásico apt-get update).

Para buscar en qué paquete se encuentra un determinado archivo:

O:

Tened en cuenta que la búsqueda no se realiza sobre directorios, sino sobre archivos, por lo que es importante que la cadena de texto que utilicéis contenga parte del nombre de archivo que queréis encontrar.

Apt-file también permite listar los contenidos de un paquete concreto:

Con la ventaja sobre dpkg -L de que no requiere que el paquete este instalado para listar su contenido.

Y entre sus muchas opciones, un par de ellas especialmente interesantes:

Permite buscar archivos en paquetes pertenecientes a arquitecturas distintas a la de nuestro sistema.

Permite utilizar expresions regulares de Perl para la búsqueda. Esta opción a veces puede ser un poco lenta, por lo que los autores recomiendan utilizar una tubería para parsear el output de apt-file a posteriori:

Como siempre, recomiendo echar un vistazo al manual para explorar todas las opciones de uso disponible.

Happy hacking! 😉

 

De owncloud a nextcloud y tiro porque me toca…

Tener tu propia nube, ya sea en un servidor casero (de las raspi en adelante) o en algún servidor alquilado, es sencillísimo desde la llegada de Owncloud. De hecho, mi nube cuenta ya con un par de años y más de 20 GB de ficheros a cuestas. Pero desde que me enteré que uno de los fundadores dejaba la empresa que está detrás de la nube (otro ejemplo más de cómo monetizar el software libre) por discrepancias con la dirección de Owncloud Inc. y fundaba nextcloud junto con gran parte de los desarrolladores de la primera, empecé a interesarme por la otra nube.

Hace una semana tuve la oportunidad de instalar una nube en el trabajo y elegí nextcloud, en parte porque estoy a favor de los forks porque suelen ser mejores que los originales y también para probarla en un entorno de producción serio. Llevaba, además, un tiempo dándole vueltas a la idea de migrar de owncloud a nextcloud pero, primero la vagancia innata que hay en mi y segundo la duda de si funcionarían los plugins que utilizo y la app del móvil, me mantenían quieto.

Por supuesto, la instalación desde cero de nextcloud es tan sencilla como la de su predecesora y fue grato comprobar que el entorno está más pulido y mejorado y que los plugins y clientes son los mismos o superiores. Aún no lo sabía pero iba a saltar de una nube a otra.


Tengo que advertir que, aunque este proceso me haya funcionado puede no hacerlo para el resto del mundo y que declino toda responsabilidad en los fallos y problemas que pueda acarrear.


La migración en si es realmente sencilla aunque haya que mezclar diferentes manuales porque no hay un procedimiento actualizado de migración de owncloud a nextcloud (o, al menos, yo no lo he encontrado). Al final hice caso a un hilo del foro de nextcloud en donde decían que hay que borrar (o mover) todo el contenido de owncloud menos config y data y descomprimir nextcloud para, a continuación, actualizar via web o con occ. No era mucho pero es un buen punto de partida.

Como me definieron como vago, utilicé el actualizador web de nextcloud, accediendo a https://minube.example.com/updater/.

El proceso de actualización fallaba en un punto en el que solicitaba un secreto, una clave que se encuentra cifrada en el fichero config/config.php y que pedía descifrada. La solución pasaba por generar una nueva clave, guardarla cifrada en el fichero config.php y pasársela en claro al actualizador.

Tras hacer esto, la actualización finaliza sin problemas.

Después de comprobar que todos los ficheros estaban donde se suponía, que los usuarios siguen ahí y los clientes de escritorio de owncloud se conectan correctamente a nextcloud (si, flipante), respiré tranquilo.

Los últimos remates fueron la activación de los plugins de calendario, contactos, galería y grauphel (imprescindible para la vida moderna), adaptar el tema para que quede bonito, cifrar los ficheros e instalar al nueva app en el móvil que, dicho sea de paso, es mucho mejor y ofrece más configuración que la de owncloud.

 

Siete vidas tiene un nexus

cm_logo

Y sino que se lo digan a los desarrolladores de CyanogenMod, que acaban de publicar nueva
versión basada en Android 7 para el Nexus 4. De momento está en experimental, un escalón por encima en inestabilidad de las nightly, así que si os vais a lanzar a probarla tened en cuenta que es muy probable que no esté lista para el uso diario.

Con esta he perdido la cuenta de cuántas actualizaciones han entrado ya desde que compré el móvil hace tres años largos con su ahora obsoleto Android 4.2. Sirva esta pequeña nota como prueba de que la obsolescencia de las nuevas tecnologías lo es menos cuando hay software libre de por medio. Y sirva también para manifestar mi agradecimiento a la gente de CyanogenMod, que muy probablemente entrarán en mi cupo de donaciones del próximo año.

¡Larga vida al Nexus! 😉

 

Budgie en Debian testing

budgie_logo

De la mano del siempre controversial Ikey Doherty, aterriza en Debian testing este escritorio compatible con Gnome y base de SolusOS, un entorno que en palabras de su autor busca ser “sencillo y elegante” y que presume de ser altamente configurable. A priori, el elemento más característico de este nuevo entorno es Raven, un panel vertical que actúa como cajón de sastre desde donde gestionar notificaciones (calendario, aplicaciones multimedia, etc), añadir widgets y configurar el escritorio. Una especie de gnome-tweak-tool integrado en un panel y a golpe de click. Aquí tenéis unas capturas para que veáis como luce en Debian:

El pase de diapositivas requiere JavaScript.

Además de Raven, cuenta con un menú de aplicaciones muy similar al que podéis encontrar en Cinnamon o Pantheon, con distintas categorías y accesible mediante la tecla Super:

budgie1

Respecto a usabilidad, en mi nada exhaustiva prueba parece que todo funciona razonablemente bien (salvo el modo pantalla completa, que no oculta la barra superior) pero imagino que aún quedarán unas cuantas cosas por pulir. Si pensáis utilizarlo en el día a día os recomiendo que os paséis primero por el bugtracker del proyecto y que lo probéis con algo de tiempo para evitar sorpresas desagradables. En cuanto al consumo de RAM, al arranque ronda los 420-430Mb, una cifra que sin ser demasiado elevada para las máquinas de hoy día tampoco se aleja mucho del consumo de otros entornos de escritorio.

En definitiva, una alternativa más a sumar a la larga lista de posibilidades que ofrece Debian. Si estáis habituados a Gnome (o Cinnamon, o Pantheon) supongo que la experiencia de uso no debe ser muy distinta (y tampoco parece que mucho más ligera). Por mi parte destacaría la facilidad de configurarlo con unos pocos clicks sin necesidad de instalar software extra y su lanzador budgie-run-dialog, que aunque sigue lejos del grandioso dmenu funciona bastante bien.

Y vosotros qué ¿lo habéis probado ya?

 

Cambios en GNUPG en Debian testing

gpg

Aprovechando que acaba de entrar en testing la versión “moderna” de GnuPG os traigo esta entrada sobre los cambios que introduce la nueva versión. De acuerdo al mantenedor del paquete en Debian, Daniel K. Gillmore, los principales cambios son:

  • gpg-agent (paquete gnupg-agent) será el responsable de manejar toda la información relativa a las claves secretas, lo que significa que las operaciones de cifrado/descifrado más delicadas quedan en manos de un software más contenido y menos proclive a sufrir vulnerabilidades.

  • Los demonios se irán lanzando según se necesiten, optimizando el uso de memoria.

  • scdaemon manejará todos los accesos a smartcards.

  • dirmngr manejará todos los accesos a red.

  • Se retira el soporte a claves PGPv3.

  • Las claves secretas dejan de almacenarse en secring.pgp y pasan a private-keys-v1.d

  • Los anillos de claves públicas ahora se almacenan en formato keybox (~/.gnupg/pubring.kbx) para nuevos usuarios.

  • Si actualizas desde una versión anterior de GNUPG mantendrás el archivo pubring.gpg hasta que decidas migrar a la nueva versión

Migrar el directorio de GNUPG a la versión moderna

Las claves secretas se migran de forma automática de la estructura clásica a la moderna tras las primera ejecución del programa. Si guardas tus claves secretas en una smartcard, tras la primera ejecución de la versión moderna de GNUPG, conecta el lector de tarjetas y teclea:

gpg --card-status

El anillo de claves públicas no se migra de manera automática. Si quieres pasar tus claves públicas a formato .kbx puedes usar el script incluido en /usr/bin/migrate-pubring-from-classic-gpg.

Más información

Podéis encontrar más información sobre la nueva versión de gpg en la web oficial del proyecto y en sus listas de correo.

Cifrad vuestras comunicaciones on-line

Recordad que utilicéis el proveedor que utilicéis, cifrar vuestras comunicaciones es la única forma de mantener vuestra privacidad en línea.

Happy cyphering!

 

El tiempo, en tu terminal

weather

Os dejo un pequeño tip para que podáis acceder a la información meteorológica de un montón de ciudades de forma fácil y visual desde vuestra terminal. El autor del proyecto es Igor Chubin, y aquí tenéis el enlace a Github, por si queréis echar un vistazo al código fuente. Se trata de un frontend web de la aplicación Wego, que nos evitará tener que instalar nada en nuestras máquinas. El funcionamiento es bastante simple, basta con hacer curl a la dirección wttr.in seguido de la ciudad que quieres consultar. Por ejemplo, para obtener la predicción metereológica en Madrid, tecleamos:
curl wttr.in/Madrid

Y se genera un informe de este tipo:

wttr

Si consultáis el tiempo de varias ciudades con cierta frecuencia, podéis crear un alias para cada una de ellas en vuestro bashrc para tenerlas a golpe de comando. Por ejemplo:

alias madrid_weather='curl wttr.in/Madrid'
alias oviedo_weather='curl wttr.in/Oviedo'

Fácil y rápido a más no poder ¿no os parece?

P.D. wttr.in está licenciado bajo Apache v2.0; Wego tiene una licencia ISC.

 

Vi(m)taminando el editor de texto

Vimlogo

Esta entrada no pretende ser una guía rápida, ni extensiva, ni para novatos, ni para profesionales de VIM. De esas las hay a cientos por la web, basta hacer una búsqueda rápida desde el pato para encontrarlas de todos los tipos. Esta entrada pretende tan sólo compartir una configuración personal que a mi me resulta útil en el día a día y de paso desmitificar el concepto de que configurar VIM es complicado. De hecho, veréis que con la ayuda de unos cuantos plugins mi .vimrc es más espartano que el mismísimo Heracles. Por supuesto, como para tantas otras cosas, el grado de complejidad de la configuración probablemente dependa del uso que penséis hacer del editor, pero se pueden cubrir muchas situaciones de manera óptima con una configuración relativamente sencilla. Mi caso de uso es muy sencillo: necesito un IDE para escribir código en Bash y Perl (para R el magnífico Rstudio no tiene rival; para LaTex afortunadamente existe Lyx) y un editor de textos multiusos.

Veamos cómo hacerlo:

Instalando plugins para VIM

Existen varias maneras de gestionar los plugins en vim. Mi favorita, por su sencillez, es pathogen. Instalarlo es tan sencillo como descargar el script pathogen.vim y copiarlo en el directorio .vim/autostart. Una vez instalado, editamos el archivo .vimrc y añadimos:

execute pathogen#infect

A partir de ahora añadir nuevos plugins para vim es tan sencillo como copiarlos a la ruta .vim/bundle. Por ejemplo, para instalar uno de mis plugins favoritos, vim-perl basta con teclear:

cd .vim/bundle
git clone https://github.com/vim-perl/vim-perl

Por supuesto, existen varias alternativas a para gestionar los plugins en vim:

  1. Vundle
  2. NeoBundle
  3. VimPlug

Vim is (fucking) awesome

Y sino que se lo digan a David Hu , Ben Alpert y Emily Eisenberg, creadores de VimAwesome, fantástica y extensa web con un índice de casi 13000 plugins clasificados por categorías y accesibles mediante un buscador integrado en la propia web. Para cada plugin hay instrucciones de instalación (para pathogen, vundle, neobundle y vimplug), documentación y un enlace directo al
repositorio en Github y/o a vim.org. Una auténtica joya de web: sencilla, funcional y con un diseño impecable.

vimawesome2

Vitaminando Vim

Como os decía al principio de la entrada, mi configuración es bastante sencilla. Gracias a i3, suelo trabajar con varias terminales abiertas de forma bastante cómoda, por lo que no necesito añadir demasiados plugins a mi configuración (ni utilizar un IDE complejo para escribir código). Básicamente trabajo con tres terminales abiertas, a la izquierda Ranger, ocupando la mayor parte de la pantalla Vim, y debajo una terminal para pruebas/debugging.

Los plugins que utilizo son:

(1) [Disclaimer] El uso de este plugin puede causar adicción de acuerdo a su creador 😉

me: Hi everyone, my name is Franco and I’m addicted to colorschemes
everyone else: Hi Franco

Los que no utilizo, pero pueden ser muy útiles cuando editáis código:

Para escribir, nada mejor para mantenerse concentrado que una terminal a pantalla completa y el plugin vim-markdown a cargo de nuestros ficheros markdown:

vim-md

Por último, aquí os dejo el contenido de mi .vimrc, más simple que el mecanismo de un botijo (no llega ni a las 10 líneas):

“Pathogen installation
execute pathogen#infect()

“General settings
syntax on
filetype plugin indent on
set number
set wrap
set nofoldenable

“Colorscheme
colorscheme Monokai

Happy hacking!

 

Apurando plazos con hacienda, errores, certificados y linux

Desde el año pasado (creo) la AEAT (hacienda, para el que no sea de siglas), tiene un programa Java que sustituye al programa PADRE. Al final creo que se cansaron de mantener varios sistemas para cumplir telemáticamente con el fisco y lo hicieron en Java. Yo me lo imagino tal que así:

INTERIOR, TARDE OSCURA DE INVIERNO EN UN EDIFICIO DE CRISTAL Y ACERO. UN GRUPO DE GENTE CON CORBATA (HOMBRES TODO) DISCUTE.
–Es un coñazo rehacer el programa ese año tras año. ¡Está en visual basic!
–Pues otra vez montar un Citrix para que se conecten los cuatro idiotas de linux, no. ¡Se quejaban de que no era una solución libre!
–Pues a ver qué hacemos…
–Un momento, que le pregunto a mi cuñao por whatsapp, que sabe mucho de estas cosas… Que busquemos una solución multiplataforma… Que se hace una vez y sirve para todos los sistemas operativos… Algo web, fácil, rápido y basado en estándares abiertos…
–Suena bien…
–Espera, que sigue. Dice que pidamos que lo hagan en java, que es todo eso y más.
–¡Cojonudo! Ahora sólo hay que montar que concurso para que se lleve un amiguete y que hagan una web con todo eso. Mándame los whatsapps que tengan siglas o cosas de esas, que quedarán muy bien en el concurso. Y a ver quien tiene narices ahora de quejarse…

Si, es una pantomima y es muy personal pero no creo que se aleje mucho de la realidad.

Si, además, eres de esas personas que apuran los plazos cuando se trata de pagar (bienvenido/a al club) y la web te de un error del certificado justo después de pagar y antes de declararte al día de tus obligaciones, a día y medio del plazo final, entonces no le encontrarás la gracia por ningún lado.

Usamos el Macbook con Linux Mint y todo fue bien hasta el paso siguiente tras haber pagado. Cuando sólo te falta confirmar tu identidad con el certificado electrónico, nos saltó un popup con el error «Error message: El almacén no contenía entradas». Muy clarito todo.

error-aeat2

Así que tocó revisar certificados, ficheros del programa y volverse loco para acabar concluyendo que la culpa es de java. ¿De quién sino?

El maldito programa o al menos la parte final que muestra el justificante de la operación y del pago, sólo funciona con java, java, el java de adobe, el de java.com. Linux Mint trae, por defecto, openjre, que es una opción muy válida para casi todo el mundo menos para hacienda por lo que tocó borrar openjre, bajar java-java, instalarlo y, para que el maldito programa lo reconociese sin mucho esfuerzo, crear un enlace en /usr/bin/java apuntando al binario de la nueva versión.

Después de eso, repetir, alegar que ya se había pagado y terminar el proceso no sin antes mentar mil veces a la familia directa del águila que señaló java-java como una solución multiplataforma.

PD a los que lo dejáis todo para el último día… ¡corred insensatos! ¡Sólo quedan unas horas! 🙂
PD2 no hay ningún enlace a la web de java-java porque aún me dura el cabreo.

 

Donad, malditos, ¡donad!

donate

Si utilizáis software libre en el día a día, puntualmente o incluso si pensáis que no lo habéis utilizado jamás (porque probablemente no sea cierto). Si creéis en la cultura libre y en el desarrollo colaborativo y abierto de ideas. Si defendéis que el acceso a la cultura debe ser universal y no el perverso feudo de multinacionales sin escrúpulos y delincuentes varios. Si queréis mostrar vuestro agradecimiento a los miles de autores que invierten tiempo, esfuerzo e ilusión en compartir su obra bajo licencias libres, por el bien común, porque difundir cultura genera cultura.

Libre no significa gratis. Libre significa que no hay barreras para acceder, modificar o compartir cultura. Sea software, una canción, un libro o una fotografía. Libre en muchos casos significa que el autor deja en vuestras manos que valoréis y recompenséis su obra.

Donad trabajo, donad dinero o criptomoneda pero donad. A vuestro sistema operativo libre favorito, a ese software que os ha sacado de apuros una y mil veces, al músico o escritor que cuelga su trabajo en la red tan pronto ha terminado de editarlo o al bloguero que tanto os ha enseñado (y no, nosotros no aceptamos donaciones, no seáis malpensados :P).

Donad malditos, ¡donad!