Archivo de la categoría: Tecnología

Manual en español de Libreoffice: Domando al Escritor

Gracias al comentario Swicher en un pequeño articulo que hago sobre lo que busca la gente: Ayudando a los que buscan: tutorial libreoffice

Y Swicher dijo:

Swicher
2020-02-11 a las 08:11

También esta Domando al Escritor enfocado en LibreOffice Writer y que podría interesarle a mas de uno.

Gracias por el comentario Swicher.

 

P2P eléctrico

Es algo que llevo oyendo hace años, y hablando con un amigo ingeniero industrial…y un poco casposo…pero es un gran amigo…decía imposible, no se puede hacer no hay tecnología para hacerlo…claro que no es todo analógico y con autómatas, tienes que meter informática…

Es fácil, entrecomillas, la informática puede ayudar, pero sería que las casas son prosumidoras, tanto sueltan electricidad a la red como la toman cuando es necesario…y si acaso «las eléctricas» pueden estar ahí para mantener unos mínimos abastecimientos en la variante red.

Las familias se quieren independizar de las distribuidoras eléctricas: el Reino Unido prueba el peer-to-peer

Y en ingles de la universidad de Bristol: New research to explore peer-to-peer ‘free trade’ in excess energy

Como esto funcione…¿Saldrá una SGAE las eléctricas diciendo que somos unos ladrones por sacar electricidad del Sol?

Tocate los pies: NoCode tools II

Parte segunda…porque hay tela que cortar con el rollo este de las herramientas sin programar.

Una cosa que se me olvido contaros en el anterior articulo Tocate los pies: NoCode tools y no quiero olvidarme.

Vemos un ejemplo de el funcionamiento de una herramienta nocode con mi querido PlantUML os pongo el código de plantUML para hacer el diagrama (ya veis code as everything…para que perder el tiempo alineando cajitas y flechas) pongo el código primero:

@startuml
actor "Usuario feliz" as usuario
file "Fichero\nproyecto" as fichero
node "NoCode\nTool" as nocodetool
artifact "Bonita\nAplicación" as aplicacion

title La felicidad de las nocode tools.

usuario --> nocodetool
fichero --> nocodetool
nocodetool --> aplicacion
@enduml

Vale ahora quitamos de en medio la cajita de NoCode tool, y la podemos quitar porque:

  • Si tu NoCode tool no es software libre, ya estas vendido eres el esclavo de la empresa que lo fábrica.
  • Porque el sistema base donde funciona no es software libre y tu NoCode tool solo funciona para esa empresa.
  • También puede ser que el NoCode tool al ser privativa, cambie de versión y no puedas tenerla por X razones y no puedas publicar tu aplicación si es en su nube.
  • O también puede ser que al cambiar de NoCode tool al ser privativa, cambie de versión y tus ficheros de proyectos que solo funcionan en la versión x.xx ya no funcionan en la versión x+1.xx .

¿Y entonces qué pasa? Pues que te quedas con un bonito fichero de proyecto que no vale para nada y que vas a tener que invertir mucho tiempo y dinero en convertirlo a otra herramienta NoCode o traducirlo a un lenguaje de programación mas toda la tecnología asociada y necesaria.

Y hay peores casos, porque herramientas en la nube que te permiten crear aplicaciones y páginas, algunas veces no te dejan descargar «los ficheros de proyecto» y puedes perder las dos cosas, «la herramienta no codificación» y tu trabajo fuente.

 

Curioso articulo en el ¿blog de lenovo? Sobre agricultura e intermediarios

Bueno ya sabéis que estoy opositando para ministro de agricultura…con artículos como: Los intermediarios son los parásitos

Pues informándome un poco mas del tema….¿Lenovo tiene un blog? Por cierto, no es un blog…un blog tiene que tener comentarios, eso es una página de artículos…

Lenovo es una empresa (¿Creo que china?) que hace portátiles.

Pues han hecho el siguiente articulo: Del campo a tu mesa sin intermediarios: ¿la verdadera ecología?

Pero si buscas sobre Linux en el «blog de lenovo» no sale un ridículo articulo sobre el sistema operativo en un portátil de Lenovo.

SANYO DIGITAL CAMERA

Tocate los pies: NoCode tools

De cierto articulo en medium que habla de NoCode tools que no pienso enlazar por no dar mas pábulo a esta tontería.

Me entero de la tontería de NoCode tools, que viene a ser productos de software, en formato de programas o SAS (webs para hacer las cosas) donde no echas ni una linea de código.

¡¡Ohhh dios bendito me duele echar código!!!

A ver, primero es normal no querer echar código si no trabajas, pero no chulees de hacer las cosas sin echar código cuando si es necesario, porque al igual que «si la web es gratis, el producto eres tu», «si usas nocode tool para algo serio has caído en su trampa».

Ejemplos clásicos de vergüenza, son lo que en hacking se llamaba Script kiddie, que eran juankers que se creían que por usar una herramienta de hacking eran hackers…ya ultimamente hace unos años se pasaron a las ISOs de GNU/Linux live de hackeo de wifis.

Yo en el pasado he usado NoCode tools y las he disfrutado y he hablado de ellas pero no he chuleado porque se que eran un juguete que me limitaban a lo que el creador me dejara hacer, pero ahí va mi lista:

  • Neobook: (no hay artículo en ninguna wikipedia solo del NeoPaint) que era un programa para win98 para hacer los menús de los CDs en plan CD-Mix, ponías botones, imágenes…era como un micro$oft visualbasic cutrillo (porque alguna linea de código si te dejaba echar). Pero ahí quedaban rechulones los CDs con tus cosas para prestar a los amigos.
  • RPG Maker 2K: un programa japones de una empresa japonesa que le daba lo mismo el resto del mundo (como pasaba en los 90 que había juegazos indie en Japón que ni dios conocía). Y que se lo hackearon para traducirlo al ingles y del ingles lo tradujeron al español. Era para hacer juegos de tipo RPG  de supernintendo con combates por turnos, ahí estuve disfrutando de hacer un juego de un adolescente que tenía que buscar por el mundo páginas de una revista playboy de oro para ganar la mansión/castillo playboy…un día tengo que buscar lo que hice…
    Por suerte de este NoCode tool hay una versión libre que va avanzando muy bien aunque lleva años en desarrollo que se llama EasyRPG.
  • HotDog webeditor: todos tenemos un pasado oscuro, recuerdo que yo también quería hacer páginas web pero no tenía los skills actuales que me das dos cables pelados y a base de chispas puedo picar un html completo…me ayudo mucho el perro salchicha porque tirabas el código directamente pero te autocompletaba y te daba opciones a golpe de ratón (vamos como hacen ahora los bobosdeloscojones con pycharm y se creen que saben programar)…por cierto había cosas peores parecidas a la heroína quemada en cuchara como Microsoft FrontPage.

Herramientas de NoCódigo que odio odio, pero me killmean:

  • Micro$oft Access: mierdas que hace micro$oft, no es una BD seria pero te pone un interfaz para hacer informes y ventanas en plan con un subconjunto visualbasic, y muchas muchas pymes tenían hechos complejos programas de facturación e inventario en este infecto monstruo.
  • FileMaker Pro: siempre hay algo peor, siempre puede haber una Guatepeor, el m$-access para Apple, haz las mismas mierdas o peor usando mierda chapada en oro.
  • Flash: que voy a decir, ojala te pudras en el infierno ya que en el 2020 te dan por muerto. Popularizo las web de código cerrado.

Herramientas NoCode que uso actualmente y usa mucha gente, no pasa nada no siempre hay que estar con los puntos y comasy tal:

  • WordPress: no vas a montarte tu todo con PHP y tal, para tener un blog.
  • Me quedado en blanco, no me viene ninguna mas a la cabeza.

Y ahí mi sesión ácida de hoy.

Trucos: Debugger de js/ecmascript en los navegadores

Al final siempre te despiertas y aprendes algo nuevo, o el refrán al revés.

El console.log es nuestro amigo desde hace años, no se si existió antes de otro viejo amigo que se fusionó Firefox, el plugin Firebug.

He encontrado hace unos días este listado de trucos (escrito en el idioma de «chespir«):

JavaScript developer must know these Console methods.

Hay cosas curiosas que no sabía cómo:

console.table(tabledata, tablecolumns)

Para pintar un objeto o un array en una tabla en log del debugger.

console.time(label) & console.timeEnd(label)

Para pintar cuanto tarda en ejecutarse un trozo de código encerrado entre ellas.

console.assert(expression, message)

Rollo como cuando metes ese unicornio que no existe en las putas empresas españolas, tests. Pues te hace lo mismo, te muestra el mensaje si se cumple la condición.

Ya veis, el tonto afirma, el sabio duda.

Tips/Trucos: Para diferenciar un producto de una tecnología

Vamos a ser didácticos, porque si no trabajas en una cooperativa las «mentes pensantes» que tienes por encima en las reuniones de proyectos y sprints y mierdas similares, se llenan la boca con «vamos a usar la tecnología X y la tecnología Y y usaremos un desarrollo agile y blablablaba.».

O las psicópatas de recursos humanos (aka reclusos humanos) que normalmente son psicólogas con ínfulas de guardiana de campo de concentración…estoy esperando que en una entrevista de curro me pregunten «te encuentras una tortuga boca arriba en el desierto…». Son gente que trata a la gente como recursos y que se la suda despedir a personas con sus cosas humanas si no rinden en determinado momento concreto pese a ver salvado docena de veces el culo a la empresa, ojala haya un infierno para ellas y sea un diablo que les haga picar piedra con las manos desnudas y les haga un cuestionario cada 2 horas de su valor en la infierno.

Pues esta gente psicópata normalmente en la entrevista de trabajo te sueltan una batería de preguntas sacada de «las 10 tecnologías del año según forges/sección_tecnología_el_mundo/yahoo/o_su_puta_madre_en_bragas» pasando cosas tan curiosas como en mis tiempos mozos ver ofertas de trabajo en el tablón de anuncios de mi universidad que pedían «3 años de experiencia en puto-asqueroso M$-.Net» cuando lo habían empezado a vender ese mismo año.

Lo primero es lo primero…¿Qué es una tecnología?

Pues lo siento hijo mio, pero una tecnología puede ser cualquier cosa, y ya me he adaptado a este pseudolenguaje y también digo tecnología a todo, porque puedes decir:

  • en el proyecto X usamos tecnologías json
  • en el proyecto X usamos tecnología Python
  • en el proyecto X usamos tecnología Flake8
  • en el proyecto X usamos tecnología Django
  • en el proyecto X usamos tecnología BigData
  • en el proyecto X usamos tecnología MariaDB
  • en el proyecto X usamos tecnología git
  • en el proyecto X usamos tecnología teclados de membrana para joderle las articulaciones a los programadores
  • en el proyecto X usamos tecnología Blockchain

Y te quedas tan pancho, nadie te va mirar raro en la reunión, o nadie te va contestar al email intentando aclarar que eso no es una tecnología…salvo pedantes y pimpollitos recien salidos del FP/Univesidad….¡¡OJO!! FP o Carreras técnicas (o gente que se a pelado el  porque los que salen de ADE o Empresariales o Económicas esos te miran ojos de salmón de la pescaría encima del hielo y si ven que pueden chupar bien al jefe si esta en esa reunión…se apuntan al carro diciendo «si, si la tecnología PITICLIN es muy puntera he visto proyectos de Google que la usan».

Vale ahora vamos a ver cuando una tecnología es un producto.

Pues como todo es una tecnología. Vamos con una lista de checks para saber lo que es un producto:

  • ¿No es algo físico que puedas coger con las manos? Entonces es software, documentación, etc. ¿Es libre (software libre, o CC by-sa o similares)? NO, es un producto.
    • Ejemplos:
      • (antiguo por suerte) Microsoft Visual Basic 6, tienes que comprarlo.
      • APIs a online resful a por ejemplo datos de resultados deportivos, que a parte de pedirte un registro, te cobran por el uso, frente por ejemplo el API de Wikipedia u Openstreetmap que es de acceso libre.
      • Las API a servidores de software privativo, puede que en la siguiente versión les salga de los cojones cambiarla y te jodan medio proyecto.
      • Mierdas de IDEs como PyCharm que la versión «libre» es una mierda pinchada en un palo, y los cabrones te venden una versión privativa con lo que le da valor al puto IDE.
  • ¿Es un estándar? ¿Quién lo mantiene? Si lo mantiene solo 1 empresa o un conglomerado de empresas camuflados bajo una fundación…es un producto. Y ellos son los dueños y cuando quieran cambian. El contra ejemplo es cuando el estándar esta bajo una fundación y ves que en ella hay asociaciones, fundaciones, ongs, empresas variadas e incluso enemigas, como por ejemplo OpenGL.
    • Ejemplos:
      • Cualquier estándar de la industria de la automoción, son sus gatos y se los ****. Y no hablo solo de los protocolos de comunicación, imaginad un mundo en que se obligara a estandarizar las piezas de los coches como mas o menos se hace las de PCs y así.
      • Lenguajes de programación de mentira o productos como m$-.Net o Kotlin o Objetive C que solo lo lleva una empresa.
      • Las clavijas de los productos de Apple.
  • ¿Si es algo físico? ¿Se basa en estándares de verdad (ver anterior punto)? NO, un producto. ¿Lo fabrican muchas empresas la misma cosa física? NO, un producto.
    • Ejemplos:
      • CUALQUIER PRODUCTO DE APPLE
      • Muchas videoconsolas, salvo las que estanhechas con Android.
    • Corolario
      • Y por contra, ya para que «eso físico» reciba el calificativo de una tecnología DE LA HOSTIA….¿Lo puedes mas o menos fabricar tu (tanto en garaje o mandarlo a que te hagan las placas)? Si, entonces es una tecnología DE LA HOSTIA. Y  como superlativo para que sea una tecnología DE LA REHOSTIA. ¿Puedes fabricarlo de cero tu? Si es SI, es una tecnología de la REHOSTIA…cosa que Arduino solo es una técnologia de HOSTIA y no es un tecnología DE LA REHOSTIA porque la CPU que es una atmega xxx no es hardware libre, es un producto que si o si debes comprar a Atmel o sus copias chinas. Macho David Cuartielles a ver si le metes caña al Arduino con Risc V.
  • ¿El software no es software libre y solo es open source? Entonces es producto.
    • Notas:
      • Ocurre como PyCharm y asi que la «version libre» no es un versión completa y «lo enterprise» son añadidos, si no es una «versión mutilada».
      • Cuando el proyecto no acepta contribuciones (o pull request o ranas en sidra) que «no sean buenas» para la empresa que lo lleva.
      • Hay que sospechar cuando el proyecto lo lleva solo una empresa y encima es de las que llamamos «empresas malvadas», aunque a veces no influye.
      • También hay que sospechar cuando pese a ser un proyecto viejo, ninguna distribución lo tiene empaquetado, sobre todo si es Debian.
      • Cuando el código fuente lleva blobs o código cifrado u ofuscado.
      • Cuando tiene una licencia anti GPL.
      • Cuando los assets (rollo músicas, gráficos, videos) o ficheros no de codigo fuente, no son libres. Ejemplo claro el típico videojuego que va de libre pero no tiene ni siquiera libres un pack de gráficos y niveles de demo, lo que buscan son tontos que les mejoren el motor de gratis.
      • Cuando no existe documentación, o la documentación es una puta mierda pinchada en un palo, o para poder usarlo de verdad son cursos pagando.
      • Sospecha el proyecto esta overengining o tiene complejidad artificial.
      • Cuando le falta algo esencial para que funcione, ejemplo anterior los assets de videojuegos.
      • Cuando no compila, despliega el proyecto desde las fuentes.

Y consejo del día, por tu bien intenta en los proyectos usar tecnologías en vez de productos, porque quien sabe que vueltas da la vida y cuando te van a dejar tirado el que te ofrece el API y te quedas sin esa importante funcionalidad, y como era un producto de mierda pues no puedes decir pues «me voy a montar el API que ha desaparecido en un server mio con casinos y putas.» y buscate la vida.

 

De joven creía que los lenguajes de programación no deberían tener versiones

Vaya título mas largo que me he marcado, nota todavía me siento joven, pero si un día un psicópata no religioso me apuñala espero que no pongan en las noticias de la tele «el psicópata en su camino asesino a varias víctimas entre ellas un joven de 40 y pico años….».

Pues eso que gracias al comentario de Rotietip en Cosas que odio de los lenguajes de programación, releerme lo que escribí hace 3 años y los links que me ha puesto,  me ha venido a la memoria mis recuerdos mozos, de cuando llevaba el pelo largo y camisetas metaleras, ahora…camisetas metaleras.

Y en aquellos tiempos, pensaba «¿¿Cómo un lenguaje puede tener versiones??», pensaba que un lenguaje debe ser sagrado y perpetuo como las tablas de la ley escritas en piedra, y a parte de por ser una puta mierda y solo productos comerciales y no tecnologías, las mierdas de lenguajes de programación que inventaba Micro$oft, porque que si había m$-visualbasic5, m$-visualbasic6….

No se en que momento cambio mi pensamiento, porque también recuerdo ver con cara-asco lo de la fiesta de javascript y sus versiones y su «live standard» que se basa en que toda la azúcar sintáctico e inventos varios se transpila a versiones mas antiguas de javascript.

¿Y ahora en que piensas Miguel?

Pues he matizado ese pensamiento, y pienso que UN LENGUAJE ES UNA PUTA MIERDA SI NO ES DE LA COMUNIDAD Y NO SE ESTANDARIZA POR UN COMITÉ .

Si el lenguaje se lo inventa una empresa y hace  con el lo que le sale de los cojones y con cada cambio de versión destroza las cosas porque le sale de los cojones…porque algunas veces los destrozos son necesarios para evitar canceres…pero no porque te sale de los cojones. Y ya para mas inri, si no es un estándar abierto y libre, y necesitas por cojones su compilador de pago o no pero no libre, pues ojalá te pongan una bomba en la empresa cuando no este ni el personal de limpieza, ni los trabajadores mal pagados, solo los putos comerciales y jefes y demás gente que chupa del bote sin dar palo al agua y que solo jode la marrana. Y reviente pero no os mate instantáneamente y os de tiempo a saber que vais a morir y que la mierda de vuestros intestinos desparramados os haya salpicado la cara siendo el sabor a mierda último que saboreareis en vuestra puta vida.

Me «quedaó» agusto con la maldición gitana.

Dicho esto, me acuerdo del caso Perl 6 cambio de nombre a Raku básicamente porque cambia tanto de Perl 5 a 6 que se vuelve incompatible y para que andar fastidiando.

O el rollo de C++ y sus versiones que mas o menos lo que hacen es ir adoptando lo que avanzando las librerías boost que te dan cosas de los lenguajes modernos de programación.

Por cierto a Python2 le quedan 18 días vida según la fecha de publicación de este articulo. Aunque queréis que os cuente un secreto…es mentira, python2 le quedan mínimo 10 años de vida en las cárnicas de mierda que por hacerse los modernos dejaron de un lado la mierda de java con spring para sus proyectos de bancos o de entidades públicas a golpe de sobre y abrazaron python2. Y después en las distribuciones de GNU/Linux 5 años o así seguirá vivo porque hay mucho proyecto legacy que lo usa…como paso con librerías GTK2 o SDL1.

Y os dejo con un consejo niños, no ejecutéis los scripts bash como:

$ sh mi_rechulon_script_en_bash_porque_me_siento_un_juaker.sh

Si no:

$ chmod 700

$ ./mi_rechulon_script_en_bash_porque_me_siento_un_juaker.sh

O

$ bash mi_rechulon_script_en_bash_porque_me_siento_un_juaker.sh

Salvo que el shebang lo tengáis como:

#! /bin/sh

Os lo digo porque hace unos meses me encontré a UN SENIOR DEVELOPER PRO OPEN SOURCE PERO QUE USO WINDOWS (podía ser peor y usar Mac) que no tenía ni guarra y se quejaba de los scripts bash no le funcionaban…no te jode…si los lanzas con sh pierdes toda la compatibilidad de bash porque:

bash != sh

Powerline Docker: Si existe y es fácil de instalar

De la saga peliculera: Powerline: configurandolo para Bash y GNU/Linux (of course) y mi duda si había un segmento para vigilar docker.

Pues si, lo hay y se llama: Powerline Docker

Y para instalarlo, primero tienes que tener instalado el Powerline (revisa el anterior link de arriba) y después instalarlo con:

$ pip install powerline-docker

Y después la coña marinera de añadir el juego de colores…debería ser distinto en plan cargarlo de un fichero que venga adjunto al plugin.

Añadir a:

/home/<usuario>/.config/powerline/colorschemes/default.json

    "docker":                    { "fg": "gray8",           "bg": "darkestblue", "attrs": [] },
    "docker_running":            { "fg": "green",           "bg": "darkestblue", "attrs": [] },
    "docker_paused":             { "fg": "brightestorange", "bg": "darkestblue", "attrs": [] },
    "docker_exited":             { "fg": "brightred",       "bg": "darkestblue", "attrs": [] },
    "docker_restarting":         { "fg": "gray10",          "bg": "darkestblue", "attrs": [] },
    "docker:divider":            { "fg": "gray4",           "bg": "darkestblue", "attrs": [] }

Añadir el segmento a vuestro fichero de configuración de shell:

{
	"function": "powerline_docker.docker",
	"priority": 30
},

Y después el típico replace del demonio:

$ powerline-daemon --replace

Y ya esta:

Y os saldrá el emoji de la ballenita con el contador de contenedores en funcionamiento en mi caso solo 1 y 13 contenedores parados.

Por cierto las frutitas que veis es un segmento que he hecho.

Powerline: configurandolo para Bash y GNU/Linux (of course)

No tengo tiempo para escribir, y estoy hablando del famoso powerline que ha habido mucho artículo en la blogosfera hispana estas últimas semanas.

Y paso como con SQLite la gente mucho hablar, que si tal que si cual, pero enseñame la mandanga, porque puedo hablar del espíritu de la gominola y pero si no me he manchado las manos es como ser «entrenador de fútbol de barra de bar», y tengo que reconocer que SQLite ha mejorado pero por ejemplo no trae comprobación de tipos por defecto y aquí te lo explicaba en Domesticando SQLite.

Hace unos años un excompa de curro que por desgracia usaba Apple, nadie es perfecto, puede que ya haya gente nativa digital en el mundo libre, pero muchos hemos usado cosas asquerosas como m$-win98 y andabas que si cygwin, dev c++ y al final decías «¡Que cojones! ¡¡¡Vamos a ser serios y valientes y ni particionar disco duro, ni ostias, todo para GNU/Linux!!!» Y pasado unos meses ya estas siendo libre. En mi caso la última vez que hice el gilipollas fue con WinXP haya por 2004, después, ya los discos duros están eticamente configurados.

Pues lo lamentable de los maqueros, es que no se si por secta o por gilipollez parecida a un adolescente que se gasta un pastizal en una zapatillas de marca o unos vaqueros (en mis tiempos mozos eso pasaba), o por economía porque tiene que ser muy vergonzoso gastarte un pastizal en portátil que le cambias el sistema operativo y ya no es elitista y encima ves que va mejor y que podrías haberte gastado menos dinero.

Pero bueno esta gente intenta acercarse a como vivimos bien la gente en GNU/Linux, pero sin dar el paso, y este excompa me enseño el rollito de que usaba mucho la terminal y tenia un invento que no se si sería powerline o algo parecido.

Pasaron los años. Y eso la blogosfera hispana empezaron a hablar de Powerline.

Pensé, voy a ponerlo y catástrofe, no funciona bien. Y a partir de este punto os voy a contar la mandanga de Powerline y como ponerlo rechulon y útil.

¿Qué es el powerline?: Es un script python para tener una linea de comandos hipervitaminada. Pasamos de:

A esto:

También se puede usar como barra de aplicaciones en I3 hasta barra de estado para Vim, entre otros. Pero en este articulo nos centramos en la shell de toda la vida.

El powerline se pueden configurar zonas/lados, en una shell típica tienes el prompt a la derecha. Pero el powerline soporta derecha, izquierda e incluso arriba.

Malas noticias, Bash no soporta lado derecho, solo lado izquierdo.

Instalar Powerline, puedes o instalarlo desde pip pero es mas recomendable (aunque no sera la última versión) instalarlo desde el gestor de paquetes del GNU/Linux en mi caso LinuxMint:

$ sudo apt install powerline fonts-powerline

Para activarlo en Bash tiene su miga porque tienes que editar tu fichero de configuración de usuario en:

/home/<usuario>/.bashrc

Añades al final el siguiente trozo de código que le dice que lance el demonio de powerline y ejecute el powerline

# Powerline
if [ -f /usr/share/powerline/bindings/bash/powerline.sh ]; then
	powerline-daemon -q
	POWERLINE_BASH_CONTINUATION=1
	POWERLINE_BASH_SELECT=1
	source /usr/share/powerline/bindings/bash/powerline.sh
fi

Y lo mejor salir y entrar de la terminal para que cargue la nueva configuración.

La configuración de Powerline por defecto es chula, pero se le puede dar mas cera, en la documentación dice que merguea el fichero de configuración por defecto del sistema con la que tengas personal en tu usuario ¡¡MENTIRA!! . La que tengas en personal te la machaca, sobre todo los segmentos. Los segmentos son los trozitos del separados del prompt. Solución al machaque insensible, pues copiarte el fichero de configuración del sistema y modificarlo a tu gusto.

Entonces tienes que hacer:

$ cd ~
$ mkdir -p .config/powerline/themes/shell/
$ cp /usr/share/powerline/config_files/themes/shell/default.json /home/<usuario>/.config/powerline/themes/shell/
$ <editor_favorito> /usr/share/powerline/config_files/themes/shell/default.json

Hay plugins para Powerline yo uso powerline-gitstatus, después os cuento como se instala, pero antes os muestro mi configuración, os explico cosas y tal:

{
	"segments": {
		"left": [
			{
				"function": "powerline.segments.common.time.date",
				"priority": 20,
                "args": {
					"format": "%H:%M"
				}
			},
			{
				"function": "powerline.segments.shell.mode"
			},
			{
				"function": "powerline.segments.common.net.hostname",
				"priority": 10
			},
			{
				"function": "powerline.segments.common.env.user",
				"priority": 30
			},
			{
				"function": "powerline.segments.common.env.virtualenv",
				"priority": 50
			},
			{
				"function": "powerline.segments.shell.cwd",
				"priority": 10
			},
			{
                "function": "powerline_gitstatus.gitstatus",
                "priority": 90
            },
            {
				"function": "powerline.segments.shell.jobnum",
				"priority": 20
			},
			{
				"function": "powerline.segments.shell.last_status",
				"priority": 20
			}
		]
	}
}

«Cosas» de la configuración:

  • Es un fichero json
  • Si necesitas saber si la configuración esta bien, Powerline te da un comando para probar si la configuración (usando la de sistema y la tuya a la vez que es como sera) es:
    $ powerline-lint

    Y te devolvera errores o mejor ninguno.

  • Como estamos en Bash, solo usamos el subarray «left«.
  • El orden es de arriba abajo, y en la pantalla saldran de izquierda a derecha.
  • Cada hash, dict, array asociativo o platanos con chocolate (aunque mas o menos se esta poniendo de moda lo de dict) es un segmento (un trozito del prompt), y es:
    • function: el segmento a poner, podeis ver que son en plan modulos de python, «modulo.submodulo.submodulo.funcion». Y por ver los que hay (hay muchos muchos y muy curiosos en el core y como plugin, que si batería, que si carga de cpu, metereología….) :
      • powerline.segments.common.time.date: segmento para poner fecha y tiempo. Si ya se que en el escritorio, en el movil y puede que en la muñeca tienes un reloj, pero es muy útil para ver a si a ojo cuando lanzaste un comando o cuanto tardo un comando en terminar.
      • powerline.segments.shell.mode: el modo de la shell, si esta en el normal no aparece.
      • powerline.segments.common.net.hostname: el nombre la maquina, solo sale si te conectas a ti mismo por ssh.
      • powerline.segments.common.env.user: el usuario que estas, junto con el anterior poco útil.
      • powerline.segments.common.env.virtualenv: si estas usando virtualenv te pone el nombre. En mi caso tampoco muy útil, todos estos inventos (venv, chroot…) con el invento de docker es el que mas juegas.
      • powerline.segments.shell.cwd: el path donde estas trabajando, vamos como el prompt normal (creo que se puede vitaminar con la configuración).
      • powerline_gitstatus.gitstatus: este es uno que me hizo ponerme serio con powerline, en el segmento te muestra muy resumido mucha información si el directorio es un proyecto git, desde la rama que estas, hasta los commits que tienes pendientes de subir, ficheros añadidos y sin añadir al siguiente commit. Este viene de un plugin externo, después os comento como se instala.
      • powerline.segments.shell.jobnum: no uso mucho el rollo de mandar trabajos a background, pero cuando lo uso mola saber cuando han terminado la ejecución, muestra en amarillo un contador de trabajos en background. También útil cuando se te escapa un & y no te has dado cuenta que has mandado a background una ejecución.
      • powerline.segments.shell.last_status: otro muy útil, ya sabéis que en GNU/Linux cualquier comando que lances devuelve 0 si ha terminado correctamente y un numero distinto si mal. Este segmento solo aparece cuando el ultimo comando ha salido mal y en un rojo alarma, muy útil porque hay comando que no devuelven ninguna salida de texto pero si petan.
    • priority: un valor numerico que dice la prioridad del segmento en mostrarse, se ocultan primero los que tienen los numeros mas grandes, cuando:
      • la linea de prompt es mas grande que el ancho de ventana/pantalla.
      • cuando supera un espacio para dejar el escribir al usuario, en principio se puede configurar pero no funciona creo que apesta a bug.
    • args: es un dict json donde pasarle parametros al segmento para personalizarlo, el único que tengo configurado yo es el del tiempo que le he puesto solo para mostrarme las horas y minutos, hay que mirar en la documentación del segmento que parametros acepta:
      "args": {
      	"format": "%H:%M"
      }

Y ya esta, no es muy complicado, después hay ficheros de configuración de powerline o para separar la configuración de los segmentos de la configuración de diseño, también hay un fichero de configuración de colores, pero con los que vienen por defecto a mi me sobran.

Aunque autocarga la configuración cada vez que se cambia (un hotreloader como dicen los modernos), algunas veces no lo hace y puedes forzar la recarga con:

$ powerline-daemon --replace

Instalar Powerline-gitstatus ,tiene su miga porque no es solo instalarlo hay que meterle configuración de color por defecto si no peta.

Instalarlo es:

$ pip3 install powerline-gitstatus

Y tienes que hacerte los directorios de las configuraciones de colores:

$ mkdir -p /home/<usuario>/.config/powerline/colorschemes/shell

Y después copiar los ficheros (ya sabes que el mergeo no funciona bien) de por defecto del sistema. El solarized no se si es un cargocult pero a mi me petaba el powerline-gitstatus aunque no usara ese esquema de colores, total no molesta mucho:

$ cp /usr/share/powerline/config_files/colorschemes/shell/default.json /home/<usuario>/.config/powerline/colorschemes
/shell
$ cp /usr/share/powerline/config_files/colorschemes/shell/solarized.json /home/<usuario>/.config/powerline/colorschemes
/shell

Y añadir el juego de colores de powerline-gitstatus, por no liar os pego los dos ficheros mios, pero basicamente son los valores para powerline-gitstatus:

default.json

{
	"name": "Default color scheme for shell prompts",
	"groups": {
		"hostname":         { "fg": "brightyellow", "bg": "mediumorange", "attrs": [] },
		"environment":      { "fg": "white", "bg": "darkestgreen", "attrs": [] },
		"mode":             { "fg": "darkestgreen", "bg": "brightgreen", "attrs": ["bold"] },
		"attached_clients": { "fg": "white", "bg": "darkestgreen", "attrs": [] },
	"gitstatus":                 { "fg": "gray8", "bg": "gray2", "attrs": [] },
    "gitstatus_branch":          { "fg": "gray8", "bg": "gray2", "attrs": [] },
    "gitstatus_branch_clean":    { "fg": "green", "bg": "gray2", "attrs": [] },
    "gitstatus_branch_dirty":    { "fg": "gray8", "bg": "gray2", "attrs": [] },
    "gitstatus_branch_detached": { "fg": "mediumpurple", "bg": "gray2", "attrs": [] },
    "gitstatus_behind":          { "fg": "gray10", "bg": "gray2", "attrs": [] },
    "gitstatus_ahead":           { "fg": "gray10", "bg": "gray2", "attrs": [] },
    "gitstatus_staged":          { "fg": "green", "bg": "gray2", "attrs": [] },
    "gitstatus_unmerged":        { "fg": "brightred", "bg": "gray2", "attrs": [] },
    "gitstatus_changed":         { "fg": "mediumorange", "bg": "gray2", "attrs": [] },
    "gitstatus_untracked":       { "fg": "brightestorange", "bg": "gray2", "attrs": [] },
    "gitstatus_stashed":         { "fg": "darkblue", "bg": "gray2", "attrs": [] },
    "gitstatus:divider":         { "fg": "gray8", "bg": "gray2", "attrs": [] }
	},
	"mode_translations": {
		"vicmd": {
			"groups": {
				"mode": {"fg": "darkestcyan", "bg": "white", "attrs": ["bold"]}
			}
		}
	}
}

solarized.json

{
	"name": "Solarized dark for shell",
	"groups": {
		"mode": { "fg": "solarized:base3", "bg": "solarized:green", "attrs": ["bold"] },
        	"gitstatus":                 { "fg": "gray8", "bg": "gray2", "attrs": [] },
    "gitstatus_branch":          { "fg": "gray8", "bg": "gray2", "attrs": [] },
    "gitstatus_branch_clean":    { "fg": "green", "bg": "gray2", "attrs": [] },
    "gitstatus_branch_dirty":    { "fg": "gray8", "bg": "gray2", "attrs": [] },
    "gitstatus_branch_detached": { "fg": "mediumpurple", "bg": "gray2", "attrs": [] },
    "gitstatus_behind":          { "fg": "gray10", "bg": "gray2", "attrs": [] },
    "gitstatus_ahead":           { "fg": "gray10", "bg": "gray2", "attrs": [] },
    "gitstatus_staged":          { "fg": "green", "bg": "gray2", "attrs": [] },
    "gitstatus_unmerged":        { "fg": "brightred", "bg": "gray2", "attrs": [] },
    "gitstatus_changed":         { "fg": "mediumorange", "bg": "gray2", "attrs": [] },
    "gitstatus_untracked":       { "fg": "brightestorange", "bg": "gray2", "attrs": [] },
    "gitstatus_stashed":         { "fg": "darkblue", "bg": "gray2", "attrs": [] },
    "gitstatus:divider":         { "fg": "gray8", "bg": "gray2", "attrs": [] }
	},
	"mode_translations": {
		"vicmd": {
			"groups": {
				"mode": { "fg": "solarized:base3", "bg": "solarized:blue", "attrs": ["bold"] }
			}
		}
	}
}

Y ya sabéis si un restart del powerline-daemon y ya esta.

Y bueno por finalizar el articulo, os pongo los segmentos que echo en falta y que creo que no existen:

  • Un segmento que muestre el estado del watson es un tracker/contador de tiempo desde terminal (escrito en python) para en el curro cuando te preguntan en que has estado trabajando decir pues «he estado X horas mierda que necesita este cliente» yo antes usaba Hamster Applet pero se han metido en una rescritura del proyecto y se han cargado el soporte para cualquier cosa que no sea Gnome3.
  • Un segmento que muestre estado del docker (actualización: si hay…os debo un articulo), rollo contenedores levantados, caidos y alguna cosa mas.
  • Un segmento que te avise que el directorio es un montaje sshfs o así.
  • Un segmento que muestre un cita rollo el fortune.
  • Un segmento que muestre un string desde un api web o así, para enganchar resultados deportivos, valores de criptomonedas o votos en meneame.
  • Lo mismo pero pasando como argumento un comando a ejecutar.
  • La tragaperras que se hizo años para elbinario .

Y falta un awesome_list de powerline en el m$-github.