<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Raúl Martín</title>
    <description>The latest articles on Forem by Raúl Martín (@raulmar).</description>
    <link>https://forem.com/raulmar</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F476927%2F8a8d8f1f-95cb-469d-987b-9be7a9766db1.jpeg</url>
      <title>Forem: Raúl Martín</title>
      <link>https://forem.com/raulmar</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/raulmar"/>
    <language>en</language>
    <item>
      <title>Personaliza tu terminal de 0 a PRO 😎</title>
      <dc:creator>Raúl Martín</dc:creator>
      <pubDate>Sat, 26 Dec 2020 08:37:00 +0000</pubDate>
      <link>https://forem.com/raulmar/personaliza-tu-terminal-de-0-a-pro-3map</link>
      <guid>https://forem.com/raulmar/personaliza-tu-terminal-de-0-a-pro-3map</guid>
      <description>&lt;p&gt;Ten por seguro que personalizar la terminal &lt;strong&gt;no te hará un hacker ni mejor desarrollador&lt;/strong&gt; pero te prometo que vas a sentirte como uno. &lt;/p&gt;

&lt;p&gt;A todo desarrolladores nos gusta la &lt;strong&gt;personalización de nuestras herramientas&lt;/strong&gt; y que mejor que empezar con la que probablemente más interactuamos, &lt;strong&gt;la terminal&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Esta guía puede servir para &lt;strong&gt;Linux, MacOS y WSL&lt;/strong&gt; (Windows Subsystem for Linux) por lo tanto pueden usar cualquier terminal que tengan, ya sea la terminal por defecto de MacOS, iterm 2.0, GNOME terminal, Terminator, la nueva terminal de Windows etc.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;p&gt;Visita mi sitio &lt;a href="https://raulmar.com" rel="noopener noreferrer"&gt;raulmar.com&lt;/a&gt; para más información&lt;/p&gt;
&lt;h1&gt;
  
  
  Comparación visual 👀
&lt;/h1&gt;
&lt;h2&gt;
  
  
  Antes
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fotvl86rpq132zrdtp76n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fotvl86rpq132zrdtp76n.png" alt="1" width="671" height="35"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fsow7yfsslmejzyaja7xz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fsow7yfsslmejzyaja7xz.png" alt="2" width="670" height="38"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;h2&gt;
  
  
  Después
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F31gqqg0z3ai7k5jizwmr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F31gqqg0z3ai7k5jizwmr.png" alt="new3" width="673" height="50"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F7oen0rriznrot9ep3vs1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F7oen0rriznrot9ep3vs1.png" alt="new4" width="668" height="49"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fnh0p3vksgwgg6uqdz09w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fnh0p3vksgwgg6uqdz09w.png" alt="new5" width="663" height="53"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhcorzkw6io2m5upn5hb8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhcorzkw6io2m5upn5hb8.png" alt="new6" width="663" height="57"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="" class="article-body-image-wrapper"&gt;&lt;img&gt;&lt;/a&gt;&lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  Lo que haremos 🧰
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Cambiaremos la shell por defecto (BASH) por &lt;strong&gt;ZSH&lt;/strong&gt; &lt;/li&gt;
&lt;li&gt;Instalaremos &lt;strong&gt;GIT&lt;/strong&gt; para clonar repositorios desde la nube&lt;/li&gt;
&lt;li&gt;Instalaremos &lt;strong&gt;Oh My ZSH&lt;/strong&gt; que es un administrador de configuración para ZSH el cual nos hará la vida más fácil&lt;/li&gt;
&lt;li&gt;Instalaremos algunos &lt;strong&gt;plugins&lt;/strong&gt; sobre Oh My ZSH&lt;/li&gt;
&lt;li&gt;Instalaremos el tema &lt;strong&gt;powerlevel10k&lt;/strong&gt; con Oh My ZSH que permite una gran cantidad de combinaciones gracias a su configuration wizard&lt;/li&gt;
&lt;li&gt;Agregaremos algunos &lt;strong&gt;alias&lt;/strong&gt; que es como configurar comando personalizados&lt;/li&gt;
&lt;li&gt;Cambiaremos el &lt;strong&gt;prompt&lt;/strong&gt; por defecto de nuestra terminal&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="" class="article-body-image-wrapper"&gt;&lt;img&gt;&lt;/a&gt;&lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  Cambiar BASH por ZSH 💱
&lt;/h1&gt;

&lt;p&gt;ZSH es una &lt;strong&gt;mejor alternativa&lt;/strong&gt; al shell por defecto que es BASH, principalmente por sus addons que nos facilitan todo, desde plugins hasta un framework para temas.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Instalamos ZSH&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;zsh
&lt;/code&gt;&lt;/pre&gt;




&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Seleccionamos ZSH como shell por defecto&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight shell"&gt;&lt;code&gt;chsh &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;which zsh&lt;span class="si"&gt;)&lt;/span&gt;

&lt;span class="c"&gt;#Otra alternativa es:&lt;/span&gt;
&lt;span class="c"&gt;#chsh -s `which zsh`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;




&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Reiniciamos la consola&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Revisamos que estemos usando ZSH, si nos sale un error hay que verficar la instalación&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$SHELL&lt;/span&gt;

&lt;span class="c"&gt;#nos debe responder con&lt;/span&gt;
&lt;span class="c"&gt;#/usr/bin/zsh&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;




&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Si nos sale el siguiente menú seleccionamos (2) para desktop y (0) para conexiones SSH&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0o1ns46fqtc9vv1xzhit.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0o1ns46fqtc9vv1xzhit.jpg" alt="5" width="746" height="496"&gt;&lt;/a&gt; &lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h1&gt;
  
  
  Instalamos git 💻
&lt;/h1&gt;

&lt;p&gt;Además de ser una excelente herramienta para desarrollo también la usaremos para que &lt;strong&gt;OhMyZSH se pueda instalar correctamente&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Instalamos los paquetes de git&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;git
&lt;/code&gt;&lt;/pre&gt;




&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Comprobamos la instalación&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight shell"&gt;&lt;code&gt;git &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;




&lt;/li&gt;

&lt;/ol&gt;

&lt;p&gt;&lt;a href="" class="article-body-image-wrapper"&gt;&lt;img&gt;&lt;/a&gt;&lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  Instalamos Oh My ZSH 🔧
&lt;/h1&gt;

&lt;p&gt;Este framework creado por la comunidad nos ayuda a &lt;strong&gt;configurar nuestro ZSH&lt;/strong&gt;.&lt;br&gt;
&lt;strong&gt;No confundir ZSH y OhMyZSH&lt;/strong&gt;, OhMyZSH actúa sobre el archivo de configuración de ZSH (.zshrc) &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Instalamos Oh My ZSH&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight shell"&gt;&lt;code&gt;sh &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;




&lt;/li&gt;

&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Oh My ZSH nos modifica el archivo .zshrc y nos crea la carpeta  .oh-my-zsh donde encontraremos los plugins, temas, plantillas etc.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nano ~/.zshrc
&lt;span class="c"&gt;#para ver la configuración de ZSH&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Por defecto nos selecciona el tema robbyrussell&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fqbu6lidrvif1zq1ouza6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fqbu6lidrvif1zq1ouza6.png" alt="6" width="528" height="32"&gt;&lt;/a&gt; &lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Instalamos plugins 🔨
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Los paquetes que vamos a instalar son:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;zsh-syntax-highlighting:&lt;/strong&gt; Si estas escribiendo los comando correctos en la terminal, les pone colores&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F7rkg3n2uvi4pbzi5wtau.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F7rkg3n2uvi4pbzi5wtau.gif" alt="7" width="263" height="56"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/zsh-users/zsh-syntax-highlighting.git &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;ZSH_CUSTOM&lt;/span&gt;&lt;span class="k"&gt;:-&lt;/span&gt;&lt;span class="p"&gt;~/.oh-my-zsh/custom&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;/plugins/zsh-syntax-highlighting
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;zsh-autosuggestions:&lt;/strong&gt; Para obtener sugerencias basadas en tu historial&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F82fd3jh8bsqd3tjndx9t.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F82fd3jh8bsqd3tjndx9t.gif" alt="8" width="263" height="56"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/zsh-users/zsh-autosuggestions &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;ZSH_CUSTOM&lt;/span&gt;&lt;span class="k"&gt;:-&lt;/span&gt;&lt;span class="p"&gt;~/.oh-my-zsh/custom&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;/plugins/zsh-autosuggestions
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;fzf:&lt;/strong&gt; Con "ctrl + t" te da un explorador de carpeta, con "ctrl + r" te da un explorador de historial de comandos y con "ctrl + c" salimos&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F82a9p753e0qtfrpvkxf3.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F82a9p753e0qtfrpvkxf3.gif" alt="9" width="263" height="157"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone &lt;span class="nt"&gt;--depth&lt;/span&gt; 1 https://github.com/junegunn/fzf.git ~/.fzf &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; ~/.fzf/install
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;&lt;strong&gt;Aceptamos todo lo que nos pida&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Vamos a nuestro archivo de configuración ZSH&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nano ~/.zshrc
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Aquí nos vamos a la parte de abajo del archivo hasta donde veamos plugins (por defecto viene con el plugin de git) y agregamos lo siguiente&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;plugins&lt;/span&gt;&lt;span class="o"&gt;=(&lt;/span&gt;
git
zsh-syntax-highlighting
zsh-autosuggestions
&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Reiniciamos la consola y listo 😉&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="" class="article-body-image-wrapper"&gt;&lt;img&gt;&lt;/a&gt;&lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  Power level 10k 🖌️
&lt;/h1&gt;
&lt;h2&gt;
  
  
  Fuente
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Fuente regular&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9f17ofumpuq199rzwg5e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9f17ofumpuq199rzwg5e.png" alt="10" width="212" height="30"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fuente nerd&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Flhm015flg8geprwrpjd0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Flhm015flg8geprwrpjd0.png" alt="11" width="205" height="28"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Descargar una fuente con soporte para iconos. 

&lt;ul&gt;
&lt;li&gt;Mi recomendación es descargar la fuente de &lt;a href="https://www.nerdfonts.com/font-downloads" rel="noopener noreferrer"&gt;https://www.nerdfonts.com/font-downloads&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;La fuente que uso es la de JetBrainsMono Nerd Font&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Descomprimir el zip a la carpeta .fonts (~/.fonts o ~/.local/share/fonts) y movernos a ella&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# En caso de no tener la carpeta fonts&lt;/span&gt;
&lt;span class="c"&gt;# mkdir ~/.fonts &amp;amp;&amp;amp; cd ~/.fonts&lt;/span&gt;
unzip ~/Descargas/[fuente_descargada].zip
&lt;/code&gt;&lt;/pre&gt;




&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Cambiar la fuente de la terminal, normalmente es click derecho sobre el área de comandos &amp;gt; Preferencias &amp;gt; Apariencia/Perfiles &amp;gt; Fuente&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Aquí elegimos la fuente que hayamos descargado&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fu02gayq6omokzqk2ek1s.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fu02gayq6omokzqk2ek1s.jpg" alt="12" width="800" height="574"&gt;&lt;/a&gt; &lt;/p&gt;


&lt;/li&gt;

&lt;/ol&gt;

&lt;h2&gt;
  
  
  Powerlevel10k
&lt;/h2&gt;

&lt;p&gt;Nos da muchas opciones de personalización visual como las siguientes&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fa13fj249vlyhcp85ocrk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fa13fj249vlyhcp85ocrk.png" alt="13" width="765" height="516"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Descargamos powelevel10k&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone &lt;span class="nt"&gt;--depth&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1 https://github.com/romkatv/powerlevel10k.git &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;ZSH_CUSTOM&lt;/span&gt;&lt;span class="k"&gt;:-&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="p"&gt;/.oh-my-zsh/custom&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;/themes/powerlevel10k
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Declaramos el tema en el archivo de configuración de zsh&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;ZSH_THEME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"powerleve10k/powerlevel10k"&lt;/span&gt;
&lt;span class="nv"&gt;POWERLEVEL10K_MODE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"nerdfont-complete"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3vkmdzp2l8u708d26sci.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3vkmdzp2l8u708d26sci.png" alt="14" width="667" height="128"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Reiniciamos la terminal para que aparezca el configurador o en su defecto teclear &lt;code&gt;p10k configure&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fxy45ds4j1beypulwxsja.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fxy45ds4j1beypulwxsja.png" alt="15" width="689" height="308"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Terminando el instalador tendremos nuestra terminal totalmente personalizada&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Colores
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Para cambiar los colores damos &lt;strong&gt;click derecho&lt;/strong&gt; sobre el &lt;strong&gt;área de comandos &amp;gt; Preferencias &amp;gt; Apariencia/Perfiles &amp;gt; colores&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fl3hr0vlc5wta6mspyw1j.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fl3hr0vlc5wta6mspyw1j.jpg" alt="16" width="800" height="572"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Para paletas de colores random puedes visitar &lt;a href="http://coolors.co" rel="noopener noreferrer"&gt;coolors.co&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Mis colores principales son:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fondo:&lt;/strong&gt; #302F4D&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Texto:&lt;/strong&gt; #FFFFFF&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Morado de prompt:&lt;/strong&gt; #B816B8&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Blanco de prompt:&lt;/strong&gt;  #FFFFFF&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="" class="article-body-image-wrapper"&gt;&lt;img&gt;&lt;/a&gt;&lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  Aliases 🕵️‍♂️
&lt;/h1&gt;

&lt;p&gt;Los aliases son una herramienta para &lt;strong&gt;crear atajos&lt;/strong&gt; para los comando que más usamos o para los que más nos equivocamos&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Abrimos la configuración zsh y nos movemos a la parte de abajo&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjc3wl3rknow41z64mpqg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjc3wl3rknow41z64mpqg.png" alt="17" width="381" height="69"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Aquí en la configuración nos da unos ejemplos&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;La sintaxis para agregar alias es:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;atajo&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"comando regular para el atajo"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;




&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Los atajos que tengo configurados son&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;zshconfig&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"nano ~/.zshrc"&lt;/span&gt;
&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;ohmyzsh&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"cd ~/.oh-my-zsh"&lt;/span&gt;
&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;sl&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"ls"&lt;/span&gt; &lt;span class="c"&gt;#por si lo escribo al revés XD&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;




&lt;/li&gt;

&lt;/ol&gt;

&lt;p&gt;&lt;a href="" class="article-body-image-wrapper"&gt;&lt;img&gt;&lt;/a&gt;&lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  Cambiando el prompt 👩‍💻
&lt;/h1&gt;

&lt;p&gt;Personalmente prefiero que &lt;strong&gt;solo me muestre el directorio actual&lt;/strong&gt; en lugar de todo el path. Queremos pasar de esto&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvw9wk8zg75kr5rwa25g6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvw9wk8zg75kr5rwa25g6.png" alt="18" width="369" height="53"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;A esto, con ayuda de una configuración del tema powerlevel10k&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwcrj4dggd52rjxlt2i9v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwcrj4dggd52rjxlt2i9v.png" alt="19" width="244" height="49"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Primero tendremos que abrír el archivo de configuración con nuestro editor favorito, en mi caso utilizaré nano&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight shell"&gt;&lt;code&gt;nano ~/.p10k.zsh
&lt;/code&gt;&lt;/pre&gt;




&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Después buscamos el parámetro (en nano podemos usar "Ctrl + w" para buscar)&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;POWERLEVEL9K_SHORTEN_STRATEGY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;truncate_to_unique
&lt;/code&gt;&lt;/pre&gt;




&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Sustituimos el valor por defecto&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;POWERLEVEL9K_SHORTEN_STRATEGY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;truncate_to_last
&lt;/code&gt;&lt;/pre&gt;




&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Reiniciar la terminal 😃&lt;/p&gt;&lt;/li&gt;

&lt;/ol&gt;

&lt;p&gt;&lt;a href="" class="article-body-image-wrapper"&gt;&lt;img&gt;&lt;/a&gt;&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Gracias por leer!
&lt;/h1&gt;

&lt;p&gt;No olvides compartir esta guía para que mas gente tenga terminales de otro mundo y compartir el conocimiento.&lt;br&gt;
No dudes en mandarme un screenshot de tu terminal por twitter como &lt;a href="https://twitter.com/__raulmar" rel="noopener noreferrer"&gt;@__raulmar&lt;/a&gt;&lt;br&gt;
&lt;a href="" class="article-body-image-wrapper"&gt;&lt;img&gt;&lt;/a&gt;&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Recursos 📔
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://dev.to/xeroxism/how-to-install-terminator-a-linux-terminal-emulator-on-steroids-1m3h"&gt;Instalación de Terminator terminal&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.atareao.es/software/utilidades/terminator-un-meta-terminal-ubuntu/" rel="noopener noreferrer"&gt;Utilidades Terminator terminal&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://medium.com/@ivanaugustobd/your-terminal-can-be-much-much-more-productive-5256424658e8" rel="noopener noreferrer"&gt;Your terminal can be much more productive&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/ohmyzsh/ohmyzsh" rel="noopener noreferrer"&gt;OhMyZSH official repo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/ohmyzsh/ohmyzsh/wiki/Installing-ZSH" rel="noopener noreferrer"&gt;ZSH installation guide&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/romkatv/powerlevel10k#oh-my-zsh" rel="noopener noreferrer"&gt;Power level 10k &amp;amp; OhMyZSH&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/ohmyzsh/ohmyzsh/wiki/Plugins" rel="noopener noreferrer"&gt;OhMyZSH plugins&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://ohmyz.sh/" rel="noopener noreferrer"&gt;OhMyZSH website&lt;/a&gt;&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>bash</category>
      <category>beginners</category>
      <category>linux</category>
    </item>
    <item>
      <title>🐧🛠️Armando una GUI para Debian (RPi OS lite)</title>
      <dc:creator>Raúl Martín</dc:creator>
      <pubDate>Mon, 14 Dec 2020 23:34:00 +0000</pubDate>
      <link>https://forem.com/raulmar/armando-una-gui-para-debian-raspberry-pi-os-lite-4644</link>
      <guid>https://forem.com/raulmar/armando-una-gui-para-debian-raspberry-pi-os-lite-4644</guid>
      <description>&lt;h1&gt;
  
  
  ¿Por qué no instalar una distro con GUI directamente?
&lt;/h1&gt;

&lt;p&gt;Las distros populares por lo general tienen un &lt;strong&gt;entorno de escritorio&lt;/strong&gt; por defecto, sea GNOME, KDE, XFCE etc. sin embargo si queremos &lt;strong&gt;comenzar&lt;/strong&gt; en el mundo de la &lt;strong&gt;personalización en linux&lt;/strong&gt; debemos de empezar desde cero ya que muchas veces l os entornos por defecto están intrínsecamente unidos con el sistema operativo lo que hace que sea un poco más difícil la personalización&lt;/p&gt;

&lt;p&gt;Recientemente adquirí una &lt;strong&gt;Raspberry Pi 4&lt;/strong&gt; en su versión de 4GB de RAM para jugar con la configuración y personalización de linux. Así que lo primero que hice fue &lt;strong&gt;crear los cimientos&lt;/strong&gt; de la personalización que es la GUI (Graphical User Interface)&lt;/p&gt;

&lt;p&gt;Visita mi sitio &lt;a href="https://raulmar.com"&gt;raulmar.com&lt;/a&gt; para más información&lt;/p&gt;

&lt;h1&gt;
  
  
  Un repaso de lo que vamos a instalar
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Escritorio: XFCE&lt;/li&gt;
&lt;li&gt;Window manager: XFWM (incluído con XFCE)&lt;/li&gt;
&lt;li&gt;Display server: Xorg&lt;/li&gt;
&lt;li&gt;Login manager: LightDM&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Aunque también veremos otras opciones populares&lt;/p&gt;

&lt;p&gt;Antes de comenzar debemos tener lista la &lt;strong&gt;instalación limpia&lt;/strong&gt; de Raspberry Pi OS lite e ingresar con el usuario "pi" y contraseña "raspberry"&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ffbxrg2gpso8ezqzcn89p.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ffbxrg2gpso8ezqzcn89p.jpg" alt="RPi-cli" width="800" height="600"&gt;&lt;/a&gt;&lt;br&gt;
Instalación limpia de RPi OS lite (CLI)&lt;/p&gt;
&lt;h1&gt;
  
  
  Configurando el Wi-Fi
&lt;/h1&gt;

&lt;p&gt;Esto lo hacemos para poder actualizar paquetes y tener una conexión SSH sin tener que usar Ethernet ya que sin conexión a internet muchos de los comandos no funcionarían&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Hacemos cd al directorio boot&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Creamos un archivo llamado wpa_supplicant.conf&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo nano wpa_supplicant.conf
&lt;/code&gt;&lt;/pre&gt;




&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;Llenamos el archivo con la siguiente información&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=&amp;lt;Código ISO 3166-1 de nuestro país (MX en mi caso)&amp;gt;

network={
 ssid="[Nombre de la red]"
 psk="[Constraseña de la red]"
}
&lt;/code&gt;&lt;/pre&gt;




&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Configurando la conexión SSH
&lt;/h1&gt;

&lt;p&gt;Nos facilita el uso de la tarjeta para no tener que estar cambiando nuestros periféricos entre nuestra PC y la Raspberry Pi así como también poder copiar los siguientes comandos desde nuestra PC&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Habilitamos la interfaz SSH&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;El comando que nos llevará al menú de configuración de Raspberry es:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;raspi-config
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Hacemos el siguiente recorrido dentro del menú&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;-Interface Options
-SSH
-Enable
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Obtenemos la dirección IP de la Raspberry Pi dentro de nuestra red&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;hostname -I
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Desde el cliente (Linux/Mac) nos conectamos a la Raspberry Pi&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh &lt;span class="o"&gt;[&lt;/span&gt;usuario]@[ip]
&lt;span class="c"&gt;# El usuario por lo general es "pi"&lt;/span&gt;
&lt;span class="c"&gt;# la ip fue generada en el paso anterior&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Para Windows podemos usar PuTTY&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F10suldvocm599chpz58u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F10suldvocm599chpz58u.png" alt="RPi-ssh" width="683" height="741"&gt;&lt;/a&gt;&lt;br&gt;
Conexión SSH desde Ubuntu&lt;/p&gt;
&lt;h1&gt;
  
  
  Expandir el sistema
&lt;/h1&gt;

&lt;p&gt;Esto lo hacemos con la finalidad de poder usar la tarjeta SD en su totalidad&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Entramos al menú de Raspberry&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight plaintext"&gt;&lt;code&gt;raspi-config
&lt;/code&gt;&lt;/pre&gt;




&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;Hacemos el siguiente recorrido&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight plaintext"&gt;&lt;code&gt;-Advanced Options
-Expand Filesystem
&lt;/code&gt;&lt;/pre&gt;




&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Actualizar paquetes
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Actualizamos los repositorios&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get update
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Actualizamos los paquetes&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get upgrade
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Agregamos actualizaciones importantes&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get dist-upgrade
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Limpiamos paquetes que no usaremos&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get clean
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Ajustamos las configuraciones geográficas
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Entramos al menú de Raspberry&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;raspi-config
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Entramos al menú "Localization Options"&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Entramos al menú "Change Locale"&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Seleccionamos nuestro locale y tipo de encoding&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Por defecto tiene seleccionado&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;en_GB.UTF-8 UTF8
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Deseleccionamos con la barra espaciadora&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Seleccionamos el nuestro, en mi caso es:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;es.MX.UTF-8 UTF8
# idioma.país.tipo_de_encoding
# UTF8 es lo más amigable
&lt;/code&gt;&lt;/pre&gt;


&lt;ul&gt;
&lt;li&gt;Seleccionamos la misma opción cuando nos pida "default locale"&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cambiamos nuestra zona horaria dentro del menú "Change Timezone"&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cambiamos el layout del teclado en el menú "Change Keyboard Layout" si es que algunas de tus teclas no funcionan correctamente &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Seleccionamos nuestro modelo de teclado (si no estás seguro elige "Generic 105-key (Intl) PC")&lt;/li&gt;
&lt;li&gt;Entra a keyboard layout, en mi caso uso "Spanish Latin American"&lt;/li&gt;
&lt;li&gt;Nos pregunta si nuestro teclado tiene la tecla Alt Gr, yo seleccioné "Right Alt Gr"&lt;/li&gt;
&lt;li&gt;Nos pregunta si tenemos una compose key (Si no sabes que es, lo más seguro es que no la tengas)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Instalar el display server
&lt;/h1&gt;

&lt;p&gt;Basicamente un display server habilita el uso de una GUI coordinando los inputs y outputs con el sistema operativo&lt;/p&gt;

&lt;p&gt;No confundir con entorno de escritorio. El entorno de escritorio usa el display server por debajo&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fxxw09j64zee5hmjeb5sq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fxxw09j64zee5hmjeb5sq.png" alt="xorg-logo" width="220" height="176"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Instalamos Xorg por su estabilidad
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install&lt;/span&gt; —no-install-recommends xserver-xorg
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Si no usamos un login manager comenzaremos directo en la línea de comando. Así que para iniciar el entorno gráfico con un comando deberemos instalar xinit. Este paso no es necesario si tenemos planeado usar un login manager&lt;/p&gt;

&lt;h1&gt;
  
  
  Desktop enviroment
&lt;/h1&gt;

&lt;h2&gt;
  
  
  XFCE
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4znyw0e8azm9a8k82pon.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4znyw0e8azm9a8k82pon.png" alt="xfce-logo" width="180" height="180"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Personalmente prefiero usar este escritorio debido a que lo respalda una gran comunidad, es muy ligero y permite personalizar facilmente&lt;/p&gt;

&lt;p&gt;Instalaremos el &lt;strong&gt;XFCE GUI&lt;/strong&gt;, la &lt;strong&gt;XFCE4 Terminal&lt;/strong&gt; y &lt;strong&gt;LightDM login manager&lt;/strong&gt;. Vienen incluidos el &lt;strong&gt;XFWM Window Manager&lt;/strong&gt;, &lt;strong&gt;File Manager&lt;/strong&gt; y los &lt;strong&gt;ajustes&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;xfce xfce4-terminal
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Otros
&lt;/h2&gt;

&lt;p&gt;Estos no los he probado pero pueden servir bien&lt;/p&gt;

&lt;h3&gt;
  
  
  Raspberry Pi Desktop (RPD)
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2un4wwvlcjldlb435e38.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2un4wwvlcjldlb435e38.png" alt="RPi-logo" width="140" height="179"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Está basado en LXDE y está optimizado para la Raspberry Pi. &lt;/p&gt;

&lt;p&gt;Incluye terminal, file manager, configuración y window manager&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Instalamos RPD&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get install raspberrypi-ui-mods
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  LXDE
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3nhq1xxgind45i03lrqz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3nhq1xxgind45i03lrqz.png" alt="lxde-logo" width="180" height="175"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Es un entorno que consume poca memoria, ideal para algunas Raspberries pi. &lt;/p&gt;

&lt;p&gt;Incluye, configuración, terminal, file manager y Openbox window manager.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Instalamos LXDE y LXAppearance&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get install lxde-core lxappearance
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  MATE
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F39dzj3uzavhyc06xmylq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F39dzj3uzavhyc06xmylq.png" alt="mate-logo" width="180" height="180"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Un fork de GNOME que activamente incluye nuevas tecnologías preservando la experiencia tradicional de un escritorio&lt;/p&gt;

&lt;p&gt;Incluye configuración, terminal, file manager y Marco Window Manager&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Instalamos MATE&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get install mate-desktop-enviroment-core
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Login manager
&lt;/h1&gt;

&lt;p&gt;Instalando XFCE se instala LightDM login manager pero si no se instala por defecto o instalamos otro entorno de escritorio podemos hacerlo con:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get install lightdm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Si no queremos login manager podemos usar el comando de xinit para iniciar el display server&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;startx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Por último, reiniciamos nuestra Raspberry Pi&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo reboot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Resultado
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F40yyipw4iiyz0mogep7x.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F40yyipw4iiyz0mogep7x.jpg" alt="RPi-xfce" width="800" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;RPi OS lite con XFCE&lt;/p&gt;

&lt;h1&gt;
  
  
  Extras
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Conexión SSH con X11 Forwarding
&lt;/h2&gt;

&lt;p&gt;Esto sirve para ejecutar aplicaciones en la Raspberry Pi pero que la GUI de estas se muestre en el cliente.&lt;/p&gt;

&lt;h3&gt;
  
  
  En la Raspberry Pi
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Abrimos el archivo "etc/ssh/ssh_config" con nano&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo nano etc/ssh/ssh_config
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Agregamos lo siguiente al final para configurar X11 forwarding&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;En consola reiniciamos el servicio ssh&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo service ssh restart
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;&lt;code&gt;sudo systemctl restart ssh&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Hacemos un test con gvim&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get install vim-gtk
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  En el cliente (Linux)
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Nos conectamos vía ssh con X11 forwarding&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ssh -X [usuario]@[ip]
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Creamos un archivo txt de prueba&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;echo "Este es un archivo de prueba" &amp;gt; prueba.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Abrimos el archivo para verificar que la GUI de gvim nos aparece en el cliente&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gvim prueba.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Recursos
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.raspberrypi.org/forums/viewtopic.php?t=133691"&gt;Foro Raspberry Pi&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md"&gt;Configuración del wpa_supplicant.conf&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.raspberrypi.org/documentation/remote-access/ssh/unix.md"&gt;Conexión SSH&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://fabianlee.org/2018/10/14/ubuntu-x11-forwarding-to-view-gui-applications-running-on-server-hosts/#:~:text=Open%20PuTTY%20and%20establish%20an,%2DMagic%2DCookie%E2%80%9D%20setting"&gt;Conexión SSH con X11 forwarding&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://itsfoss.com/display-server/"&gt;Qué es un display server&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.dokry.com/8652#:~:text=UTF%2D8%20es%20una%20encoding,exactamente%20de%20la%20misma%20manera"&gt;UTF vs ISO&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.sololinux.es/xfce-vs-lxde-cual-es-mejor-para-mi/"&gt;XFCE vs LXDE&lt;/a&gt;&lt;/p&gt;

</description>
      <category>linux</category>
      <category>raspberrypi</category>
    </item>
    <item>
      <title>🎃 No tengas miedo a dibujar con CSS</title>
      <dc:creator>Raúl Martín</dc:creator>
      <pubDate>Sun, 04 Oct 2020 07:51:00 +0000</pubDate>
      <link>https://forem.com/raulmar/no-tengas-miedo-a-dibujar-con-css-1ck</link>
      <guid>https://forem.com/raulmar/no-tengas-miedo-a-dibujar-con-css-1ck</guid>
      <description>&lt;p&gt;La temporada de &lt;strong&gt;Halloween&lt;/strong&gt; está a la vuelta de la esquina es por eso que dibujaremos una decoración escalofríante a tu página web con CSS. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2vwau719fl596smlavyx.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2vwau719fl596smlavyx.gif" alt="1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Visita mi sitio &lt;a href="https://raulmar.com" rel="noopener noreferrer"&gt;raulmar.com&lt;/a&gt; para más información&lt;/p&gt;

&lt;p&gt;Este dibujo está compuesto por solo tres &amp;lt; div &amp;gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"stem"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"face"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"pumpkin"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Sin embargo, se usarán los pseudo-elementos &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;::before&lt;/li&gt;
&lt;li&gt;::after&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Así como también la propiedad "box-shadow" para dibujar más figuras de la calabaza sin crear más &amp;lt; div &amp;gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fz4ls301hkd01u1xxyayc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fz4ls301hkd01u1xxyayc.png" alt="2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Otras propiedades importantes que vamos a utilizar son:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;border-radius&lt;/li&gt;
&lt;li&gt;clip-path&lt;/li&gt;
&lt;li&gt;animaciones&lt;/li&gt;
&lt;li&gt;position&lt;/li&gt;
&lt;li&gt;transform&lt;/li&gt;
&lt;li&gt;variables nativas de CSS&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Paso inicial, variables y preparativos
&lt;/h1&gt;




&lt;p&gt;Con CSS vanilla podemos usar &lt;strong&gt;variables&lt;/strong&gt; para que si en un futuro queremos cambiar algo no tengamos que ir buscando que cambiar a lo largo de todo el código&lt;/p&gt;

&lt;p&gt;Cuando las declaramos en :root lo que estamos haciendo que es estén disponibles de &lt;strong&gt;manera global&lt;/strong&gt; &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;

&lt;span class="nd"&gt;:root&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--main-bg-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#422261&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--face&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#422261&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Otra cosa que podemos hacer antes de comenzar es poner &lt;strong&gt;márgenes y padding a 0&lt;/strong&gt; para que no nos molesten dibujando así como también definimos un &lt;strong&gt;borde rojo&lt;/strong&gt; que nos ayudará a ver el tamaño y forma de los &amp;lt; div &amp;gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;

&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;border&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt; &lt;span class="nb"&gt;solid&lt;/span&gt; &lt;span class="no"&gt;red&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;box-sizing&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;border-box&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Por último antes de comenzar usaremos &lt;strong&gt;CSS flexbox para alinear&lt;/strong&gt; nuestro elementos sin importar el tamaño de pantalla&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;

&lt;span class="nt"&gt;body&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
  &lt;span class="nl"&gt;justify-content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;align-items&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100vh&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--main-bg-color&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h1&gt;
  
  
  Paso 1, dibujar la calabaza
&lt;/h1&gt;



&lt;p&gt;Puede que te preguntes como a partir de un "&amp;lt;div" que tiene forma de caja pudimos crear un &lt;strong&gt;óvalo irregular&lt;/strong&gt;. Con "clip-path" tendría que salir un óvalo perfecto lo que haría que  el dibujo perdiera la esencia. Es por eso que usamos &lt;strong&gt;"border-radius"&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;No te preocupes si no conoces la sintaxis que usa "/" para definir base y altura de las esquinas ya que existe &lt;a href="https://9elements.github.io/fancy-border-radius/#100.0.0.100--" rel="noopener noreferrer"&gt;fancy-border-radius&lt;/a&gt; que es una herramienta que nos ayuda a generar el código para formar figuras irregulares.&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;

&lt;span class="nc"&gt;.pumpkin&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;relative&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;300px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;170px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#f8931f&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;28%&lt;/span&gt; &lt;span class="m"&gt;72%&lt;/span&gt; &lt;span class="m"&gt;33%&lt;/span&gt; &lt;span class="m"&gt;67%&lt;/span&gt; &lt;span class="p"&gt;/&lt;/span&gt; &lt;span class="m"&gt;21%&lt;/span&gt; &lt;span class="m"&gt;83%&lt;/span&gt; &lt;span class="m"&gt;17%&lt;/span&gt; &lt;span class="m"&gt;79%&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;rotate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;13deg&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="m"&gt;-80px&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;-2px&lt;/span&gt; &lt;span class="m"&gt;#f8931f&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   &lt;span class="c"&gt;/*BS 1*/&lt;/span&gt;
    &lt;span class="m"&gt;-40px&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;-1px&lt;/span&gt; &lt;span class="m"&gt;#fbb03b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   &lt;span class="c"&gt;/*BS 2*/&lt;/span&gt;
    &lt;span class="m"&gt;40px&lt;/span&gt; &lt;span class="m"&gt;-15px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt;  &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#f87700&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c"&gt;/*BS 3*/&lt;/span&gt;
    &lt;span class="m"&gt;80px&lt;/span&gt; &lt;span class="m"&gt;-35px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;-2px&lt;/span&gt; &lt;span class="m"&gt;#f8931f&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  &lt;span class="c"&gt;/*BS 4*/&lt;/span&gt;

&lt;span class="p"&gt;}&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Por otro lado, usamos &lt;strong&gt;"box-shadow"&lt;/strong&gt; para crear &lt;strong&gt;copias identicas&lt;/strong&gt; del elemento ya que nuestra calabaza esta formada por cinco elementos identicos. &lt;/p&gt;

&lt;p&gt;Con box-shadow podemos modificar la &lt;strong&gt;posición en X y Y&lt;/strong&gt; con respecto al elemento original, el &lt;strong&gt;desenfoque&lt;/strong&gt;, la &lt;strong&gt;escala&lt;/strong&gt; y el &lt;strong&gt;color&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;El resultado sería el siguiente (BS se refiere a box-shadow)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9awknei31ulssvjqjj28.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9awknei31ulssvjqjj28.png" alt="3"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Paso 2, dibujar el tallo
&lt;/h1&gt;




&lt;p&gt;Aquí usamos position: relative para colocar el tallo en relación a la calabaza.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;

&lt;span class="nc"&gt;.stem&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;relative&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;180px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#8cc63e&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;210px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;z-index&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;-1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;75px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;150px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;rotate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;30deg&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;58%&lt;/span&gt; &lt;span class="m"&gt;42%&lt;/span&gt; &lt;span class="m"&gt;69%&lt;/span&gt; &lt;span class="m"&gt;31%&lt;/span&gt; &lt;span class="p"&gt;/&lt;/span&gt; &lt;span class="m"&gt;44%&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt; &lt;span class="m"&gt;0%&lt;/span&gt; &lt;span class="m"&gt;56%&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fw7pitdqwaeyrgzwwxs03.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fw7pitdqwaeyrgzwwxs03.png" alt="4"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Position relative vs position absolute
&lt;/h2&gt;

&lt;p&gt;La diferencia más importante a la hora de dibujar es que position relative respeta la posición del elemento dentro del flujo de la página mientras que position absolute no.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;position: relative&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjk4j520bztc65k8qqh8l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjk4j520bztc65k8qqh8l.png" alt="6"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;position: absolute&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3zc955o57q33k57rjls9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3zc955o57q33k57rjls9.png" alt="5"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Paso 2.1, crear máscara para el tallo
&lt;/h1&gt;




&lt;p&gt;Para que el tallo tenga curvatura tenemos que usar una &lt;strong&gt;técnica que es usar máscaras&lt;/strong&gt; &lt;strong&gt;para esconder&lt;/strong&gt; ciertas partes de los elementos, en este caso usaremos una máscara circular. &lt;/p&gt;

&lt;p&gt;Esta máscara circular pudo haber sido dibujada con "border-radius: 50%" pero para practicar otra propiedad preferí usar "clip-path: circle(50% at 50% 50%)"&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;

&lt;span class="nc"&gt;.stem&lt;/span&gt;&lt;span class="nd"&gt;::before&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;''&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;border&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;20px&lt;/span&gt; &lt;span class="nb"&gt;solid&lt;/span&gt; &lt;span class="no"&gt;red&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;absolute&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;50px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--main-bg-color&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;clip-path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;circle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;50%&lt;/span&gt; &lt;span class="n"&gt;at&lt;/span&gt; &lt;span class="m"&gt;50%&lt;/span&gt; &lt;span class="m"&gt;50%&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F1o2jw3imqohkmpzdwhce.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F1o2jw3imqohkmpzdwhce.png" alt="11"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Aquí fue utilizado un pseudo-elemento de tallo ya que la máscara que vamos a usar forma parte del mismo tallo y así nos ahorramos un &amp;lt; div &amp;gt;&lt;/p&gt;

&lt;p&gt;También por primera vez usamos una variable de CSS&lt;/p&gt;

&lt;h1&gt;
  
  
  Paso 3, dibujar la cara
&lt;/h1&gt;




&lt;p&gt;Para dibujar la cara usamos un elemento y sus dos pseudo-elementos&lt;/p&gt;

&lt;h2&gt;
  
  
  Dibujando los ojos
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Ojo izquierdo
&lt;/h3&gt;

&lt;p&gt;Vemos el uso de la varible "—face" que es de especial utilidad aquí por si queremos usar otro color no tener que cambiarlo en cada ojo y boca.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;

&lt;span class="nc"&gt;.face&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;75px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;30px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--face&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;relative&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;60px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;40px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;rotate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;10deg&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;z-index&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; 
    &lt;span class="m"&gt;100%&lt;/span&gt; &lt;span class="m"&gt;0%&lt;/span&gt; &lt;span class="m"&gt;50%&lt;/span&gt; &lt;span class="m"&gt;50%&lt;/span&gt; &lt;span class="p"&gt;/&lt;/span&gt; &lt;span class="m"&gt;0%&lt;/span&gt; &lt;span class="m"&gt;0%&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F18neuai1eg0shqdsn5vk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F18neuai1eg0shqdsn5vk.png" alt="7"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  Ojo derecho
&lt;/h3&gt;

&lt;p&gt;Aquí se uso una rotación de -20deg, que son -10deg para compensar los del ojo izquiero que fuero heredamos por usar el pseudo-elemento y -10deg para girarlo a la posición que buscamos&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;

&lt;span class="nc"&gt;.face&lt;/span&gt;&lt;span class="nd"&gt;::after&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;''&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;absolute&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--face&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;-25px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;120px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;75px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;30px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;rotate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;-20deg&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; 
    &lt;span class="m"&gt;100%&lt;/span&gt; &lt;span class="m"&gt;0%&lt;/span&gt; &lt;span class="m"&gt;50%&lt;/span&gt; &lt;span class="m"&gt;50%&lt;/span&gt; &lt;span class="p"&gt;/&lt;/span&gt; &lt;span class="m"&gt;0%&lt;/span&gt; &lt;span class="m"&gt;0%&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwcpp9fkziuk0iyzxl4zv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwcpp9fkziuk0iyzxl4zv.png" alt="8"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Dibujando la boca
&lt;/h2&gt;

&lt;p&gt;Aquí usamos específicamente &lt;strong&gt;"clip-path"&lt;/strong&gt; gracias a su opción de crear &lt;strong&gt;polígonos personalizados&lt;/strong&gt; para nuestras necesidades que en esta ocasión era crear la boca más tenebrosa posible&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;

&lt;span class="nc"&gt;.face&lt;/span&gt;&lt;span class="nd"&gt;::before&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;''&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;absolute&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;75px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;15px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--face&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;rotate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;-10deg&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;200px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;50px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;clip-path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;polygon&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0%&lt;/span&gt; &lt;span class="m"&gt;35%&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;17%&lt;/span&gt; &lt;span class="m"&gt;2%&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;21%&lt;/span&gt; &lt;span class="m"&gt;37%&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;31%&lt;/span&gt; &lt;span class="m"&gt;17%&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;36%&lt;/span&gt; &lt;span class="m"&gt;32%&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;49%&lt;/span&gt; &lt;span class="m"&gt;6%&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;63%&lt;/span&gt; &lt;span class="m"&gt;34%&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;86%&lt;/span&gt; &lt;span class="m"&gt;8%&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;85%&lt;/span&gt; &lt;span class="m"&gt;30%&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt; &lt;span class="m"&gt;30%&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;94%&lt;/span&gt; &lt;span class="m"&gt;60%&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;79%&lt;/span&gt; &lt;span class="m"&gt;98%&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;66%&lt;/span&gt; &lt;span class="m"&gt;62%&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;63%&lt;/span&gt; &lt;span class="m"&gt;94%&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;53%&lt;/span&gt; &lt;span class="m"&gt;76%&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;42%&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;31%&lt;/span&gt; &lt;span class="m"&gt;62%&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;17%&lt;/span&gt; &lt;span class="m"&gt;96%&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;14%&lt;/span&gt; &lt;span class="m"&gt;66%&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Se usan pares ordenados de coordenadas de cada punto del polígono lo cual es muy complicado sin embargo, gracias a la herramienta &lt;a href="https://bennettfeely.com/clippy/" rel="noopener noreferrer"&gt;clippy&lt;/a&gt; podemos generar el código automáticamente&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fc9y0qg2dxonhtnz4tjli.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fc9y0qg2dxonhtnz4tjli.png" alt="9"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;h1&gt;
  
  
  ¡Listo!
&lt;/h1&gt;




&lt;p&gt;Una vez terminado podemos eliminar el borde rojo&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;

&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="nl"&gt;border&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="nb"&gt;solid&lt;/span&gt; &lt;span class="no"&gt;red&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fscjs69hesfwbn12l36wr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fscjs69hesfwbn12l36wr.png" alt="10"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;h1&gt;
  
  
  Bonus, animación
&lt;/h1&gt;




&lt;p&gt;Dentro del elemento .face::before definimos los &lt;strong&gt;parámetros iniciales&lt;/strong&gt; de la animación  que son: el &lt;strong&gt;nombre&lt;/strong&gt; de la animación, la &lt;strong&gt;duración&lt;/strong&gt; (que es como la velocidad) y el &lt;strong&gt;número de veces&lt;/strong&gt; que queremos que se repita la animación además de los que ya teníamos&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;

&lt;span class="nc"&gt;.face&lt;/span&gt;&lt;span class="nd"&gt;::before&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;animation-name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;pulse&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;animation-duration&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.5s&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;animation-iteration-count&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;infinite&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Luego creamos los &lt;strong&gt;keyframes&lt;/strong&gt; de la animación que son las &lt;strong&gt;guías&lt;/strong&gt; para que CSS interprete lo que queremos hacer&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;

&lt;span class="k"&gt;@keyframes&lt;/span&gt; &lt;span class="n"&gt;pulse&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="err"&gt;0&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;rotate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;-10deg&lt;/span&gt;&lt;span class="p"&gt;);}&lt;/span&gt;
  &lt;span class="err"&gt;50&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1.1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;rotate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;-10deg&lt;/span&gt;&lt;span class="p"&gt;);}&lt;/span&gt;
  &lt;span class="err"&gt;100&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;rotate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;-10deg&lt;/span&gt;&lt;span class="p"&gt;);}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Se mantuvo una rotación de -10deg para que se quedara recta la sonrisa &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fzmttexyu7zlycuplfofq.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fzmttexyu7zlycuplfofq.gif" alt="1"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;h1&gt;
  
  
  Recursos
&lt;/h1&gt;




&lt;p&gt;&lt;a href="https://github.com/realraulmar/spookyCSS" rel="noopener noreferrer"&gt;&lt;strong&gt;Repo de github&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://codepen.io/_raulmar/pen/mdPgVeB" rel="noopener noreferrer"&gt;&lt;strong&gt;Pen&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/mariwrios/status/1303039101730463744?s=20" rel="noopener noreferrer"&gt;&lt;strong&gt;Animaciones CSS&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/mariwrios/status/1297730106908188673?s=20" rel="noopener noreferrer"&gt;&lt;strong&gt;Clip-path&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>css</category>
      <category>html</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
