Cómo mantener las extensiones tras un reinicio (Ubuntu 14.04 y Gnome Shell)

Holas a todos y todas. No es novedad que Gnome-Shell y Ubuntu-Unity no se llevan del todo bien. Decirlo así puede sonar fuerte, pero es la verdad. Incluso luego de la salida Ubuntu-Gnome aún pueden encontrarse un sin fin de bugs, algunos graves, otros tontos, pero la tónica es que la mayoría permanecen sin solucionar desde el lanzamiento alpha. Y lo cierto es que los muchachos de Ubuntu Gnome son bastante herméticos en dejar entrar gente a participar de la distro (una lástima).

Anyway, dejando mis inconformidades de lado, hoy me voy a meter con uno de los bugs más molestos de Ubuntu-Gnome (que existe desde la versión alpha y perdura hasta la versión final LTS -wtf-). El problema: tras un reinicio se desactivan todas las extensiones.

A buscarse el café o la birrita porque me emocioné y escribí un montón. :P
… ah! A lo último hice un resumen para los que tengan fiaca. :)

El bug

Antes que nada, parece que esto sólo sucede en Ubuntu-Gnome. Resulta que uno entra contento a ver cómo anda la shell en su última versión en un entorno de la familia debian, como lo es ubuntu gnome. Una de las primeras cosas que se hacen luego del primer boot es chusmear las nuevas extensiones en el sitio oficial e instalar las viejas, clásicas que nos gustan y siempre ponemos. Abrimos Gnome Tweak Tool y empezamos a configurar todo para dejar nuestro escritorio en sintonía con lo que nos imaginamos debería ser el “entorno definitivo” para trabajar (o lo que cada uno haga con su computadora :P ).

Luego de pasar 2 o 3 horitas toqueteando, probando, instalando, sacando, poniendo, hacemos un lindo dist-upgrade y reiniciamos, como corresponde. Amargo momento es el que nos espera cuando vemos que tras el reinicio todas las extensiones que teníamos configuradas ya no están más. Todo rústico, todo feo como si fuera el primer boot.

Gnome Tweak Tool con las cosas activadas

¿Qué pasó? Bueno aparentemente Ubuntu-Gnome no reconoce el reboot como una forma de apagado seguro y tras reiniciarse entra en una especia de “modo a prueba de fallos” en el que desactiva todas las extensiones. Esto es porque si estamos usando extensiones experimentales (o estamos jugando a desarrollar una), la shell se puede crashear y este mecanismo nos permite reinciar todo y solucionar el problema.

Gnome Tweak Tool luego del reinicio: trisísimo.

Pero en realidad ni estabamos probando extensiones experimentales ni desarrollando una, sino que todo funcionaba perfecto. Incluso el bug sucede si no instalamos nuevas extensiones desde el sitio, sino sólo activando las oficiales que vienen en los repos. Y ya, tras un reinicio, PAM!, a configurar todo de nuevo. Todo lo que activaste está olvidado en el recuerdo. A la segunda vez que te pasa querés instalar un KDE corriendo, con una sensación de frustración súper justificada.

Estas son las cosas que hacen que la gente piense que gnome-shell es una mierda. Y tienen razón, porque claramente es un aspecto crítico del sistema que definitamente destruye la experiencia de usuario en un boot… :/

La solución

Bueno, como siempre, buscando y buscando todo se puede solucionar. Dadas mis limitaciones técnicas (eso de que no soy programador y bla bla) el work-around que encontré es bastante simple. Se trata de “atar con alambre” lo que no anda forzando el inicio de las extensiones mediante la ejecución de gsettings al inicio de la sesión.

El trabajo consiste en tres partes: primero tenemos que saber mediante línea de comando qué extensiones tenemos instaladas. Segundo tenemos que crear UNA línea de gsettings que nos active todas extensiones a la vez. Tercero, tenemos que agregar eso a las aplicaciones que se activas al iniciar sesión.

Paso 1: listando las extensiones

Entonces parece que queremos listar las extensiones que tenemos activadas. Es muy fácil, se hace con un comando en la terminal que devuelve los valores activos de gsettings. Sólo asegúrense de que antes de correr el comando hayan activado todo lo que quieren activar desde Gnome Tweak Tool.

Abran una terminal y peguen:

gsettings get org.gnome.shell enabled-extensions

devuelve algo así:

Esa lista es la que queremos copiar y pegar para el paso siguiente. Así, lo que guardamos en un gedit es:

['alternate-tab@gnome-shell-extensions.gcampax.github.com', 'hide-dash@xenatt.github.com', 'hide-workspace@xenatt.github.com', 'panel-osd@berend.de.schouwer.gmail.com', 'user-theme@gnome-shell-extensions.gcampax.github.com', 'apps-menu@gnome-shell-extensions.gcampax.github.com', 'remove-dropdown-arrows@mpdeimos.com', 'SkypeNotification@chrisss404.gmail.com']


(para curiosos y detallistas) Listando todo todo lo que haya:

Las extensiones activas provienen de dos fuentes: las que vienen por defecto en gnome-shell y las que nosotros instalamos manualmente. Para saber qué extensiones tenemos instaladas (en lugar de “activas”, que es lo de arriba) podemos correr un comandito que va a listar todas. Hay un modo bastante simple de listar todas las extensiones disponibles desde la terminal usando “ls”.

Para listar SÓLO las extensiones que nosotros instalamos manualmente, simplemente tenemos que ejecutar esta línea:

ls ~/.local/share/gnome-shell/extensions

El output será algo así:

Sólo para que quede claro, todas las extensiones están en una carpeta y cada extensión es un directorio, por lo que las podemos listar de la forma que querramos. También podemos ver qué extensiones instalamos desde nautilus, navegando a .local > share > gnome-shell > extensions, como se ve en la captura. Por supuesto, usar la terminal hace el trabajo más fácil para el objetivo que tenemos. Un dato más: acá también van a estar todas las extensiones que alguna vez probamos, si saben que no las van a usar nunca más, entonces no pierdan oportunidad y bórrenlas al carajo jeje.

Para listar todas las extensiones (incluso las que ya vienen incorporadas a gnome shell por defecto), podemos correr este comando:

ls ~/.local/share/gnome-shell/extensions && ls /usr/share/gnome-shell/extensions/

Recuerden que no todas las extensiones instaladas tienen que estar activadas! En mi caso, sólo a modo de ejemplo, “Launch and Exposè” (Launch-And-Expose@xenatt.github.com) está instalada pero no activada. Lo mismo con otras extensiones de sistema, como por ejemplo “Auto move windows” (auto-move-windows@gnome-shell-extensions.gcampax.github.com) que todavía no entiendo bien qué hace :P.

Ok, entonces lo primero es hacer la lista de qué queremos y qué no. La forma general es como dije arriba. Listamos y nos anotamos cuáles queremos y cuales no en un gedit o donde quieran. Si quieren hacer una lista de todo y luego seleccionar, pueden ir con este último comando que les pasé.

Paso 2: forzar la activación de extensiones

Como se imaginarán, una vez que tenemos la lista de las extensiones que nos interesan, la cuestión es simplemente correr un comando que active “esa” lista.

En una terminal pegamos:

gsettings set org.gnome.shell enabled-extensions "['alternate-tab@gnome-shell-extensions.gcampax.github.com', 'hide-dash@xenatt.github.com', 'hide-workspace@xenatt.github.com', 'panel-osd@berend.de.schouwer.gmail.com', 'user-theme@gnome-shell-extensions.gcampax.github.com', 'apps-menu@gnome-shell-extensions.gcampax.github.com', 'remove-dropdown-arrows@mpdeimos.com', 'SkypeNotification@chrisss404.gmail.com']"

Si se fijan con cuidado simplemente estamos haciendo esto:

gsettings set org.gnome.shell enabled-extensions " XXXX "

Reesmplazando XXXX por la lista de extensiones que obtuvimos en el primer paso. :)

La terminal siempre manda, así que con este comando “pisamos” toda la configuración de Gnome Tweak Tool. Si la extensión no está en la lista, estará apagada.

Cada vez que tengamos un problema, simplemente podemos correr este comando y ya. Todas las extensiones que hayamos listado se activan. Obviamente asegúrense de que las extensiones que corren funcionan correctamente y que no hacen “crashear” la shell… sino, buah, básicamente estarán haciendo cagada :)

Así que, para hacerla corta, en la lista sólo tenemos que poner extensiones que hayamos probado mucho y que funcionen bien. Mientras tanto, si no confiamos ciegamente en todas las extensiones que usamos, conviene tener un listadito con aquellas que son indispensables y que necesitamos para ser súper felices (léase user themes y alternate-tab jeje) y luego con cautela ir agregando otras, con cautela, repito.

Y repito de nuevo. Las extensiones que funcionan mal crashean la shell. Si las agregan y fuerzan su activación están atentando contra la estabilidad del entorno. Ojo.

Paso 3: Ejecución al inicio de sesión

El tercer paso consiste en autoejecutar al inicio de la sesión el resultado del paso 2, nuestro comando que fuerza la activación de las extensiones. Para eso tenemos que agregar un “launcher” al menú de autostart de gnome. Es muy sencillo.

Abran un gedit o editor de texto favorito y peguen:

[Desktop Entry]
Type=Application

Exec=gsettings set org.gnome.shell enabled-extensions " XXXXXX "

Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=false
Name[es_ES]=extensions.desktop
Name=shell extensions
Comment[es_ES]=
Comment=

Se va a ver algo así. Recuerden que tienen que reemplazar ” XXXXXX “ por sus extensiones y que las comillas son importantísimas.

Guardamos el archivo en el destino ~/.config/autostart (el rulito ~ significa su carpeta de usuario). Tienen que activar ver los archivos ocultos para acceder a “.config”. El nombre que le vamos a poner es shell-extensions.temp. Si, .temp. Ahí vamos.

Por último creamos el .desktop le damos permisos de ejecución al nuevo launcher. Abrimos una terminal y pegamos:

mv ~/.config/autostart/shell-extensions.temp ~/.config/autostart/shell-extensions.desktop && chmod +x ~/.config/autostart/shell-extensions.desktop

Listo. Terminamos. Para checkear podemos jugar un poco y desactivar todas las extensiones antes de reinicar. Reiniciamos y “vualá”, tutto aposto. Las extensiones que seleccionamos tendrían que estar activadas.

 


 

 

Resumen sin palabrerío:

El post en 3 pasos
1) Listamos las extensiones activas. Terminal: gsettings get org.gnome.shell enabled-extensions. Copiamos el output.
2) Probamos la activación forzosa. gsettings set org.gnome.shell enabled-extensions " XXXXXX ". Donde XXXX es el output del paso 1.
3) Hacemos un .desktop con el comando del paso 2 y lo metemos en la carpeta de aplicaciones al inicio.

Eso es todo por hoy amigos y amigas. Espero les sirva y, como siempre, preguntas, comentarios y experiencias serán más que bienvenidos.

Ps. algún día tengo que hacer el post con mis extensiones preferidas. O más bien sobre extensiones en gnome-shell. Pero como verán, me da un poco de miedo porque cada vez que empiezo termino haciendo estos posts que son bastante largos. Todo muy lindo, pero mi jefe me va a cortar las bolas si no me pongo las pilas, jajaj. Me voy a trabajar. :)

Salú!

 

Aside

Cómo exportar todas las notas de Gnote a texto plano (Gnote to txt exporter)

Hola a todos y todas, hoy vuelvo a escribir y me meto con una necesidad puntual que tengo desde hace un tiempo. No se si lo cuento en algún lado antes, pero soy, desde hace bastante, un ávido usuario de Gnote. Exportar las notas masivamente a texto es una función que no existía, hasta ahora. Me puse, y lo hice. Ahí les cuento.

Sobre Gnote

Gnote es una aplicación para tomar notas. Simple. Rápida. Me encanta. Antes usaba Everpad (Evernote) pero la interface es muy complicada y las búsquedas también, por lo que acceder a todas las notas en un parpadeo suena más fácil de lo que en realidad es. Un día un upgrade de Everpad me rompió todas las notas de Evernote, introduciendo espacios y líneas por todos lados… un desastre. Lo peor es que esas notas las usaba para trabajar.

Gnote trabaja en formato html, y soporta formateo básico del texto. No permite, sin embargo, ver imágenes dentro de la nota ni otras cosas raras. A mi me conviene el negocio. Pasé de tener unas 100 notas en Evernote a más de 1500 en Gnote. Es una aplicación que uso todo el tiempo. Obviamente, la mantengo sincronizada con Dropbox (en la fotito está el comando que uso jeje).

image
(mi post install, como verán, primero gnote! jajaj)

El problema

Supongamos que queremos leer las notas desde otra computadora que no tiene gnote instalado, o desde la web (por ejemplo desde el sitio de dropbox). Gnote tiene una función para exportar a HTML dentro de su menú de opciones, con ella vamos a poder hacer el accesible el contenido de cualquier nota. El “pequeño” problema es que esta función “export to html” aparece dentro de cada nota: no existe una forma para exportar todo, sino que hay que ir nota por nota y hacer click en menu, click en exportar, click en el destino. Si tenés mil notas como yo lo vas a tener que hacer 1000 veces. Ni en pedo. Quizás en otra vida.

Hice 1800 búsquedas pensando que alguien tendría que haber solucionado esto. Nada. Incluso hice una pregunta en AskUbuntu (link) y varias en Google+ que quedaron huérfanas y olvidadas en el limbo. No se si es que a nadie le interesa, pero bah, no me lo creo. Gnote y Tomboy son viejos tanques que mucha gente encuentra útil.

Me gasté mucho menos tiempo y salud e implementé la función de exportar masivamente en bash, que es lo que más o menos manejo de oído. Así que mi solución es simple, desde una terminal corremos el script y listo: todas las notas que tengamos serán exportadas a texto plano y el título de la nota será el nombre del archivo. Nada más, nada menos. :)

Cómo funciona

Como comento arriba es un script en bash. Muy simple, aunque increíblemente no estaba implementado. Miren que busqué como un cerdo, pero no. En suma, qué hice, abajo.

Qué hace? bueno, extrae el contenido de cada nota y lo transforma en texto plano. Cada archivo .txt resultante será una entrada de Gnote. Todos los txt son guardados dentro de la carpeta en donde están alojadas las notas en formato “.note” de gnote.

Así se ve una nota en formato .note (que es un XML):

Captura de pantalla de 2014-04-24 19:40:19

Cómo lo hace la exportación a texto plano? bueno “parsea” las notas y extrae el segmento de texto plano correspondiente al cuerpo “note-content”. Para eso hago uso del comando xml_grep, que es quien hace toda la magia extrayendo el contenido y transformando links en texto plano. :) El resto es un loop básico en bash que recorre las notas. Un segundo paso del script es el tema de los títulos. Las notas .note tienen títulos super chotos tipo “1fadb1f2-5305-4395-908d-9b8d59b3a6c0.note”… así que tuve que hacer otro loop para reemplazar los nombres de cada txt resultante al título de la nota en sí (también disponible dentro del XML). Para esto último usé el comando head que parsea líneas y el comando rename y cp para acomodar los archivos. :)

Todo esto para tener una carpeta con todas las notas transformadas a txt. Jeje.

Basta de nerdeadas, les digo cómo instalarlo así lo prueban.

Cómo instalar Gnote to txt exporter

Como siempre abran una terminal y peguen:

Dependencias:

Para el caso de ubuntu, las dependencias son xml-twig-tools y unzip, así que avanti. Si tienen otra distro, simplemente cambien el apt-get por su gestor de paquetes.

sudo apt-get install xml-twig-tools unzip -y

Ahora si, a instalar:

Copien y peguen este choclito en su terminal y listo. :)

cd && mkdir -p .gnote-massive-export-to-txt && cd .gnote-massive-export-to-txt && wget https://github.com/rhoconlinux/gnote-massive-export-to-txt/archive/master.zip && unzip master.zip &&  cd gnote-massive-export-to-txt-master/ &&  mv gnote-export-to-txt.sh ~/.gnote-massive-export-to-txt/ && cd .. && rm -R gnote-massive-export-to-txt-master && rm master.zip && chmod +x gnote-export-to-txt.sh && cd

Paso opcional: el script puede instalarse a nivel de sistema, en lugar de estar dentro de tu carpeta de usuario. La razón para hacer este paso adicional es comodidad para llamar el programa, porque en términos de funcioanlidad, es lo mismo. Para instalar Gnote to txt exporter a nivel de sistema peguen esto en una terminal (requiere que pongan su password de root):

sudo cp ~/.gnote-massive-export-to-txt/gnote-export-to-txt.sh /usr/bin/gnote-export-to-txt

Con este paso vamos a poder llamar al programa con simplemente escribir gnote-export-to-txt, en la terminal. Es particularme útil si queremos automatizar el backup de las notas a texto de forma regular (usando cron u otra aplicación de automatización de tareas).

Como usar Gnote to txt exporter

El uso del programa es realmente simple: abran una terminal y ejecuten esta línea (copiar-pegar):

sh ~/.gnote-massive-export-to-txt/gnote-export-to-txt.sh

Si instalaron el programa a nivel de sistema, entonces en lugar de lo de arriba basta con escribir este comando:

gnote-export-to-txt

Apretan enter y el programa solito hace todo sin preguntar. Lee las notas y las exporta a texto. En la terminal, el proceso que inicia se va a ver así:

image

El tiempo de procesamiento dependerá, obviamente, de cuantas notas tengan. Como podrán comprobarlo ustedes mismos, le toma más o menos 1 segundo por nota.

¿Y dónde están mis archivos .txt?

Todos los archivos exportados están disponibles en la carpeta en donde se guardan las notas de Gnote. La ubicación es ~/.local/share/gnote. En nautilus, apreten ctrl+h en su home para ver los archivos y carpetas ocultos. Luego naveguen .local > share > gnote. Una vez ahí, van a ver la carpeta “gnote-notes-in-txt” que contiene todas sus notas en formato txt.

Un par de screenshots para el pueblo:

Encontrando las notas usando Nautilus.

image

Así es cómo se ve la carpeta que contiene todas las notas exportadas. En una comparación con Gnote lado a lado se ve que los títulos son los mismos. Menos mal. Jaj.

image

Por último, así es como se ve el “output”. El nuevo archivo de texto en comparación con la nota de Gnote. Como pueden ver el texto plano es fiel al contenido original. :)

image

Espero les sirva y lo encuentren útil.

Ah! el proyecto está en Github. Le hice un lindo tutorial similar a este pero en inglés. Sugerencias y comentarios, como siempre, más que bienvenidos.

https://github.com/rhoconlinux/gnote-massive-export-to-txt

Ah! (2). Todo lo que vieron VALE para Tomboy también. Lo único que tienen que hacer es cambiar la dirección de trabajo del script. En lugar de “~/.local/share/gnote” tienen que poner la de Tomboy, que presumo (NO SE) será “~/.local/share/tomboy” o algo por el estilo.

Ahora si.

Salú!


ps: No es que no tenía nada que postear, sino que estuve “muleando” como un cretino jaja. Esto es un oasis, a no confundirse, mi ritmo de publicación no creo que cambie mucho en lo que queda del AÑO. Si todo va bien, luego será otra historia. Así que con suerte vendrán un par de rush de posts en días libres o algún que otro post cada muerte de obispo :P Sorry!

Cómo exportar todas las notas de Gnote a texto plano (Gnote to txt exporter)

[Hack] Haciendo Gnome-shell más rápido y más liviano

Hola gente linda!

Por hoy nada de temas gtk, hoy voy con un hack que me está resultando muy útil. Su objetivo es aumentar críticamente la performance de gnome-shell. :)

Tocando de acá y de allá me di cuenta que una de las cosas que “achancha” a gnome-shell es su Dash, el dock lateral. Para algunos este elemento puede ser indispensable, pero claramente para mi no lo es, porque uso Plank, un excelente dock minimalista de muy bajo consumo y alta performance.

El hack, entonces, funciona mediante la eliminación del “Dash” que Gnome-shell tiene incorporado. Digo, luego de usar gnome-shell por un tiempo para mi hay dos cosas clarísimas: 1) que la perfromance de Plank es completamente superior a la del dash de la shell y 2) que el dash es redundante, por no decir, inútil 3) que extensiones tipo dash-to-dock no solucionan para nada “el asunto” de performance de la shell.

Como decía, este post consiste en eliminar el dash, pero, ojo al piojo, sin alterar toda la funcionalidad de la shell (es decir que apretando la tecla Super podremos acceder al menu de aplicaciones, a las aplicaciones favoritas, a las ventanas, a los escritorios y al historial de zeitgueist… en un paso… imbatible). Tras el hack, la eliminación del dock lateral (dash) es sólo temporal en el sentido que si reinician gnome-shell (alt+f2,y luego escribiendo r o gnome-shell --replace) este elemento reaparece “como si nada hubiésemos hecho”.

Captura de pantalla de 2014-02-18 10:38:34El cambio de performance luego de aplicar el hack se siente al instante. Y es realmente lindo ver gnome-shell correr así. Además con esta modificación es increíble cómo el comportamiento de Mutter (gestor de ventanas de gnome) se asimila al comportamiento de Gala (un fork de Mutter, gestor de ventanas de elementary os). La diferencia es que además de gestionar las ventanas con el efecto “exposé” puede facilitarnos el acceso cada elemento del escritorio con sólo una tecla. Exquisito. Luego de ejecutar el comando que muestro abajo, la tecla Super o tecla Win responde al instante, literalmente. Da gusto. :)

El hack en un comando

Como siempre, abran una terminal y peguen el siguiente código para meterle nitro a gnome-shell (+plank o cualquier dock externo que quieran usar).

dbus-send --session --type=method_call --dest=org.gnome.Shell /org/gnome/Shell org.gnome.Shell.Eval string:'Main.overview._dash.actor.hide();'

Sería algo así. Se trata de ocultar forzosamente el dock lateral cosa que gnome no tenga que dibujar todo el asunto.

Captura de pantalla de 2014-02-18 11:38:58

También lo pueden pegar en el díalogo de ejecución apretando alt+f2.

Captura de pantalla de 2014-02-18 10:41:40

El método de alt+f2 puede ser conveniente porque con la flecha para arriba se accede al último comando. Así que con un par de flechazos tendremos una forma rápida de re-aplicar el hack si por algún motivo (estar haciendo un tema gtk o uno para gnome-shell por ejemplo) debemos reiniciar el entorno gnome.

Agregando el hack al inicio de la sesión

El núcleo del post es lo de arriba. Este es un detalle para agregarlo al inicio y debo decir que si bien parece un embole es bastante rápido. Sólo tienen que abrir “dos gedits” y pegar las cositas que pongo. Ahí vamos.

Si quieren hacerse la vida más simple y tener una performance más elevada de forma automática al inicio del sistema, el comando anterior se puede agregar al inicio de la sesión de la shell. Para eso vamos a tener que hacer unos pasitos. Disculpas pero no ninja-install esta vez, serían como tres páginas :P

  • Abir una terminal y pegar el siguiente código (crea el archivo que necesitamos y lo abre con gedit):
    mkdir -p ~/.nodash && cd ~/.nodash && echo "" >> nodash.sh && chmod +x nodash.sh && gedit nodash.sh

    Dentro de Gedit, pegar el siguiente código:

    #!/bin/bash
    sleep 5 ;
    dbus-send --session --type=method_call --dest=org.gnome.Shell /org/gnome/Shell org.gnome.Shell.Eval string:'Main.overview._dash.actor.hide();'
    

    Guardamos, cerramos Gedit.

Captura de pantalla de 2014-02-18 10:43:39

  • Abrimos nuevamente una terminal. Ejecutamos:
    mkdir -p ~/.config/autostart && cd ~/.config/autostart  && echo "" >> nodash.desktop && chmod +x nodash.desktop && gedit nodash.desktop
    

    Nuevamente en Gedit pegamos:

    [Desktop Entry]
    Type=Application
    Exec=sh '/home/TUNOMBREDEUSUARIOOOOOOOOO/.nodash/nodash.sh'
    Hidden=true
    X-GNOME-Autostart-enabled=true
    Name[es_ES]=nodash
    Name=nodash
    

Si, tienen que cambiar el código ingresando su nombre de usuario ahí, en la parte de usuario, je (TUNOMBREDEUSUARIOOOOOOOOO). Reemplacen con su usuario, que es el que aparece en la terminal antes del @ (y ojo! respeten las mayúsculas y minúsuculas dejándolo tal cual!). Ahí va una fotito de cómo tiene que quedar:

Captura de pantalla de 2014-02-18 10:44:32

Guardamos, cerramos.

Ahora si, Listo :) Reinicien la sesión para ver los cambios. El dash desaparecerá luego de 5 segundos de iniciada la sesión, así da tiempo a que se carguen todas las otras cosas.

Notas: ojo con los símbolos de díalogo ', peguen todo con cuidado, especialmente en el script principal de arriba (sino, no funciona). Acuérdense de cambiar el nombre. Y también recuerden que si reinician la shell el hack tiene que ser re-ejecutado. Obviamente desactiven la extensión dash-to-dock si es que la tienen activada. Ah! funciona con gnome-shell 3.10 3.11 y 3.12. :)

Espero les haya parecido interesante (yo no puedo vivir sin esto desde hace un tiempo, la difirencia es demasiada). Cualquier cosa, avisen en los comentarios.
Salú!

fuente: http://glx-dock.org/bg_forumlist.php

[Hack] Haciendo Gnome-shell más rápido y más liviano

Blumix 1.0: actualizado el tema gtk3.10, minimalismo nuevo.

Hola gente linda!

Como corresponde, primero en el blog, mañana o cuando me pinte lo meteré en los otros lugares (deviant, gnome-look y la mar en coche). En github ya casi está -le meto las imágenes de este post, pero el tema está-. Con ustedes, mi bebé, Blumix.  :)

El Concepto Blumix en un toque

Blumix es un tema minimalista. Más que minimalista diría homogeneista, o sea que tira para que cada elemento armonice con los que tiene alrededor, evitando cortes bruscos, bordes inncesarios y todas esas cosas que ensucian la interfaz. Colores claros que sirven para distinguir lo que hay que distinguir, el resto, redunda.

Hacer un tema minimalista es muuucho más difícil de lo que parece. Y déjenme subrayar una vez más que en realidad no tengo idea de conceptos de diseño ni de programación (soy economista), por lo que la teoría que tengo encima es la de estar enfrente de mi laptop unas 10 horitas diarias, de tocar, romper y, principalmente, de estar un poco loco con que mi entorno de trabajo (virtual) “se vea bien”.

Que púm que pám, al final el color de Blumix cambió en esta versión, volviéndose un poco más claro que antes. Me pareció que el nuevo look lo requería, pega más, aunque me dio bastante dolor de cabeza cambiar todos los elementos jeje :P.   Los bordes de ventanas de Blumix no tienen botones. ¿Por qué? Bueno, esa es básicamente la propuesta. Para qué dibujar los botones si ya sabemos donde están, no?. Si tienen miedo de que sus botones de ventana no vuelvan jamás, simplemente pásenle el mouse por encima. :)

banner-final

Mucho trabajo por hacer

Estoy muy contento de estrenar este tema. No hay mucho más para decir, excepto tooodo el trabajo que hay por delante. No estoy muy convencido con las tabs nuevas, así que probablemente en la próxima versión haya un rework completo de ese asunto. Otra cosa que me obseciona bastante son las scrollbars, en las que creo que hice una mejoría bastante importante, pero todavía se puede mejorar. El código es un DE-SAS-TRE jajaja, así que vendría bien una limpieza… supongo que de a poco. Variantes: me gustaría hacer algunas variantes de ventana. De hecho ya las tengo (con botones visibles, con botones mac-ish, con titulo a la izquierda, derecha o centro), pero me da paja tener que hacer los banners y toda esa mierda, así que nada, cuando pinte las publico. :P Seguro en la semana lo subo al repo de blumix-edge, que es donde tengo todas las cosas que voy a haciendo casi todos los días. En fin, basta de chácharas, espero les guste y lo disfruten.

Blumix 1.0: How to Install

Ninja install del tema, en un comando. Sólo cuestión de abrir una terminal y pegar este pedacito de código para que el tema se descarge, se instale y se aplique automáticamente:

mkdir -p ~/blumix-install && cd ~/blumix-install && wget https://github.com/rhoconlinux/Blumix/archive/master.zip && sudo apt-get install -y gtk2-engines-murrine gtk2-engines-pixbuf gtk3-engines-unico unzip && unzip master.zip && cd Blumix-master && sudo cp -a Blumix /usr/share/themes/Blumix1.0 && gsettings set org.gnome.desktop.interface gtk-theme "Blumix1.0" && gsettings set org.gnome.desktop.wm.preferences theme 'Blumix1.0' && cd ~ && rm -R ~/blumix-install/

Atención: como habrán notado agregué la instalación de algunos paquetes. Para que el tema funcione bien con aplicaciones gtk2 necesita las engines murrine, pixbuf y unico, así que tienen que instalarlas. Si no instalan estos paquetes Firefox, Thunderbird y otras aplicaciones que usen motores gtk2 se van a ver rotas.

Alternativa: Instalación Manual

  1. Descarguen el paquete desde acá
  2. Descompriman el .zip
  3. Naveguen en la carpetas extraídas hasta ver la carpeta que se llama “Blumix” (no blumix-master)
  4. Abrir un navegador de archivos con permisos de root (alt+f2, gksu nautilus)
  5. Copiar la carpeta Blumix a /usr/share/themes/ desde el navegador de archivos con permisos de root
  6. Aplicar el tema con ubuntu-tweaks, unity-tweak, gnome tweak tool o la herramienta que quieran.
  7. Aplicar el borde de ventana con la misma herramienta.
  8. Se ve mal? instalar las dependencias del tema:
    sudo apt-get install -y gtk2-engines-murrine gtk2-engines-pixbuf gtk3-engines-unico
  9. Re-aplicar el tema o salir y volver a entrar de la sesión (sólo si no tenían las engines).
  10. Reportar bugs o comentarios acá o en github.

Screenshots para el pueblo

Lluvia de screenshots pa’ los curiosos! Todos son desde Ubuntu 13.10 con Gnome-Shell 13.11. :)

Nautilus. Nautilus tabs. loe nautilus

Libreoffice Writer 4.2libreofiice-writer

Nautilus full-screen.nautilus

Cambiando el fondo. :Pcobfig

Gtk2 Simple. gtk2

Gnome tweak tool. gnome-tweaks

Granite apps (Elementary OS). Scratch, Agenda y Midori. Experimental. granite-scratch,agenda,midori

Firefox 30 Nightly tema default.Captura de pantalla de 2014-02-13 22:15:05

Thunderbird todo default en Ubuntu 13.10.Captura de pantalla de 2014-02-13 22:17:49

Firefox 27 tema default.Captura de pantalla de 2014-02-13 22:17:05

Cambios en esta última versión (changelog)

Este va en inglés, sorry. Es un embole leerlo así que no creo que valga la pena traducirlo. Si alguien quiere preguntar algo o necesita una traducción, encantadísimo me expando en los comentarios.

Changelog V1.0 (yey!) [Feb. 2014]

  • New revisited Gtk3 theme: Now focused on gtk3.10 (no further development for previous gtk versions -3.6, 3.8-, sorry). New toolbars, Headerbars, Buttons, new buttons-headers-indicators-checks rounding (all over to gain coherence), new neat scrollbars, fixed distances, early version of animations. Several detail focused fixes.
  • New Gtk2 theme, massively reworked: *scrollbars
    *buttons focus
    *separators (now are transparent! ^_^)
    *Handlers (Transparent)
    *Incresed integration
    *Libreoffice integration
    *Menu-button policy
    *Use of pixmap to force fixing some stuff
  • New Window Borders: Focused (unfocused) effect, rounding, lateral borders fix, new buttons, elements ported to svg.
  • First granite wigets integration (Elementary OS). New tabs, colors and stuff. :P
  • Nautilus: complete rework. Now it is minimal. But really minimal. (oh!… and usable too!). :)
  • New dependences. It now requires an additional engine to draw pixmaps (besides murrine). In ubuntu, run in a terminal the following line in order to install it: sudo apt-get install -y gtk2-engines-murrine gtk2-engines-pixbuf

Bueno, eso es todo por ahora. Lo que estoy seguro: no se termina acá. :)

Salú!

Blumix 1.0: actualizado el tema gtk3.10, minimalismo nuevo.

[Wallpapers] Mi (pre)selección del concurso de walls de Ubuntu-Gnome 14.04

Hola a todos,
Hoy voy a hacer un post de wallpapers. La verdad es que no se por qué razón no hice cosas de wallpapers hasta ahora, siendo tópico con la que realmente tengo una manía extrema jeje (cambio el wall, un click por ahí, cambio el wall, un click por allá… etcétera etcétera). En fin. :P

Como algunos sabrán, hace unas semanas se abrió el concurso de wallpapers para Ubuntu-Gnome 14.04 el cual, debo decir, ha tenido un éxito rotundo. La calidad y cantidad de fotos e imágenes que hay es realmente alta, y exceptuando algún que otro colgado que pone imágenes con resolución 400×600 (cuac!) en general todo está muy por sobre el estándar de lo que se encuentra en sitios de wallpapers (digo… hermosas fotos en resoluciones altísimas de hasta ~5000×2500 pixels).

En fin, recorriendo la enorme cantidad de walls que ustedes mismos pueden chusmear en su estado puro en el Flickr del concurso, hice una selección personal de acuerdo a lo que me gusta a mi. Esperando destilar unos 10, me sorprendí por lo buenos que son algunos (y sobre todo no difundidos!), así que al final quedé con 81 wallpapers excelentes! :D

Dentro de los 81 está difícil hacer una nueva selección, así que los jueces la van a tener complicada. Espero que al menos una parte de estos que estoy poniendo queden seleccionados :)

Acá les dejo un resumen de lo que van a encontrar en el pack:
Unnamed vie feb 7 20141

Y acá el link desde donde pueden descargar los wallpapers. Todos con resolución superior a 1600×1200 (en general 2048×1360).

> DOWNLOAD (72Mb)< |@Copy

>Mirror: DOWNLOAD< |@Mega

Edit (Gracias por avisar Luxio!): Agregado un mirror en Mega y redirigido el link de Copy ~ Señores Copy: No me gusta nada lo que hicieron con la interfaz. Además removieron el link directo para compartir archivos… una cagada :(

Salú!
:D

pd. no tengo nada que ver con el comité que seleccionará las imágenes que van a ir en la distro. ^_^

[Wallpapers] Mi (pre)selección del concurso de walls de Ubuntu-Gnome 14.04

Solucionando el doble ícono de Google Chrome con Plank

Hola a todos y todas!

Hoy voy a escribir sobre un tema bastante simple, aunque bastante molesto también. Se trata del navegador Google Chrome y su interacción con Plank, mi dock favorito jeje (y si, sime apuran tanto el problema como la solución valen para cualquier otro dock de linux, si si). Vamos a arreglar el “doble ícono en el dock”. :)

Síntomas:

Ejecutamos Google Chrome y lo fijamos en el dock (click derecho, Mantener en el dock desde Plank) como con cualquier otra aplicación. El problema es que cuando lo ejecutamos, paf!, se abre otro ícono exactamente igual, ignorando el hecho de que habíamos fijado previamente la misma aplicación en el dock.

Esto es lo que pasa, un video vale más que mil palabras :P

Solución:

La solución es bastante simple. Iba a hacer un “Ninja Install”, pero la verdad es que no vale la pena escribir tanto código por una pavada así (digo, interactuando con el mouse se soluciona muuuucho más fácil). En suma, ahí van los pasos:

  1. Quitar de Plank el ícono de Google Chrome y cerrar el programa si lo tenemos abierto.
  2. Abrir una terminal y pegar:
    1. sudo cp -a /usr/share/applications/google-chrome.desktop /usr/share/applications/google-chrome-stable.desktop
    2. Luego escribir: google-chrome-stable
  3. Al ícono que aparece en Plank, darle click derecho y hacer un check en “Mantener en el dock”

Listo! :D

Acá un videíto de cómo funciona la solución (si, se puede hacer todo en un comando combinando los pasos 2.1 y 2.2 con un “&&” ^_^):

Explicación

El problema tiene que ver con el launcher de Google Chrome. Básicamente el asunto es que el archivo .desktop tiene un nombre diferente al comando (que está dentro del mismo archivo) que ejecuta Chrome, haciendo que Plank no reconozca que estamos hablando del mismo programa.

La solución (bien bien atada con alambre) que se me ocurrió, fue hacer un launcher que cumpla con la condición nombre del archivo .desktop = nombre del comando que dispara el programa. Para eso primero busqué en el archivo .desktop de chrome para ver cuál era el ejecutable “de verdad”. Lo hice con el comando nano /usr/share/applications/google-chrome.desktop buscando la linea “Command= algo”… ahí me dí cuenta que el command era diferente del nombre del archivo. El command es google-chrome-stable, así que lo único que hacemos es crear un nuevo lanzador que tenga ese nombre (paso 2.1). Luego lo probamos a ver si funciona, y listo.

Quiero agradecer al amigo Christian Duran por haber planteado la pregunta en este post. Básicamente hice un post a partir de su inquietud jeje. Debo decir, sin embargo, que es un asunto que me rompió siempre bastante las bolas y que recién ahora pude solucionar. Muy contento, les dejo un saludo hasta la prósima. :)

Salú!

Posdtata: si, pueden borrar a la mierda el lanzador original de chrome. No sirve para nada. Métanle sin miedo con un lindo  sudo rm /usr/share/applications/google-chrome.desktop

Solucionando el doble ícono de Google Chrome con Plank

Ubuntu: Solucionar problema de copiar-pegar con Inkscape (UniConvertor Failed)

Hola a todos y todas,

Hoy me meto con Inkscape, el editor vectorial por excelencia del mundo open-source. Inkscape está en los repositorios oficiales de Ubuntu desde hace años y se instala con un simple sudo apt-get install inkscape en una terminal.

Captura de pantalla de 2014-01-07 10:02:38

Sin embargo, desde hace varias versiones de Ubuntu (desde la 12.04 precisamente) he estado experimentando aleatoriamente un problema realmente molesto. ¿Qué pasa? Estamos trabajando en Inkscape, le damos copiar a cualquier objeto y cuando lo queremos pegar aparece un error horrible. El error tira:

UniConvertor Failed: Cannot list /home/$USER/uniconvertor:[Errno2] No such file or directory: /home/$USER/uniconvertor

Cuando le queremos dar “Aceptar”, el botón no funciona. Lo único que queda es apretar “Escape”. Tras 2-5 segundos el cartel vuelve a aparecer. Y si lo cerramos volverá a aparecer nuevamente… hasta el infinito. Lo único que quedará por hacer es tratar de apretar ctrl+s para salvar los cambios entre la aparación de los mensajes y luego cerrar Inkscape violentamente.

Captura de pantalla de 2014-01-05 21:21:35

Nada, lo digo: es una reverenda cagada que pase esto con un programa tan importante en lo que se supone es “su ambiente natural” (i.e. GNU/Linux).

La solución al Error UniConvertor Failed de Inkscape

Bueno, como siempre traté de hacerlo en un comando. Este script lo tengo desde hace un tiempo, así que está súper probado. Las soluciones que hay en internet son variadas, y lo primero que uno esperaría es instalar todas las versiones de Uniconvertor. NO. La salida viene por otro lado. Abran una terminal y peguen esta Ninja-Solution ^_^:

sudo apt-get install build-essential python-all-dev liblcms1-dev libjpeg62-dev libpaps-dev -y && cd ~ && sudo chmod 755 ../../usr/share/inkscape/extensions/gimp_xcf.py && sudo chmod 755 ../../usr/share/inkscape/extensions/jessyInk_export.py && sudo chmod 755 ../../usr/share/inkscape/extensions/uniconv_output.py && sudo sed -i '110,217 s/^/#/' ../../usr/share/inkscape/extensions/gimp_xcf.py && sudo sed -i '103,115 s/^/#/' ../../usr/share/inkscape/extensions/jessyInk_export.py && sudo sed -i '88,92 s/^/#/' ../../usr/share/inkscape/extensions/uniconv_output.py

Explicación: instalamos paquetes faltantes, cambiamos permisos de archivos locos y, lo más importante, editamos parte del archivo univonv_output.py eliminando la causa del error. Eso es todo.

Edit: Aparentemente este es un problema que se da cuando corremos Inkscape junto con otros programas. Particularmente JDownloader, pero además diversos programas de tipo “gestores de portapapeles”. El fix funciona para JDownloader y Percellite (gestor de portapapeles), el problema sin embargo persiste con Diodon (otro gestor de portapapeles). Probablemente con otros gestores el fix funcione o no, será cuestión de probar. :)

Tadaaaaa! ^_^

Ahora si, a disfrutar de Inkscape :)
Salú!

Ubuntu: Solucionar problema de copiar-pegar con Inkscape (UniConvertor Failed)