<?xml version = "1.0" encoding="UTF-8"?>
<?xml-stylesheet href="https://syair.angkatogeljitu.workers.dev/host-https-lord.re/css/rss.xsl" type="text/xsl"?>
<!-- theme/neoDark/layout/_default/rss.xml --> 

<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>/home/lord</title>
    <link>https://lord.re/</link>
    <description>Les derniers posts de  /home/lord</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>fr</language>
    <lastBuildDate>Fri, 17 Apr 2026 10:32:29 +0200</lastBuildDate>
    <image><link>https://lord.re/favicon.png</link><url>https://lord.re/favicon.png</url><title>/home/lord</title></image>
    
    <atom:link href="https://lord.re/posts/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>Réorganisation totale des keybinds de Sway, MPV et Qutebrowser</title>
      <link>https://lord.re/posts/260-rationnalisation-des-keybinds/</link>
      <pubDate>Thu, 04 Sep 2025 14:11:49 +0200</pubDate>
      
      <guid>https://lord.re/posts/260-rationnalisation-des-keybinds/</guid>
      <description>&lt;p&gt;Bon après un an et demi sous ergol, j&#39;ai pris le temps de refaire un peu mes raccourcis sur différents logiciels.&lt;/p&gt;
&lt;h2 id=&#34;sway&#34;&gt;Sway &lt;a href=&#34;#sway&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Mon gestionnaire de fenêtre favori a été un peu négligé.
Cela fait fort longtemps que je l&#39;utilise maintenant et à l&#39;époque &lt;em&gt;j&#39;utilisais les raccourcis sémantiques&lt;/em&gt;.
Donc pour mettre en Fullscreen, j&#39;utilisais &lt;kbd&gt;mod+f&lt;/kbd&gt;, pour mettre en tabbed j&#39;utilisais &lt;kbd&gt;mod+t&lt;/kbd&gt;.
Pour bouger les fenêtres, c&#39;était avec &lt;kbd&gt;mod+flèches&lt;/kbd&gt;…
Bref, un truc facile pour s&#39;en rappeler.&lt;/p&gt;
&lt;p&gt;Mais &lt;em&gt;ça n&#39;est utile qu&#39;un petit temps puisque si c&#39;est utilisé fréquemment c&#39;est la mémoire musculaire qui prend le dessus&lt;/em&gt;.
Et là, ce fut le drame, j&#39;ai migré vers ergol.
Par méga flemme et aussi pour ne pas trop me battre contre moi-même, j&#39;ai pas bougé les raccourcis du coup il n&#39;y avait plus l&#39;aspect sémantique.&lt;/p&gt;
&lt;p&gt;Un truc chiant c&#39;est que ma touche &lt;kbd&gt;mod&lt;/kbd&gt; se trouve sur la partie gauche de mon clavier et que de nombreux raccourcis utilisent en complément des touches de la partie droite du clavier.
&lt;em&gt;Me voilà comme un looser à faire des raccourcis claviers nécessitant les deux mains&lt;/em&gt; alors que je pourrai n&#39;en utiliser qu&#39;une et avoir l&#39;autre pour caresser le chat.&lt;/p&gt;
&lt;p&gt;Voilà donc le moment de refaire les raccourcis en profondeur !
C&#39;est l&#39;occasion rêvée pour virer les keybinds qui ne me servent pas !&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;extrait ~/.config/sway/config&lt;/summary&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;bindcode $win+36 exec footclient # Entrée
bindsym --to-code $win+b kill

bindsym --to-code $win+o focus up
bindsym --to-code $win+e focus down
bindsym --to-code $win+s focus left
bindsym --to-code $win+n focus right

bindsym --to-code $win+Shift+o move up
bindsym --to-code $win+Shift+e move down
bindsym --to-code $win+Shift+s move left
bindsym --to-code $win+Shift+n move right

#resize
bindsym --to-code $win+Ctrl+s resize grow left 10 px
bindsym --to-code $win+Ctrl+n resize shrink left 10 px
bindsym --to-code $win+Ctrl+o resize grow up 10 px
bindsym --to-code $win+Ctrl+e resize shrink up 10 px

#layouts
bindsym --to-code $win+h split h
bindsym --to-code $win+v split v
bindsym --to-code $win+f fullscreen
bindsym --to-code $win+t layout tabbed
bindsym --to-code $win+Shift+Space floating toggle
bindsym --to-code $win+Space focus mode_toggle

# switch to workspace
bindcode --no-repeat $win+10 workspace 1
bindcode --no-repeat $win+11 workspace 2
bindcode --no-repeat $win+12 workspace 3
bindcode --no-repeat $win+13 workspace 4
bindcode --no-repeat $win+14 workspace 5

# move focused container to workspace
bindcode $win+Shift+10 move container to workspace 1
bindcode $win+Shift+11 move container to workspace 2
bindcode $win+Shift+12 move container to workspace 3
bindcode $win+Shift+13 move container to workspace 4
bindcode $win+Shift+14 move container to workspace 5

bindsym --to-code $win+r reload

# musiques via Alt c ou Alt C
bindsym --to-code $win+c exec mpdmenu
bindsym --to-code $win+Shift+c exec mpdalbumdmenu

# Lancement de programme via Alt o
bindsym --to-code $win+p exec &amp;#34;fuzzel&amp;#34;

# Gestionnaire de mot de passe via Alt p
bindsym --to-code $win+w exec /usr/local/bin/menupass --type

# Gestion du volume via les bornes d&amp;#39;arcade
bindsym XF86AudioRaiseVolume exec wpctl set-volume @DEFAULT_SINK@ 5%+
bindsym XF86AudioLowerVolume exec wpctl set-volume  @DEFAULT_SINK@ 5%-
bindsym XF86AudioMute exec wpctl set-mute @DEFAULT_SINK@ toggle

bindsym XF86AudioNext exec mpc next
bindsym XF86AudioPrev exec mpc prev
bindsym XF86AudioPlay exec mpc toggle

bindsym --to-code $win+a exec fuzzel-emoji
## Gestion Push-To-Talk de la pédale USB
bindsym --no-repeat F12 exec amixer set Capture capture cap
bindsym --no-repeat --release F12 exec amixer set Capture capture nocap

## Le Super Fuzzel contextuel
bindsym --to-code $win+q exec fuzzel-context-menu
&lt;/code&gt;&lt;/pre&gt;&lt;/details&gt;
&lt;p&gt;Voilà, rien de bien exotique si ce n&#39;est que je n&#39;utilise plus les flèches mais &lt;em&gt;OESN&lt;/em&gt; en lieu et place.
D&#39;ailleurs c&#39;est ce que j&#39;utilise désormais dans la plupart des jeux pour remplacer le vénérable &lt;em&gt;WSAD&lt;/em&gt;.
Ce sont les mêmes touches mais décalées d&#39;une colonne vers la droite et donc plus centré sur le clavier avec donc plus de touches accessibles à côté.&lt;/p&gt;
&lt;p&gt;C&#39;est le changement le plus compliqué d&#39;un point de vue habitude mais qui se révèle un des plus agréables.
&lt;em&gt;Tous les raccourcis de &lt;strong&gt;sway&lt;/strong&gt; sont faisables de la main gauche&lt;/em&gt;.&lt;/p&gt;
&lt;h2 id=&#34;mpv&#34;&gt;MPV &lt;a href=&#34;#mpv&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Allez, à ton tour MPV !
Bon alors lui un truc qui me gonfle, c&#39;est qu&#39;à peine, &lt;em&gt;tu touches le clavier il se passe des trucs dans tous les sens&lt;/em&gt;.
Et bon, quand tu es bien vautré en train de regarder une vidéo, le chat adore venir voir ce qu&#39;il se passe.
Et bam accident de clavier.&lt;/p&gt;
&lt;p&gt;Bref, &lt;em&gt;je n&#39;utilise qu&#39;un dixième des keybinds de ce logiciel&lt;/em&gt;.
Sauf que les devs sont des génies !
&lt;em&gt;Ils ont mis une option permettant de virer tous les keybinds par défaut&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Donc dans votre &lt;em&gt;~/.config/mpv/config&lt;/em&gt; il suffit d&#39;ajouter &lt;samp&gt;input-default-bindings=no&lt;/samp&gt; et c&#39;est bon plus d&#39;emmerdes.
Ensuite on rajoute ceux que l&#39;on veut.&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;~/.config/mpv/input.conf&lt;/summary&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ctrl+left sub-step -1
ctrl+right sub-step 1

5 multiply speed 1.1
4 multiply speed 1/1.1
MBTN_BACK cycle mute

## Réutilisation des bindings par défaut
, frame-back-step
. frame-step
f cycle fullscreen
ESC set fullscreen no
MBTN_LEFT_DBL cycle fullscreen
Ctrl+h cycle-values hwdec &amp;#34;no&amp;#34; &amp;#34;auto&amp;#34;
m cycle mute
O no-osd cycle-values osd-level 3 1
SPACE cycle pause
MBTN_RIGHT cycle pause
q quit-watch-later
b nonscalable script-binding autosub/auto_load_subs
` script-binding commands/open # open the console
DEL script-binding osc/visiblilty
MOUSE_MOVE script-binding osc/__keybinding3
MOUSE_LEAVE script-binding osc/__keybinding4
i script-binding stats/display-stats-toggle
y nonscalable script-binding youtube_quality/quality-menu

o seek 60
e seek -60
s seek -2
n seek 2
UP seek 60
DOWN seek -60
LEFT seek -2
RIGHT seek 2
4 multiply speed 1/1.1
5 multiply speed 1.1
BS set speed 1.0
Ctrl+LEFT sub-step -1
Ctrl+RIGHT sub-step +1
WHEEL_UP add volume 2
WHEEL_DOWN add volume -2
0 add volume 2
9 add volume -2
? script-binding stats/display-page-4-toggle
&lt;/code&gt;&lt;/pre&gt;&lt;/details&gt;
&lt;p&gt;J&#39;ai gardé les flèches mais bon ça fait un sacré ménage mine de rien.
On peut toutes les retrouver avec &lt;kbd&gt;?&lt;/kbd&gt;.&lt;/p&gt;
&lt;p&gt;Voilà, ça aussi, c&#39;est fait ✔️.&lt;/p&gt;
&lt;h2 id=&#34;qutebrowser&#34;&gt;QuteBrowser &lt;a href=&#34;#qutebrowser&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Le gros morceau.
Le navigateur web déborde de raccourcis dans tous les sens.
&lt;em&gt;En plus ma config commence à être assez vieille et est éparpillée un peu partout&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;On en trouve dans &lt;em&gt;~/.config/qutebrowser/autoconfig.yml&lt;/em&gt; mais aussi dans &lt;em&gt;~/.config/qutebrowser/keys.conf&lt;/em&gt; et enfin dans &lt;em&gt;~/.config/qutebrowser/config.py&lt;/em&gt; .
Il est temps de faire un gros nettoyage !&lt;/p&gt;
&lt;p&gt;Je dégage le &lt;em&gt;keys.conf&lt;/em&gt; parceque de toute façon c&#39;est redondant.
Le &lt;em&gt;autoconfig.yml&lt;/em&gt; contient la conf dynamique faite directement depuis le navigateur.
Je le garde mais je n&#39;y définie rien de plus et j&#39;enlève les deux trois trucs que j&#39;avais dedans.&lt;/p&gt;
&lt;p&gt;Je fais tout dans le &lt;em&gt;config.py&lt;/em&gt;.
Et là va falloir trancher dans le lard aussi !
Comme &lt;strong&gt;mpv&lt;/strong&gt;, on peut lui dégager tous les raccourcis par défaut et ensuite définir uniquement les nôtres.&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;extrait de ~/.config/qutebrowser/config.py&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;c&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bindings&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;default &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; {}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;o&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;scroll up&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;e&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;scroll down&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#config.bind(&amp;#39;s&amp;#39;, &amp;#39;scroll left&amp;#39;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#config.bind(&amp;#39;n&amp;#39;, &amp;#39;scroll right&amp;#39;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;f&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;hint&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Fk&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;hint all delete&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;FK&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;hint div delete&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Fm&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;hint links spawn --detach mpv --script-opts=ytdl_hook-try_ytdl_first=yes {hint-url}&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;FM&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;hint links spawn --detach umpv --script-opts=ytdl_hook-try_ytdl_first=yes {hint-url}&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Ft&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;hint links spawn --detach totv {hint-url}&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;FT&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;hint links spawn --detach totv {hint-url} append&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Fy&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;hint links yank-primary&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;gk&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;hint all delete&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;gK&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;hint div delete&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;gm&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;hint links spawn --detach mpv --script-opts=ytdl_hook-try_ytdl_first=yes {hint-url}&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;gM&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;hint links spawn --detach umpv --script-opts=ytdl_hook-try_ytdl_first=yes {hint-url}&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;gt&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;hint links spawn --detach totv {hint-url}&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;gT&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;hint links spawn --detach totv {hint-url} append&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;gy&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;hint links yank-primary&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;P&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;cmd-set-text -s :open {url:pretty}&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;W&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;cmd-set-text -s :open -t {url:pretty}&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;m&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;spawn --detach mpv --script-opts=ytdl_hook-try_ytdl_first=yes &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{url}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;p&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;cmd-set-text -s :open&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;w&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;cmd-set-text -s :open -t&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;yy&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;yank -s pretty-url&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;j&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;config-cycle -p -t -u *://{url:host}/* content.javascript.enabled ;; reload&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;/&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;cmd-set-text /&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;:&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;cmd-set-text :&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;r&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;reload&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;lt;Back&amp;gt;&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;back&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;lt;Forward&amp;gt;&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;forward&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;lt;Escape&amp;gt;&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;clear-keychain ;; search ;; fullscreen --leave&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;u&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;undo&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;n&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;search-next&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;N&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;search-prev&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;i&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;mode-enter insert&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;pp&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;open -- &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{clipboard}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;-&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;zoom-out&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;+&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;zoom-in&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;gf&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;view-source&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ZZ&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;quit --save&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;lt;Up&amp;gt;&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;completion-item-focus --history prev&amp;#39;&lt;/span&gt;,mode&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;command&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;lt;Down&amp;gt;&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;completion-item-focus --history next&amp;#39;&lt;/span&gt;,mode&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;command&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;lt;Tab&amp;gt;&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;completion-item-focus next&amp;#39;&lt;/span&gt;,mode&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;command&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;lt;Return&amp;gt;&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;command-accept&amp;#39;&lt;/span&gt;,mode&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;command&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;lt;Escape&amp;gt;&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;mode-leave&amp;#39;&lt;/span&gt;,mode&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;command&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;lt;Return&amp;gt;&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;hint-follow&amp;#39;&lt;/span&gt;,mode&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;hint&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;lt;Escape&amp;gt;&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;mode-leave&amp;#39;&lt;/span&gt;,mode&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;hint&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;lt;Ctrl-e&amp;gt;&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;edit-text&amp;#39;&lt;/span&gt;,mode&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;insert&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;lt;Escape&amp;gt;&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;mode-leave&amp;#39;&lt;/span&gt;,mode&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;insert&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;lt;Shift-Escape&amp;gt;&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;fake-key &amp;lt;Escape&amp;gt;&amp;#39;&lt;/span&gt;,mode&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;insert&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;lt;Shift-Escape&amp;gt;&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;mode-leave&amp;#39;&lt;/span&gt;,mode&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;passthrough&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;lt;Return&amp;gt;&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;prompt-accept&amp;#39;&lt;/span&gt;,mode&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;prompt&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;lt;Up&amp;gt;&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;prompt-item-focus next&amp;#39;&lt;/span&gt;,mode&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;prompt&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;lt;Down&amp;gt;&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;prompt-item-focus prev&amp;#39;&lt;/span&gt;,mode&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;prompt&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;lt;Tab&amp;gt;&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;prompt-item-focus next&amp;#39;&lt;/span&gt;,mode&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;prompt&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;lt;Escape&amp;gt;&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;mode-leave&amp;#39;&lt;/span&gt;,mode&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;prompt&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;lt;Return&amp;gt;&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;prompt-accept&amp;#39;&lt;/span&gt;,mode&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;yesno&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;y&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;prompt-accept yes&amp;#39;&lt;/span&gt;,mode&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;yesno&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;n&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;prompt-accept no&amp;#39;&lt;/span&gt;,mode&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;yesno&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Y&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;prompt-accept --save yes&amp;#39;&lt;/span&gt;,mode&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;yesno&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;N&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;prompt-accept --save no&amp;#39;&lt;/span&gt;,mode&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;yesno&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;lt;Escape&amp;gt;&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;mode-leave&amp;#39;&lt;/span&gt;,mode&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;yesno&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/details&gt;
&lt;p&gt;Bon c&#39;est pas mal de boulot mais c&#39;est à faire une seule fois.
&lt;em&gt;Il y a de fortes chances que je me rende compte à l&#39;usage qu&#39;il me manque certains raccourcis&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Bon et pour tenter de tenir au max de tout faire à la main gauche (pourvu qu&#39;elle tienne bon), je suis revenu sur le &lt;samp&gt;c.hints.mode = &#39;letter&#39;&lt;/samp&gt; et j&#39;ai du coup aussi mis &lt;samp&gt;c.hints.chars = &#39;qcopwasenfzxvb&#39;&lt;/samp&gt; pour pouvoir naviguer intégralement de la main gauche.&lt;/p&gt;
&lt;p&gt;À voir si à l&#39;usage j&#39;arrive à m&#39;y faire.
J&#39;ai toujours utilisé le &lt;em&gt;c.hints.mode = &#39;number&#39;&lt;/em&gt; du coup ça va pas mal me chambouler.
C&#39;est un mode qui me semble plus logique et rapide mais qui nécessite deux mains…&lt;/p&gt;
&lt;h2 id=&#34;croisons-les-doigts-&#34;&gt;Croisons les doigts 🤞 &lt;a href=&#34;#croisons-les-doigts-&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Ces modifications sont récentes et vont nécessiter un peu de temps pour choper de nouvelles habitudes.&lt;/p&gt;
&lt;p&gt;À voir si ça va se maintenir ou si je reviendrai en arrière.&lt;/p&gt;

      
      
      </description>
    <category>ux"</category><category>sway"</category><category>mpv"</category><category>qutebrowser"</category>
    
    </item>
    
    <item>
      <title>Utiliser un LSP pour le français dans Helix</title>
      <link>https://lord.re/posts/259-correction-orthographique-en-fran%C3%A7ais-dans-helix/</link>
      <pubDate>Tue, 15 Jul 2025 21:06:07 +0200</pubDate>
      
      <guid>https://lord.re/posts/259-correction-orthographique-en-fran%C3%A7ais-dans-helix/</guid>
      <description>&lt;p&gt;J&#39;ai beau blogguer depuis bientôt vingt ans, j&#39;attends encore le moment où je parviendrai à pondre un long texte sans fautes.
Mais force est de constater que je n&#39;ai pas encore atteint une maîtrise suffisante du Français.
Je progresse un peu sur certains points, mais c&#39;est encore bien loin de la perfection.&lt;/p&gt;
&lt;p&gt;Je pourrais en filtrer une bonne part en me relisant, mais je n&#39;y arrive pas.
Tout du moins pas bien.
Je rate les trois quarts des fautes quand je me relis à chaud.
Il faut vraiment que je patiente quelques jours pour ne plus du tout avoir le texte en tête pour réellement me relire en lisant les mots.
Si je connais trop le texte, je me contente de survoler pour le sens sans me concentrer sur les mots eux-mêmes.&lt;/p&gt;
&lt;p&gt;Mais par contre, quand je relis un blogpost quelques années plus tard, je m&#39;arrache les yeux en voyant les fautes.
Que ce soit les fautes de frappes, les mots carrément manquants, la conjugaison hasardeuse ou même les tournures de phrases qui changent en cours d&#39;écriture et qui deviennent n&#39;importe quoi.
Bref, j&#39;ai le sentiment de m&#39;améliorer que trop lentement et j&#39;ai un poil honte l&#39;orthographe alors que le fond en lui-même me plait.&lt;/p&gt;
&lt;h2 id=&#34;solution-technique&#34;&gt;Solution technique &lt;a href=&#34;#solution-technique&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Pour tenter d&#39;améliorer et de contrer une grande partie des fautes, je foutais une passe de &lt;strong&gt;Grammalecte&lt;/strong&gt;.
Le truc chiant, c&#39;est que j&#39;en avais une vieille version difficile à mettre à jour et en plus c&#39;était un plugin pour &lt;strong&gt;vim&lt;/strong&gt;.
Je n&#39;utilise plus &lt;strong&gt;vim&lt;/strong&gt; que pour ça.
Ça fait deux ans que je rédige quasiment tout dans &lt;strong&gt;helix&lt;/strong&gt; que je trouve bien plus agréable et mieux foutu.
Je ne vous ai toujours pas fait d&#39;article pour en parler !?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Helix&lt;/strong&gt; est avant tout un éditeur de texte pour le code plus que pour la rédaction.
Ça implique qu&#39;il a plus de fonctionnalités pensées pour les devs.
Et vous savez ce qu&#39;utilisent les devs : des linters, de la coloration syntaxique, un LSP.
Une des grandes feature d&#39;&lt;strong&gt;Helix&lt;/strong&gt; est justement son support natif de LSP.&lt;/p&gt;
&lt;p&gt;LSP c&#39;est Language Server Protocol, un protocole assez récent pour normaliser un peu les éditeurs de code afin d&#39;uniformiser le support des différents langages informatiques.
C&#39;est ce qui permet que les différents éditeurs de texte puissent se comporter de la même manière concernant un langage de programmation.
Avant cette fonctionnalité était implémentée par chaque éditeur de texte et chacun faisait un peu sa sauce.&lt;/p&gt;
&lt;p&gt;Le fait d&#39;en faire un élément indépendant permet de ne pas tous réimplémenter la même chose et que les améliorations profitent à tous et surtout que les langages eux-mêmes poussent leurs update directement à ce niveau-là.
Bref, tous les avantages du Libre.
Il existe donc des LSP pour de très nombreux langages de programmation.&lt;/p&gt;
&lt;p&gt;Mais pourquoi se limiter à ça en non au langage naturel ?
Et voilà où je veux en venir !
Ça commence à arriver enfin !&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;LanguageTool&lt;/strong&gt; est un logiciel dont le but est d&#39;améliorer la rédaction de texte.
Il corrige l&#39;orthographe, il permet de repérer l&#39;utilisation redondante de termes, il corrige la ponctuation et la grammaire et la conjugaison.
Il propose même de reformuler certains passages patauds.
Après, il faut garder en tête qu&#39;il s&#39;agit d&#39;un produit d&#39;une startup avec une base opensource et une version premium payante.&lt;/p&gt;
&lt;p&gt;Le truc, c&#39;est que c&#39;est un système de plugins pour des logiciels grand public (navigateurs, Word et ce genre de truc).
Mais des ptits malins ont bricolé un truc assez malin : ils ont fait un LSP se reposant sur LanguageTool !
Et hop, on récupère ces fonctionnalités que l&#39;on peut désormais retrouver dans des éditeurs de texte pour nerds.
Le meilleur des mondes !
Et voilà &lt;a href=&#34;https://github.com/ltex-plus/ltex-ls-plus&#34;&gt;Ltex+ LS&lt;/a&gt; (désolé le nom est spécial) !&lt;/p&gt;
&lt;h2 id=&#34;installation-et-utilisation-de-ltex-plus&#34;&gt;Installation et utilisation de ltex-plus &lt;a href=&#34;#installation-et-utilisation-de-ltex-plus&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Le truc est à la base pour Latex, mais bien entendu ça marche aussi pour du Markdown (ce qui m&#39;intéresse) ou pour d&#39;autres formats.
Alors, c&#39;est du java (non ne partez pas, ça se tolère quand même) et pour l&#39;utiliser avec &lt;strong&gt;Helix&lt;/strong&gt; c&#39;est très simple.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;On télécharge le bousin (je l&#39;ai foutu dans /opt ).&lt;/li&gt;
&lt;li&gt;On configure Helix pour lui dire d&#39;utiliser le LSP pour Markdown et aussi, on lui indique de bosser en français.&lt;/li&gt;
&lt;li&gt;C&#39;est tout&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pour la seconde étape je vous donne ça :&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;~/.config/helix/languages.toml&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-toml&#34; data-lang=&#34;toml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;[[&lt;span style=&#34;color:#a6e22e&#34;&gt;language&lt;/span&gt;]]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;name&lt;/span&gt; = &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;markdown&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;language-servers&lt;/span&gt; = [{ &lt;span style=&#34;color:#a6e22e&#34;&gt;name&lt;/span&gt; = &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ltex&amp;#34;&lt;/span&gt;}]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;file-types&lt;/span&gt; = [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;md&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;txt&amp;#34;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;scope&lt;/span&gt; = &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;source.markdown&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;roots&lt;/span&gt; = []
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;[&lt;span style=&#34;color:#a6e22e&#34;&gt;language-server&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;ltex&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;command&lt;/span&gt; = &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/opt/ltex-ls-plus-17.0.1/bin/ltex-ls-plus&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;config&lt;/span&gt; = { &lt;span style=&#34;color:#a6e22e&#34;&gt;ltex&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;language&lt;/span&gt; = &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;fr&amp;#34;&lt;/span&gt; }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/details&gt;
&lt;p&gt;Et voilà, la prochaine fois que vous éditerez un fichier Markdown ou texte, vous aurez la correction et tout le bazar qui se mettra en branle tout seul dans votre dos.
D&#39;ailleurs ça se ressent un peu sur la consommation de ressource.
C&#39;est pas gratuit du tout.
Après, pour ma machine, c&#39;est peanut mais c&#39;est possible qu&#39;un laptop sur batterie sente une différence.
Et autre petit point, ça prend un chouilla de temps à démarrer, mais sans non plus ralentir Helix.
Ça s&#39;initialise dans le fond et il est parfaitement réactif avant même que le LSP ait fini de se lancer.&lt;/p&gt;



&lt;figure&gt;
  &lt;a href=&#34;https://lord.re/posts/259-correction-orthographique-en-fran%C3%A7ais-dans-helix/helix-ltex-plus.png&#34;&gt;
      &lt;picture&gt;
        
        &lt;source srcset=&#34;https://lord.re/posts/259-correction-orthographique-en-fran%C3%A7ais-dans-helix/helix-ltex-plus.thumb.avif&#34;
          type=&#34;image/avif&#34;&gt;
        &lt;source srcset=&#34;https://lord.re/posts/259-correction-orthographique-en-fran%C3%A7ais-dans-helix/helix-ltex-plus.thumb.webp&#34;
          type=&#34;image/webp&#34;&gt;
        &lt;img src=&#34;https://lord.re/posts/259-correction-orthographique-en-fran%C3%A7ais-dans-helix/helix-ltex-plus.png&#34;
          alt=&#34;&#34; loading=&#34;lazy&#34;&gt;
        
      &lt;/picture&gt;
    &lt;/a&gt;
    &lt;figcaption&gt;
      &lt;h4&gt;Article en cours de rédaction avec sa correction visible.&lt;/h4&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;À vous les zigouigouis sous les mots.
Un ptit coup de &lt;kbd&gt;Espace a&lt;/kbd&gt; pour voir ce qu&#39;on vous propose pour remplacer.
En haut à droite de la fenêtre, vous aurez également une explication de la faute.&lt;/p&gt;

      
      
      </description>
    <category>linux"</category><category>software"</category>
    
    </item>
    
    <item>
      <title>Reaction à la maison</title>
      <link>https://lord.re/posts/258-reaction/</link>
      <pubDate>Sat, 28 Jun 2025 21:21:25 +0200</pubDate>
      
      <guid>https://lord.re/posts/258-reaction/</guid>
      <description>&lt;p&gt;J&#39;ai toujous eu un LAN très openbar.
Je pense avoir un semblant de sécurité et donc j&#39;ai jamais vraiment cherché à le blinder.
Mais ces derniers temps je commence à réaliser que ça me bouffe pas mal de ressources pour du vent.&lt;/p&gt;
&lt;p&gt;C&#39;est notamment les gaveurs d&#39;IA qui me font bien chier.
J&#39;ai beau ne pas leur répondre au niveau de nginx, il n&#39;en reste pas moins qu&#39;il établissent une connexion et font des tentatives et tout et j&#39;ai envie de les bloquer plus vite.
Du coup je voulais un truc qui bouffe des logs et qui réagisse en fonction de ce qui l&#39;y trouve.
Mais j&#39;aime vraiment pas Fail2Ban.&lt;/p&gt;
&lt;p&gt;Déjà parceque c&#39;est en python mais surtout parceque les confs fournies sont affreuses.
Mais ces derniers temps il y a une nouvelle alternative qui commence à émerger : &lt;strong&gt;&lt;a href=&#34;https://framagit.org/ppom/reaction&#34;&gt;Reaction&lt;/a&gt;&lt;/strong&gt; !&lt;/p&gt;
&lt;p&gt;Initialement en Go, sa v2 qui arrive est une réécriture en rust.
Le truc se configure avec une conf en yaml ou en jsonnet (boarf) ou json (ouf).&lt;/p&gt;
&lt;p&gt;Il se vend comme étant beaucoup plus léger et performant que fail2ban et il est présent dans les dépots testing d&#39;alpine donc facilement installable.
Mais bon mon but ne va pas être de bloquer au niveau de la machine mais du réseau.
Il va donc faloir que reaction pousse ses blocages vers le firewall.&lt;/p&gt;
&lt;h2 id=&#34;archi&#34;&gt;Archi &lt;a href=&#34;#archi&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Donc sur mon LAN j&#39;ai plusieurs machines qui hébergent des services.
Mais je centralise tous les logs avec &lt;strong&gt;rsyslog&lt;/strong&gt; sur une seule (vraiment dès que vous avez plus de deux machines c&#39;est pas mal du tout à mettre en place et c&#39;est ultra simple).
C&#39;est donc celle-ci qui va accueillir &lt;strong&gt;reaction&lt;/strong&gt; puisqu&#39;elle peut tout observer !&lt;/p&gt;
&lt;p&gt;Quand reaction va vouloir bloquer un truc, il va lancer une commande sur le routeur où se trouve le firewall via &lt;strong&gt;ssh&lt;/strong&gt;.
(ha et je le pousse également vers un VPS externe pour le protéger par la même occase)
Et … voilà.&lt;/p&gt;
&lt;h2 id=&#34;firewall&#34;&gt;Firewall &lt;a href=&#34;#firewall&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Mon routeur est un &lt;strong&gt;Turris Omnia&lt;/strong&gt; tournant sous &lt;strong&gt;OpenWRT&lt;/strong&gt;.
C&#39;est du linux mais avec quelques subtilités.
Une d&#39;entre elle c&#39;est d&#39;avoir une conf de firewall qui me plaît pas.&lt;/p&gt;
&lt;p&gt;Du coup j&#39;utilise du firewall à ma sauce à base de &lt;strong&gt;nft&lt;/strong&gt; et de script &lt;strong&gt;init&lt;/strong&gt; pour le mettre en place.
Ouai c&#39;est pas la mode mais ça marche très bien.
Mais le truc c&#39;est que j&#39;en ai profité pour moderniser la conf pour être un peu plus dualstack (ça l&#39;était déjà mais avec tout dédoublé en ipv4 et ipv6 et là je suis passé en &amp;quot;inet&amp;quot; pour pouvoir presque mélanger les deux réseaux).&lt;/p&gt;
&lt;p&gt;J&#39;ai donc converti mes règles de &lt;kbd&gt;nft add chain ip …&lt;/kbd&gt; en &lt;kbd&gt;nft add chain inet …&lt;/kbd&gt;.
Rien de bien méchant.
Et la deuxième modif a été d&#39;adapter les règles de dnat de &lt;kbd&gt;nft add rule inet nat PREROUTING ip daddr $WAN_IP tcp dport 80 counter dnat to $DESTINATION&lt;/kbd&gt; en &lt;kbd&gt;nft add rule inet nat PREROUTING ip daddr $WAN_IP tcp dport 80 counter dnat ip to $DESTINATION&lt;/kbd&gt; (le ptit &amp;quot;ip&amp;quot; en plus après le &amp;quot;dnat&amp;quot;).&lt;/p&gt;
&lt;p&gt;Et du coup plus besoin de tables séparées pour ipv4 et ipv6.
Bon maintenant que je vais avoir des ip à bloquer à la pelle, je vais ranger tout ça dans 2 sets : 1 pour les ipv4 et 1 pour les ipv6.
Et donc je me suis repenché sur le wiki de nftables et notamment &lt;a href=&#34;https://wiki.nftables.org/wiki-nftables/index.php/Sets&#34;&gt;la page des sets&lt;/a&gt;.
Et j&#39;ai découvert qu&#39;on peut faire en sorte que les règles aient une durée de vie limitée !
Encore plus simple que prévu !&lt;/p&gt;
&lt;p&gt;Du coup, dans mon script d&#39;initialisation j&#39;ai mis ces lignes :&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;extrait /etc/init.d/nftables&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;### REACTION&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nft add set inet filter blackholev4 &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;type ipv4_addr ; flags interval,timeout ; counter ; auto-merge ; comment &amp;#34;Rempli par reaction&amp;#34;; &amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nft add set inet filter blackholev6 &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;type ipv6_addr ; flags interval,timeout ; counter ; auto-merge ; comment &amp;#34;Rempli par reaction&amp;#34;; &amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nft add rule inet filter FORWARD ip saddr @blackholev4 drop
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nft add rule inet filter FORWARD ip6 saddr @blackholev6 drop&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Voilà, on crée donc deux sets pour accueillir des ips avec des compteurs pour voir les stats et un timeout pour que les règles aient une durée de vie.&lt;/p&gt;
&lt;/details&gt;
&lt;h2 id=&#34;helper&#34;&gt;helper &lt;a href=&#34;#helper&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Reaction est concon : il lit des logs et déclenche des actions.
C&#39;est tout ce qu&#39;on lui demande.
Mais du coup reaction il va choper des adresses IPv4 et des adresses IPv6 sauf que le firewall gère les règles différemment entre ces deux protocoles.
Pour ça, ils fournissent un ptit outil nommé &lt;strong&gt;nft46&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Sauf qu&#39;il est pas dispo pour OpenWRT.
Et bon pendant cinq minutes j&#39;ai envisagé de l&#39;utiliser mais pas eu envie de crosscompiler et tout (c&#39;est pas aussi simple que du Go).
Mais du coup, j&#39;ai fait mon propre helper en Go !&lt;/p&gt;
&lt;p&gt;Donc la façon dont je vois le truc : &lt;strong&gt;reaction&lt;/strong&gt; donne une ip, l&#39;helper se débrouille pour déterminer le type d&#39;IP.
En fonction de ça, il lance une commande &lt;strong&gt;nft&lt;/strong&gt; pour ajouter l&#39;ip dans le bon set.
C&#39;est tout.&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;code de nft-ban&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-golang&#34; data-lang=&#34;golang&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;package&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;main&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; (
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#a6e22e&#34;&gt;_&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;embed&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;flag&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;fmt&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;net&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;os&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;os/exec&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;strings&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;syscall&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;//go:embed nft-ban.go&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;source&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;string&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;viewsource&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;bool&lt;/span&gt; = &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;func&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;main&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; len(&lt;span style=&#34;color:#a6e22e&#34;&gt;os&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Args&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#a6e22e&#34;&gt;fmt&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Println&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;nft-ban: Donnez une adresse IP ou -source pour voir les sources&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#a6e22e&#34;&gt;os&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Exit&lt;/span&gt;(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#a6e22e&#34;&gt;flag&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;BoolVar&lt;/span&gt;(&lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;viewsource&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;source&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;View source&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#a6e22e&#34;&gt;flag&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Parse&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;viewsource&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#a6e22e&#34;&gt;fmt&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Print&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;source&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#a6e22e&#34;&gt;os&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Exit&lt;/span&gt;(&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#a6e22e&#34;&gt;commande&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:=&lt;/span&gt; []&lt;span style=&#34;color:#66d9ef&#34;&gt;string&lt;/span&gt;{&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;add&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;element&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;inet&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;filter&amp;#34;&lt;/span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#a6e22e&#34;&gt;address&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;os&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Args&lt;/span&gt;[&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;switch&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;IsIPv4&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;address&lt;/span&gt;):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#a6e22e&#34;&gt;commande&lt;/span&gt; = append(&lt;span style=&#34;color:#a6e22e&#34;&gt;commande&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;blackholev4&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;{&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;address&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;timeout&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2d&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;}&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;IsIPv6&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;address&lt;/span&gt;):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#a6e22e&#34;&gt;commande&lt;/span&gt; = append(&lt;span style=&#34;color:#a6e22e&#34;&gt;commande&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;blackholev6&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;{&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;address&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/64&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;timeout&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2d&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;}&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;default&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#a6e22e&#34;&gt;fmt&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Println&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;address&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34; n&amp;#39;est pas une adresse IP.&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#a6e22e&#34;&gt;os&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Exit&lt;/span&gt;(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#a6e22e&#34;&gt;env&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;os&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Environ&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#a6e22e&#34;&gt;binary&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;lookErr&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;exec&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;LookPath&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;nft&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;lookErr&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;nil&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		panic(&lt;span style=&#34;color:#a6e22e&#34;&gt;lookErr&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#a6e22e&#34;&gt;execErr&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;syscall&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Exec&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;binary&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;commande&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;env&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;execErr&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;nil&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#a6e22e&#34;&gt;fmt&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Println&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;\n&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;commande&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		panic(&lt;span style=&#34;color:#a6e22e&#34;&gt;execErr&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;func&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;IsIPv4&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;str&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;string&lt;/span&gt;) &lt;span style=&#34;color:#66d9ef&#34;&gt;bool&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#a6e22e&#34;&gt;ip&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;net&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;ParseIP&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;str&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;ip&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;nil&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;strings&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Contains&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;str&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;func&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;IsIPv6&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;str&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;string&lt;/span&gt;) &lt;span style=&#34;color:#66d9ef&#34;&gt;bool&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#a6e22e&#34;&gt;ip&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;net&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;ParseIP&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;str&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;ip&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;nil&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;strings&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Contains&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;str&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;:&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;À compiler avec &lt;kbd&gt;CGO_ENABLED=0 GOARCH=arm GOARM=7 go build&lt;/kbd&gt; et à pousser sur le routeur.&lt;/p&gt;
&lt;/details&gt;
&lt;p&gt;Bon c&#39;est des morceaux rapiécés de droite et de gauche mais ça fonctionne et ça se cross-compile pour le routeur !
Et le pire c&#39;est que ça fonctionne.&lt;/p&gt;
&lt;p&gt;C&#39;est pas strictement identique à &lt;strong&gt;nft46&lt;/strong&gt; et pas du tout flexible (tout du moins pas sans recompiler) mais pour mon usage perso ça va le faire.&lt;/p&gt;
&lt;h2 id=&#34;reaction-itself&#34;&gt;Reaction itself &lt;a href=&#34;#reaction-itself&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Bon j&#39;ai le firewall prêt, le helper également, reste plus qu&#39;à bidouiller &lt;strong&gt;reaction&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Bon on installe ça avec &lt;kbd&gt;apk add reaction@testing&lt;/kbd&gt; et ensuite on édite le fichier de conf.&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;/etc/reaction.yml&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;definitions&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  - &lt;span style=&#34;color:#75715e&#34;&gt;&amp;amp;turris_ban&lt;/span&gt; [ &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ssh&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;root@fayawool&amp;#34;&lt;/span&gt; ,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;nft-ban&amp;#34;&lt;/span&gt; ,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;lt;ip&amp;gt;&amp;#34;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  - &lt;span style=&#34;color:#75715e&#34;&gt;&amp;amp;vps_ban&lt;/span&gt; [ &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ssh&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;root@vps&amp;#34;&lt;/span&gt; ,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;nft-ban&amp;#34;&lt;/span&gt; ,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;lt;ip&amp;gt;&amp;#34;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  - &lt;span style=&#34;color:#75715e&#34;&gt;&amp;amp;tonib_notif&lt;/span&gt; [ &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;tonib&amp;#34;&lt;/span&gt; , &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;[REACTION] BAN &amp;lt;ip&amp;gt;&amp;#34;&lt;/span&gt; ]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;patterns&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;ip&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	  &lt;span style=&#34;color:#75715e&#34;&gt;#regex plus simple mais moins correcte&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;#regex: &amp;#39;(?:(?:[0-9]{1,3}\.){3}[0-9]{1,3})|(?:[0-9a-fA-F:]{2,90})&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;regex&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}|(?:(?:[0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|(?:[0-9a-fA-F]{1,4}:){1,7}:|(?:[0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|(?:[0-9a-fA-F]{1,4}:){1,5}(?::[0-9a-fA-F]{1,4}){1,2}|(?:[0-9a-fA-F]{1,4}:){1,4}(?::[0-9a-fA-F]{1,4}){1,3}|(?:[0-9a-fA-F]{1,4}:){1,3}(?::[0-9a-fA-F]{1,4}){1,4}|(?:[0-9a-fA-F]{1,4}:){1,2}(?::[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:(?:(?::[0-9a-fA-F]{1,4}){1,6})|:(?:(?::[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(?::[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(?:ffff(?::0{1,4}){0,1}:){0,1}(?:(?:25[0-5]|(?:2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(?:25[0-5]|(?:2[0-4]|1{0,1}[0-9]){0,1}[0-9])|(?:[0-9a-fA-F]{1,4}:){1,4}:(?:(?:25[0-5]|(?:2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(?:25[0-5]|(?:2[0-4]|1{0,1}[0-9]){0,1}[0-9]))&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;ignore&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;127.0.0.1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - ::&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;10.0.0.254&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;streams&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;ssh&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;cmd&lt;/span&gt;: [ &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;tail&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;-Fn0&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;/var/log/auth.log&amp;#39;&lt;/span&gt; ]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;filters&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;failedlogin&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;regex&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#75715e&#34;&gt;# - &amp;#39;authentication failure;.*rhost=&amp;lt;ip&amp;gt;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          - &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Failed password for .* from &amp;lt;ip&amp;gt; port .*&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          - &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Invalid user .* &amp;lt;ip&amp;gt; port .*&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          - &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Timeout before authentication .* &amp;lt;ip&amp;gt; port .*&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#75715e&#34;&gt;# - &amp;#39;Connection reset by authenticating user .* &amp;lt;ip&amp;gt; port .*&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;retry&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;retryperiod&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;6h&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;actions&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;turris_ban&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;cmd&lt;/span&gt;: &lt;span style=&#34;color:#75715e&#34;&gt;*turris_ban&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;vps_ban&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;cmd&lt;/span&gt;: &lt;span style=&#34;color:#75715e&#34;&gt;*vps_ban&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;web-bots&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;cmd&lt;/span&gt;: [ &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;tail&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;-Fn0&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;/var/log/nginx/lord.re.access.log&amp;#39;&lt;/span&gt; ]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;filters&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;aiBots&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;regex&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;				  &lt;span style=&#34;color:#75715e&#34;&gt;#Les IP qui se prennent une erreur 402 de la part de nginx (les gaveurs d&amp;#39;IA).&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          - &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;^&amp;lt;ip&amp;gt; .*402 160*&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;actions&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;ban&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;cmd&lt;/span&gt;: &lt;span style=&#34;color:#75715e&#34;&gt;*turris_ban&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;vps_ban&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;cmd&lt;/span&gt;: &lt;span style=&#34;color:#75715e&#34;&gt;*vps_ban&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;mail-postfix&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;cmd&lt;/span&gt;: [ &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;tail&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;-Fn0&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;/var/log/172.16.1.254/postfix.log&amp;#39;&lt;/span&gt; ]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;filters&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;dnsbl&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;regex&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          - &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;dnsblog.* addr &amp;lt;ip&amp;gt; listed by*&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;retry&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;retryperiod&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1h&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;actions&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;ban&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;cmd&lt;/span&gt;: &lt;span style=&#34;color:#75715e&#34;&gt;*turris_ban&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;vps_ban&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;cmd&lt;/span&gt;: &lt;span style=&#34;color:#75715e&#34;&gt;*vps_ban&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;mail-dovecot&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;cmd&lt;/span&gt;: [ &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;tail&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;-Fn0&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;/var/log/172.16.1.254/dovecot.log&amp;#39;&lt;/span&gt; ]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;filters&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;failedlogins&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;regex&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          - &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#39;imap-login: Login aborted&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Too many invalid commands.* rip=&amp;lt;ip&amp;gt;.*&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;retry&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;retryperiod&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1h&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;actions&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;ban&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;cmd&lt;/span&gt;: &lt;span style=&#34;color:#75715e&#34;&gt;*turris_ban&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;vps_ban&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;cmd&lt;/span&gt;: &lt;span style=&#34;color:#75715e&#34;&gt;*vps_ban&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/details&gt;
&lt;p&gt;Voilà c&#39;est une config un peu simple que j&#39;étofferais probablement avec le temps pour protéger plus de services.&lt;/p&gt;
&lt;h2 id=&#34;cest-pas-graph-&#34;&gt;C&#39;est pas graph ! &lt;a href=&#34;#cest-pas-graph-&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Bon c&#39;est cool mais ça manque de courbes et de points qui bougent !&lt;/p&gt;
&lt;p&gt;Du coup j&#39;ai eu envie de nourrir mon ptit &lt;strong&gt;grafana&lt;/strong&gt; et son &lt;strong&gt;influxdb&lt;/strong&gt;.
Pour ça, un simple petit script à éxecuter de temps à autre via cron.&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;/usr/local/bin/reaction2influx&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#! /bin/sh
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;blv4&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;nft list set inet filter blackholev4 | grep -c expires&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;blv6&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;nft list set inet filter blackholev6 | grep -c expires&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;wire_protocol&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt; printf &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;reaction_stats,host=FayaWool blv4=%si,blv6=%si&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$blv4&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$blv6&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -i -XPOST -u login:pass &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://l.influx.db/write?db=perso&amp;#34;&lt;/span&gt; --data-binary &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$wire_protocol&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/details&gt;
&lt;p&gt;Restera plus qu&#39;a se faire un ptit panel pour voir l&#39;évolution.&lt;/p&gt;
&lt;h2 id=&#34;cest-tout-&#34;&gt;C&#39;est tout ?! &lt;a href=&#34;#cest-tout-&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Bha oui.&lt;/p&gt;
&lt;p&gt;Je vous avais dit que c&#39;était facile.
Au final j&#39;oscille autour des 350 IPv4 blacklistées et autour des 30 IPv6.&lt;/p&gt;
&lt;p&gt;Pour les IPv6 j&#39;hésite d&#39;ailleurs à réduire un peu le masque (probablement à 56 au lieu de 64).
Mais bon, au vu de ce que je constate, il n&#39;y a que facebook qui vient me faire chier et je pourrai les bloquer une bonne fois pour toutes avec un /29.&lt;/p&gt;
&lt;p&gt;Ça faisait vraiment très longtemps que je m&#39;étais pas replongé dans le firewall et tout.
C&#39;était cool de se remettre un peu dedans, couplé avec un peu de grafana et du Go, je me suis bien amusé !&lt;/p&gt;

      
      
      </description>
    <category>linux"</category><category>réseau"</category><category>adminsys"</category>
    
    </item>
    
    <item>
      <title>Les services utilisateurs avec OpenRC</title>
      <link>https://lord.re/posts/257-openrc-et-les-services-utilisateurs/</link>
      <pubDate>Sat, 03 May 2025 01:20:20 +0200</pubDate>
      
      <guid>https://lord.re/posts/257-openrc-et-les-services-utilisateurs/</guid>
      <description>&lt;details&gt;&lt;summary&gt;je vais dire du bien de Systemd !&lt;/summary&gt;
Systemd permet de définir des services utilisateurs depuis longtemps.
&lt;/details&gt;
&lt;p&gt;Mais voilà &lt;strong&gt;OpenRC&lt;/strong&gt; (le magnifique) depuis la version 0.60 (sorti fin février 2025) possède maintenant un équivalent et c&#39;est dispo sur Gentoo !&lt;/p&gt;
&lt;h2 id=&#34;service-utilisateur-&#34;&gt;Service utilisateur ?! &lt;a href=&#34;#service-utilisateur-&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Bon les services classiques sont appelés services systèmes.
Ils démarrent des logiciels qui tournent en fond et qui le font souvent en root ou par un utilisateur &amp;quot;système&amp;quot; (non humain quoi).
Ça peut être un serveur web, un daemon cron etc, bref ça doit être lancé via une commande root.&lt;/p&gt;
&lt;p&gt;Mais il y a des services pour l&#39;utilisateur, donc des commandes lancées par l&#39;utilisateur et qui tournent en fond.
Par exemple, dans mon cas, je fais tourner &lt;strong&gt;mpd&lt;/strong&gt; qui est un lecteur audio en mode serveur.
Donc dès que je me loggue, je veux que ce logiciel soit démarré et que lorsque je me déloggue, il soit coupé.&lt;/p&gt;
&lt;p&gt;Le but est donc tout simplement de lancer des logiciels plus ou moins automatiquement.
Et quel meilleur logiciel pour en lancer d&#39;autres qu&#39;un gestionnaire d&#39;initialisation ?
Donc voilà qu&#39;&lt;strong&gt;OpenRC&lt;/strong&gt; s&#39;y est mis.&lt;/p&gt;
&lt;p&gt;Mais il existe également &lt;strong&gt;superd&lt;/strong&gt; qui est plus proche de systemd dans son approche et son comportement.
Je ne l&#39;utilise que sur mon téléphone vu que c&#39;est une des briques de &lt;strong&gt;sxmo&lt;/strong&gt;.
Mais sur mon ordi de bureau je passais par la technique un peu crasseuse de lancer ça avec &lt;strong&gt;sway&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;La plupart (tous ?) des utilisateurs de sway ont dans leur config de multiples lignes avec &lt;strong&gt;exec&lt;/strong&gt; pour lancer des logiciels.
C&#39;était la technique normale, mais c&#39;est un peu crade d&#39;avoir un fichier de conf qui se retrouve à définir le comportement d&#39;un logiciel et aussi à définir quoi démarrer.
Et puis c&#39;est très basique dans son fonctionnement.&lt;/p&gt;
&lt;h2 id=&#34;avantages-de-passer-par-openrc&#34;&gt;Avantages de passer par OpenRC &lt;a href=&#34;#avantages-de-passer-par-openrc&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Lancer via Sway ça fonctionne mais c&#39;est tout.&lt;/p&gt;
&lt;p&gt;Avec OpenRC, on peut ajouter quelques ptites fonctionnalités plutôt cool.
La première est l&#39;utilisation d&#39;un superviseur.
C&#39;est la ptite brique supplémentaire qui permet de relancer en cas de crash.&lt;/p&gt;
&lt;p&gt;Bien entendu, aucun logiciel ne crash sous Linux, mais bon, sait-on jamais.&lt;/p&gt;
&lt;p&gt;Un autre avantage de passer par ça plutôt que par &lt;strong&gt;sway&lt;/strong&gt; c&#39;est de pouvoir lancer des services même quand on ne lance pas &lt;strong&gt;sway&lt;/strong&gt;.
C&#39;est rare mais il arrive parfois que je ne lance pas de session graphique et que je reste en console quand c&#39;est juste pour deux trois trucs.
Bha même dans ce cas, ça fonctionne.
Ça découple complètement de &lt;strong&gt;sway&lt;/strong&gt;.
Et puis si un jour je passe à autre chose que &lt;strong&gt;sway&lt;/strong&gt;, la migration sera d&#39;autant plus aisée.&lt;/p&gt;
&lt;p&gt;Ha et ça veut aussi dire qu&#39;on peut facilement attribuer des limitations de cgroups m&#39;enfin je ne me suis pas penché sur le sujet.&lt;/p&gt;
&lt;h2 id=&#34;prérequis&#34;&gt;Prérequis &lt;a href=&#34;#pr%c3%a9requis&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Le truc chiant c&#39;est d&#39;avoir $XDG_RUNTIME_DIR de défini au préalable&lt;/em&gt; (alors que ce serait le bon endroit pour le faire ^__^).
Bon bha du coup j&#39;ai feinté et j&#39;ai modifié /etc/init.d/user pour inclure le ptit bout qui va bien.&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;/etc/init.d/user&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/sbin/openrc-run
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Copyright (c) 2017 The OpenRC Authors.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# See the Authors file at the top-level directory of this distribution and&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# This file is part of OpenRC. It is subject to the license terms in&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# the LICENSE file found in the top-level directory of this&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# This file may not be copied, modified, propagated, or distributed&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# except according to the terms contained in the LICENSE file.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;supervisor&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;supervise-daemon
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;description&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;starts an openrc session for an user&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;user&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;RC_SVCNAME#*.&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;command&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/usr/libexec/rc/bin/openrc-user&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;command_args&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$user&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;notify&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;fd:3&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# If it&amp;#39;s rapidly failing, usually due to XDG_RUNTIME_DIR being unset,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# we should just quit fast.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;respawn_max&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;respawn_period&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;start_pre&lt;span style=&#34;color:#f92672&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$user&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$RC_SVCNAME&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		eerror &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;RC_SVCNAME&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; cannot be started directly. You must create&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		eerror &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;symbolic links to it for the users you want to start&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;#PERSO POUR CRÉER LE XDG_RUNTIME_DIR&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; test -z &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;XDG_RUNTIME_DIR&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    export XDG_RUNTIME_DIR&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/tmp/$user-runtime-dir
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; ! test -d &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;XDG_RUNTIME_DIR&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        mkdir &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;XDG_RUNTIME_DIR&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        chmod &lt;span style=&#34;color:#ae81ff&#34;&gt;0700&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;XDG_RUNTIME_DIR&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		chown $user &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;XDG_RUNTIME_DIR&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/details&gt;
&lt;p&gt;Comme ça on crée le dossier dédié dans /tmp avec les bons droits et on exporte la variable.
On en profite pour créer un lien pour se faire une session pour l&#39;utilisateur &lt;kbd&gt;ln -s /etc/init.d/user /etc/init.d/user.lord&lt;/kbd&gt; et voilà.&lt;/p&gt;
&lt;p&gt;On a une base fonctionnelle.&lt;/p&gt;
&lt;h2 id=&#34;créer-un-service-utilisateur&#34;&gt;Créer un service utilisateur &lt;a href=&#34;#cr%c3%a9er-un-service-utilisateur&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;On se rend dans &lt;em&gt;/etc/user/init.d/&lt;/em&gt; où l&#39;on va créer notre premier service (pour en créer vraiment que pour votre utilisateur vous pouvez le foutre dans ~/.config/rc/init.d).
C&#39;est possible que l&#39;on y trouve déjà un peu de monde, petit à petit, les paquets adoptent ce système et sont mis à jour pour proposer le service qui va bien :-)&lt;/p&gt;
&lt;p&gt;Pour notre cas on va se faire un service basique pour &lt;strong&gt;mpd&lt;/strong&gt;.&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;/etc/users/init.d/mpd&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/sbin/openrc-run
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;depend&lt;span style=&#34;color:#f92672&#34;&gt;(){&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	need pipewire
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;description&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Music Player Daemon&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;supervisor&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;supervise-daemon
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;command&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/usr/bin/mpd&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;command_args&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;--no-daemon&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/details&gt;
&lt;p&gt;(je mets d&#39;autres exemples en fin d&#39;articles)&lt;/p&gt;
&lt;p&gt;Rien de bien méchant.
On définit une dépendance à &lt;strong&gt;pipewire&lt;/strong&gt; (oui sinon pas de son ce qui est dommage pour mpd).
Il vous faut donc avoir également un service pipewire (fourni par gentoo dans mon cas).
On met un supervisor pour le relancer en cas de problème.&lt;/p&gt;
&lt;p&gt;On pense bien à rendre ce script executable avec &lt;kbd&gt;chmod +x /etc/users/init.d/mpd&lt;/kbd&gt; et on est prêt à le lancer.&lt;/p&gt;
&lt;p&gt;Donc avec votre utilisateur (et pas en root, c&#39;est tout le but de la manœuvre je rapelle), on fait un ptit &lt;kbd&gt;rc-service --user mpd start&lt;/kbd&gt; et hop !&lt;/p&gt;
&lt;p&gt;En gros toutes les commandes &lt;strong&gt;rc-*&lt;/strong&gt; ont désormais le flag &lt;strong&gt;--user&lt;/strong&gt; pour agir en tant qu&#39;utilisateur.&lt;/p&gt;
&lt;h2 id=&#34;démarrer-automatiquement-ces-services&#34;&gt;Démarrer automatiquement ces services &lt;a href=&#34;#d%c3%a9marrer-automatiquement-ces-services&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Bon bha comme pour les services systèmes, on a des &lt;em&gt;runlevels&lt;/em&gt; qui permettent de grouper de nombreux services pour les démarrer/stopper en masse.&lt;/p&gt;
&lt;p&gt;Il y a celui par défaut qui est automatiquement démarré.
Et dans le cas des services utilisateurs c&#39;est pareil, le runlevel default est chargé automatiquement au login.
Il suffit donc d&#39;ajouter les services dans ce runlevel.&lt;/p&gt;
&lt;p&gt;Donc pour ajouter notre service mpd au login notre utilisateur lance un ptit &lt;kbd&gt;rc-update --user add mpd default&lt;/kbd&gt; et c&#39;est tout.&lt;/p&gt;
&lt;p&gt;Pour voir vos runlevels un ptit &lt;kbd&gt;rc-update --user show&lt;/kbd&gt; et c&#39;est tout bon.&lt;/p&gt;
&lt;h2 id=&#34;cas-des-applications-graphiques&#34;&gt;Cas des applications graphiques &lt;a href=&#34;#cas-des-applications-graphiques&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Bon, c&#39;est cool mais bon, au moment de vous logguer, bha vous n&#39;avez pas encore de session wayland disponible (arrêtons de parler de X11 please, on est en 2025).
Du coup, vos applications graphiques vont pas pouvoir être lancées.&lt;/p&gt;
&lt;p&gt;Dans mon cas j&#39;ai donc fait un découpage en 2 runlevels distincts.
Celui par default et un nommé &amp;quot;graphical&amp;quot; dédié à toutes les applis graphiques.
Du coup au login, &lt;strong&gt;pam&lt;/strong&gt; déclenche le lancement du runlevel default.
Et j&#39;ai configuré &lt;strong&gt;sway&lt;/strong&gt; pour qu&#39;il passe au runlevel graphical.
Rapelez-vous qu&#39;on peut &amp;quot;stacker&amp;quot; des runlevels pour signifier que &amp;quot;graphical&amp;quot; va étendre &amp;quot;default&amp;quot; et non le remplacer.&lt;/p&gt;
&lt;h3 id=&#34;prérequis-1&#34;&gt;Prérequis &lt;a href=&#34;#pr%c3%a9requis-1&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Par contre il y a une ptite subtilité, les applis graphiques s&#39;appuient sur la variable d&#39;environnement &lt;em&gt;$WAYLAND_DISPLAY&lt;/em&gt; pour fonctionner.
Par défaut, &lt;strong&gt;OpenRC&lt;/strong&gt; ne va pas transmettre l&#39;environnement.
Il faut lui dire d&#39;autoriser le passage de certaines variables.&lt;/p&gt;
&lt;p&gt;Pour cela il faut éditer la conf utilisateur.&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;~/.config/rc/rc.conf&lt;/summary&gt;
&lt;p&gt;rc_env_allow=&amp;quot;WAYLAND_DISPLAY SWAYSOCK DISPLAY&amp;quot;&lt;/p&gt;
&lt;/details&gt;
&lt;p&gt;La seconde variable est spécifique à &lt;strong&gt;sway&lt;/strong&gt; pour ses ipc.
Ça permet le fonctionnement de &lt;strong&gt;swaymsg&lt;/strong&gt; mais aussi pour les barres notament &lt;strong&gt;yambar&lt;/strong&gt; qui trouve le socket avec cette variable pour vous afficher vos workspaces.&lt;/p&gt;
&lt;p&gt;Avec ça, les applications graphiques devraient plus faire chier.&lt;/p&gt;
&lt;p&gt;Le dernier détail à régler c&#39;est le fait que ça ne fork pas trop.
Les applications graphiques ne sont pas des daemons et donc ne tournent pas en arrière plan.
Il faut donc adapter un peu les fichiers pour que OpenRC râle pas.&lt;/p&gt;
&lt;p&gt;Il faut ajouter l&#39;option pour indiquer ça mais il faut aussi définir un fichier pid pour qu&#39;il puisse s&#39;en démerder et suivre l&#39;état.&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;exemple de lignes à ajouter au service&lt;/summary&gt;
&lt;p&gt;command_background=&amp;quot;true&amp;quot;
pidfile=&amp;quot;$XDG_RUNTIME_DIR/nom_du_service.pid&amp;quot;&lt;/p&gt;
&lt;/details&gt;
&lt;h3 id=&#34;création-et-utilisation-dun-runlevel-dédié&#34;&gt;création et utilisation d&#39;un runlevel dédié &lt;a href=&#34;#cr%c3%a9ation-et-utilisation-dun-runlevel-d%c3%a9di%c3%a9&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Il suffit de créer un dossier du nom de votre runlevel dans &lt;em&gt;~/.config/rc/runlevels&lt;/em&gt;
Ensuite vous le définissez comme runlevel stacké à celui par défaut (comme ça, quand vous passez sur celui-là, vous restez tout de même dans default) avec &lt;kbd&gt;rc-update --user --stack default graphical&lt;/kbd&gt;.&lt;/p&gt;
&lt;p&gt;Ensuite vous attribuez des services à ce runlevel : &lt;kbd&gt;rc-update --user add foot graphical&lt;/kbd&gt; et le tour est joué.&lt;/p&gt;
&lt;p&gt;Le dernier élément à faire c&#39;est de demander à &lt;strong&gt;sway&lt;/strong&gt; de basculer sur ce runlevel quand il démarre :&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;extrait de ~/.config/sway/config&lt;/summary&gt;
&lt;p&gt;exec openrc --user graphical&lt;/p&gt;
&lt;/details&gt;
&lt;p&gt;Et si vous avez bien fait tout votre boulot ça devrait être le seul et unique &lt;strong&gt;exec&lt;/strong&gt; de votre config.&lt;/p&gt;
&lt;h2 id=&#34;profit-&#34;&gt;Profit ! &lt;a href=&#34;#profit-&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Bon bha voilà, on a un système un peu plus propre pour lancer nos services utilisateurs.
Bon par contre c&#39;est vrai que lorsqu&#39;on liste les processus, bha, ça fait un peu de monde en plus et ça titille &lt;a href=&#34;https://lord.re/posts/152-mon-toc-sur-les-processus/&#34;&gt;mon toc sur les processus&lt;/a&gt; mais bon c&#39;est moderne.&lt;/p&gt;
&lt;h2 id=&#34;exemples-de-fichiers-services&#34;&gt;Exemples de fichiers services &lt;a href=&#34;#exemples-de-fichiers-services&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Foot&lt;/strong&gt; est un émulateur de terminal pour wayland.
Il possède un mode serveur pour bouffer moins de ram et démarrer plus vite.
Pas besoin de le surperviser, si ça plante ça va dégager tous les terminaux… le mal sera fait.&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;/etc/user/ini.d/foot&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/sbin/openrc-run
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;description&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Foot terminal server mode&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#supervisor=supervise-daemon&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;command&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/usr/bin/foot&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;command_args&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;--server&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;command_background&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;true&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pidfile&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$XDG_RUNTIME_DIR&lt;span style=&#34;color:#e6db74&#34;&gt;/foot-server.pid&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;start_pre&lt;span style=&#34;color:#f92672&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt; -z &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$WAYLAND_DISPLAY&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		eerror &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$WAYLAND_DISPLAY&lt;span style=&#34;color:#e6db74&#34;&gt; unset, can&amp;#39;t proceed.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/details&gt;
&lt;p&gt;&lt;strong&gt;Easyeffects&lt;/strong&gt; est un logiciel pour appliquer des effets sonores.
Ça peut être de l&#39;équalizer ou des trucs plus poussé que ce soit en entrée ou en sortie.
Le truc c&#39;est que c&#39;est une application en gtk pas trop faite pour être utilisé sans interface graphique mais on peut le tordre pour que ça passe.&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;/etc/user/ini.d/easyeffects&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/sbin/openrc-run
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;depend&lt;span style=&#34;color:#f92672&#34;&gt;(){&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	need pipewire
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;description&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Easy Effects&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;supervisor&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;supervise-daemon
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;command&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/usr/bin/easyeffects&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;command_args&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;--gapplication-service&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;command_background&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;true&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pidfile&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$XDG_RUNTIME_DIR&lt;span style=&#34;color:#e6db74&#34;&gt;/easyeffects.pid&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/details&gt;
&lt;p&gt;Bon &lt;strong&gt;mpd&lt;/strong&gt; c&#39;est mon lecteur audio mais c&#39;est un serveur sans interface graphique donc plus simple.
Le supervisor est pas indispensable puisque même si le daemon est coupé, il est automatiquement lancé par les commandes pour interagir avec lui.&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;/etc/user/ini.d/mpd&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/sbin/openrc-run
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;depend&lt;span style=&#34;color:#f92672&#34;&gt;(){&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	need pipewire
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;description&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Music Player Daemon&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;supervisor&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;supervise-daemon
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;command&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/usr/bin/mpd&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;command_args&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;--no-daemon&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/details&gt;
&lt;p&gt;&lt;strong&gt;tsmpcd&lt;/strong&gt; est mon ptit script pour générer de la playlist en continue pour &lt;strong&gt;mpd&lt;/strong&gt;.
Il fait en sorte que ça ne se tarisse jamais.&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;/etc/user/ini.d/tsmpcd&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/sbin/openrc-run
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;description&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Tiny Shuffler Music Player Client Daemon&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;supervisor&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;supervise-daemon
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;command&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/usr/local/bin/tsmpcdaemon&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;depend&lt;span style=&#34;color:#f92672&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	need mpd
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/details&gt;
&lt;p&gt;&lt;strong&gt;yambar&lt;/strong&gt; est la barre que j&#39;utilise sur &lt;strong&gt;sway&lt;/strong&gt;.
Elle plante parfois en sortie de veille et du coup là le supervisor va relancer le bousin tout seul comme un grand.&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;/etc/user/ini.d/yambar&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/sbin/openrc-run
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;description&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Yambar&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;supervisor&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;supervise-daemon
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;command&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/usr/bin/yambar&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;command_background&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;true&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pidfile&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$XDG_RUNTIME_DIR&lt;span style=&#34;color:#e6db74&#34;&gt;/yambar.pid&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;start_pre&lt;span style=&#34;color:#f92672&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt; -z &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$WAYLAND_DISPLAY&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		eerror &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$WAYLAND_DISPLAY&lt;span style=&#34;color:#e6db74&#34;&gt; unset, can&amp;#39;t proceed.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/details&gt;

      
      
      </description>
    <category>linux"</category><category>adminsys"</category><category>gentoo"</category>
    
    </item>
    
    <item>
      <title>Bordel ambiant et peur des USA 2025</title>
      <link>https://lord.re/posts/256-peur-des-usa-2025/</link>
      <pubDate>Thu, 06 Feb 2025 09:52:21 +0100</pubDate>
      
      <guid>https://lord.re/posts/256-peur-des-usa-2025/</guid>
      <description>&lt;p&gt;Nous ne sommes que deux semaines après la seconde investiture de Donald Trump à la présidence des USA mais wow.
Je dois vous avouer que je trouve ça de plus en plus flipant et sans exagération ça commence à être vraiment inquiétant.&lt;/p&gt;
&lt;p&gt;Je vous ai déjà raconté que j&#39;étais pas trop versé politique.
Notamment parceque je trouve que c&#39;est un spectacle de pourris égoïstes bien loin de ce que devrait vraiment être la politique.
Mais un élément qui a aussi joué dans mon désintéret provient également des gens qui gravitent autour et qui commentent.
J&#39;ai toujours trouvé qu&#39;il y avait un sens aigu du drama à toujours suramplifier le moindre pet de mouche qui de fait est transformé en catastrophe nucléaire.
Mais je crois que ça y est, je commence à penser pareil.&lt;/p&gt;
&lt;h2 id=&#34;les-dingueries&#34;&gt;Les dingueries &lt;a href=&#34;#les-dingueries&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;On est que 2 semaines après son arrivée et chaque jour et je n&#39;exagère pas, vraiment tous les jours il y a une nouvelle alarmante en provenance de chez eux.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La grâce présidentielle accordée aux assaillants du Capitole 4 ans auparavant.&lt;/li&gt;
&lt;li&gt;Le limogeage des procureurs et enquêteurs de ce fameux assaut.&lt;/li&gt;
&lt;li&gt;Contrôle des publications scientifiques et interdictions de certains sujets.&lt;/li&gt;
&lt;li&gt;Expulsion d&#39;immigrés vers Guantanamo (prison célèbre pour les tortures qui y sont pratiquées)&lt;/li&gt;
&lt;li&gt;Ça pleurniche pour renommer le Golfe du Mexique&lt;/li&gt;
&lt;li&gt;Musk fait son coming out nazi lors de la cérémonie ultra médiatisée d&#39;investiture&lt;/li&gt;
&lt;li&gt;Il part à l&#39;assaut contre les femmes ayant avorté&lt;/li&gt;
&lt;li&gt;Suppression des campagnes visant à promouvoir la diversité&lt;/li&gt;
&lt;li&gt;Arrêt d&#39;USAID (programme humanitaire)&lt;/li&gt;
&lt;li&gt;…&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;trump-sur-roulette&#34;&gt;Trump sur roulette &lt;a href=&#34;#trump-sur-roulette&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Mais tout ça c&#39;est un travail d&#39;équipe.
D&#39;un côté on a Trump qui fait diversion en menaçant d&#39;envahir un pays différent tous les trois jours.
Ça parle d&#39;annexer le Canada, prendre le contrôle du canal de Panama, le Groënland, la bande de Gaza qu&#39;il faudrait transformer en centre touristique (bha ouai tiens ! Ça vous dit pas d&#39;aller visiter les terres du dernier génocide en date ?)…&lt;/p&gt;
&lt;p&gt;Le gars sort tellement de conneries qu&#39;on sait tous que c&#39;est très probablement du vent mais il y a toujours une peur latente.
Quand est-ce qu&#39;il sera sérieux après tout ?
Le gars est quand même à la tête de la première puissance mondiale économique et militaire.
Il profère des menaces constamment.&lt;/p&gt;
&lt;p&gt;Est-ce que c&#39;est 100% du bluff pour de la comm ou bien c&#39;est une vraie stratégie de tâtage de terrain ?
On balance des trucs contre le mur.
En fonction des réactions des autres on voit ce qui est toléré et peut être fait.
Et si c&#39;est le cas, il tente de niquer le monde à l&#39;usure !
Combien de fois on peut s&#39;indigner ?
Cent fois ?
Et bha bon courage pour la 101ème fois…&lt;/p&gt;
&lt;h2 id=&#34;musk-le-nazi-milliardaire-qui-sinsinue-partout&#34;&gt;Musk le nazi milliardaire qui s&#39;insinue partout &lt;a href=&#34;#musk-le-nazi-milliardaire-qui-sinsinue-partout&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Et à côté de ça, son nouvel acolyte &lt;em&gt;Elon Musk&lt;/em&gt; (qui n&#39;a pas été élu et n&#39;a pas vraiment de légitimité, je le rapelle) est hors de tout contrôle.
Il est en train de remodeler tout un tas d&#39;institutions à sa sauce (soumission totale ou ça dégage !).&lt;/p&gt;
&lt;p&gt;Ça commence par une blagounette en appelant &lt;del&gt;sa milice&lt;/del&gt; son espèce de ministère le &lt;strong&gt;DOGE&lt;/strong&gt;.
Haha c&#39;est drôle, regardez comme c&#39;est un rigolo, ho qu&#39;il est fun regardez le génie est bourré d&#39;humour !
Mais surtout le gars arrive dans une agence fédérale, y place des pions qui n&#39;y connaissent rien mais qui sont tout fidèles à leur patron.
Ils arrivent, ils &amp;quot;optimisent&amp;quot; ; ça veut dire virer ceux qui pourraient s&#39;opposer.
Il a fait ça au Trésor (donc accès à tout un tas de données concernant le pognon fédéral), il vient de faire ça au NOAA (le truc de la météo (oui même ce qui peut sembler assez anodin à première vue se fait ratiboiser)).
Demain il va probablement faire pareil dans une autre agence.&lt;/p&gt;
&lt;p&gt;Et puis vas-y que je force toutes les institutions officielles à communiquer via sa plateforme X.
Comme ça, il se place en monopole de la communication institutionnelle avec bien entendu les pleins pouvoirs sur ce qui y est publié.
Bha ouai, c&#39;est sa plateforme, il a le droit de vie ou de mort total dessus.
Quand un journaliste commence à donner les noms de ses pions, il déclare que c&#39;est un crime (visiblement donner les noms de fonctionnaire est un crime selon lui) et supprime le tweet.&lt;/p&gt;
&lt;p&gt;J&#39;aurai envie de dire qu&#39;il se comporte comme un gamin mais ça serait pas juste du tout.
Le gars est détestable à souhait (mais a-t-on vraiment besoin de débattre de l&#39;amabilité d&#39;un nazi ?) et ne supporte pas être pris en tort.
Il va insinuer que ses contradicteurs sont des pédophiles (sans aucune preuve), il s&#39;est battu en justice pour être reconnu comme co-fondateur de l&#39;entreprise Tesla alors qu&#39;il n&#39;est arrivé qu&#39;un an après sa création pour filer du pognon.
Pour vous dire à quel point le gars est ridicule, c&#39;est qu&#39;alors qu&#39;il participe activement à la campagne de Trump, qu&#39;il &amp;quot;gère&amp;quot; Tesla, qu&#39;il &amp;quot;gère&amp;quot; SpaceX, qu&#39;il &amp;quot;gère&amp;quot; Neuralink, qu&#39;il &lt;del&gt;&amp;quot;gère&amp;quot;&lt;/del&gt; OpenAI (ha non il s&#39;est barré de là), il annonce qu&#39;il est dans le TOP chsais pas combien dans des jeux vidéo.
Le genre de performance qui demande un investissement en temps énormissime.
Bon, bha les gens ont vite vu en stream qu&#39;il trichait et qu&#39;en fait quelqu&#39;un jouait à sa place.
Mais il a eu besoin de monter toute cette histoire.&lt;/p&gt;
&lt;p&gt;Le gars est détesté de ses gamins et a eu de très nombreux mariages.
Bref, même dans l&#39;intimité il semble pas bien stable.&lt;/p&gt;
&lt;p&gt;Chez SpaceX, il y a des personnes en charge de l&#39;éloigner afin que les autres puissent bosser.&lt;/p&gt;
&lt;p&gt;Le gars a enfumé le monde avec son histoire d&#39;hyperloop juste dans le but d&#39;empêcher des investissements dans des transports en commun afin de vendre plus de voitures.&lt;/p&gt;
&lt;p&gt;Il n&#39;y a rien de bon dans ce nazi.&lt;/p&gt;
&lt;h2 id=&#34;le-net-est-vicié&#34;&gt;Le net est vicié &lt;a href=&#34;#le-net-est-vici%c3%a9&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Ça se chie dessus sévère aux USA et à juste titre.
Toutes les grandes boîtes de la tech ont versé leur pot-de-vin.&lt;/p&gt;
&lt;p&gt;Signe de soumission ou acte de bon cœur ?
Dur de juger mais là aussi c&#39;est peu rassurant.
On peut se dire qu&#39;ils vont collaborer à 100% à toutes les demandes de Trump.&lt;/p&gt;
&lt;p&gt;Bon, ça fait des années qu&#39;on vous tanne avec la vie privée.
Oui on a rien à cacher, mais tout ce que l&#39;on a pas caché a été archivé, traité, analysé.
Le gouvernement des USA a décidé d&#39;interdire l&#39;avortement.&lt;/p&gt;
&lt;p&gt;L&#39;Internet américain est devenu du jour au lendemain sous la coupe de leur nouveau dictateur.
Le gars du jour au lendemain décrète qu&#39;un truc devient illégal et hop.
Il peut direct aller toquer chez Zuckerberg (qui s&#39;est soumis totalement) ou chez Musk (le poto au bras long (mais vers le haut) pour demander des preuves archivées sur les réseaux sociaux.&lt;/p&gt;
&lt;p&gt;Je ne vous parle même pas de Google qui a la main sur des milliards de téléphones, de navigateurs web, de recherches, les vidéos…
Amazon, Google et Microsoft hébergent (à la louche, hein, j&#39;ai pas de chiffres) au moins les 3/4 de l&#39;Internet mondial avec leurs clouds.
Et on peut aussi loucher du côté de Cloudflare et Akamai qui font du CDN pour tout un tas de sites (même européens et autres)…&lt;/p&gt;
&lt;p&gt;Ha et niveau communications, les hotmails, gmail sont bien entendu à portée de mains.
Pas trop envie d&#39;en parler mais bon faut pas non plus croire que le chiffrement de Whatsapp vous protège de quoi que ce soit, des devs de chez Meta ont annoncés qu&#39;ils avaient accès à ce qui se disait.&lt;/p&gt;
&lt;p&gt;Bref, sur Internet : impossible d&#39;échapper aux USA.&lt;/p&gt;
&lt;h2 id=&#34;quelle-issue-à-tout-ce-merdier-&#34;&gt;Quelle issue à tout ce merdier ? &lt;a href=&#34;#quelle-issue-%c3%a0-tout-ce-merdier-&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;J&#39;en sais rien !&lt;/p&gt;
&lt;p&gt;Mais bon, ça commence à partir en guerre économique mondiale.
J&#39;ai vraiment peur que ça ne dérape en Guerre Mondiale.&lt;/p&gt;
&lt;p&gt;J&#39;ai l&#39;impression que la Russie et la Chine se régalent de voir les USA aux mains d&#39;un taré instable comme Trump.
Les USA ne peuvent que s&#39;affaiblir en se mettant à dos des alliés.
Leur économie risque de flancher laissant plus de place à la Chine.&lt;/p&gt;
&lt;p&gt;Ça ne m&#39;étonnerait vraiment pas que ça parte en guerre civile chez eux.
Les élections n&#39;ont-elles pas été truquées ?
Sa stratégie de diviser pour mieux régner va-t-elle fonctionner jusqu&#39;au bout ?
Se mettre à dos, différents groupes sociaux, au bout d&#39;un moment j&#39;ai espoir que ça ne fonctionne plus.
Ça pourrait faire s&#39;unir des opprimés se rebellant…&lt;/p&gt;
&lt;p&gt;Mine de rien, le droit de port d&#39;arme chez eux se base sur le fait que ça permet au peuple d&#39;être armé pour combattre un gouvernement despotique…
Est‑ce que ce ne serait pas un peu le meilleur moment d&#39;utiliser légitimement ce droit ?
Je dois avouer que je suis très étonné que dans un pays avec autant d&#39;armes, il n&#39;y ait pas plus de tentative d&#39;assassinat sur sa tronche (et au muské aussi).&lt;/p&gt;
&lt;p&gt;Je ne vois vraiment pas de sortie en douceur de toute cette crise.
Je ne le vois pas rendre le pouvoir dans quatre ans.
Et même, en quatre ans qu&#39;est-ce qui peut se passer ?&lt;/p&gt;
&lt;h2 id=&#34;que-peut-on-faire-&#34;&gt;Que peut-on faire ? &lt;a href=&#34;#que-peut-on-faire-&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Je vois ce genre de réflexion commencer à émerger depuis une semaine.
En tant que français un peu loin de tout ça, je ne sais pas si on peut faire quoi que ce soit.&lt;/p&gt;
&lt;p&gt;Déjà politiquement, on peut prendre exemple et ne plus voter extrème droite (ha si seulement).
Mais bon, quand on voit que notre classe politique n&#39;écoute absolument pas son peuple, je pense pas qu&#39;on puisse influencer Macron de faire quoi que ce soit.
Vous pensez vraiment qu&#39;il va s&#39;indigner de l&#39;idée de Trump de transformer la Palestine en complexes touristiques alors qu&#39;il se refuse à reconnaitre le génocide ?
On ne peut pas attendre quoi que ce soit des politiciens en place.&lt;/p&gt;
&lt;p&gt;Du coup, que peut-on faire à notre échelle ?&lt;/p&gt;
&lt;p&gt;Bha j&#39;en sais trop rien.
J&#39;ai vu passer une initiative pour aider archive.org à garder &lt;a href=&#34;https://archive.org/details/20250128-cdc-datasets&#34;&gt;le contenu supprimé du CDC&lt;/a&gt;.
C&#39;est pas mal mais anecdotique.
D&#39;ailleurs courage à archive.org, j&#39;ai comme l&#39;impression que vous allez devenir une cible.&lt;/p&gt;
&lt;h2 id=&#34;--&#34;&gt;.-}{-. &lt;a href=&#34;#--&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;C&#39;est le bordel (ça se voit, ce blogpost part dans tous les sens avec tout juste un bout de trame) et ça me rassure vraiment pas sur l&#39;avenir.
Heureusement que du point de vue de l&#39;écologie ça va mieux !
Ho wait.&lt;/p&gt;

      
      
      </description>
    <category>politique"</category><category>2025"</category>
    
    </item>
    
    <item>
      <title>Ergol : Un an plus tard</title>
      <link>https://lord.re/posts/255-ergol-au-an-plus-tard/</link>
      <pubDate>Sun, 05 Jan 2025 20:28:35 +0100</pubDate>
      
      <guid>https://lord.re/posts/255-ergol-au-an-plus-tard/</guid>
      <description>&lt;p&gt;Et voilà, on est en Janvier 2025 et ça fait donc maintenant un an que j&#39;utilise &lt;strong&gt;Ergo-l&lt;/strong&gt; à temps plein.
Je vous en ai parlé &lt;a href=&#34;https://lord.re/fast-posts/75-ergol/&#34;&gt;ici&lt;/a&gt; il y a (bha oui) un an maintenant mais un ptit rappel s&#39;impose.&lt;/p&gt;
&lt;p&gt;Il s&#39;agit d&#39;&lt;strong&gt;une disposition clavier ergonomique&lt;/strong&gt;.
Un peu comme &lt;strong&gt;bépo&lt;/strong&gt; en son temps (près de vingts ans mine de rien), le but est donc de dégager cette inepties qu&#39;est &lt;strong&gt;azerty&lt;/strong&gt; pour un truc bien plus réflêchit et travaillé.
&lt;em&gt;Le but premier est donc l&#39;ergonomie maximale pour le français mais sans non plus pénaliser l&#39;ergonomie lorsqu&#39;on écrit en anglais ou lorsqu&#39;on programme&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Mais depuis bépo il y a eu un peu de réflexion supplémentaire.
La philosophie est la même : &lt;em&gt;se baser sur un important corpus dans notre langue et optimiser en se basant sur ça&lt;/em&gt;.
Mais ici, l&#39;optimisation vise d&#39;autres objectifs.
L&#39;idée principale est de minimiser au maximum les mouvements.
&lt;strong&gt;Tout est disponible à maximum une touche de distance de la position de repos.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Forcément pour atteindre cet objectif il y a des concessions à faire.
&lt;em&gt;Il faut donc diminuer le nombre de touches à utiliser&lt;/em&gt;.
On dit du coup aurevoir à l&#39;accès direct aux accents.
Ce point fort de bépo est ici jeté.
Pour les faire il faut donc passer par &lt;em&gt;une touche morte à tout faire&lt;/em&gt;.
Cette touche magique va vous permettre de faire tout un tas de caractères spéciaux.
Oui, &lt;em&gt;pour faire un accent il faut appuyer sur deux touches successives&lt;/em&gt;.
Oui c&#39;est plus long, oui ça nécessite plus d&#39;effort.
Mais bon, on va pas se mentir, il n&#39;y a pas tant d&#39;accents que ça en français.&lt;/p&gt;
&lt;p&gt;Et puis vaut mieux faire plus souvent un mini effort que de faire un mouvement complexe de tout le bras pour atteindre une lettre rare.
&lt;em&gt;Ça ne ralentit pas tant que ça la frappe&lt;/em&gt;.
Il y a un an j&#39;étais peu rassuré par ce changement.
Je comprenais les bienfaits mais l&#39;apprentissage me faisait un poil peur.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Les créateurs de cette disposition sont d&#39;ailleurs adeptes des mini-claviers.&lt;/em&gt;
Quand je dis mini, je parle pas des &lt;abbr title=&#34;Ten Key Less : les claviers sans pavé numérique&#34;&gt;TKL&lt;/abbr&gt;.
Non je pense plutôt au clavier de moins de 50 touches.
Je n&#39;ai personellement pas passé ce cap.
J&#39;avoue avoir du mal à comprendre l&#39;attrait (si ce n&#39;est esthétique) pour ces micro-claviers.
Peut-être qu&#39;un jour je verais la lumière mais en attendant l&#39;ergodox avec certaines touches inutiles me convient très bien.&lt;/p&gt;
&lt;h2 id=&#34;une-année-dapprentissage&#34;&gt;Une année d&#39;apprentissage &lt;a href=&#34;#une-ann%c3%a9e-dapprentissage&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Bon, bha voilà, &lt;em&gt;je fête aujourd&#39;hui mon tout premier anniversaire&lt;/em&gt; et donc c&#39;est le moment de faire le bilan.
Premier point à aborder : mes performances !&lt;/p&gt;
&lt;p&gt;À peu près tous les mois j&#39;ai fait des ptites sessions de &lt;a href=&#34;https://monkeytype.com/&#34;&gt;MonkeyType&lt;/a&gt; afin de voir ma vitesse et ma précision.
Et là je viens de faire une salve de cinq tests.
Ma &lt;strong&gt;précision est de 95%&lt;/strong&gt; et ma &lt;strong&gt;vitesse de 70 mots par minute&lt;/strong&gt;.
J&#39;ai donc un peu perdu en vitesse puisque j&#39;atteignais les 80 mots/minute en bépo (même si je me soupçonne d&#39;aller plus vite lorsque je fais de l&#39;irc notamment).&lt;/p&gt;
&lt;p&gt;Mais je ne vous cache pas que pour atteindre ces résultats il m&#39;a quand même fallu un an.
Je ne progresse plus trop, j&#39;ai atteind un plafond depuis quelques mois.
&lt;em&gt;Le plus dur sont les trois premiers mois après ça progresse tranquilou sans y faire attention.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;J&#39;y vais à la bourrin : &lt;em&gt;0 exercice et migration à 100% vers ergol sans retour arrière du jour au lendemain&lt;/em&gt;.
Certains préferrent faire des exercices pendant un moment avant de passer partiellement à ergol puis seulement encore plus tard vraiment à temps plein.
&lt;em&gt;Il n&#39;y a pas de formule miracle&lt;/em&gt;.
Chacun le fait à son rythme.
Je n&#39;ai personnellement pas la patience de me taper des exercices.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Ce qui compte avant tout c&#39;est la précision&lt;/em&gt;.
Et concernant la vitesse, j&#39;ai l&#39;impression qu&#39;à partir de 40 mots par minute, il n&#39;y a plus de handicap.
En dessous c&#39;est lent et j&#39;ai tendance à perdre le fil de ce que j&#39;écris en réflêchissant au placement des touches et des doigts.
Mais au-dessus c&#39;est du bonus dispensable.&lt;/p&gt;
&lt;p&gt;J&#39;ai d&#39;ailleurs l&#39;impression d&#39;avoir pensé un peu différemment pendant les trois quatre premiers mois.
Le fait d&#39;écrire bien plus lentement, j&#39;avais ptet plus de temps de réflexion pendant l&#39;écriture en étant moins instinctif.
J&#39;ai pas non plus l&#39;impression d&#39;avoir mieux écrit, mais juste avec des tournures un peu différentes et moins usuelles.
Alors que j&#39;écris comme je pare habituellement, là j&#39;avais l&#39;impression de m&#39;éloigner de ce style &amp;quot;naturel&amp;quot;.
Mais bon ça ne me le fait plus maintenant.
&lt;em&gt;Je suis redevenu une simple bête appuyant mécaniquement sur ses ptites touches.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;comment-ergo-l-a-changé&#34;&gt;Comment ergo-l a changé &lt;a href=&#34;#comment-ergo-l-a-chang%c3%a9&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Un an ça passe vite et pourtant le projet a beaucoup grandit.&lt;/em&gt;
Il y a maintenant &lt;a href=&#34;https://ergol.org/&#34;&gt;un joli site&lt;/a&gt; et surtout le projet s&#39;est stabilisé avec la sortie de la version 1.0.
Plus de ptites modifs, plus d&#39;adaptations à faire (pour le moment, sait-on jamais).&lt;/p&gt;
&lt;p&gt;Et surtout avec cette version 1.0, &lt;em&gt;le projet est considéré comme stable et donc un travail a été fait pour le rendre disponible plus facilement.&lt;/em&gt;
Plus besoin d&#39;aller s&#39;installer un logiciel pour se compiler un fichier à faire bouffer à son linux.
&lt;strong&gt;xkb&lt;/strong&gt; qui gère les claviers sous linux connait maintenant &lt;strong&gt;ergol&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Du coup, plus de petits bugs avec sway et xwayland, plus de manips à faire.
Juste choisir la disposition clavier et hop !&lt;/p&gt;
&lt;p&gt;Il me semble même qu&#39;ils ont un driver pour windows pour les quelques malheureux sur cet OS du capitalisme.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;La communauté a grandi&lt;/em&gt;.
Bon de ma lorgnette j&#39;en sais trop rien, si ce n&#39;est que sur le Fediverse ça en parle par moment.
D&#39;autres bépoètes ont migrés eux aussi (mais pas tous).
Leur discord (ouai c&#39;est triste m&#39;enfin) est apparemment bien rempli (mais discord ne m&#39;aime pas plus que je l&#39;aime et je ne parviens plus à m&#39;y connecter) désormais.&lt;/p&gt;
&lt;h2 id=&#34;ressenti&#34;&gt;Ressenti &lt;a href=&#34;#ressenti&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Et bha je suis très content de cette migration.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;J&#39;adore l&#39;accès direct aux chiffres&lt;/strong&gt; !
Vraiment c&#39;est ce qui me manque le plus ailleurs.
D&#39;ailleurs sur l&#39;azerty du boulot (j&#39;ai pas osé foutre ergol) c&#39;est ce qui me fait le plus défaut.&lt;/p&gt;
&lt;p&gt;Le fait de &lt;strong&gt;bouger beaucoup moins les mains est tellement plus agréable&lt;/strong&gt;.
Avant je détestais les reposes-poignets à cause de mouvements nécessaires.
Maintenant j&#39;adore !
Vu que les bras ne bougent plus du tout, on peut se poser une bonne fois pour toutes et c&#39;est parti pour la rédaction d&#39;un blogpost.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ne plus avoir les accents en accès direct sur la main gauche est finalement super pratique pour les jeux&lt;/strong&gt; !
Encore en 2025, de nombreux jeux ne comprennent pas les accents.
Remplacer WSAD (qwerty) ou ZSQD (azerty) par ÉUAI (bépo) est un putain de bordel dans plein de jeux.
&lt;strong&gt;Doom Eternal&lt;/strong&gt; ça fonctionne mais n&#39;affiche pas le É et surtout ne peut pas le conserver, donc à chaque lancement du jeu faut le reconfigurer.
Certains jeux ne veulent tout simplement pas l&#39;utiliser, il faut donc se décaler sur le côté donc en PIUE (bépo) mais ça donne des touches inutilisables à côté.
Et puis ça décale la main ce qui trouble vingt ans de mémoire musculaire.
Bref, CSAE (ergol) ça pose plus du tout de problème.
Les jeux mal-branlés s&#39;en acomodent.
Cet argument est jamais mentionné par le site et les retours d&#39;expérience (et ouai c&#39;est du contenu inédit ici !!) et pourtant c&#39;est un point fort face à bépo.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;J&#39;ai profité de mes tribulations de disposition de clavier pour bouger l&#39;agencement physique des touches.&lt;/em&gt;
J&#39;utilise un ergodox et sur la main gauche j&#39;ai baissé toute la colonne du petit doigts d&#39;une ligne vers le bas.
Parceque oui, je n&#39;ai pas les doigts de la même longueur.
Le clavier n&#39;est pas 100% ortholinéaire d&#39;ailleurs mais bien en &amp;quot;patte d&#39;ours&amp;quot;.
C&#39;est-à-dire que les colonnes sont verticalement décalées les unes des autres pour s&#39;adapter à la longueur variable de nos doigts.
Mais malgré cela, mes auriculaires font presque une phalange de moins que les autres doigts et donc le décalage physique du clavier ne suffisait pas.
Les touches en dessous ne servant pas, c&#39;était l&#39;occasion idéale.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Je n&#39;ai au final aucun reproche à faire concernant la disposition.&lt;/strong&gt;
Même la phase d&#39;apprentissage n&#39;était pas si difficile et l&#39;occasion de remettre en question quelques choix.&lt;/p&gt;
&lt;h2 id=&#34;recommandation&#34;&gt;Recommandation &lt;a href=&#34;#recommandation&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Est-ce que ça vaut le coup de passer à Ergol ?
&lt;strong&gt;Oui, je recommande à tout le monde !&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Par contre, oui &lt;strong&gt;faut être prêt à briser la mémoire musculaire&lt;/strong&gt;.
Si vous êtes déjà en bépo le gain de confort sera bien moins important que si vous êtes en azerty mais franchement, mais &lt;em&gt;vous avez déjà réappris à écrire une fois, vous pouvez très probablement le refaire&lt;/em&gt; :-)
Non je ne suis pas maso mais franchement tous les quinze ans ça se fait.&lt;/p&gt;
&lt;p&gt;Franchement, si comme moi, vous passez des dizaines d&#39;heures par &lt;del&gt;mois&lt;/del&gt; &lt;del&gt;semaine&lt;/del&gt; jour sur l&#39;ordi, &lt;em&gt;le retour sur investissement est à mon sens non négligeable&lt;/em&gt;.
Et &lt;em&gt;pareil pour un investissement dans un bon clavier ergonomique&lt;/em&gt;.
Oui ça coûte plus de cent balles (ça monte vite dans les 500), mais après c&#39;est presque increvable et ça dure très longtemps (sauf si vous mordez à l&#39;hameçon et que vous voulez plein de claviers).
Si vous êtes prêt à passer le cap : &lt;strong&gt;un clavier scindé !&lt;/strong&gt;
C&#39;est le truc le plus important à mon sens.
Pouvoir écarter les bras pour être bien mieux installé change tout.
En plus entre les deux moitiés on peut se foutre un chat/une gourde/un bol de céréal/des fidgets toys (pas tout en même temps, oui)…&lt;/p&gt;
&lt;p&gt;Très content de cet effort de l&#39;an dernier.
Plus qu&#39;à patienter quinze ans pour une future dispo plus optimisée encore.&lt;/p&gt;

      
      
      </description>
    <category>ergol"</category><category>clavier"</category>
    
    </item>
    
    <item>
      <title>Prises électriques connectées mais pour les geeks</title>
      <link>https://lord.re/posts/254-shelly-plugs-a-la-maison/</link>
      <pubDate>Tue, 10 Dec 2024 13:05:22 +0100</pubDate>
      
      <guid>https://lord.re/posts/254-shelly-plugs-a-la-maison/</guid>
      <description>&lt;p&gt;J&#39;aime beaucoup les graphs.
&lt;strong&gt;Grafana&lt;/strong&gt; est un joujou que j&#39;affectionne particulièrement.&lt;/p&gt;
&lt;p&gt;Je graph tout un tas de trucs et notamment ma conso d&#39;eau, de gaz et d&#39;électricité en relevant manuellement les compteurs.
Je graph aussi mes kilomètres à vélo, la température et l&#39;humidité bref, ça m&#39;amuse vraiment bien.&lt;/p&gt;
&lt;p&gt;Mais un pote me tease depuis des années avec son installation domotique.
Il fait mumuse avec des capteurs des scénaris et tout le toutim.
Globalement la domotique me fait pas vraiment rêver, je n&#39;en vois pas trop l&#39;intéret et j&#39;ai pas envie de dépendre de l&#39;ordi pour ouvrir un volet, encore moins de devoir dégainer un smartphone pour interagir avec la lumière.
Et ne partons pas non plus dans le délire d&#39;avoir un compte chez un fabricant ou ne serait-ce qu&#39;une applie dédiée.&lt;/p&gt;
&lt;p&gt;Je suis trop parano et pas suffisamment scotché à mon smartphone pour ce genre de conneries.
Mais par contre avoir des prises électriques connectées qui permettent de grapher en live la consommation électrique, &lt;strong&gt;LÀ&lt;/strong&gt; ça me titille vraiment plus.
Et quand ce pote me dit qu&#39;il existe une marque de produits connectés qui est compatible avec mes exigences… bha j&#39;ai eu du mal à résister !&lt;/p&gt;
&lt;p&gt;J&#39;ai acheté un pack de &lt;strong&gt;Shelly Plug S&lt;/strong&gt; qui sont des prises connectées avec du wifi et du bluetooth.
Elles tournent grâce à des ptits ESP et donc peuvent fonctionner sans être reliées au net, ont toutes leurs fonctionnalités disponibles sans appli, il y a une grande doc pour les utiliser via leur API.
Bref, c&#39;est fait pour un bricolo de mon genre !&lt;/p&gt;
&lt;h2 id=&#34;découverte&#34;&gt;Découverte &lt;a href=&#34;#d%c3%a9couverte&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Bon alors, ni une ni deux, je déballe, je branche.&lt;/p&gt;
&lt;p&gt;Là un réseau wifi apparait.
On s&#39;y connecte et ensuite on se rend sur l&#39;interface web à l&#39;adresse http://192.168.33.1 et là on arrive sur un truc plutôt sobre, propre et surtout très réactif.
J&#39;avais jamais utilisé d&#39;appareil à base d&#39;ESP mais je pensais vraiment que ces trucs étaient vraiment si peu puissants que rien que l&#39;interface web serait lente.
Que nenni !
Les pages s&#39;ouvrent de suite en sans bug !&lt;/p&gt;
&lt;p&gt;Du coup, dans les paramètres, je lui file mon wifi, une adresse statique et ça me demande un reboot.
Hop, j&#39;accepte, je me fous sur la nouvelle adresse et c&#39;est parti pour explorer un peu tout ça.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Access point : On peut faire en sorte que réactiver son AP (je vois pas l&#39;intéret mais bon)&lt;/li&gt;
&lt;li&gt;Wifi : Bon bha la conf réseau, on peut lui en donner 2 d&#39;ailleurs et ça se fout sur le plus fort.&lt;/li&gt;
&lt;li&gt;Bluetooth : Ouai on peut y accéder en bluetooth notamment pour une app je crois. On peut aussi s&#39;en servir en tant que gateway pour les autres appareils bluetooth (ils font des capteurs, des boutons …), pas con du tout.&lt;/li&gt;
&lt;li&gt;Cloud : c&#39;est du opt-in. J&#39;ai pas testé et ne le ferais pas mais c&#39;est possible de le faire.&lt;/li&gt;
&lt;li&gt;MQTT : Pour se raccorder à un serveur MQTT (j&#39;en ai pas même si j&#39;avoue que ça m&#39;intrigue).&lt;/li&gt;
&lt;li&gt;RPC over UDP : je me suis pas penché dessus mais c&#39;est visiblement pour rendre l&#39;api dispo comme ça (ça consomme moins ?)&lt;/li&gt;
&lt;li&gt;Outbound websocket : la même mais pour du websocket.&lt;/li&gt;
&lt;li&gt;Range Extender : Chsais po mais vu le nom j&#39;imagine que c&#39;est pour augmenter la couverture wifi ( ou bluetooth ?).&lt;/li&gt;
&lt;li&gt;Device Name : Histoire de lui donner un charmant ptit nom.&lt;/li&gt;
&lt;li&gt;Reboot&lt;/li&gt;
&lt;li&gt;Factory Reset&lt;/li&gt;
&lt;li&gt;Location and time : On y fout le fuseau horaire et la géoloc (ça sert pour déterminer les heures de levé/couché de soleil)&lt;/li&gt;
&lt;li&gt;Authentication&lt;/li&gt;
&lt;li&gt;Firmware : Pour les mises à jour. Ça peut aller direct piocher chez le fabricant ou via uplpad de fichier voir s&#39;auto-update.&lt;/li&gt;
&lt;li&gt;Debug : un menu pour sortir des logs&lt;/li&gt;
&lt;li&gt;TLS configuration : un menu pour coller les certifs TLS (à générer de son côté) pour avoir de l&#39;https (je m&#39;y attendais pas !)&lt;/li&gt;
&lt;li&gt;Eco mode : un menu permettant d&#39;activer ce mode qui downclock le bousin pour consommer moins.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;C&#39;est plutôt pas mal.
Mine de rien, c&#39;est juste une prise électrique, c&#39;est à peine plus gros qu&#39;une prise classique.&lt;/p&gt;
&lt;p&gt;Bon, premier truc à faire, changer le nom, foutre l&#39;heure et la localisation puis mettre à jour à la dernière version (ça se fait en plusieurs fois).
Une fois fait, je fous une passerelle bidon au niveau réseau histoire que la prise n&#39;ait plus accès à Internet et surtout qu&#39;elle ne soit pas joignable depuis Internet.
À terme d&#39;ailleurs j&#39;isolerai ce subnet histoire d&#39;être sûr.&lt;/p&gt;
&lt;h2 id=&#34;programmation-de-fonctionnement&#34;&gt;Programmation de fonctionnement &lt;a href=&#34;#programmation-de-fonctionnement&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Ces prises ont plusieurs fonctionnalités.
La première c&#39;est de les controler manuellement.
Pourquoi pas, la seconde c&#39;est de les automatiser à base d&#39;un simili-chron.
Donc définir une heure d&#39;allumage, une d&#39;extinction en fonction du jour, de la date…&lt;/p&gt;
&lt;p&gt;Un poil plus exotique, on peut aussi lui définir ça en fonction de l&#39;heure de couché/levé du soleil grâce à l&#39;information de localisation.
J&#39;ai notamment des guirlandes qui me servent d&#39;éclairage dans le salon (ça consomme peu, ça éclaire de partout, pour du tamisé c&#39;est parfait et bonus si vous êtes myopes : en enlevant les lunettes on est en plein ciel étoilé !) qui ont chacune leur ptit programmateur intégré qui permet de se démarrer pour 6h, s&#39;éteindre 18h et recommencer.
C&#39;est bien gentil mais 6h en hiver c&#39;est pas ouf.
En plus la nuit ne tombant pas au même moment c&#39;est chiant à re-régler continuellement.
Ha et en plus, ça garde pas très bien l&#39;heure, certaines se décalent dans un sens, d&#39;autre dans l&#39;autre, bref c&#39;est merdique.&lt;/p&gt;



&lt;figure&gt;
  &lt;a href=&#34;https://lord.re/posts/254-shelly-plugs-a-la-maison/shelly-scheduler.png&#34;&gt;
      &lt;picture&gt;
        
        &lt;source srcset=&#34;https://lord.re/posts/254-shelly-plugs-a-la-maison/shelly-scheduler.thumb.avif&#34;
          type=&#34;image/avif&#34;&gt;
        &lt;source srcset=&#34;https://lord.re/posts/254-shelly-plugs-a-la-maison/shelly-scheduler.thumb.webp&#34;
          type=&#34;image/webp&#34;&gt;
        &lt;img src=&#34;https://lord.re/posts/254-shelly-plugs-a-la-maison/shelly-scheduler.png&#34;
          alt=&#34;&#34; loading=&#34;lazy&#34;&gt;
        
      &lt;/picture&gt;
    &lt;/a&gt;
    &lt;figcaption&gt;
      &lt;h4&gt;Tout est plutôt explicite.&lt;/h4&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Du coup, j&#39;ai fait une ptite programmation d&#39;éclairage 10 minutes avant le couché de soleil et extinction à heure fixe.
Ça prend deux minutes à faire.&lt;/p&gt;
&lt;p&gt;Voilà rien de bien fifou, ça fait un truc basique sans surprise.
Et ça gère aussi si le truc est déjà allumé ou éteint.&lt;/p&gt;
&lt;h2 id=&#34;grapher-&#34;&gt;Grapher ! &lt;a href=&#34;#grapher-&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Mais bon ce que je veux surtout c&#39;est des jolis graphs !
L&#39;interface web affiche la conso en live.
C&#39;est gentil mais j&#39;ai pas envie d&#39;avoir ça ouvert en permanence.&lt;/p&gt;
&lt;p&gt;On peut aussi récup ces infos à coup de curl !&lt;/p&gt;
&lt;p&gt;&lt;kbd&gt;curl http://ip.de.la.prise/rpc/Switch.GetStatus?id=0 | jq&lt;/kbd&gt;&lt;/p&gt;
&lt;p&gt;&lt;samp&gt;{
&amp;quot;id&amp;quot;: 0,
&amp;quot;source&amp;quot;: &amp;quot;init&amp;quot;,
&amp;quot;output&amp;quot;: true,
&amp;quot;apower&amp;quot;: 1.3,
&amp;quot;voltage&amp;quot;: 232.4,
&amp;quot;current&amp;quot;: 0.037,
&amp;quot;aenergy&amp;quot;: {
&amp;quot;total&amp;quot;: 1861.903,
&amp;quot;by_minute&amp;quot;: [
22.407,
21.976,
21.976
],
&amp;quot;minute_ts&amp;quot;: 1733083620
},
&amp;quot;temperature&amp;quot;: {
&amp;quot;tC&amp;quot;: 22.5,
&amp;quot;tF&amp;quot;: 72.4
}
}&lt;/samp&gt;&lt;/p&gt;
&lt;p&gt;Voilà une seconde source pour atteindre notre objectif.
Mais j&#39;ai pas trop envie de me faire chier et surtout j&#39;ai fouillé un peu et j&#39;ai trouvé mieux !&lt;/p&gt;
&lt;p&gt;Il y a un menu &lt;strong&gt;Scripts&lt;/strong&gt; permettant de créer des scripts en javascript qui peuvent faire tout un tas de trucs tout en s&#39;executant quand même sur la prise elle-même et non dans votre navigateur (je précise au cas où…).
Et ils proposent une collection de scripts pré-existants (également trouvable sur &lt;a href=&#34;https://github.com/ALLTERCO/shelly-script-examples&#34;&gt;leur github&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Dans le lot, il y a un exporteur prometheus !
Du coup, tout content je le sélectionne l&#39;active et le fout au boot.&lt;/p&gt;
&lt;p&gt;Je configure mon ptit &lt;strong&gt;prometheus&lt;/strong&gt; pour aller picorer dedans.
Et ça fonctionne pas.
Je vérifie dans mon curl voir si la page de metrics fonctionne et oui c&#39;est bon.
🤷&lt;/p&gt;
&lt;p&gt;Du coup, je dégaine mon &lt;strong&gt;telegraf&lt;/strong&gt; qui sait aussi aller piocher dans du prometheus.
Et ça ne fonctionne pas non plus, mais il est sympa en me filant une erreur explicite d&#39;un problème de syntaxe.&lt;/p&gt;
&lt;p&gt;Je modifie le fichier avec ce qui me semble être une meilleure syntaxe (j&#39;y connais rien mais deux ptites recherches vite fait sur le web) et je reteste et là boum !
Ça fonctionne, enfin j&#39;ai plus d&#39;erreur.&lt;/p&gt;
&lt;p&gt;Je me rue sur &lt;strong&gt;grafana&lt;/strong&gt; et je crée un nouveau panel et bingo, il me propose bien les nouvelles metrics.
Bon, bha c&#39;est tout bon (ou presque).&lt;/p&gt;
&lt;p&gt;Un truc qui n&#39;est pas remonté dans les metrics c&#39;est la force du signal wifi.
Vu que je m&#39;amuse un peu avec, en ce moment, j&#39;installe la prise dans des endroits reculés et du coup autant en profiter pour indiquer comment fonctionne le wifi.
Du coup j&#39;édite un peu le fameux script prometheus pour y foutre également les infos du wifi et voilà.&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;Bref voilà le script complet pour l&#39;export prometheus&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;display:grid;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; * This script exposes a &amp;#34;/status&amp;#34; endpoint that returns Prometheus metrics that can be scraped.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; * It will be reachable under &amp;#34;&amp;lt;ip&amp;gt;/script/&amp;lt;id&amp;gt;/metrics&amp;#34;. Id will be 1 if this is your first script.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; *
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; * Example Prometheus config:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; *
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; * scrape_configs:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; *   - job_name: &amp;#39;shelly&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; *     metrics_path: /script/1/metrics
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; *     static_configs:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; *       - targets: [&amp;#39;&amp;lt;ip&amp;gt;&amp;#39;]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; *
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; * Replace &amp;lt;ip&amp;gt; with the ip address of the device and adjust the script id if needed.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; *
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; * If you use Grafana to display metrics scraped, you can give a try to the example dashboard in prometheus-grafana-example-dashboard.json
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; * available via the url https://raw.githubusercontent.com/ALLTERCO/shelly-script-examples/main/prometheus-grafana-example-dashboard.json
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; *
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; * Note: This script assumes you have one switch, but you can configure that in the Configuration section
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// ---------------------------------------------------------------------------------------------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// Configuration (you can change / adapt here)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// ---------------------------------------------------------------------------------------------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// Prefix added to all metrics name
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;metric_prefix&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;shelly_&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// url of metrics. will be used for the last part of &amp;#34;&amp;lt;ip&amp;gt;/script/&amp;lt;id&amp;gt;/&amp;lt;url&amp;gt;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;//    where ip = your plug ip/hostname; id the script id or number (1 if this is the first); url the value below
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;url&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;metrics&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// List of internal switch to monitor using the shelly&amp;#39;s id naming scheme in the form of switch:&amp;lt;id&amp;gt; (ex switch:0)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;monitored_switches&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;switch:0&amp;#34;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// ---------------------------------------------------------------------------------------------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// Prometheus exporter
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// ---------------------------------------------------------------------------------------------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;TYPE_GAUGE&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;gauge&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;TYPE_COUNTER&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;counter&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;info&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Shelly&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;getDeviceInfo&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;promLabel&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;label&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;value&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; [&lt;span style=&#34;color:#a6e22e&#34;&gt;label&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;=&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;#34;&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;value&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;#34;&amp;#39;&lt;/span&gt;].&lt;span style=&#34;color:#a6e22e&#34;&gt;join&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// Will be added to every metrics
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;defaultLabels&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;info&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;name&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;id&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;info&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;id&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;mac&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;info&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;mac&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;app&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;info&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;app&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  .&lt;span style=&#34;color:#a6e22e&#34;&gt;map&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;data&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;promLabel&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;data&lt;/span&gt;[&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;], &lt;span style=&#34;color:#a6e22e&#34;&gt;data&lt;/span&gt;[&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  });
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/**
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; *  Generate one metric output with all the shenanigans around it
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; * @param name The name of the metrics (Will be prefixed by metric_prefix value)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; * @param type One of the TYPE_* of metrics. Usually Counter, Gauge, Histogram (not supported yes)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; * @param specificLabels Array of labels generated by promLabel() specific to this metric.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; * @param description An Human description of the metric
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; * @param value The actual metric numeric value
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; * @returns {string} The metric string to include in final response
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;printPrometheusMetric&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;name&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;type&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;specificLabels&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;description&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;value&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;# HELP &amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;metric_prefix&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;name&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34; &amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;description&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;\n&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex; background-color:#3c3d38&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;# UNIT &amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;metric_prefix&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;name&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34; &amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;type&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;\n&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;metric_prefix&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;name&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;{&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;defaultLabels&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;join&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;,&amp;#34;&lt;/span&gt;), &lt;span style=&#34;color:#a6e22e&#34;&gt;specificLabels&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;length&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;?&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;,&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;specificLabels&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;join&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;,&amp;#34;&lt;/span&gt;), &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;}&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34; &amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;value&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;\n\n&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ].&lt;span style=&#34;color:#a6e22e&#34;&gt;join&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/**
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; * HTTP handler that will be called when the url will be accessed
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; * @param request
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; * @param response
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;httpServerHandler&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;request&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;response&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a6e22e&#34;&gt;response&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;body&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;generateMetricsForSystem&lt;/span&gt;(),
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;monitored_switches&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;map&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;switch_string_id&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;generateMetricsForSwitch&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;switch_string_id&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }).&lt;span style=&#34;color:#a6e22e&#34;&gt;join&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ].&lt;span style=&#34;color:#a6e22e&#34;&gt;join&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a6e22e&#34;&gt;response&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;code&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;200&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a6e22e&#34;&gt;response&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;send&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/**
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; * Generate metrics for the system part
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; * @returns {string}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;generateMetricsForSystem&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex; background-color:#3c3d38&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;sys&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Shelly&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;getComponentStatus&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;sys&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;wifi&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Shelly&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;getComponentStatus&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;wifi&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;printPrometheusMetric&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;uptime_seconds&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;TYPE_COUNTER&lt;/span&gt;, [], &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;power level in watts&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;sys&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;uptime&lt;/span&gt;),
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;printPrometheusMetric&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ram_size_bytes&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;TYPE_GAUGE&lt;/span&gt;, [], &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Internal board RAM size in bytes&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;sys&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;ram_size&lt;/span&gt;),
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;printPrometheusMetric&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ram_free_bytes&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;TYPE_GAUGE&lt;/span&gt;, [], &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Internal board free RAM size in bytes&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;sys&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;ram_free&lt;/span&gt;),
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex; background-color:#3c3d38&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;printPrometheusMetric&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;rssi&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;TYPE_GAUGE&lt;/span&gt;, [], &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Wifi strength&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;wifi&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;rssi&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ].&lt;span style=&#34;color:#a6e22e&#34;&gt;join&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/**
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; * generate metrics for one switch with the name given as parameter
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; * @returns {string}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;generateMetricsForSwitch&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;string_id&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;sw&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Shelly&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;getComponentStatus&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;string_id&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;printPrometheusMetric&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;switch_power_watts&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;TYPE_GAUGE&lt;/span&gt;, [&lt;span style=&#34;color:#a6e22e&#34;&gt;promLabel&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;switch&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;sw&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;id&lt;/span&gt;)], &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Instant power consumption in watts&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;sw&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;apower&lt;/span&gt;),
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;printPrometheusMetric&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;switch_voltage_volts&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;TYPE_GAUGE&lt;/span&gt;, [&lt;span style=&#34;color:#a6e22e&#34;&gt;promLabel&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;switch&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;sw&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;id&lt;/span&gt;)], &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Instant voltage in volts&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;sw&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;voltage&lt;/span&gt;),
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;printPrometheusMetric&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;switch_current_amperes&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;TYPE_GAUGE&lt;/span&gt;, [&lt;span style=&#34;color:#a6e22e&#34;&gt;promLabel&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;switch&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;sw&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;id&lt;/span&gt;)], &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Instant current in amperes&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;sw&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;current&lt;/span&gt;),
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;printPrometheusMetric&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;switch_temperature_celsius&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;TYPE_GAUGE&lt;/span&gt;, [&lt;span style=&#34;color:#a6e22e&#34;&gt;promLabel&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;switch&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;sw&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;id&lt;/span&gt;)], &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;temperature of the plug in celsius&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;sw&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;temperature&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;tC&lt;/span&gt;),
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;printPrometheusMetric&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;switch_power_total&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;TYPE_COUNTER&lt;/span&gt;, [&lt;span style=&#34;color:#a6e22e&#34;&gt;promLabel&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;switch&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;sw&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;id&lt;/span&gt;)], &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;accumulated energy consumed in watts hours&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;sw&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;aenergy&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;total&lt;/span&gt;),
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;printPrometheusMetric&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;switch_output&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;TYPE_GAUGE&lt;/span&gt;, [&lt;span style=&#34;color:#a6e22e&#34;&gt;promLabel&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;switch&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;sw&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;id&lt;/span&gt;)], &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;is switch (1)on or (0)off&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;sw&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;output&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;?&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ].&lt;span style=&#34;color:#a6e22e&#34;&gt;join&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;HTTPServer&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;registerEndpoint&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;url&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;httpServerHandler&lt;/span&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Les lignes surlignées sont celles que j&#39;ai modifié pour que ça fonctionne.&lt;/p&gt;
&lt;/details&gt;
&lt;p&gt;Pour choper ça il faut configurer telegraf&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;détail de la conf telegraf pour ça&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-ini&#34; data-lang=&#34;ini&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;[[inputs.prometheus]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a6e22e&#34;&gt;urls&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;[&amp;#34;http://ip.de.la.prise1/script/1/metrics&amp;#34;,&amp;#34;http://ip.de.la.prise2/script/1/metrics&amp;#34;,&amp;#34;http://ip.de.la.prise3/script/1/metrics&amp;#34;,&amp;#34;http://ip.de.la.prise4/script/1/metrics&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;  metric_version = 1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/details&gt;
&lt;p&gt;Et hop yapuka partir du côté de Grafana !&lt;/p&gt;
&lt;h2 id=&#34;grafanons-&#34;&gt;Grafanons !! &lt;a href=&#34;#grafanons-&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Un premier panel pour voir la puissance délivrée par les ptites shellies.&lt;/p&gt;



&lt;figure&gt;
  &lt;a href=&#34;https://lord.re/posts/254-shelly-plugs-a-la-maison/shelly_power_graph.png&#34;&gt;
      &lt;picture&gt;
        
        &lt;source srcset=&#34;https://lord.re/posts/254-shelly-plugs-a-la-maison/shelly_power_graph.thumb.avif&#34;
          type=&#34;image/avif&#34;&gt;
        &lt;source srcset=&#34;https://lord.re/posts/254-shelly-plugs-a-la-maison/shelly_power_graph.thumb.webp&#34;
          type=&#34;image/webp&#34;&gt;
        &lt;img src=&#34;https://lord.re/posts/254-shelly-plugs-a-la-maison/shelly_power_graph.png&#34;
          alt=&#34;&#34; loading=&#34;lazy&#34;&gt;
        
      &lt;/picture&gt;
    &lt;/a&gt;
    &lt;figcaption&gt;
      &lt;h4&gt;Et hop, je vous autorise à reluquer cette beauté de graph.&lt;/h4&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;blockquote&gt;
&lt;p&gt;SELECT mean(&amp;quot;value&amp;quot;) FROM &amp;quot;shelly_switch_power_watts&amp;quot; WHERE $timeFilter GROUP BY time($__interval), &amp;quot;name&amp;quot;::tag fill(null)&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Vraiment c&#39;est le genre de truc qui me faisait de l&#39;œil depuis des années.
Le seul truc qui me titille c&#39;est la colonne &amp;quot;Total&amp;quot; qui n&#39;a aucune vraie signification.
Il faudrait faire un ptit calcul pour en extraire une quantité d&#39;énergie exploitable (et notamment pouvoir en dériver le coût) mais je ne sais pas comment le faire 🤷.&lt;/p&gt;
&lt;h2 id=&#34;et-voilà-&#34;&gt;Et voilà ! &lt;a href=&#34;#et-voil%c3%a0-&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Je vous ferai une micro-suite où je listerai quelques consos de différents appareils de la maison. :-)&lt;/p&gt;

      
      
      </description>
    <category>domotique"</category><category>graph"</category><category>monitoring"</category>
    
    </item>
    
    <item>
      <title>Fuzzel toujours plus !</title>
      <link>https://lord.re/posts/253-fuzzel-encore-un-peu-plus/</link>
      <pubDate>Fri, 11 Oct 2024 16:42:20 +0200</pubDate>
      
      <guid>https://lord.re/posts/253-fuzzel-encore-un-peu-plus/</guid>
      <description>&lt;p&gt;Ouai je vous en remet une couche sur &lt;a href=&#34;https://codeberg.org/dnkl/fuzzel/&#34;&gt;Fuzzel&lt;/a&gt;.
Ce logiciel est vraiment bien mais en plus on peut en détourner l&#39;usage pour faire autre chose qu&#39;un simple launcher.&lt;/p&gt;
&lt;p&gt;Et du coup je vous propose deux utilisation un peu plus originales.&lt;/p&gt;
&lt;h2 id=&#34;un-ptit-menu-pour-yambar&#34;&gt;Un ptit menu pour yambar &lt;a href=&#34;#un-ptit-menu-pour-yambar&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Yambar&lt;/strong&gt; est … une barre pour sway et autres compistors sous wayland.
Ça permet d&#39;y foutre plein d&#39;infos et également d&#39;y mettre des actions lançables en cliquant sur différentes zones.
C&#39;est basique mais c&#39;est suffisant, léger et rapide.
C&#39;est fait par le même dev et je vous en ai déjà parlé &lt;a href=&#34;https://lord.re/posts/242-am%C3%A9lioration-de-mon-environnement-nunux-vol3/#yambar&#34;&gt;ici&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Et autant j&#39;adore la possibilité d&#39;utiliser mon ordi intégralement au clavier, autant parfois c&#39;est vrai que cliquer sur un bouton pour lancer un truc un peu complexe, c&#39;est plus pratique.
C&#39;est d&#39;autant plus vrai pour les fonctions les moins utilisées qui sont du coup moins facilement accessibles de mémoire.&lt;/p&gt;
&lt;p&gt;Du coup j&#39;ai eu envie de me faire un ptit menu comme on trouve sur tous les OS mainstreams.
Et vous savez quel logiciel est très cool pour faire des menus ?
FUZZEL !&lt;/p&gt;
&lt;p&gt;Et hop !&lt;/p&gt;



&lt;figure&gt;
  &lt;a href=&#34;https://lord.re/posts/253-fuzzel-encore-un-peu-plus/fuzzel-menu.png&#34;&gt;
      &lt;picture&gt;
        
        &lt;source srcset=&#34;https://lord.re/posts/253-fuzzel-encore-un-peu-plus/fuzzel-menu.thumb.avif&#34;
          type=&#34;image/avif&#34;&gt;
        &lt;source srcset=&#34;https://lord.re/posts/253-fuzzel-encore-un-peu-plus/fuzzel-menu.thumb.webp&#34;
          type=&#34;image/webp&#34;&gt;
        &lt;img src=&#34;https://lord.re/posts/253-fuzzel-encore-un-peu-plus/fuzzel-menu.png&#34;
          alt=&#34;&#34; loading=&#34;lazy&#34;&gt;
        
      &lt;/picture&gt;
    &lt;/a&gt;
    &lt;figcaption&gt;
      &lt;h4&gt;Propre efficace, on y croirait !&lt;/h4&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;C&#39;est ty pas mimi ?
Avec les emojis et la ptite barre de recherche en prime !
La classe.&lt;/p&gt;
&lt;p&gt;En gros &lt;strong&gt;yambar&lt;/strong&gt; affiche une icone qui ouvre un script lorsqu&#39;on clique dessus.
Le script est tout simple (je vous le mets plus bas) avec fuzzel qui vient se coller en haut à droite de l&#39;écran pour donner l&#39;impression d&#39;apparaitre sous l&#39;icone.
Un peu de couleurs et hop.&lt;/p&gt;
&lt;p&gt;On peut y foutre autant d&#39;options qu&#39;on veut et utiliser la souris pour choisir ou bien le clavier.
Vraiment pas mal.
Et on peut configurer pour qu&#39;en cas de perte de focus, ça se ferme (par défaut).&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;/usr/local/bin/fuzzel-menu&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;
&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;11
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;12
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;13
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;14
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;15
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;16
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;17
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;18
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;19
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;20
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;21
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;22
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;23
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;24
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;25
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;26
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;27
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;28
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;29
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;30
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;31
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;32
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;33
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;34
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;35
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;36
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;37
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;38
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;39
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;40
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;41
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;42
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;43
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;44
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;45
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;46
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;47
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;48
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;49
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;50
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;51
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;52
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;53
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;54
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;55
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;56
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;57
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;58
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;59
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;60
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;61
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;62
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#! /bin/sh
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Bordel pour l&amp;#39;audio&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SINK&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;pw-dump | jq  -r &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;.[] | select(.info.props[&amp;#34;media.class&amp;#34;] == &amp;#34;Audio/Sink&amp;#34;) | (.id | tostring) + &amp;#34;:&amp;#34; + .info.props[&amp;#34;node.description&amp;#34;]&amp;#39;&lt;/span&gt; | grep Family&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;IFS&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;: read -r SINK_ID SINK_DESCRIPTION &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$SINK&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;choice1&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;printf &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;🌅 Luminosité ++
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;🌇 Luminosité -- 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;🔈 Enceintes 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;🎧 Casque 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;📷 Screenshot
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;📸 Region Screenshot 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;📼 Twitch &amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;| fuzzel --dmenu  --config&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/dev/null --index --anchor&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;top-right --horizontal-pad&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt; --lines &lt;span style=&#34;color:#ae81ff&#34;&gt;7&lt;/span&gt; --width &lt;span style=&#34;color:#ae81ff&#34;&gt;25&lt;/span&gt; --background&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;282136fa --text-color&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;cdcdcdfa --selection-text-color&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;222222ff --border-color&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;bbbbbbff&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$choice1&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; in
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# Monter la luminosité de l&amp;#39;écran&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ddcutil setvcp &lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt; + &lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt; --display &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt; --sleep-multiplier 0.2
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# Baisser la luminosité de l&amp;#39;écran&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ddcutil setvcp &lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt; - &lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt; --display &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt; --sleep-multiplier 0.2
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# Changer la route du sink par défaut pour les enceintes&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    wpctl set-route $SINK_ID &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;3&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# Changer la route du sink par défaut pour le casque&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    wpctl set-route $SINK_ID &lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;4&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# Prendre un screenshot de tout l&amp;#39;écran&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    sleep 0.3
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    grim /tmp/screenshot-&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;date +%Y-%m-%d-%H:%M:%S&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;.png
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;5&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# Prendre un screenshot d&amp;#39;une région de l&amp;#39;écran&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    slurp | grim -g - /tmp/screenshot-&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;date +%Y-%m-%d-%H:%M:%S&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;.png
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;6&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# Démarrer le menu twitch&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    fuzzel-twitch
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;esac&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Bon pour la partie audio j&#39;avais des bouts en plus pour choper le numéro de route mais je me suis rendu compte que c&#39;était fixe, donc pas besoin de complexifier plus que ça.&lt;/p&gt;
&lt;/details&gt;
&lt;p&gt;Le truc cool, c&#39;est que vu que ce n&#39;est qu&#39;un simple script il est très facile à modifier.
Suffit de sauvegarder et de recliquer l&#39;icone et hop ça s&#39;ouvre.&lt;/p&gt;
&lt;p&gt;Fuzzel supporte les icones mais je n&#39;arrive pas à faire bien ce que je veux.
Les emojis c&#39;est plus simple ^__^&lt;/p&gt;
&lt;p&gt;Voilà c&#39;est tout !&lt;/p&gt;
&lt;h2 id=&#34;un-menu-encore--contextuel&#34;&gt;Un menu (encore !) contextuel &lt;a href=&#34;#un-menu-encore--contextuel&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Là j&#39;ai piqué l&#39;idée chez &lt;a href=&#34;https://sxmo.org/&#34;&gt;Sxmo&lt;/a&gt;.
C&#39;est une interface utilisateur pour linux mais à destination des téléphones portables.&lt;/p&gt;
&lt;p&gt;Le but est de fournir un menu contextuel pour tout un tas d&#39;appli et qui soit donc utilisable facilement avec les touches physiques du téléphone sans nécessiter de &amp;quot;colaboration&amp;quot; de la part des logiciels.
Ça permet d&#39;accéder à des fonctionnalités via un unique moyen d&#39;accès.&lt;/p&gt;
&lt;p&gt;Et c&#39;est vrai que ça semble contre-intuitif d&#39;utiliser des logiciels principalement en console et optimisés pour le clavier avec un téléphone portable mais au final leurs ajustements rendent cette interface très plaisante.
Et du coup je leur ai piqué l&#39;idée et une grande partie de l&#39;implémentation pour refaire pareil mais sur mon gros dinateur.&lt;/p&gt;
&lt;p&gt;Après tout, j&#39;ai beau quasiment tout faire dans un terminal, c&#39;est vrai que ça nécessite de connaitre et de se souvenir de nombreux raccourcis claviers.
Pour les logiciels du quotidien ça passe mais pour ceux qui servent moins souvent c&#39;est plus compliqué.&lt;/p&gt;
&lt;p&gt;Et du coup quel logiciel utiliser pour faire un menu ?
Et oui, c&#39;est encore &lt;strong&gt;Fuzzel&lt;/strong&gt; !&lt;/p&gt;



&lt;figure&gt;
  &lt;a href=&#34;https://lord.re/posts/253-fuzzel-encore-un-peu-plus/fuzzel-context-weechat.png&#34;&gt;
      &lt;picture&gt;
        
        &lt;source srcset=&#34;https://lord.re/posts/253-fuzzel-encore-un-peu-plus/fuzzel-context-weechat.thumb.avif&#34;
          type=&#34;image/avif&#34;&gt;
        &lt;source srcset=&#34;https://lord.re/posts/253-fuzzel-encore-un-peu-plus/fuzzel-context-weechat.thumb.webp&#34;
          type=&#34;image/webp&#34;&gt;
        &lt;img src=&#34;https://lord.re/posts/253-fuzzel-encore-un-peu-plus/fuzzel-context-weechat.png&#34;
          alt=&#34;&#34; loading=&#34;lazy&#34;&gt;
        
      &lt;/picture&gt;
    &lt;/a&gt;
    &lt;figcaption&gt;
      &lt;h4&gt;Déclenché depuis Weechat&lt;/h4&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Du coup dans &lt;strong&gt;sway&lt;/strong&gt; je me fous un keybind pour déclencher mon script.
Le script détermine quelle est la fenêtre active puis en fonction de ça balance un fuzzel avec les choix prédeterminés.
Et en fonction de la sélection de l&#39;utilisateur balance des touches depuis un clavier virtuel.&lt;/p&gt;



&lt;figure&gt;
  &lt;a href=&#34;https://lord.re/posts/253-fuzzel-encore-un-peu-plus/fuzzel-context-qutebrowser.png&#34;&gt;
      &lt;picture&gt;
        
        &lt;source srcset=&#34;https://lord.re/posts/253-fuzzel-encore-un-peu-plus/fuzzel-context-qutebrowser.thumb.avif&#34;
          type=&#34;image/avif&#34;&gt;
        &lt;source srcset=&#34;https://lord.re/posts/253-fuzzel-encore-un-peu-plus/fuzzel-context-qutebrowser.thumb.webp&#34;
          type=&#34;image/webp&#34;&gt;
        &lt;img src=&#34;https://lord.re/posts/253-fuzzel-encore-un-peu-plus/fuzzel-context-qutebrowser.png&#34;
          alt=&#34;&#34; loading=&#34;lazy&#34;&gt;
        
      &lt;/picture&gt;
    &lt;/a&gt;
    &lt;figcaption&gt;
      &lt;h4&gt;Depuis QuteBrowser d&amp;#39;autres options …&lt;/h4&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Maintenant il n&#39;y a plus qu&#39;à remplir ces menus !&lt;/p&gt;
&lt;p&gt;C&#39;est très pratique et ça peut même être utilisé comme un ptit aide-mémoire.&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;/usr/local/bin/fuzzel-context-menu&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#! /bin/sh
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;FUZZEL_OPTS&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;--config=/dev/null --index --dmenu --background=282136fa --text-color=cdcdcdfa --selection-text-color=222222ff --border-color=bbbbbbff&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sway_focused_app&lt;span style=&#34;color:#f92672&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	swaymsg -t get_tree | jq -r &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;			recurse(.nodes[]) |
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;			select(.focused == true) |
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;			{
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;				app_id: (if .app_id != null then
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;						.app_id
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;					else
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;						.window_properties.class
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;					end),
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;				name: .name,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;			} |
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;			select(.app_id != null and .name != null) |
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;			.app_id
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;		&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sway_focused_title&lt;span style=&#34;color:#f92672&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	swaymsg -t get_tree | jq -r &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;			recurse(.nodes[]) |
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;			select(.focused == true) |
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;			{
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;				app_id: (if .app_id != null then
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;						.app_id
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;					else
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;						.window_properties.class
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;					end),
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;				name: .name,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;			} |
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;			select(.app_id != null and .name != null) |
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;			.name
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;		&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;APP&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;sway_focused_app&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;TITLE&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;sway_focused_title&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# CLI_APP=$(print &amp;#34;%s&amp;#34; &amp;#34;$TITLE&amp;#34; | cut -d&amp;#39; &amp;#39; -f1)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# DEBUG&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# fuzzel --dmenu --placeholder=&amp;#34;APP [$APP] --- title [$TITLE]&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#############################&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Applis console uniquement #&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#############################&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$APP&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;foot&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$TITLE&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; in
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		hx*&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			PLACEHOLDER&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;📙 Helix&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		  TO_FUZZEL&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;				Sélectionner paragraphe (mip) @ -k Escape mip
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;				Choisir sélecteur (s\|)       @ s\\\| -k Return
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;				Aligner (&amp;amp;)                   @ \&amp;amp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;				Supprimer les curseurs (,)    @ ,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;			&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	  ;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		rtorrent*&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		  PLACEHOLDER&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;🏴‍☠️rTorrent&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		  TO_FUZZEL&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;				➕ Ajouter un torrent         @ -k backspace
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;				🚀 Démarrer un torrent        @ -M Ctrl s
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;				✋ Stopper un torrent         @ -M Ctrl d
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;				⛔ Quitter rTorrent           @ -M Ctrl q
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;			&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		top*&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      PLACEHOLDER&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;🧑‍💻Top&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			TO_FUZZEL&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;				🪟 Changer de fenêtre (g)     @ g
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;				🔎 Chercher (L)               @ L
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;				🚩 Signal (k)                 @ k
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;				🆘 Aide (h)                   @ h
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;			&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		&lt;span style=&#34;color:#75715e&#34;&gt;# Weechat&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ssh zc&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		  PLACEHOLDER&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;💬 WeeChatX&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		  TO_FUZZEL&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;				🫦 Bare Mode\0icon\x1fweechat @ -M Alt l
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;				🔎 Rechercher                 @ -M Ctrl r
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;				🔀 Toggle filters             @ -M Alt =
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;				🎨 Gras                       @ -M Ctrl b
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;				🎨 Color                      @ -M Ctrl v
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;				🎨 Underline                  @ -M Ctrl _
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;				🖌️ Redraw                     @ -M Ctrl l
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;				🔑 Show Key                   @ -M alt k
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;				
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;			&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    Yazi*&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			PLACEHOLDER&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;📂 Yazi&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			TO_FUZZEL&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;				Copy (y)                      @ y
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;				✂️ Cut (x)                    @ x
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;				Paste (p)                     @ p
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;				Rename (r)                    @ r
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;				🔍 Find (/)                   @ / 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;			&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		*&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		  PLACEHOLDER&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;🦶 Foot&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		  TO_FUZZEL&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;				🔍 Zoom ++                    @ -M Ctrl +
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;				🔎 Zoom --                    @ -M Ctrl -
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;				🌐 URL Mode                   @ -M Ctrl -M Shift -k o
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;				🕶️ Search                     @ -M Ctrl -M Shift -k r
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;			&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;esac&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$APP&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; in
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;mpv&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	  PLACEHOLDER&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;📼 MPV&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	  TO_FUZZEL&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;			⏯️ Pause                        @ -k Space
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;			🔇 Mute                         @ m
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;			ℹ️ Infos                        @ i
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;			🚀 Toggle hwdec                 @ -M Ctrl h
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;		&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;org.qutebrowser.qutebrowser&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	  PLACEHOLDER&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;🌎 QuteBrowser&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    TO_FUZZEL&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;			💲Toggle JS                     @ -k Escape tsh
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;			🛠️Devtools                      @ -k Escape :devtools -k Return
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;			🔪Delete                        @ -k Escape -M Shift F -m Shift -s 100 k
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;			📼To MPV                        @ -k Escape -M Shift F -m Shift -s 100 m
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;			📺To TV                         @ -k Escape -M Shift F -m Shift -s 100 t
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;		&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;esac&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt; -z &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$TO_FUZZEL&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Pas trouvé l&amp;#39;appli, désolé&amp;#34;&lt;/span&gt; | fuzzel --dmenu
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	exit  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;CHOICES&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;printf &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;%s&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$TO_FUZZEL&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; | sed &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;/^[[:space:]]*$/d&amp;#39;&lt;/span&gt; | awk &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;{$1=$1};1&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;LINE_NUMBER&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;printf &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;%s\n&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$CHOICES&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; | wc --lines&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;MAX_LINE_NUMBER&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$((&lt;/span&gt; $LINE_NUMBER &amp;lt; &lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt; ? $LINE_NUMBER : &lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;PICKED_LINE&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;echo -e &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$CHOICES&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; |cut -d&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;@&amp;#39;&lt;/span&gt; -f1 | fuzzel --dmenu --index --placeholder&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$PLACEHOLDER&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; --lines&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$MAX_LINE_NUMBER&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Pas de choix fait par l&amp;#39;utilisateur.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$PICKED_LINE&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; exit
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ACTION&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;printf &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;%s&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$CHOICES&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; | cut -d&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;@&amp;#39;&lt;/span&gt; -f2 | awk NR&lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt;$PICKED_LINE+1  &lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# DEBUG&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# printf &amp;#34;PICKED Line : [%s]&amp;#34; &amp;#34;$PICKED_LINE&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# printf &amp;#34;ACTION : [%s]&amp;#34; &amp;#34;$ACTION&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# printf &amp;#34;Sending :[wtype %s]&amp;#34; &amp;#34;$ACTION&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;wtype $ACTION&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/details&gt;
&lt;p&gt;Voilà voilà, si ça peut vous inspirer ou vous aider, n&#39;hésitez pas !&lt;/p&gt;

      
      
      </description>
    <category>sway"</category><category>wayland"</category><category>ux"</category>
    
    </item>
    
    <item>
      <title>Inclure les sources d&#39;un programme en Golang</title>
      <link>https://lord.re/posts/252-les-sources-dans-un-programme-golang/</link>
      <pubDate>Sun, 06 Oct 2024 20:31:00 +0200</pubDate>
      
      <guid>https://lord.re/posts/252-les-sources-dans-un-programme-golang/</guid>
      <description>&lt;p&gt;Je suis un piètre programmeur.
C&#39;est pas mon boulot, c&#39;est pas ma formation et … ouai bon j&#39;ai pas à me justifier.
Je suis également un piètre scripteurs.
J&#39;utilise linux depuis longtemps et oui j&#39;ai eu besoin de scripter des trucs.&lt;/p&gt;
&lt;h2 id=&#34;binsh---golang&#34;&gt;/bin/sh -&amp;gt; golang &lt;a href=&#34;#binsh---golang&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;C&#39;est très souvent moche, surement gavé de bugs mais ça fini parfois par tomber en marche suffisamment pour que je m&#39;en serve.
Et c&#39;est un peu con mais autant que possible je veux que mes ptits scripts aient le moins de dépendances possibles et si possible posix.&lt;/p&gt;
&lt;p&gt;C&#39;est con parcequ&#39;au final ces scripts ne bougent pas.
Je les utilise là où je les écris.
Ils ont rarement l&#39;occasion de voyager vers d&#39;autres machines mais bon je tente autant que faire se peut de m&#39;astreindre à les rendre facilement utilisable.&lt;/p&gt;
&lt;p&gt;Le problème des scripts c&#39;est qu&#39;au bout d&#39;un certain moment ça devient un peu le merdier.
Le shell posix monte assez vite ses limites et on se retrouve à devoir appeler plein de programmes rendant le script au final peu portable.
Bha ouai parceque bon si n&#39;importe quel shell peut parser et exécuter votre script c&#39;est cool.
Mais si votre script nécessite des dizaines de programmes différents c&#39;est de suite moins compatible et portable.&lt;/p&gt;
&lt;p&gt;Et c&#39;est en grande partie pour ça que j&#39;aime le langage Go (golang pour les non-intimes).
Ça produit un gros binaire statique sans dépendance.
On le colle là où on a besoin et ça juste marche.
C&#39;est d&#39;une élégance rare !&lt;/p&gt;
&lt;p&gt;Rien à installer, pas d&#39;interpréteur avec plein de versions et tout.
Pas de libs à déployer.
Non tout se retrouve dans votre binaire que vous poussez là où il y a besoin.&lt;/p&gt;
&lt;h2 id=&#34;je-suis-bordélique-et-un-sagouin&#34;&gt;Je suis bordélique et un sagouin &lt;a href=&#34;#je-suis-bord%c3%a9lique-et-un-sagouin&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Ne codant que très rarement, j&#39;ai aucune organisation propre pour gérer mes ptits programmes.
Pourtant j&#39;ai tout ce qu&#39;il faut pour faire ça proprement.
J&#39;ai une instance gitea qui tourne dans mon routeur.&lt;/p&gt;
&lt;p&gt;Mais j&#39;ai la flemme, j&#39;y pense pas sur le moment.
Et du coup ce qui devait arriver arriva : j&#39;ai perdu les sources de certains de ces ptits programmes (des gros scripts on va dire).
C&#39;est balot, c&#39;est pas grave mais c&#39;est un peu chiant quand même.&lt;/p&gt;
&lt;p&gt;Du coup j&#39;ai eu besoin de trouver une solution.
Donc au lieu d&#39;utiliser git, je me suis dit qu&#39;il serait plus intelligent de juste inclure les sources de mon programme dans le programme lui-même pour qu&#39;il puisse les ressortir en cas de besoin !
Et ouai, du coup si j&#39;ai le binaire, j&#39;ai également ses sources à portée de main.&lt;/p&gt;
&lt;h2 id=&#34;implémentation&#34;&gt;Implémentation &lt;a href=&#34;#impl%c3%a9mentation&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Je le fais en deux parties.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Inclure un fichier texte (les sources) en tant que string&lt;/li&gt;
&lt;li&gt;Parser les args pour afficher les sources avec --source&lt;/li&gt;
&lt;/ol&gt;
&lt;details&gt;&lt;summary&gt;Le code !!&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-golang&#34; data-lang=&#34;golang&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; (
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a6e22e&#34;&gt;_&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;embed&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;//go:embed nom_du_fichier_source.go&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;source&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;string&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;viewsource&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;bool&lt;/span&gt; = &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;func&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;main&lt;/span&gt;(){
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a6e22e&#34;&gt;flag&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;BoolVar&lt;/span&gt;(&lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;viewsource&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;source&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;View source&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a6e22e&#34;&gt;flag&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Parse&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;viewsource&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;fmt&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Print&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;source&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/details&gt;
&lt;p&gt;Et voilà juste ça à foutre dans votre ptit programme et c&#39;est bon !
La syntaxe est un peu étrange avec le import bizarre et le commentaire ensuite qui n&#39;en est pas vraiment un.
Mais bon ça fonctionne.&lt;/p&gt;
&lt;p&gt;Bien entendu ça ne fonctionne qu&#39;avec les programmes avec un seul fichier de source.
Mais rassurez-vous, jamais je ne me permettrai de commettre du code sur plus d&#39;un seul fichier !&lt;/p&gt;
&lt;p&gt;Maintenant j&#39;ai plus qu&#39;à penser à inclure ça à chaque fois :-D&lt;/p&gt;

      
      
      </description>
    <category>golang"</category><category>code"</category>
    
    </item>
    
    <item>
      <title>Amélioration de mon environnement nunux vol.4 : Fuzzel le launcher à tout faire</title>
      <link>https://lord.re/posts/251-am%C3%A9lioration-de-mon-environnement-nunux-vol4-fuzzel/</link>
      <pubDate>Thu, 03 Oct 2024 10:23:47 +0200</pubDate>
      
      <guid>https://lord.re/posts/251-am%C3%A9lioration-de-mon-environnement-nunux-vol4-fuzzel/</guid>
      <description>&lt;p&gt;Les utilisateurs de tiling wm sont des rustres.
J&#39;en fais partie depuis longtemps et j&#39;ai testé pas mal de logiciels du genre même si ça fait maintenant longtemps que je ne bouge plus de sway.
Et un truc que j&#39;aime bien avec ce genre d&#39;environnements c&#39;est que c&#39;est composable.&lt;/p&gt;
&lt;p&gt;Un environnement de bureau usuel contient tous les logiciels qu&#39;il faut tout préconfiguré.
C&#39;est pratique pour débuter mais si l&#39;on veut s&#39;éloigner de la conf par défaut et changer diverses briques ça peut vite devenir difficile.
Se contenter d&#39;un gestionnaire de fenêtre (ou compositor selon la parlance wayland) permet de choisir tous les ptits annexes.&lt;/p&gt;
&lt;p&gt;J&#39;ai déjà évoqué quelques-uns de ces logiciels.
Mais je n&#39;avais abordé mon launcher que très rapidement il y a maintenant 4 ans.
À l&#39;époque j&#39;avais migré de &lt;strong&gt;dmenu&lt;/strong&gt; pour rejoindre les contrées de &lt;a href=&#34;https://lord.re/posts/210-am%C3%A9lioration-du-confort-de-mon-environnement-linux/#bemenu&#34;&gt;bemenu&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Mais me revoilà encore en train de changer.
Et le pire pour à peu près aucune raison !
&lt;strong&gt;Bemenu&lt;/strong&gt; est très bien supporté, rapide, léger.
Que des éloges à son égard.
Jamais eu d&#39;emmerdes ni de surprise.
Il marche vraiment bien au point qu&#39;une fois mis en place on l&#39;oublie.&lt;/p&gt;
&lt;p&gt;Mais je suis devenu fan des logiciels de l&#39;illustre &lt;a href=&#34;https://codeberg.org/dnkl&#34;&gt;dnkl&lt;/a&gt;.
Ils sont légers avec peu de dépendances, rapides, ne plantent pas.
J&#39;utilise déjà &lt;a href=&#34;https://lord.re/posts/218-foot--mon-nouveau-terminal/&#34;&gt;foot&lt;/a&gt; son émulateur de terminal qui correspond à tout ce que j&#39;aime.
J&#39;utilise également &lt;a href=&#34;https://lord.re/posts/242-am%C3%A9lioration-de-mon-environnement-nunux-vol3/#yambar&#34;&gt;yambar&lt;/a&gt; et c&#39;est en l&#39;utilisant récemment que j&#39;ai eu envie d&#39;utiliser fuzzel !&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;Pourquoi j&#39;ai migré ? pas super intéressant mais rigolo&lt;/summary&gt;
&lt;p&gt;En gros je faisais je ne sais quoi quand d&#39;un coup le chat a fait mumuse sur le clavier et m&#39;a perdu une fenêtre.
Une vidéo tournait avec le son mais je ne la trouvais plus, la fenêtre était introuvable.
Il s&#39;est avéré qu&#39;il était parvenu à la balancer sur un workspace traditionnellement inutilisé.&lt;/p&gt;
&lt;p&gt;Et c&#39;est là que je me suis demandé s&#39;il n&#39;y aurait pas moyen de faire en sorte que &lt;strong&gt;yambar&lt;/strong&gt; puisse indiquer sur quel écran se trouve un workspace.
Ni une ni deux, je déboule sur le chan irc de dnkl et je pose la question pour savoir comment ça pourrait être fait.
Le lendemain, réponse de l&#39;intéressé qui dit que c&#39;est juste pas possible.
2h après, il revient avec un patch à tester permettant d&#39;ajouter des conditions sur l&#39;output dans le module de yambar.&lt;/p&gt;
&lt;p&gt;Et hop, la magie du Libre et du dev ultra dévoué ont transformé une simple petite idée en feature implémentée.
J&#39;étais bluffé.
Encore une fois merci ça c&#39;est top.
Et comme d&#39;hab, une fois rentré sur un salon irc, j&#39;y reste pour &lt;del&gt;lurker&lt;/del&gt;idler.
Je vois que ça y discute de &lt;strong&gt;Fuzzel&lt;/strong&gt; et du coup j&#39;ai eu envie de tester.&lt;/p&gt;
&lt;p&gt;Et voilà, il ne m&#39;en fallait pas plus.&lt;/p&gt;
&lt;/details&gt;
&lt;h2 id=&#34;un-launcher-nickel&#34;&gt;Un launcher nickel &lt;a href=&#34;#un-launcher-nickel&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Bref, &lt;strong&gt;Fuzzel&lt;/strong&gt; est donc un launcher pour wayland.
Si vous ne connaissez pas ce genre de logiciel, il s&#39;agit d&#39;un ptit logiciel qui se lance et dans lequel l&#39;utilisateur va pouvoir filtrer pour choisir parmi une liste de choix.
C&#39;est tout bête mais très pratique.&lt;/p&gt;



&lt;figure&gt;
  &lt;a href=&#34;https://lord.re/posts/251-am%C3%A9lioration-de-mon-environnement-nunux-vol4-fuzzel/fuzzel-qute.png&#34;&gt;
      &lt;picture&gt;
        
        &lt;source srcset=&#34;https://lord.re/posts/251-am%C3%A9lioration-de-mon-environnement-nunux-vol4-fuzzel/fuzzel-qute.thumb.avif&#34;
          type=&#34;image/avif&#34;&gt;
        &lt;source srcset=&#34;https://lord.re/posts/251-am%C3%A9lioration-de-mon-environnement-nunux-vol4-fuzzel/fuzzel-qute.thumb.webp&#34;
          type=&#34;image/webp&#34;&gt;
        &lt;img src=&#34;https://lord.re/posts/251-am%C3%A9lioration-de-mon-environnement-nunux-vol4-fuzzel/fuzzel-qute.png&#34;
          alt=&#34;&#34; loading=&#34;lazy&#34;&gt;
        
      &lt;/picture&gt;
    &lt;/a&gt;
    &lt;figcaption&gt;
      &lt;h4&gt;La recherche est approximative mais toujours efficace&lt;/h4&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Contrairement à &lt;strong&gt;bemenu&lt;/strong&gt; il supporte également les icones.
Il est vraiment rapide et très configurable que ce soit via son fichier de conf ou directement via les arguments lorsqu&#39;on le lance.&lt;/p&gt;
&lt;p&gt;D&#39;ailleurs c&#39;est marrant, par défaut, contrairement à ses prédécesseurs, il se lance au milieu de l&#39;écran.
C&#39;est un poil déroutant mais au final pas déconnant.&lt;/p&gt;
&lt;h2 id=&#34;un-launcher-tout-shiny--chrome&#34;&gt;Un launcher tout shiny &amp;amp; chrome &lt;a href=&#34;#un-launcher-tout-shiny--chrome&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Bien entendu il peut être personnalisé pour changer ses couleurs et la police.
Le prompt lui aussi est à notre convenance.&lt;/p&gt;
&lt;p&gt;Récemment, il y a même le support pour l&#39;inclusion de fichier de conf ce qui permet de créer des thèmes assez facilement partageables.
Vous trouverez du coup le &lt;a href=&#34;https://github.com/catppuccin/fuzzel&#34;&gt;Catpuccin&lt;/a&gt; ou le célèbre &lt;a href=&#34;https://github.com/dracula/fuzzel&#34;&gt;Dracula&lt;/a&gt; notamment.&lt;/p&gt;
&lt;h2 id=&#34;un-launcher-à-tout-fer&#34;&gt;Un launcher à tout fer &lt;a href=&#34;#un-launcher-%c3%a0-tout-fer&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Bon lancer des logiciels c&#39;est bien mais tous ces logiciels ont été détournés pour faire un peu d&#39;autres trucs.
Après tout c&#39;est donc une sorte de grep interactif dans une ptite interface graphique.&lt;/p&gt;
&lt;p&gt;Ce qui suit n&#39;est pas spécifique à Fuzzel et peu être reproduit avec les alternatives.&lt;/p&gt;
&lt;h3 id=&#34;choisir-la-musique-pour-mpd&#34;&gt;Choisir la musique pour mpd &lt;a href=&#34;#choisir-la-musique-pour-mpd&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;MPD est un daemon pour écouter de la musique.
Pour ajouter un morceau à la playlist j&#39;utilise &lt;strong&gt;mpdmenu&lt;/strong&gt;&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;/usr/local/bin/fuzzel-mpd&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/bin/sh
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;mpc listall | fuzzel  --dmenu --prompt &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;🎶  ❯  &amp;#34;&lt;/span&gt; | mpc insert&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/details&gt;
&lt;p&gt;Rien de transcendant mais efficace.
Et par contre pour mettre un album complet j&#39;utilise &lt;strong&gt;mpdalbummenu&lt;/strong&gt;.&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;/usr/local/bin/fuzzel-mpd-album&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#! /bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;all_name&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;[ALL]&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;d_album&lt;span style=&#34;color:#f92672&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    local artist&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$1&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    local albums
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    mapfile -t albums &amp;lt; &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;mpc list album artist &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$artist&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;((&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;${#&lt;/span&gt;albums[@]&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt; &amp;gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;))&lt;/span&gt; ; &lt;span style=&#34;color:#66d9ef&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            printf &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;%s\n&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$all_name&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            printf &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;%s\n&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;albums[@]&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; | sort -f
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt; | fuzzel --dmenu --prompt &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;🥁 Album :&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# We only have one album, so just use that.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        printf &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;%s\n&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;albums[0]&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;artist&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;mpc list artist | sort --ignore-case | fuzzel --dmenu --prompt &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;🎸 artist  : &amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[[&lt;/span&gt; $artist &lt;span style=&#34;color:#f92672&#34;&gt;]]&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;||&lt;/span&gt; exit &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;album&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;d_album &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$artist&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[[&lt;/span&gt; $album &lt;span style=&#34;color:#f92672&#34;&gt;]]&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;||&lt;/span&gt; exit &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[[&lt;/span&gt; $album &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$all_name&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;]]&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    mpc find artist &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$artist&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; | sort | mpc insert
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    mpc find artist &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$artist&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; album &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$album&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; | sort | mpc insert
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;fi&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/details&gt;
&lt;h3 id=&#34;consulter-son-gestionnaire-de-mot-de-passe&#34;&gt;Consulter son gestionnaire de mot de passe &lt;a href=&#34;#consulter-son-gestionnaire-de-mot-de-passe&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;J&#39;aime pas avoir mon gestionnaire de mot de passe relié au navigateur.
Le risque est un poil trop grand.
Du coup je préfère que ce soit une appli indépendante.
Pour ça j&#39;utilise &lt;a href=&#34;https://lord.re/posts/36-gestionnaire-passwords/&#34;&gt;password-store&lt;/a&gt; (hoouuu le vieil article qui a dix ans !) mais pour récup un mot de passe j&#39;utilise &lt;strong&gt;menupass&lt;/strong&gt;.&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;/usr/local/bin/fuzzel-pass&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/usr/bin/env bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;shopt -s nullglob globstar
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;typeit&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[[&lt;/span&gt; $1 &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;--type&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;]]&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	typeit&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	shift
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[[&lt;/span&gt; -n $WAYLAND_DISPLAY &lt;span style=&#34;color:#f92672&#34;&gt;]]&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	dmenu&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;fuzzel --dmenu --prompt &amp;#39;🔐 Password :&amp;#39;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	xdotool&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/usr/local/bin/wtype -&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;elif&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[[&lt;/span&gt; -n $DISPLAY &lt;span style=&#34;color:#f92672&#34;&gt;]]&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	dmenu&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;dmenu
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	xdotool&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;xdotool type --clearmodifiers --file -&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Error: No Wayland or X11 display detected&amp;#34;&lt;/span&gt; &amp;gt;&amp;amp;&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	exit &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;prefix&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;PASSWORD_STORE_DIR-~/.password-store&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;password_files&lt;span style=&#34;color:#f92672&#34;&gt;=(&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$prefix&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;/**/*.gpg &lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;password_files&lt;span style=&#34;color:#f92672&#34;&gt;=(&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;password_files[@]#&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$prefix&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;/&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;password_files&lt;span style=&#34;color:#f92672&#34;&gt;=(&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;password_files[@]%.gpg&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;password&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;printf &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;%s\n&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;password_files[@]&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; | fuzzel --dmenu --prompt &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;🔐 Password : &amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[[&lt;/span&gt; -n $password &lt;span style=&#34;color:#f92672&#34;&gt;]]&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;||&lt;/span&gt; exit
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[[&lt;/span&gt; $typeit -eq &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;]]&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	pass show -c &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$password&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; 2&amp;gt;/dev/null
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	pass show &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$password&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; | &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt; IFS&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; read -r pass; printf %s &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$pass&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;; &lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt; | $xdotool
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;fi&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/details&gt;
&lt;p&gt;Lancé par un keybind de sway, ça me montre la liste des entrées et colle celle sélectionnée.
Encore une fois rien de transcendant mais juste un truc qui marche simplement et rapidement.&lt;/p&gt;
&lt;h3 id=&#34;pinentry&#34;&gt;Pinentry &lt;a href=&#34;#pinentry&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Ha d&#39;ailleurs en parlant de gestionnaire de mot de passe : le &lt;strong&gt;pinentry&lt;/strong&gt;.
C&#39;est un ptit programme pour entrer un mot de passe.
Ça peut être utilisé en plusieurs occasions et usuellement c&#39;est soit dans le terminal soit par une ptit gui en gtk ou en qt.
Mais franchement nous ne sommes pas des sauvages, pourquoi utiliser des trucs si lourds juste pour entrer un mot de passe ?&lt;/p&gt;
&lt;p&gt;Allez hop !&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;/usr/local/bin/pinentry-fuzzel&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/bin/sh
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;OK Please go ahead&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;while&lt;/span&gt; read stdin; &lt;span style=&#34;color:#66d9ef&#34;&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; $stdin in
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	GETPIN | getpin&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;D &lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;fuzzel --prompt-only &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Passphrase: &amp;#34;&lt;/span&gt; --cache /dev/null --password --dmenu&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;OK&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	BYE | bye&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;OK closing connection&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		exit &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	*&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;OK&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;esac&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;done&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/details&gt;
&lt;p&gt;Vous remarquerez l&#39;utilisation de l&#39;option &lt;kbd&gt;--password&lt;/kbd&gt; pour ne pas afficher le texte tapé.
Il y a aussi l&#39;option &lt;kbd&gt;--prompt-only&lt;/kbd&gt; qui évite d&#39;afficher les résultats pour alléger l&#39;interface.
Et oui il y a tout ce qu&#39;il faut comme options.&lt;/p&gt;
&lt;p&gt;Et hop, plus qu&#39;à configurer votre OS pour qu&#39;il soit utilisé comme alternative à pinentry.
J&#39;ai fait le sagouin, j&#39;ai linké /usr/bin/pinentry à /usr/local/bin/pinentry-fuzzel.&lt;/p&gt;
&lt;h3 id=&#34;twitch&#34;&gt;Twitch &lt;a href=&#34;#twitch&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Autant j&#39;ai très fortement diminué mon utilisation de youtube, j&#39;ai pas mal augmenté ma consommation de twitch.
Mais je n&#39;utilise quasiment pas le site qui est lourdingue, lent et rempli de pub.
Je me connecte au chat directement via mon client IRC et je regarde le flux vidéo depuis &lt;strong&gt;mpv&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Mais pour lancer ça je passe encore une fois par &lt;strong&gt;twitch-fuzzel&lt;/strong&gt; :&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;/usr/local/bin/fuzzel-twitch&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#! /bin/sh
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;streams&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;antoinedaniel
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;alphacast
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;angledroit
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;avamind
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;aypierre
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;bagherajones 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;clemovitch
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;domingo
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;etoiles
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;gilles_stella
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;hortyunderscore
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;joueur_du_grenier
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;jungo
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;karimdebbache
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;laink
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;mistermv
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;moman
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;mynthos
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;ponce
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;rivenzi
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;tpk_live 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;zerator
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;zevent 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;zeventplays&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;exec mpv https://www.twitch.tv/&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$streams&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; | fuzzel --dmenu --prompt &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;📼  : &amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt; --no-resume-playback --profile&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;stream&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/details&gt;
&lt;p&gt;Encore une fois c&#39;est tout bidon mais ça fait le taff.&lt;/p&gt;
&lt;h3 id=&#34;fuzzel-emoji&#34;&gt;Fuzzel-emoji &lt;a href=&#34;#fuzzel-emoji&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Vous êtes modernes et jeunes et voulez ponctuer vos textes d&#39;emoji mais votre clavier n&#39;a pas les 2000 touches requises ?!
Cry no more et rabattez-vous sur &lt;a href=&#34;https://github.com/end-4/fuzzel-emoji&#34;&gt;fuzzel-emoji&lt;/a&gt; !&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;/usr/local/bin/fuzzel-emoji&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt; $? -eq &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    sed &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;1,/^### DATA ###$/d&amp;#39;&lt;/span&gt; $0 | fuzzel --match-mode&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;exact --background-color&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;1A1513dd --text-color&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;F8D4D2ff --match-color&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;FFB3B1ff --border-width&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt; --border-radius&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;15&lt;/span&gt; --border-color&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;EB8A89ff	 --selection-color&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;585b70ff --selection-text-color&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;F8D4D2ff --selection-match-color&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;FFB3B1ff --prompt&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;gt;&amp;gt;  &amp;#34;&lt;/span&gt; --dmenu | cut -d &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; &amp;#39;&lt;/span&gt; -f &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; | tr -d &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;\n&amp;#39;&lt;/span&gt; | wtype -
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    sed &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;1,/^### DATA ###$/d&amp;#39;&lt;/span&gt; $0 | fuzzel --icon-theme&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;candy-icons --background-color&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;1A1513dd --text-color&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;F8D4D2ff --match-color&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;FFB3B1ff --border-width&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt; --border-radius&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;15&lt;/span&gt; --border-color&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;EB8A89ff	 --selection-color&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;585b70ff --selection-text-color&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;F8D4D2ff --selection-match-color&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;FFB3B1ff --font&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Lexend&amp;#34;&lt;/span&gt;  --prompt&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;gt;&amp;gt;  &amp;#34;&lt;/span&gt; --dmenu | cut -d &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; &amp;#39;&lt;/span&gt; -f &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; | tr -d &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;\n&amp;#39;&lt;/span&gt; | wl-copy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;exit
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;### DATA ###&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😀 grinning face face smile happy joy :D grin
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😃 grinning face with big eyes face happy joy haha :D :&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; smile funny
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😄 grinning face with smiling eyes face happy joy funny haha laugh like :D :&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; smile
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😁 beaming face with smiling eyes face happy smile joy kawaii
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😆 grinning squinting face happy joy lol satisfied haha face glad XD laugh
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😅 grinning face with sweat face hot happy laugh sweat smile relief
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤣 rolling on the floor laughing face rolling floor laughing lol haha rofl
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😂 face with tears of joy face cry tears weep happy happytears haha
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🙂 slightly smiling face face smile
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🙃 upside down face face flipped silly smile
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😉 winking face face happy mischievous secret ;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; smile eye
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😊 smiling face with smiling eyes face smile happy flushed crush embarrassed shy joy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😇 smiling face with halo face angel heaven halo
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥰 smiling face with hearts face love like affection valentines infatuation crush hearts adore
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😍 smiling face with heart eyes face love like affection valentines infatuation crush heart
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤩 star struck face smile starry eyes grinning
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😘 face blowing a kiss face love like affection valentines infatuation kiss
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😗 kissing face love like face &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt; valentines infatuation kiss
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;☺️ smiling face face blush massage happiness
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😚 kissing face with closed eyes face love like affection valentines infatuation kiss
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😙 kissing face with smiling eyes face affection valentines infatuation kiss
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😋 face savoring food happy joy tongue smile face silly yummy nom delicious savouring
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😛 face with tongue face prank childish playful mischievous smile tongue
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😜 winking face with tongue face prank childish playful mischievous smile wink tongue
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤪 zany face face goofy crazy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😝 squinting face with tongue face prank playful mischievous smile tongue
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤑 money mouth face face rich dollar money
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤗 hugging face face smile hug
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤭 face with hand over mouth face whoops shock surprise
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤫 shushing face face quiet shhh
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤔 thinking face face hmmm think consider
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤐 zipper mouth face face sealed zipper secret
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤨 face with raised eyebrow face distrust scepticism disapproval disbelief surprise
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😐 neutral face indifference meh :| neutral
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😑 expressionless face face indifferent - - meh deadpan
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😶 face without mouth face hellokitty
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😏 smirking face face smile mean prank smug sarcasm
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😒 unamused face indifference bored straight face serious sarcasm unimpressed skeptical dubious side eye
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🙄 face with rolling eyes face eyeroll frustrated
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😬 grimacing face face grimace teeth
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤥 lying face face lie pinocchio
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😌 relieved face face relaxed phew massage happiness
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😔 pensive face face sad depressed upset
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😪 sleepy face face tired rest nap
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤤 drooling face face
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😴 sleeping face face tired sleepy night zzz
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😷 face with medical mask face sick ill disease
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤒 face with thermometer sick temperature thermometer cold fever
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤕 face with head bandage injured clumsy bandage hurt
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤢 nauseated face face vomit gross green sick throw up ill
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤮 face vomiting face sick
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤧 sneezing face face gesundheit sneeze sick allergy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥵 hot face face feverish heat red sweating
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥶 cold face face blue freezing frozen frostbite icicles
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥴 woozy face face dizzy intoxicated tipsy wavy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😵 dizzy face spent unconscious xox dizzy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤯 exploding head face shocked mind blown
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤠 cowboy hat face face cowgirl hat
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥳 partying face face celebration woohoo
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😎 smiling face with sunglasses face cool smile summer beach sunglass
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤓 nerd face face nerdy geek dork
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧐 face with monocle face stuffy wealthy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😕 confused face face indifference huh weird hmmm :/
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😟 worried face face concern nervous :&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🙁 slightly frowning face face frowning disappointed sad upset
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;☹️ frowning face face sad upset frown
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😮 face with open mouth face surprise impressed wow whoa :O
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😯 hushed face face woo shh
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😲 astonished face face xox surprised poisoned
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😳 flushed face face blush shy flattered
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥺 pleading face face begging mercy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😦 frowning face with open mouth face aw what
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😧 anguished face face stunned nervous
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😨 fearful face face scared terrified nervous oops huh
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😰 anxious face with sweat face nervous sweat
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😥 sad but relieved face face phew sweat nervous
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😢 crying face face tears sad depressed upset :&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😭 loudly crying face face cry tears sad upset depressed
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😱 face screaming in fear face munch scared omg
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😖 confounded face face confused sick unwell oops :S
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😣 persevering face face sick no upset oops
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😞 disappointed face face sad upset depressed :&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😓 downcast face with sweat face hot sad tired exercise
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😩 weary face face tired sleepy sad frustrated upset
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😫 tired face sick whine upset frustrated
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥱 yawning face tired sleepy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😤 face with steam from nose face gas phew proud pride
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😡 pouting face angry mad hate despise
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😠 angry face mad face annoyed frustrated
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤬 face with symbols on mouth face swearing cursing cussing profanity expletive
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😈 smiling face with horns devil horns
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👿 angry face with horns devil angry horns
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💀 skull dead skeleton creepy death
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;☠️ skull and crossbones poison danger deadly scary death pirate evil
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💩 pile of poo hankey shitface fail turd shit
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤡 clown face face
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👹 ogre monster red mask halloween scary creepy devil demon japanese ogre
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👺 goblin red evil mask monster scary creepy japanese goblin
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👻 ghost halloween spooky scary
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👽 alien UFO paul weird outer space
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👾 alien monster game arcade play
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤖 robot computer machine bot
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😺 grinning cat animal cats happy smile
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😸 grinning cat with smiling eyes animal cats smile
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😹 cat with tears of joy animal cats haha happy tears
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😻 smiling cat with heart eyes animal love like affection cats valentines heart
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😼 cat with wry smile animal cats smirk
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😽 kissing cat animal cats kiss
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🙀 weary cat animal cats munch scared scream
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😿 crying cat animal tears weep sad cats upset cry
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😾 pouting cat animal cats
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🙈 see no evil monkey monkey animal nature haha
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🙉 hear no evil monkey animal monkey nature
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🙊 speak no evil monkey monkey animal nature omg
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💋 kiss mark face lips love like affection valentines
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💌 love letter email like affection envelope valentines
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💘 heart with arrow love like heart affection valentines
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💝 heart with ribbon love valentines
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💖 sparkling heart love like affection valentines
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💗 growing heart like love affection valentines pink
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💓 beating heart love like affection valentines pink heart
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💞 revolving hearts love like affection valentines
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💕 two hearts love like affection valentines heart
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💟 heart decoration purple-square love like
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;❣️ heart exclamation decoration love
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💔 broken heart sad sorry break heart heartbreak
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;❤️ red heart love like valentines
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧡 orange heart love like affection valentines
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💛 yellow heart love like affection valentines
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💚 green heart love like affection valentines
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💙 blue heart love like affection valentines
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💜 purple heart love like affection valentines
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤎 brown heart coffee
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🖤 black heart evil
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤍 white heart pure
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💯 hundred points score perfect numbers century exam quiz test pass hundred
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💢 anger symbol angry mad
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💥 collision bomb explode explosion collision blown
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💫 dizzy star sparkle shoot magic
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💦 sweat droplets water drip oops
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💨 dashing away wind air fast shoo fart smoke puff
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🕳️ hole embarrassing
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💣 bomb boom explode explosion terrorism
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💬 speech balloon bubble words message talk chatting
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👁️‍🗨️ eye in speech bubble info
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🗨️ left speech bubble words message talk chatting
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🗯️ right anger bubble caption speech thinking mad
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💭 thought balloon bubble cloud speech thinking dream
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💤 zzz sleepy tired dream
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👋 waving hand hands gesture goodbye solong farewell hello hi palm
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤚 raised back of hand fingers raised backhand
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🖐️ hand with fingers splayed hand fingers palm
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;✋ raised hand fingers stop highfive palm ban
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🖖 vulcan salute hand fingers spock star trek
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👌 ok hand fingers limbs perfect ok okay
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤏 pinching hand tiny small size
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;✌️ victory hand fingers ohyeah hand peace victory two
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤞 crossed fingers good lucky
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤟 love you gesture hand fingers gesture
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤘 sign of the horns hand fingers evil eye sign of horns rock on
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤙 call me hand hands gesture shaka
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👈 backhand index pointing left direction fingers hand left
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👉 backhand index pointing right fingers hand direction right
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👆 backhand index pointing up fingers hand direction up
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🖕 middle finger hand fingers rude middle flipping
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👇 backhand index pointing down fingers hand direction down
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;☝️ index pointing up hand fingers direction up
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👍 thumbs up thumbsup yes awesome good agree accept cool hand like +1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👎 thumbs down thumbsdown no dislike hand -1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;✊ raised fist fingers hand grasp
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👊 oncoming fist angry violence fist hit attack hand
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤛 left facing fist hand fistbump
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤜 right facing fist hand fistbump
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👏 clapping hands hands praise applause congrats yay
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🙌 raising hands gesture hooray yea celebration hands
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👐 open hands fingers butterfly hands open
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤲 palms up together hands gesture cupped prayer
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤝 handshake agreement shake
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🙏 folded hands please hope wish namaste highfive pray
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;✍️ writing hand lower left ballpoint pen stationery write compose
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💅 nail polish beauty manicure finger fashion nail
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤳 selfie camera phone
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💪 flexed biceps arm flex hand summer strong biceps
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦾 mechanical arm accessibility
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦿 mechanical leg accessibility
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦵 leg kick limb
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦶 foot kick stomp
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👂 ear face hear sound listen
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦻 ear with hearing aid accessibility
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👃 nose smell sniff
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧠 brain smart intelligent
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦷 tooth teeth dentist
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦴 bone skeleton
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👀 eyes look watch stalk peek see
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👁️ eye face look see watch stare
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👅 tongue mouth playful
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👄 mouth mouth kiss
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👶 baby child boy girl toddler
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧒 child gender-neutral young
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👦 boy man male guy teenager
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👧 girl female woman teenager
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧑 person gender-neutral person
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👱 person blond hair hairstyle
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👨 man mustache father dad guy classy sir moustache
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧔 man beard person bewhiskered
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👨‍🦰 man red hair hairstyle
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👨‍🦱 man curly hair hairstyle
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👨‍🦳 man white hair old elder
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👨‍🦲 man bald hairless
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👩 woman female girls lady
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👩‍🦰 woman red hair hairstyle
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧑‍🦰 person red hair hairstyle
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👩‍🦱 woman curly hair hairstyle
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧑‍🦱 person curly hair hairstyle
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👩‍🦳 woman white hair old elder
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧑‍🦳 person white hair elder old
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👩‍🦲 woman bald hairless
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧑‍🦲 person bald hairless
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👱‍♀️ woman blond hair woman female girl blonde person
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👱‍♂️ man blond hair man male boy blonde guy person
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧓 older person human elder senior gender-neutral
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👴 old man human male men old elder senior
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👵 old woman human female women lady old elder senior
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🙍 person frowning worried
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🙍‍♂️ man frowning male boy man sad depressed discouraged unhappy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🙍‍♀️ woman frowning female girl woman sad depressed discouraged unhappy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🙎 person pouting upset
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🙎‍♂️ man pouting male boy man
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🙎‍♀️ woman pouting female girl woman
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🙅 person gesturing no decline
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🙅‍♂️ man gesturing no male boy man nope
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🙅‍♀️ woman gesturing no female girl woman nope
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🙆 person gesturing ok agree
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🙆‍♂️ man gesturing ok men boy male blue human man
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🙆‍♀️ woman gesturing ok women girl female pink human woman
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💁 person tipping hand information
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💁‍♂️ man tipping hand male boy man human information
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💁‍♀️ woman tipping hand female girl woman human information
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🙋 person raising hand question
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🙋‍♂️ man raising hand male boy man
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🙋‍♀️ woman raising hand female girl woman
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧏 deaf person accessibility
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧏‍♂️ deaf man accessibility
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧏‍♀️ deaf woman accessibility
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🙇 person bowing respectiful
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🙇‍♂️ man bowing man male boy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🙇‍♀️ woman bowing woman female girl
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤦 person facepalming disappointed
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤦‍♂️ man facepalming man male boy disbelief
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤦‍♀️ woman facepalming woman female girl disbelief
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤷 person shrugging regardless
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤷‍♂️ man shrugging man male boy confused indifferent doubt
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤷‍♀️ woman shrugging woman female girl confused indifferent doubt
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧑‍⚕️ health worker hospital
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👨‍⚕️ man health worker doctor nurse therapist healthcare man human
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👩‍⚕️ woman health worker doctor nurse therapist healthcare woman human
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧑‍🎓 student learn
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👨‍🎓 man student graduate man human
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👩‍🎓 woman student graduate woman human
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧑‍🏫 teacher professor
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👨‍🏫 man teacher instructor professor man human
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👩‍🏫 woman teacher instructor professor woman human
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧑‍⚖️ judge law
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👨‍⚖️ man judge justice court man human
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👩‍⚖️ woman judge justice court woman human
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧑‍🌾 farmer crops
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👨‍🌾 man farmer rancher gardener man human
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👩‍🌾 woman farmer rancher gardener woman human
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧑‍🍳 cook food kitchen culinary
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👨‍🍳 man cook chef man human
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👩‍🍳 woman cook chef woman human
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧑‍🔧 mechanic worker technician
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👨‍🔧 man mechanic plumber man human wrench
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👩‍🔧 woman mechanic plumber woman human wrench
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧑‍🏭 factory worker labor
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👨‍🏭 man factory worker assembly industrial man human
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👩‍🏭 woman factory worker assembly industrial woman human
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧑‍💼 office worker business
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👨‍💼 man office worker business manager man human
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👩‍💼 woman office worker business manager woman human
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧑‍🔬 scientist chemistry
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👨‍🔬 man scientist biologist chemist engineer physicist man human
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👩‍🔬 woman scientist biologist chemist engineer physicist woman human
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧑‍💻 technologist computer
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👨‍💻 man technologist coder developer engineer programmer software man human laptop computer
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👩‍💻 woman technologist coder developer engineer programmer software woman human laptop computer
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧑‍🎤 singer song artist performer
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👨‍🎤 man singer rockstar entertainer man human
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👩‍🎤 woman singer rockstar entertainer woman human
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧑‍🎨 artist painting draw creativity
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👨‍🎨 man artist painter man human
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👩‍🎨 woman artist painter woman human
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧑‍✈️ pilot fly plane airplane
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👨‍✈️ man pilot aviator plane man human
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👩‍✈️ woman pilot aviator plane woman human
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧑‍🚀 astronaut outerspace
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👨‍🚀 man astronaut space rocket man human
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👩‍🚀 woman astronaut space rocket woman human
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧑‍🚒 firefighter fire
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👨‍🚒 man firefighter fireman man human
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👩‍🚒 woman firefighter fireman woman human
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👮 police officer cop
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👮‍♂️ man police officer man police law legal enforcement arrest &lt;span style=&#34;color:#ae81ff&#34;&gt;911&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👮‍♀️ woman police officer woman police law legal enforcement arrest &lt;span style=&#34;color:#ae81ff&#34;&gt;911&lt;/span&gt; female
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🕵️ detective human spy detective
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🕵️‍♂️ man detective crime
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🕵️‍♀️ woman detective human spy detective female woman
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💂 guard protect
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💂‍♂️ man guard uk gb british male guy royal
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💂‍♀️ woman guard uk gb british female royal woman
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👷 construction worker labor build
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👷‍♂️ man construction worker male human wip guy build construction worker labor
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👷‍♀️ woman construction worker female human wip build construction worker labor woman
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤴 prince boy man male crown royal king
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👸 princess girl woman female blond crown royal queen
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👳 person wearing turban headdress
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👳‍♂️ man wearing turban male indian hinduism arabs
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👳‍♀️ woman wearing turban female indian hinduism arabs woman
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👲 man with skullcap male boy chinese
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧕 woman with headscarf female hijab mantilla tichel
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤵 man in tuxedo couple marriage wedding groom
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👰 bride with veil couple marriage wedding woman bride
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤰 pregnant woman baby
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤱 breast feeding nursing baby
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👼 baby angel heaven wings halo
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎅 santa claus festival man male xmas father christmas
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤶 mrs claus woman female xmas mother christmas
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦸 superhero marvel
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦸‍♂️ man superhero man male good hero superpowers
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦸‍♀️ woman superhero woman female good heroine superpowers
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦹 supervillain marvel
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦹‍♂️ man supervillain man male evil bad criminal hero superpowers
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦹‍♀️ woman supervillain woman female evil bad criminal heroine superpowers
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧙 mage magic
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧙‍♂️ man mage man male mage sorcerer
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧙‍♀️ woman mage woman female mage witch
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧚 fairy wings magical
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧚‍♂️ man fairy man male
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧚‍♀️ woman fairy woman female
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧛 vampire blood twilight
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧛‍♂️ man vampire man male dracula
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧛‍♀️ woman vampire woman female
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧜 merperson sea
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧜‍♂️ merman man male triton
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧜‍♀️ mermaid woman female merwoman ariel
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧝 elf magical
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧝‍♂️ man elf man male
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧝‍♀️ woman elf woman female
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧞 genie magical wishes
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧞‍♂️ man genie man male
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧞‍♀️ woman genie woman female
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧟 zombie dead
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧟‍♂️ man zombie man male dracula undead walking dead
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧟‍♀️ woman zombie woman female undead walking dead
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💆 person getting massage relax
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💆‍♂️ man getting massage male boy man head
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💆‍♀️ woman getting massage female girl woman head
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💇 person getting haircut hairstyle
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💇‍♂️ man getting haircut male boy man
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💇‍♀️ woman getting haircut female girl woman
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚶 person walking move
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚶‍♂️ man walking human feet steps
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚶‍♀️ woman walking human feet steps woman female
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧍 person standing still
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧍‍♂️ man standing still
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧍‍♀️ woman standing still
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧎 person kneeling pray respectful
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧎‍♂️ man kneeling pray respectful
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧎‍♀️ woman kneeling respectful pray
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧑‍🦯 person with probing cane blind
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👨‍🦯 man with probing cane blind
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👩‍🦯 woman with probing cane blind
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧑‍🦼 person in motorized wheelchair disability accessibility
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👨‍🦼 man in motorized wheelchair disability accessibility
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👩‍🦼 woman in motorized wheelchair disability accessibility
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧑‍🦽 person in manual wheelchair disability accessibility
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👨‍🦽 man in manual wheelchair disability accessibility
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👩‍🦽 woman in manual wheelchair disability accessibility
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏃 person running move
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏃‍♂️ man running man walking exercise race running
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏃‍♀️ woman running woman walking exercise race running female
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💃 woman dancing female girl woman fun
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🕺 man dancing male boy fun dancer
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🕴️ man in suit levitating suit business levitate hover jump
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👯 people with bunny ears perform costume
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👯‍♂️ men with bunny ears male bunny men boys
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👯‍♀️ women with bunny ears female bunny women girls
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧖 person in steamy room relax spa
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧖‍♂️ man in steamy room male man spa steamroom sauna
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧖‍♀️ woman in steamy room female woman spa steamroom sauna
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧗 person climbing sport
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧗‍♂️ man climbing sports hobby man male rock
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧗‍♀️ woman climbing sports hobby woman female rock
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤺 person fencing sports fencing sword
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏇 horse racing animal betting competition gambling luck
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⛷️ skier sports winter snow
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏂 snowboarder sports winter
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏌️ person golfing sports business
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏌️‍♂️ man golfing sport
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏌️‍♀️ woman golfing sports business woman female
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏄 person surfing sport sea
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏄‍♂️ man surfing sports ocean sea summer beach
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏄‍♀️ woman surfing sports ocean sea summer beach woman female
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚣 person rowing boat sport move
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚣‍♂️ man rowing boat sports hobby water ship
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚣‍♀️ woman rowing boat sports hobby water ship woman female
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏊 person swimming sport pool
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏊‍♂️ man swimming sports exercise human athlete water summer
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏊‍♀️ woman swimming sports exercise human athlete water summer woman female
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⛹️ person bouncing ball sports human
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⛹️‍♂️ man bouncing ball sport
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⛹️‍♀️ woman bouncing ball sports human woman female
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏋️ person lifting weights sports training exercise
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏋️‍♂️ man lifting weights sport
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏋️‍♀️ woman lifting weights sports training exercise woman female
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚴 person biking sport move
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚴‍♂️ man biking sports bike exercise hipster
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚴‍♀️ woman biking sports bike exercise hipster woman female
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚵 person mountain biking sport move
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚵‍♂️ man mountain biking transportation sports human race bike
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚵‍♀️ woman mountain biking transportation sports human race bike woman female
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤸 person cartwheeling sport gymnastic
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤸‍♂️ man cartwheeling gymnastics
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤸‍♀️ woman cartwheeling gymnastics
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤼 people wrestling sport
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤼‍♂️ men wrestling sports wrestlers
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤼‍♀️ women wrestling sports wrestlers
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤽 person playing water polo sport
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤽‍♂️ man playing water polo sports pool
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤽‍♀️ woman playing water polo sports pool
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤾 person playing handball sport
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤾‍♂️ man playing handball sports
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤾‍♀️ woman playing handball sports
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤹 person juggling performance balance
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤹‍♂️ man juggling juggle balance skill multitask
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤹‍♀️ woman juggling juggle balance skill multitask
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧘 person in lotus position meditate
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧘‍♂️ man in lotus position man male meditation yoga serenity zen mindfulness
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧘‍♀️ woman in lotus position woman female meditation yoga serenity zen mindfulness
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🛀 person taking bath clean shower bathroom
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🛌 person in bed bed rest
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧑‍🤝‍🧑 people holding hands friendship
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👭 women holding hands pair friendship couple love like female people human
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👫 woman and man holding hands pair people human love date dating like affection valentines marriage
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👬 men holding hands pair couple love like bromance friendship people human
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💏 kiss pair valentines love like dating marriage
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👩‍❤️‍💋‍👨 kiss woman man love
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👨‍❤️‍💋‍👨 kiss man man pair valentines love like dating marriage
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👩‍❤️‍💋‍👩 kiss woman woman pair valentines love like dating marriage
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💑 couple with heart pair love like affection human dating valentines marriage
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👩‍❤️‍👨 couple with heart woman man love
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👨‍❤️‍👨 couple with heart man man pair love like affection human dating valentines marriage
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👩‍❤️‍👩 couple with heart woman woman pair love like affection human dating valentines marriage
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👪 family home parents child mom dad father mother people human
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👨‍👩‍👦 family man woman boy love
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👨‍👩‍👧 family man woman girl home parents people human child
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👨‍👩‍👧‍👦 family man woman girl boy home parents people human children
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👨‍👩‍👦‍👦 family man woman boy boy home parents people human children
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👨‍👩‍👧‍👧 family man woman girl girl home parents people human children
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👨‍👨‍👦 family man man boy home parents people human children
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👨‍👨‍👧 family man man girl home parents people human children
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👨‍👨‍👧‍👦 family man man girl boy home parents people human children
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👨‍👨‍👦‍👦 family man man boy boy home parents people human children
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👨‍👨‍👧‍👧 family man man girl girl home parents people human children
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👩‍👩‍👦 family woman woman boy home parents people human children
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👩‍👩‍👧 family woman woman girl home parents people human children
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👩‍👩‍👧‍👦 family woman woman girl boy home parents people human children
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👩‍👩‍👦‍👦 family woman woman boy boy home parents people human children
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👩‍👩‍👧‍👧 family woman woman girl girl home parents people human children
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👨‍👦 family man boy home parent people human child
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👨‍👦‍👦 family man boy boy home parent people human children
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👨‍👧 family man girl home parent people human child
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👨‍👧‍👦 family man girl boy home parent people human children
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👨‍👧‍👧 family man girl girl home parent people human children
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👩‍👦 family woman boy home parent people human child
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👩‍👦‍👦 family woman boy boy home parent people human children
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👩‍👧 family woman girl home parent people human child
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👩‍👧‍👦 family woman girl boy home parent people human children
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👩‍👧‍👧 family woman girl girl home parent people human children
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🗣️ speaking head user person human sing say talk
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👤 bust in silhouette user person human
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👥 busts in silhouette user person human group team
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👣 footprints feet tracking walking beach
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐵 monkey face animal nature circus
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐒 monkey animal nature banana circus
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦍 gorilla animal nature circus
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦧 orangutan animal
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐶 dog face animal friend nature woof puppy pet faithful
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐕 dog animal nature friend doge pet faithful
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦮 guide dog animal blind
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐕‍🦺 service dog blind animal
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐩 poodle dog animal &lt;span style=&#34;color:#ae81ff&#34;&gt;101&lt;/span&gt; nature pet
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐺 wolf animal nature wild
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦊 fox animal nature face
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦝 raccoon animal nature
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐱 cat face animal meow nature pet kitten
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐈 cat animal meow pet cats
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦁 lion animal nature
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐯 tiger face animal cat danger wild nature roar
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐅 tiger animal nature roar
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐆 leopard animal nature
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐴 horse face animal brown nature
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐎 horse animal gamble luck
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦄 unicorn animal nature mystical
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦓 zebra animal nature stripes safari
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦌 deer animal nature horns venison
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐮 cow face beef ox animal nature moo milk
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐂 ox animal cow beef
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐃 water buffalo animal nature ox cow
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐄 cow beef ox animal nature moo milk
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐷 pig face animal oink nature
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐖 pig animal nature
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐗 boar animal nature
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐽 pig nose animal oink
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐏 ram animal sheep nature
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐑 ewe animal nature wool shipit
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐐 goat animal nature
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐪 camel animal hot desert hump
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐫 two hump camel animal nature hot desert hump
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦙 llama animal nature alpaca
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦒 giraffe animal nature spots safari
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐘 elephant animal nature nose th circus
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦏 rhinoceros animal nature horn
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦛 hippopotamus animal nature
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐭 mouse face animal nature cheese wedge rodent
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐁 mouse animal nature rodent
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐀 rat animal mouse rodent
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐹 hamster animal nature
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐰 rabbit face animal nature pet spring magic bunny
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐇 rabbit animal nature pet magic spring
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐿️ chipmunk animal nature rodent squirrel
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦔 hedgehog animal nature spiny
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦇 bat animal nature blind vampire
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐻 bear animal nature wild
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐨 koala animal nature
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐼 panda animal nature panda
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦥 sloth animal
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦦 otter animal
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦨 skunk animal
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦘 kangaroo animal nature australia joey hop marsupial
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦡 badger animal nature honey
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐾 paw prints animal tracking footprints dog cat pet feet
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦃 turkey animal bird
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐔 chicken animal cluck nature bird
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐓 rooster animal nature chicken
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐣 hatching chick animal chicken egg born baby bird
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐤 baby chick animal chicken bird
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐥 front facing baby chick animal chicken baby bird
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐦 bird animal nature fly tweet spring
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐧 penguin animal nature
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🕊️ dove animal bird
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦅 eagle animal nature bird
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦆 duck animal nature bird mallard
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦢 swan animal nature bird
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦉 owl animal nature bird hoot
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦩 flamingo animal
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦚 peacock animal nature peahen bird
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦜 parrot animal nature bird pirate talk
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐸 frog animal nature croak toad
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐊 crocodile animal nature reptile lizard alligator
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐢 turtle animal slow nature tortoise
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦎 lizard animal nature reptile
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐍 snake animal evil nature hiss python
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐲 dragon face animal myth nature chinese green
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐉 dragon animal myth nature chinese green
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦕 sauropod animal nature dinosaur brachiosaurus brontosaurus diplodocus extinct
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦖 t rex animal nature dinosaur tyrannosaurus extinct
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐳 spouting whale animal nature sea ocean
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐋 whale animal nature sea ocean
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐬 dolphin animal nature fish sea ocean flipper fins beach
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐟 fish animal food nature
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐠 tropical fish animal swim ocean beach nemo
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐡 blowfish animal nature food sea ocean
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦈 shark animal nature fish sea ocean jaws fins beach
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐙 octopus animal creature ocean sea nature beach
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐚 spiral shell nature sea beach
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐌 snail slow animal shell
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦋 butterfly animal insect nature caterpillar
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐛 bug animal insect nature worm
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐜 ant animal insect nature bug
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐝 honeybee animal insect nature bug spring honey
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐞 lady beetle animal insect nature ladybug
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦗 cricket animal cricket chirp
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🕷️ spider animal arachnid
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🕸️ spider web animal insect arachnid silk
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦂 scorpion animal arachnid
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦟 mosquito animal nature insect malaria
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦠 microbe amoeba bacteria germs virus
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💐 bouquet flowers nature spring
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌸 cherry blossom nature plant spring flower
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💮 white flower japanese spring
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏵️ rosette flower decoration military
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌹 rose flowers valentines love spring
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥀 wilted flower plant nature flower
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌺 hibiscus plant vegetable flowers beach
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌻 sunflower nature plant fall
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌼 blossom nature flowers yellow
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌷 tulip flowers plant nature summer spring
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌱 seedling plant nature grass lawn spring
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌲 evergreen tree plant nature
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌳 deciduous tree plant nature
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌴 palm tree plant vegetable nature summer beach mojito tropical
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌵 cactus vegetable plant nature
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌾 sheaf of rice nature plant
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌿 herb vegetable plant medicine weed grass lawn
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;☘️ shamrock vegetable plant nature irish clover
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍀 four leaf clover vegetable plant nature lucky irish
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍁 maple leaf nature plant vegetable ca fall
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍂 fallen leaf nature plant vegetable leaves
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍃 leaf fluttering in wind nature plant tree vegetable grass lawn spring
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍇 grapes fruit food wine
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍈 melon fruit nature food
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍉 watermelon fruit food picnic summer
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍊 tangerine food fruit nature orange
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍋 lemon fruit nature
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍌 banana fruit food monkey
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍍 pineapple fruit nature food
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥭 mango fruit food tropical
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍎 red apple fruit mac school
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍏 green apple fruit nature
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍐 pear fruit nature food
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍑 peach fruit nature food
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍒 cherries food fruit
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍓 strawberry fruit food nature
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥝 kiwi fruit fruit food
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍅 tomato fruit vegetable nature food
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥥 coconut fruit nature food palm
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥑 avocado fruit food
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍆 eggplant vegetable nature food aubergine
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥔 potato food tuber vegatable starch
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥕 carrot vegetable food orange
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌽 ear of corn food vegetable plant
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌶️ hot pepper food spicy chilli chili
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥒 cucumber fruit food pickle
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥬 leafy green food vegetable plant bok choy cabbage kale lettuce
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥦 broccoli fruit food vegetable
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧄 garlic food spice cook
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧅 onion cook food spice
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍄 mushroom plant vegetable
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥜 peanuts food nut
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌰 chestnut food squirrel
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍞 bread food wheat breakfast toast
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥐 croissant food bread french
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥖 baguette bread food bread french
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥨 pretzel food bread twisted
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥯 bagel food bread bakery schmear
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥞 pancakes food breakfast flapjacks hotcakes
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧇 waffle food breakfast
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧀 cheese wedge food chadder
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍖 meat on bone good food drumstick
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍗 poultry leg food meat drumstick bird chicken turkey
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥩 cut of meat food cow meat cut chop lambchop porkchop
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥓 bacon food breakfast pork pig meat
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍔 hamburger meat fast food beef cheeseburger mcdonalds burger king
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍟 french fries chips snack fast food
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍕 pizza food party
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌭 hot dog food frankfurter
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥪 sandwich food lunch bread
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌮 taco food mexican
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌯 burrito food mexican
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥙 stuffed flatbread food flatbread stuffed gyro
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧆 falafel food
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥚 egg food chicken breakfast
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍳 cooking food breakfast kitchen egg
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥘 shallow pan of food food cooking casserole paella
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍲 pot of food food meat soup
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥣 bowl with spoon food breakfast cereal oatmeal porridge
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥗 green salad food healthy lettuce
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍿 popcorn food movie theater films snack
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧈 butter food cook
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧂 salt condiment shaker
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥫 canned food food soup
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍱 bento box food japanese box
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍘 rice cracker food japanese
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍙 rice ball food japanese
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍚 cooked rice food china asian
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍛 curry rice food spicy hot indian
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍜 steaming bowl food japanese noodle chopsticks
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍝 spaghetti food italian noodle
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍠 roasted sweet potato food nature
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍢 oden food japanese
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍣 sushi food fish japanese rice
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍤 fried shrimp food animal appetizer summer
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍥 fish cake with swirl food japan sea beach narutomaki pink swirl kamaboko surimi ramen
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥮 moon cake food autumn
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍡 dango food dessert sweet japanese barbecue meat
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥟 dumpling food empanada pierogi potsticker
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥠 fortune cookie food prophecy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥡 takeout box food leftovers
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦀 crab animal crustacean
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦞 lobster animal nature bisque claws seafood
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦐 shrimp animal ocean nature seafood
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦑 squid animal nature ocean sea
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦪 oyster food
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍦 soft ice cream food hot dessert summer
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍧 shaved ice hot dessert summer
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍨 ice cream food hot dessert
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍩 doughnut food dessert snack sweet donut
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍪 cookie food snack oreo chocolate sweet dessert
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎂 birthday cake food dessert cake
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍰 shortcake food dessert
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧁 cupcake food dessert bakery sweet
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥧 pie food dessert pastry
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍫 chocolate bar food snack dessert sweet
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍬 candy snack dessert sweet lolly
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍭 lollipop food snack candy sweet
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍮 custard dessert food
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍯 honey pot bees sweet kitchen
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍼 baby bottle food container milk
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥛 glass of milk beverage drink cow
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;☕ hot beverage beverage caffeine latte espresso coffee
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍵 teacup without handle drink bowl breakfast green british
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍶 sake wine drink drunk beverage japanese alcohol booze
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍾 bottle with popping cork drink wine bottle celebration
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍷 wine glass drink beverage drunk alcohol booze
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍸 cocktail glass drink drunk alcohol beverage booze mojito
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍹 tropical drink beverage cocktail summer beach alcohol booze mojito
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍺 beer mug relax beverage drink drunk party pub summer alcohol booze
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍻 clinking beer mugs relax beverage drink drunk party pub summer alcohol booze
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥂 clinking glasses beverage drink party alcohol celebrate cheers wine champagne toast
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥃 tumbler glass drink beverage drunk alcohol liquor booze bourbon scotch whisky glass shot
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥤 cup with straw drink soda
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧃 beverage box drink
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧉 mate drink tea beverage
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧊 ice water cold
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥢 chopsticks food
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍽️ fork and knife with plate food eat meal lunch dinner restaurant
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🍴 fork and knife cutlery kitchen
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥄 spoon cutlery kitchen tableware
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔪 kitchen knife knife blade cutlery kitchen weapon
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏺 amphora vase jar
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌍 globe showing europe africa globe world international
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌎 globe showing americas globe world USA international
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌏 globe showing asia australia globe world east international
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌐 globe with meridians earth international world internet interweb i18n
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🗺️ world map location direction
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🗾 map of japan nation country japanese asia
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧭 compass magnetic navigation orienteering
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏔️ snow capped mountain photo nature environment winter cold
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⛰️ mountain photo nature environment
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌋 volcano photo nature disaster
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🗻 mount fuji photo mountain nature japanese
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏕️ camping photo outdoors tent
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏖️ beach with umbrella weather summer sunny sand mojito
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏜️ desert photo warm saharah
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏝️ desert island photo tropical mojito
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏞️ national park photo environment nature
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏟️ stadium photo place sports concert venue
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏛️ classical building art culture history
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏗️ building construction wip working progress
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧱 brick bricks
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏘️ houses buildings photo
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏚️ derelict house abandon evict broken building
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏠 house building home
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏡 house with garden home plant nature
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏢 office building building bureau work
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏣 japanese post office building envelope communication
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏤 post office building email
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏥 hospital building health surgery doctor
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏦 bank building money sales cash business enterprise
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏨 hotel building accomodation checkin
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏩 love hotel like affection dating
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏪 convenience store building shopping groceries
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏫 school building student education learn teach
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏬 department store building shopping mall
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏭 factory building industry pollution smoke
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏯 japanese castle photo building
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏰 castle building royalty history
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💒 wedding love like affection couple marriage bride groom
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🗼 tokyo tower photo japanese
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🗽 statue of liberty american newyork
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⛪ church building religion christ
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🕌 mosque islam worship minaret
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🛕 hindu temple religion
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🕍 synagogue judaism worship temple jewish
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⛩️ shinto shrine temple japan kyoto
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🕋 kaaba mecca mosque islam
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⛲ fountain photo summer water fresh
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⛺ tent photo camping outdoors
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌁 foggy photo mountain
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌃 night with stars evening city downtown
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏙️ cityscape photo night life urban
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌄 sunrise over mountains view vacation photo
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌅 sunrise morning view vacation photo
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌆 cityscape at dusk photo evening sky buildings
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌇 sunset photo good morning dawn
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌉 bridge at night photo sanfrancisco
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;♨️ hot springs bath warm relax
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎠 carousel horse photo carnival
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎡 ferris wheel photo carnival londoneye
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎢 roller coaster carnival playground photo fun
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💈 barber pole hair salon style
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎪 circus tent festival carnival party
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚂 locomotive transportation vehicle train
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚃 railway car transportation vehicle
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚄 high speed train transportation vehicle
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚅 bullet train transportation vehicle speed fast public travel
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚆 train transportation vehicle
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚇 metro transportation blue-square mrt underground tube
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚈 light rail transportation vehicle
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚉 station transportation vehicle public
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚊 tram transportation vehicle
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚝 monorail transportation vehicle
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚞 mountain railway transportation vehicle
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚋 tram car transportation vehicle carriage public travel
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚌 bus car vehicle transportation
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚍 oncoming bus vehicle transportation
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚎 trolleybus bart transportation vehicle
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚐 minibus vehicle car transportation
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚑 ambulance health &lt;span style=&#34;color:#ae81ff&#34;&gt;911&lt;/span&gt; hospital
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚒 fire engine transportation cars vehicle
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚓 police car vehicle cars transportation law legal enforcement
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚔 oncoming police car vehicle law legal enforcement &lt;span style=&#34;color:#ae81ff&#34;&gt;911&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚕 taxi uber vehicle cars transportation
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚖 oncoming taxi vehicle cars uber
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚗 automobile red transportation vehicle
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚘 oncoming automobile car vehicle transportation
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚙 sport utility vehicle transportation vehicle
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚚 delivery truck cars transportation
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚛 articulated lorry vehicle cars transportation express
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚜 tractor vehicle car farming agriculture
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏎️ racing car sports race fast formula f1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏍️ motorcycle race sports fast
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🛵 motor scooter vehicle vespa sasha
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦽 manual wheelchair accessibility
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦼 motorized wheelchair accessibility
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🛺 auto rickshaw move transportation
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚲 bicycle sports bicycle exercise hipster
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🛴 kick scooter vehicle kick razor
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🛹 skateboard board
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚏 bus stop transportation wait
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🛣️ motorway road cupertino interstate highway
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🛤️ railway track train transportation
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🛢️ oil drum barrell
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⛽ fuel pump gas station petroleum
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚨 police car light police ambulance &lt;span style=&#34;color:#ae81ff&#34;&gt;911&lt;/span&gt; emergency alert error pinged law legal
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚥 horizontal traffic light transportation signal
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚦 vertical traffic light transportation driving
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🛑 stop sign stop
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚧 construction wip progress caution warning
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⚓ anchor ship ferry sea boat
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⛵ sailboat ship summer transportation water sailing
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🛶 canoe boat paddle water ship
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚤 speedboat ship transportation vehicle summer
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🛳️ passenger ship yacht cruise ferry
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⛴️ ferry boat ship yacht
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🛥️ motor boat ship
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚢 ship transportation titanic deploy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;✈️ airplane vehicle transportation flight fly
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🛩️ small airplane flight transportation fly vehicle
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🛫 airplane departure airport flight landing
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🛬 airplane arrival airport flight boarding
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪂 parachute fly glide
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💺 seat sit airplane transport bus flight fly
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚁 helicopter transportation vehicle fly
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚟 suspension railway vehicle transportation
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚠 mountain cableway transportation vehicle ski
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚡 aerial tramway transportation vehicle ski
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🛰️ satellite communication gps orbit spaceflight NASA ISS
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚀 rocket launch ship staffmode NASA outer space outer space fly
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🛸 flying saucer transportation vehicle ufo
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🛎️ bellhop bell service
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧳 luggage packing travel
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⌛ hourglass &lt;span style=&#34;color:#66d9ef&#34;&gt;done&lt;/span&gt; time clock oldschool limit exam quiz test
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⏳ hourglass not &lt;span style=&#34;color:#66d9ef&#34;&gt;done&lt;/span&gt; oldschool time countdown
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⌚ watch time accessories
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⏰ alarm clock time wake
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⏱️ stopwatch time deadline
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⏲️ timer clock alarm
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🕰️ mantelpiece clock time
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🕛 twelve o clock time noon midnight midday late early schedule
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🕧 twelve thirty time late early schedule
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🕐 one o clock time late early schedule
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🕜 one thirty time late early schedule
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🕑 two o clock time late early schedule
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🕝 two thirty time late early schedule
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🕒 three o clock time late early schedule
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🕞 three thirty time late early schedule
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🕓 four o clock time late early schedule
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🕟 four thirty time late early schedule
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🕔 five o clock time late early schedule
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🕠 five thirty time late early schedule
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🕕 six o clock time late early schedule dawn dusk
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🕡 six thirty time late early schedule
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🕖 seven o clock time late early schedule
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🕢 seven thirty time late early schedule
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🕗 eight o clock time late early schedule
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🕣 eight thirty time late early schedule
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🕘 nine o clock time late early schedule
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🕤 nine thirty time late early schedule
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🕙 ten o clock time late early schedule
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🕥 ten thirty time late early schedule
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🕚 eleven o clock time late early schedule
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🕦 eleven thirty time late early schedule
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌑 new moon nature twilight planet space night evening sleep
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌒 waxing crescent moon nature twilight planet space night evening sleep
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌓 first quarter moon nature twilight planet space night evening sleep
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌔 waxing gibbous moon nature night sky gray twilight planet space evening sleep
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌕 full moon nature yellow twilight planet space night evening sleep
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌖 waning gibbous moon nature twilight planet space night evening sleep waxing gibbous moon
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌗 last quarter moon nature twilight planet space night evening sleep
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌘 waning crescent moon nature twilight planet space night evening sleep
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌙 crescent moon night sleep sky evening magic
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌚 new moon face nature twilight planet space night evening sleep
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌛 first quarter moon face nature twilight planet space night evening sleep
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌜 last quarter moon face nature twilight planet space night evening sleep
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌡️ thermometer weather temperature hot cold
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;☀️ sun weather nature brightness summer beach spring
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌝 full moon face nature twilight planet space night evening sleep
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌞 sun with face nature morning sky
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪐 ringed planet outerspace
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⭐ star night yellow
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌟 glowing star night sparkle awesome good magic
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌠 shooting star night photo
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌌 milky way photo space stars
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;☁️ cloud weather sky
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⛅ sun behind cloud weather nature cloudy morning fall spring
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⛈️ cloud with lightning and rain weather lightning
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌤️ sun behind small cloud weather
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌥️ sun behind large cloud weather
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌦️ sun behind rain cloud weather
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌧️ cloud with rain weather
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌨️ cloud with snow weather
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌩️ cloud with lightning weather thunder
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌪️ tornado weather cyclone twister
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌫️ fog weather
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌬️ wind face gust air
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌀 cyclone weather swirl blue cloud vortex spiral whirlpool spin tornado hurricane typhoon
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌈 rainbow nature happy unicorn face photo sky spring
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌂 closed umbrella weather rain drizzle
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;☂️ umbrella weather spring
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;☔ umbrella with rain drops rainy weather spring
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⛱️ umbrella on ground weather summer
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⚡ high voltage thunder weather lightning bolt fast
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;❄️ snowflake winter season cold weather christmas xmas
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;☃️ snowman winter season cold weather christmas xmas frozen
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⛄ snowman without snow winter season cold weather christmas xmas frozen without snow
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;☄️ comet space
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔥 fire hot cook flame
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💧 droplet water drip faucet spring
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🌊 water wave sea water wave nature tsunami disaster
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎃 jack o lantern halloween light pumpkin creepy fall
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎄 christmas tree festival vacation december xmas celebration
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎆 fireworks photo festival carnival congratulations
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎇 sparkler stars night shine
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧨 firecracker dynamite boom explode explosion explosive
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;✨ sparkles stars shine shiny cool awesome good magic
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎈 balloon party celebration birthday circus
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎉 party popper party congratulations birthday magic circus celebration tada
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎊 confetti ball festival party birthday circus
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎋 tanabata tree plant nature branch summer
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎍 pine decoration plant nature vegetable panda pine decoration
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎎 japanese dolls japanese toy kimono
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎏 carp streamer fish japanese koinobori carp banner
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎐 wind chime nature ding spring bell
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎑 moon viewing ceremony photo japan asia tsukimi
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧧 red envelope gift
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎀 ribbon decoration pink girl bowtie
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎁 wrapped gift present birthday christmas xmas
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎗️ reminder ribbon sports cause support awareness
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎟️ admission tickets sports concert entrance
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎫 ticket event concert pass
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎖️ military medal award winning army
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏆 trophy win award contest place ftw ceremony
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏅 sports medal award winning
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥇 1st place medal award winning first
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥈 2nd place medal award second
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥉 3rd place medal award third
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⚽ soccer ball sports football
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⚾ baseball sports balls
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥎 softball sports balls
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏀 basketball sports balls NBA
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏐 volleyball sports balls
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏈 american football sports balls NFL
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏉 rugby football sports team
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎾 tennis sports balls green
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥏 flying disc sports frisbee ultimate
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎳 bowling sports fun play
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏏 cricket game sports
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏑 field hockey sports
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏒 ice hockey sports
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥍 lacrosse sports ball stick
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏓 ping pong sports pingpong
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏸 badminton sports
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥊 boxing glove sports fighting
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥋 martial arts uniform judo karate taekwondo
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥅 goal net sports
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⛳ flag in hole sports business flag hole summer
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⛸️ ice skate sports
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎣 fishing pole food hobby summer
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤿 diving mask sport ocean
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎽 running shirt play pageant
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎿 skis sports winter cold snow
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🛷 sled sleigh luge toboggan
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥌 curling stone sports
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎯 direct hit game play bar target bullseye
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪀 yo yo toy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪁 kite wind fly
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎱 pool &lt;span style=&#34;color:#ae81ff&#34;&gt;8&lt;/span&gt; ball pool hobby game luck magic
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔮 crystal ball disco party magic circus fortune teller
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧿 nazar amulet bead charm
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎮 video game play console PS4 controller
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🕹️ joystick game play
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎰 slot machine bet gamble vegas fruit machine luck casino
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎲 game die dice random tabletop play luck
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧩 puzzle piece interlocking puzzle piece
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧸 teddy bear plush stuffed
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;♠️ spade suit poker cards suits magic
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;♥️ heart suit poker cards magic suits
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;♦️ diamond suit poker cards magic suits
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;♣️ club suit poker cards magic suits
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;♟️ chess pawn expendable
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🃏 joker poker cards game play magic
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🀄 mahjong red dragon game play chinese kanji
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎴 flower playing cards game sunset red
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎭 performing arts acting theater drama
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🖼️ framed picture photography
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎨 artist palette design paint draw colors
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧵 thread needle sewing spool string
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧶 yarn ball crochet knit
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👓 glasses fashion accessories eyesight nerdy dork geek
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🕶️ sunglasses face cool accessories
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥽 goggles eyes protection safety
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥼 lab coat doctor experiment scientist chemist
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦺 safety vest protection
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👔 necktie shirt suitup formal fashion cloth business
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👕 t shirt fashion cloth casual shirt tee
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👖 jeans fashion shopping
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧣 scarf neck winter clothes
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧤 gloves hands winter clothes
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧥 coat jacket
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧦 socks stockings clothes
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👗 dress clothes fashion shopping
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👘 kimono dress fashion women female japanese
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥻 sari dress
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🩱 one piece swimsuit fashion
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🩲 briefs clothing
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🩳 shorts clothing
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👙 bikini swimming female woman girl fashion beach summer
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👚 woman s clothes fashion shopping bags female
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👛 purse fashion accessories money sales shopping
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👜 handbag fashion accessory accessories shopping
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👝 clutch bag bag accessories shopping
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🛍️ shopping bags mall buy purchase
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎒 backpack student education bag backpack
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👞 man s shoe fashion male
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👟 running shoe shoes sports sneakers
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥾 hiking boot backpacking camping hiking
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥿 flat shoe ballet slip-on slipper
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👠 high heeled shoe fashion shoes female pumps stiletto
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👡 woman s sandal shoes fashion flip flops
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🩰 ballet shoes dance
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👢 woman s boot shoes fashion
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👑 crown king kod leader royalty lord
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👒 woman s hat fashion accessories female lady spring
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎩 top hat magic gentleman classy circus
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎓 graduation cap school college degree university graduation cap hat legal learn education
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧢 billed cap cap baseball
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⛑️ rescue worker s helmet construction build
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📿 prayer beads dhikr religious
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💄 lipstick female girl fashion woman
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💍 ring wedding propose marriage valentines diamond fashion jewelry gem engagement
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💎 gem stone blue ruby diamond jewelry
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔇 muted speaker sound volume silence quiet
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔈 speaker low volume sound volume silence broadcast
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔉 speaker medium volume volume speaker broadcast
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔊 speaker high volume volume noise noisy speaker broadcast
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📢 loudspeaker volume sound
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📣 megaphone sound speaker volume
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📯 postal horn instrument music
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔔 bell sound notification christmas xmas chime
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔕 bell with slash sound volume mute quiet silent
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎼 musical score treble clef compose
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎵 musical note score tone sound
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎶 musical notes music score
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎙️ studio microphone sing recording artist talkshow
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎚️ level slider scale
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎛️ control knobs dial
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎤 microphone sound music PA sing talkshow
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎧 headphone music score gadgets
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📻 radio communication music podcast program
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎷 saxophone music instrument jazz blues
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎸 guitar music instrument
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎹 musical keyboard piano instrument compose
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎺 trumpet music brass
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎻 violin music instrument orchestra symphony
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪕 banjo music instructment
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥁 drum music instrument drumsticks snare
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📱 mobile phone technology apple gadgets dial
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📲 mobile phone with arrow iphone incoming
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;☎️ telephone technology communication dial telephone
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📞 telephone receiver technology communication dial
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📟 pager bbcall oldschool 90s
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📠 fax machine communication technology
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔋 battery power energy sustain
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔌 electric plug charger power
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💻 laptop technology laptop screen display monitor
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🖥️ desktop computer technology computing screen
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🖨️ printer paper ink
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⌨️ keyboard technology computer type input text
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🖱️ computer mouse click
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🖲️ trackball technology trackpad
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💽 computer disk technology record data disk 90s
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💾 floppy disk oldschool technology save 90s 80s
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💿 optical disk technology dvd disk disc 90s
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📀 dvd cd disk disc
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧮 abacus calculation
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎥 movie camera film record
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎞️ film frames movie
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📽️ film projector video tape record movie
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎬 clapper board movie film record
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📺 television technology program oldschool show television
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📷 camera gadgets photography
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📸 camera with flash photography gadgets
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📹 video camera film record
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📼 videocassette record video oldschool 90s 80s
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔍 magnifying glass tilted left search zoom find detective
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔎 magnifying glass tilted right search zoom find detective
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🕯️ candle fire wax
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💡 light bulb light electricity idea
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔦 flashlight dark camping sight night
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏮 red paper lantern light paper halloween spooky
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪔 diya lamp lighting
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📔 notebook with decorative cover classroom notes record paper study
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📕 closed book read library knowledge textbook learn
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📖 open book book read library knowledge literature learn study
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📗 green book read library knowledge study
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📘 blue book read library knowledge learn study
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📙 orange book read library knowledge textbook study
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📚 books literature library study
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📓 notebook stationery record notes paper study
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📒 ledger notes paper
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📃 page with curl documents office paper
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📜 scroll documents ancient history paper
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📄 page facing up documents office paper information
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📰 newspaper press headline
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🗞️ rolled up newspaper press headline
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📑 bookmark tabs favorite save order tidy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔖 bookmark favorite label save
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏷️ label sale tag
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💰 money bag dollar payment coins sale
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💴 yen banknote money sales japanese dollar currency
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💵 dollar banknote money sales bill currency
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💶 euro banknote money sales dollar currency
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💷 pound banknote british sterling money sales bills uk england currency
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💸 money with wings dollar bills payment sale
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💳 credit card money sales dollar bill payment shopping
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧾 receipt accounting expenses
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💹 chart increasing with yen green-square graph presentation stats
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💱 currency exchange money sales dollar travel
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💲 heavy dollar sign money sales payment currency buck
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;✉️ envelope letter postal inbox communication
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📧 e mail communication inbox
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📨 incoming envelope email inbox
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📩 envelope with arrow email communication
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📤 outbox tray inbox email
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📥 inbox tray email documents
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📦 package mail gift cardboard box moving
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📫 closed mailbox with raised flag email inbox communication
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📪 closed mailbox with lowered flag email communication inbox
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📬 open mailbox with raised flag email inbox communication
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📭 open mailbox with lowered flag email inbox
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📮 postbox email letter envelope
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🗳️ ballot box with ballot election vote
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;✏️ pencil stationery write paper writing school study
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;✒️ black nib pen stationery writing write
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🖋️ fountain pen stationery writing write
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🖊️ pen stationery writing write
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🖌️ paintbrush drawing creativity art
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🖍️ crayon drawing creativity
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📝 memo write documents stationery pencil paper writing legal exam quiz test study compose
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💼 briefcase business documents work law legal job career
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📁 file folder documents business office
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📂 open file folder documents load
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🗂️ card index dividers organizing business stationery
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📅 calendar calendar schedule
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📆 tear off calendar schedule date planning
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🗒️ spiral notepad memo stationery
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🗓️ spiral calendar date schedule planning
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📇 card index business stationery
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📈 chart increasing graph presentation stats recovery business economics money sales good success
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📉 chart decreasing graph presentation stats recession business economics money sales bad failure
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📊 bar chart graph presentation stats
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📋 clipboard stationery documents
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📌 pushpin stationery mark here
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📍 round pushpin stationery location map here
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📎 paperclip documents stationery
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🖇️ linked paperclips documents stationery
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📏 straight ruler stationery calculate length math school drawing architect sketch
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📐 triangular ruler stationery math architect sketch
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;✂️ scissors stationery cut
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🗃️ card file box business stationery
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🗄️ file cabinet filing organizing
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🗑️ wastebasket bin trash rubbish garbage toss
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔒 locked security password padlock
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔓 unlocked privacy security
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔏 locked with pen security secret
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔐 locked with key security privacy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔑 key lock door password
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🗝️ old key lock door password
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔨 hammer tools build create
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪓 axe tool chop cut
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⛏️ pick tools dig
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⚒️ hammer and pick tools build create
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🛠️ hammer and wrench tools build create
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🗡️ dagger weapon
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⚔️ crossed swords weapon
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔫 pistol violence weapon pistol revolver
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏹 bow and arrow sports
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🛡️ shield protection security
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔧 wrench tools diy ikea fix maintainer
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔩 nut and bolt handy tools fix
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⚙️ gear cog
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🗜️ clamp tool
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⚖️ balance scale law fairness weight
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦯 probing cane accessibility
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔗 link rings url
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⛓️ chains lock arrest
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧰 toolbox tools diy fix maintainer mechanic
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧲 magnet attraction magnetic
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⚗️ alembic distilling science experiment chemistry
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧪 test tube chemistry experiment lab science
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧫 petri dish bacteria biology culture lab
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧬 dna biologist genetics life
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔬 microscope laboratory experiment zoomin science study
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔭 telescope stars space zoom science astronomy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📡 satellite antenna communication future radio space
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💉 syringe health hospital drugs blood medicine needle doctor nurse
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🩸 drop of blood period hurt harm wound
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💊 pill health medicine doctor pharmacy drug
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🩹 adhesive bandage heal
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🩺 stethoscope health
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚪 door house entry exit
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🛏️ bed sleep rest
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🛋️ couch and lamp read chill
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪑 chair sit furniture
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚽 toilet restroom wc washroom bathroom potty
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚿 shower clean water bathroom
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🛁 bathtub clean shower bathroom
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪒 razor cut
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧴 lotion bottle moisturizer sunscreen
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧷 safety pin diaper
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧹 broom cleaning sweeping witch
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧺 basket laundry
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧻 roll of paper roll
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧼 soap bar bathing cleaning lather
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧽 sponge absorbing cleaning porous
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧯 fire extinguisher quench
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🛒 shopping cart trolley
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚬 cigarette kills tobacco cigarette joint smoke
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⚰️ coffin vampire dead die death rip graveyard cemetery casket funeral box
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⚱️ funeral urn dead die death rip ashes
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🗿 moai rock easter island moai
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏧 atm sign money sales cash blue-square payment bank
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚮 litter in bin sign blue-square sign human info
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚰 potable water blue-square liquid restroom cleaning faucet
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;♿ wheelchair symbol blue-square disabled accessibility
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚹 men s room toilet restroom wc blue-square gender male
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚺 women s room purple-square woman female toilet loo restroom gender
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚻 restroom blue-square toilet refresh wc gender
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚼 baby symbol orange-square child
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚾 water closet toilet restroom blue-square
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🛂 passport control custom blue-square
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🛃 customs passport border blue-square
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🛄 baggage claim blue-square airport transport
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🛅 left luggage blue-square travel
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⚠️ warning exclamation wip alert error problem issue
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚸 children crossing school warning danger sign driving yellow-diamond
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⛔ no entry limit security privacy bad denied stop circle
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚫 prohibited forbid stop limit denied disallow circle
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚳 no bicycles cyclist prohibited circle
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚭 no smoking cigarette blue-square smell smoke
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚯 no littering trash bin garbage circle
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚱 non potable water drink faucet tap circle
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚷 no pedestrians rules crossing walking circle
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📵 no mobile phones iphone mute circle
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔞 no one under eighteen &lt;span style=&#34;color:#ae81ff&#34;&gt;18&lt;/span&gt; drink pub night minor circle
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;☢️ radioactive nuclear danger
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;☣️ biohazard danger
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⬆️ up arrow blue-square &lt;span style=&#34;color:#66d9ef&#34;&gt;continue&lt;/span&gt; top direction
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;↗️ up right arrow blue-square point direction diagonal northeast
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;➡️ right arrow blue-square next
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;↘️ down right arrow blue-square direction diagonal southeast
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⬇️ down arrow blue-square direction bottom
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;↙️ down left arrow blue-square direction diagonal southwest
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⬅️ left arrow blue-square previous back
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;↖️ up left arrow blue-square point direction diagonal northwest
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;↕️ up down arrow blue-square direction way vertical
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;↔️ left right arrow shape direction horizontal sideways
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;↩️ right arrow curving left back &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; blue-square undo enter
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;↪️ left arrow curving right blue-square &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; rotate direction
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⤴️ right arrow curving up blue-square direction top
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⤵️ right arrow curving down blue-square direction bottom
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔃 clockwise vertical arrows sync cycle round repeat
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔄 counterclockwise arrows button blue-square sync cycle
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔙 back arrow arrow words &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔚 end arrow words arrow
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔛 on arrow arrow words
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔜 soon arrow arrow words
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔝 top arrow words blue-square
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🛐 place of worship religion church temple prayer
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⚛️ atom symbol science physics chemistry
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🕉️ om hinduism buddhism sikhism jainism
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;✡️ star of david judaism
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;☸️ wheel of dharma hinduism buddhism sikhism jainism
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;☯️ yin yang balance
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;✝️ latin cross christianity
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;☦️ orthodox cross suppedaneum religion
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;☪️ star and crescent islam
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;☮️ peace symbol hippie
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🕎 menorah hanukkah candles jewish
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔯 dotted six pointed star purple-square religion jewish hexagram
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;♈ aries sign purple-square zodiac astrology
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;♉ taurus purple-square sign zodiac astrology
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;♊ gemini sign zodiac purple-square astrology
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;♋ cancer sign zodiac purple-square astrology
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;♌ leo sign purple-square zodiac astrology
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;♍ virgo sign zodiac purple-square astrology
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;♎ libra sign purple-square zodiac astrology
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;♏ scorpio sign zodiac purple-square astrology scorpio
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;♐ sagittarius sign zodiac purple-square astrology
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;♑ capricorn sign zodiac purple-square astrology
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;♒ aquarius sign purple-square zodiac astrology
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;♓ pisces purple-square sign zodiac astrology
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⛎ ophiuchus sign purple-square constellation astrology
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔀 shuffle tracks button blue-square shuffle music random
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔁 repeat button loop record
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔂 repeat single button blue-square loop
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;▶️ play button blue-square right direction play
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⏩ fast forward button blue-square play speed &lt;span style=&#34;color:#66d9ef&#34;&gt;continue&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⏭️ next track button forward next blue-square
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⏯️ play or pause button blue-square play pause
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;◀️ reverse button blue-square left direction
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⏪ fast reverse button play blue-square
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⏮️ last track button backward
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔼 upwards button blue-square triangle direction point forward top
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⏫ fast up button blue-square direction top
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔽 downwards button blue-square direction bottom
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⏬ fast down button blue-square direction bottom
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⏸️ pause button pause blue-square
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⏹️ stop button blue-square
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⏺️ record button blue-square
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⏏️ eject button blue-square
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎦 cinema blue-square record film movie curtain stage theater
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔅 dim button sun afternoon warm summer
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔆 bright button sun light
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📶 antenna bars blue-square reception phone internet connection wifi bluetooth bars
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📳 vibration mode orange-square phone
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📴 mobile phone off mute orange-square silence quiet
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;♀️ female sign woman women lady girl
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;♂️ male sign man boy men
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⚕️ medical symbol health hospital
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;♾️ infinity forever
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;♻️ recycling symbol arrow environment garbage trash
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⚜️ fleur de lis decorative scout
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔱 trident emblem weapon spear
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;📛 name badge fire forbid
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔰 japanese symbol &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; beginner badge shield
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⭕ hollow red circle circle round
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;✅ check mark button green-square ok agree vote election answer tick
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;☑️ check box with check ok agree confirm black-square vote election yes tick
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;✔️ check mark ok nike answer yes tick
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;✖️ multiplication sign math calculation
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;❌ cross mark no delete remove cancel red
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;❎ cross mark button x green-square no deny
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;➕ plus sign math calculation addition more increase
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;➖ minus sign math calculation subtract less
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;➗ division sign divide math calculation
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;➰ curly loop scribble draw shape squiggle
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;➿ double curly loop tape cassette
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;〽️ part alternation mark graph presentation stats business economics bad
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;✳️ eight spoked asterisk star sparkle green-square
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;✴️ eight pointed star orange-square shape polygon
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;❇️ sparkle stars green-square awesome good fireworks
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;‼️ double exclamation mark exclamation surprise
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⁉️ exclamation question mark wat punctuation surprise
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;❓ question mark doubt confused
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;❔ white question mark doubts gray huh confused
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;❕ white exclamation mark surprise punctuation gray wow warning
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;❗ exclamation mark heavy exclamation mark danger surprise punctuation wow warning
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;〰️ wavy dash draw line moustache mustache squiggle scribble
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;©️ copyright ip license circle law legal
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;®️ registered alphabet circle
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;™️ trade mark trademark brand law legal
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#️⃣ keycap  symbol blue-square twitter&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;*️⃣ keycap  star keycap
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;0️⃣ keycap &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; numbers blue-square null
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;1️⃣ keycap &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; blue-square numbers &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2️⃣ keycap &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt; numbers &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt; prime blue-square
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;3️⃣ keycap &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt; numbers prime blue-square
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;4️⃣ keycap &lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt; numbers blue-square
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;5️⃣ keycap &lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt; numbers blue-square prime
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;6️⃣ keycap &lt;span style=&#34;color:#ae81ff&#34;&gt;6&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;6&lt;/span&gt; numbers blue-square
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;7️⃣ keycap &lt;span style=&#34;color:#ae81ff&#34;&gt;7&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;7&lt;/span&gt; numbers blue-square prime
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;8️⃣ keycap &lt;span style=&#34;color:#ae81ff&#34;&gt;8&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;8&lt;/span&gt; blue-square numbers
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;9️⃣ keycap &lt;span style=&#34;color:#ae81ff&#34;&gt;9&lt;/span&gt; blue-square numbers &lt;span style=&#34;color:#ae81ff&#34;&gt;9&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔟 keycap &lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt; numbers &lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt; blue-square
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔠 input latin uppercase alphabet words blue-square
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔡 input latin lowercase blue-square alphabet
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔢 input numbers numbers blue-square
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔣 input symbols blue-square music note ampersand percent glyphs characters
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔤 input latin letters blue-square alphabet
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🅰️ a button red-square alphabet letter
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🆎 ab button red-square alphabet
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🅱️ b button red-square alphabet letter
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🆑 cl button alphabet words red-square
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🆒 cool button words blue-square
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🆓 free button blue-square words
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ℹ️ information blue-square alphabet letter
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🆔 id button purple-square words
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Ⓜ️ circled m alphabet blue-circle letter
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🆕 new button blue-square words start
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🆖 ng button blue-square words shape icon
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🅾️ o button alphabet red-square letter
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🆗 ok button good agree yes blue-square
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🅿️ p button cars blue-square alphabet letter
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🆘 sos button help red-square words emergency &lt;span style=&#34;color:#ae81ff&#34;&gt;911&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🆙 up button blue-square above high
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🆚 vs button words orange-square
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🈁 japanese here button blue-square here katakana japanese destination
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🈂️ japanese service charge button japanese blue-square katakana
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🈷️ japanese monthly amount button chinese month moon japanese orange-square kanji
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🈶 japanese not free of charge button orange-square chinese have kanji
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🈯 japanese reserved button chinese point green-square kanji
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🉐 japanese bargain button chinese kanji obtain get circle
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🈹 japanese discount button cut divide chinese kanji pink-square
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🈚 japanese free of charge button nothing chinese kanji japanese orange-square
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🈲 japanese prohibited button kanji japanese chinese forbidden limit restricted red-square
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🉑 japanese acceptable button ok good chinese kanji agree yes orange-circle
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🈸 japanese application button chinese japanese kanji orange-square
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🈴 japanese passing grade button japanese chinese join kanji red-square
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🈳 japanese vacancy button kanji japanese chinese empty sky blue-square
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;㊗️ japanese congratulations button chinese kanji japanese red-circle
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;㊙️ japanese secret button privacy chinese sshh kanji red-circle
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🈺 japanese open &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; business button japanese opening hours orange-square
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🈵 japanese no vacancy button full chinese japanese red-square kanji
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔴 red circle shape error danger
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🟠 orange circle round
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🟡 yellow circle round
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🟢 green circle round
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔵 blue circle shape icon button
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🟣 purple circle round
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🟤 brown circle round
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⚫ black circle shape button round
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⚪ white circle shape round
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🟥 red square
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🟧 orange square
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🟨 yellow square
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🟩 green square
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🟦 blue square
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🟪 purple square
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🟫 brown square
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⬛ black large square shape icon button
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⬜ white large square shape icon stone button
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;◼️ black medium square shape button icon
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;◻️ white medium square shape stone icon
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;◾ black medium small square icon shape button
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;◽ white medium small square shape stone icon button
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;▪️ black small square shape icon
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;▫️ white small square shape icon
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔶 large orange diamond shape jewel gem
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔷 large blue diamond shape jewel gem
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔸 small orange diamond shape jewel gem
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔹 small blue diamond shape jewel gem
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔺 red triangle pointed up shape direction up top
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔻 red triangle pointed down shape direction bottom
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;💠 diamond with a dot jewel blue gem crystal fancy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔘 radio button input old music circle
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔳 white square button shape input
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🔲 black square button shape input frame
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏁 chequered flag contest finishline race gokart
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🚩 triangular flag mark milestone place
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🎌 crossed flags japanese nation country border
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏴 black flag pirate
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏳️ white flag losing loser lost surrender give up fail
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏳️‍🌈 rainbow flag flag rainbow pride gay lgbt glbt queer homosexual lesbian bisexual transgender
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏴‍☠️ pirate flag skull crossbones flag banner
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇦🇨 flag ascension island
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇦🇩 flag andorra ad flag nation country banner andorra
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇦🇪 flag united arab emirates united arab emirates flag nation country banner united arab emirates
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇦🇫 flag afghanistan af flag nation country banner afghanistan
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇦🇬 flag antigua barbuda antigua barbuda flag nation country banner antigua barbuda
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇦🇮 flag anguilla ai flag nation country banner anguilla
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇦🇱 flag albania al flag nation country banner albania
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇦🇲 flag armenia am flag nation country banner armenia
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇦🇴 flag angola ao flag nation country banner angola
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇦🇶 flag antarctica aq flag nation country banner antarctica
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇦🇷 flag argentina ar flag nation country banner argentina
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇦🇸 flag american samoa american ws flag nation country banner american samoa
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇦🇹 flag austria at flag nation country banner austria
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇦🇺 flag australia au flag nation country banner australia
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇦🇼 flag aruba aw flag nation country banner aruba
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇦🇽 flag aland islands Åland islands flag nation country banner aland islands
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇦🇿 flag azerbaijan az flag nation country banner azerbaijan
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇧🇦 flag bosnia herzegovina bosnia herzegovina flag nation country banner bosnia herzegovina
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇧🇧 flag barbados bb flag nation country banner barbados
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇧🇩 flag bangladesh bd flag nation country banner bangladesh
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇧🇪 flag belgium be flag nation country banner belgium
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇧🇫 flag burkina faso burkina faso flag nation country banner burkina faso
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇧🇬 flag bulgaria bg flag nation country banner bulgaria
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇧🇭 flag bahrain bh flag nation country banner bahrain
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇧🇮 flag burundi bi flag nation country banner burundi
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇧🇯 flag benin bj flag nation country banner benin
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇧🇱 flag st barthelemy saint barthélemy flag nation country banner st barthelemy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇧🇲 flag bermuda bm flag nation country banner bermuda
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇧🇳 flag brunei bn darussalam flag nation country banner brunei
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇧🇴 flag bolivia bo flag nation country banner bolivia
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇧🇶 flag caribbean netherlands bonaire flag nation country banner caribbean netherlands
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇧🇷 flag brazil br flag nation country banner brazil
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇧🇸 flag bahamas bs flag nation country banner bahamas
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇧🇹 flag bhutan bt flag nation country banner bhutan
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇧🇻 flag bouvet island norway
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇧🇼 flag botswana bw flag nation country banner botswana
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇧🇾 flag belarus by flag nation country banner belarus
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇧🇿 flag belize bz flag nation country banner belize
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇨🇦 flag canada ca flag nation country banner canada
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇨🇨 flag cocos islands cocos keeling islands flag nation country banner cocos islands
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇨🇩 flag congo kinshasa congo democratic republic flag nation country banner congo kinshasa
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇨🇫 flag central african republic central african republic flag nation country banner central african republic
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇨🇬 flag congo brazzaville congo flag nation country banner congo brazzaville
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇨🇭 flag switzerland ch flag nation country banner switzerland
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇨🇮 flag cote d ivoire ivory coast flag nation country banner cote d ivoire
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇨🇰 flag cook islands cook islands flag nation country banner cook islands
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇨🇱 flag chile flag nation country banner chile
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇨🇲 flag cameroon cm flag nation country banner cameroon
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇨🇳 flag china china chinese prc flag country nation banner china
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇨🇴 flag colombia co flag nation country banner colombia
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇨🇵 flag clipperton island
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇨🇷 flag costa rica costa rica flag nation country banner costa rica
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇨🇺 flag cuba cu flag nation country banner cuba
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇨🇻 flag cape verde cabo verde flag nation country banner cape verde
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇨🇼 flag curacao curaçao flag nation country banner curacao
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇨🇽 flag christmas island christmas island flag nation country banner christmas island
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇨🇾 flag cyprus cy flag nation country banner cyprus
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇨🇿 flag czechia cz flag nation country banner czechia
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇩🇪 flag germany german nation flag country banner germany
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇩🇬 flag diego garcia
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇩🇯 flag djibouti dj flag nation country banner djibouti
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇩🇰 flag denmark dk flag nation country banner denmark
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇩🇲 flag dominica dm flag nation country banner dominica
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇩🇴 flag dominican republic dominican republic flag nation country banner dominican republic
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇩🇿 flag algeria dz flag nation country banner algeria
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇪🇦 flag ceuta melilla
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇪🇨 flag ecuador ec flag nation country banner ecuador
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇪🇪 flag estonia ee flag nation country banner estonia
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇪🇬 flag egypt eg flag nation country banner egypt
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇪🇭 flag western sahara western sahara flag nation country banner western sahara
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇪🇷 flag eritrea er flag nation country banner eritrea
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇪🇸 flag spain spain flag nation country banner spain
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇪🇹 flag ethiopia et flag nation country banner ethiopia
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇪🇺 flag european union european union flag banner
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇫🇮 flag finland &lt;span style=&#34;color:#66d9ef&#34;&gt;fi&lt;/span&gt; flag nation country banner finland
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇫🇯 flag fiji fj flag nation country banner fiji
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇫🇰 flag falkland islands falkland islands malvinas flag nation country banner falkland islands
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇫🇲 flag micronesia micronesia federated states flag nation country banner micronesia
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇫🇴 flag faroe islands faroe islands flag nation country banner faroe islands
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇫🇷 flag france banner flag nation france french country france
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇬🇦 flag gabon ga flag nation country banner gabon
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇬🇧 flag united kingdom united kingdom great britain northern ireland flag nation country banner british UK english england union jack united kingdom
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇬🇩 flag grenada gd flag nation country banner grenada
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇬🇪 flag georgia ge flag nation country banner georgia
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇬🇫 flag french guiana french guiana flag nation country banner french guiana
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇬🇬 flag guernsey gg flag nation country banner guernsey
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇬🇭 flag ghana gh flag nation country banner ghana
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇬🇮 flag gibraltar gi flag nation country banner gibraltar
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇬🇱 flag greenland gl flag nation country banner greenland
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇬🇲 flag gambia gm flag nation country banner gambia
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇬🇳 flag guinea gn flag nation country banner guinea
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇬🇵 flag guadeloupe gp flag nation country banner guadeloupe
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇬🇶 flag equatorial guinea equatorial gn flag nation country banner equatorial guinea
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇬🇷 flag greece gr flag nation country banner greece
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇬🇸 flag south georgia south sandwich islands south georgia sandwich islands flag nation country banner south georgia south sandwich islands
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇬🇹 flag guatemala gt flag nation country banner guatemala
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇬🇺 flag guam gu flag nation country banner guam
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇬🇼 flag guinea bissau gw bissau flag nation country banner guinea bissau
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇬🇾 flag guyana gy flag nation country banner guyana
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇭🇰 flag hong kong sar china hong kong flag nation country banner hong kong sar china
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇭🇲 flag heard mcdonald islands
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇭🇳 flag honduras hn flag nation country banner honduras
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇭🇷 flag croatia hr flag nation country banner croatia
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇭🇹 flag haiti ht flag nation country banner haiti
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇭🇺 flag hungary hu flag nation country banner hungary
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇮🇨 flag canary islands canary islands flag nation country banner canary islands
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇮🇩 flag indonesia flag nation country banner indonesia
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇮🇪 flag ireland ie flag nation country banner ireland
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇮🇱 flag israel il flag nation country banner israel
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇮🇲 flag isle of man isle man flag nation country banner isle of man
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇮🇳 flag india in flag nation country banner india
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇮🇴 flag british indian ocean territory british indian ocean territory flag nation country banner british indian ocean territory
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇮🇶 flag iraq iq flag nation country banner iraq
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇮🇷 flag iran iran islamic republic flag nation country banner iran
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇮🇸 flag iceland is flag nation country banner iceland
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇮🇹 flag italy italy flag nation country banner italy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇯🇪 flag jersey je flag nation country banner jersey
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇯🇲 flag jamaica jm flag nation country banner jamaica
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇯🇴 flag jordan jo flag nation country banner jordan
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇯🇵 flag japan japanese nation flag country banner japan
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇰🇪 flag kenya ke flag nation country banner kenya
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇰🇬 flag kyrgyzstan kg flag nation country banner kyrgyzstan
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇰🇭 flag cambodia kh flag nation country banner cambodia
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇰🇮 flag kiribati ki flag nation country banner kiribati
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇰🇲 flag comoros km flag nation country banner comoros
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇰🇳 flag st kitts nevis saint kitts nevis flag nation country banner st kitts nevis
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇰🇵 flag north korea north korea nation flag country banner north korea
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇰🇷 flag south korea south korea nation flag country banner south korea
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇰🇼 flag kuwait kw flag nation country banner kuwait
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇰🇾 flag cayman islands cayman islands flag nation country banner cayman islands
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇰🇿 flag kazakhstan kz flag nation country banner kazakhstan
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇱🇦 flag laos lao democratic republic flag nation country banner laos
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇱🇧 flag lebanon lb flag nation country banner lebanon
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇱🇨 flag st lucia saint lucia flag nation country banner st lucia
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇱🇮 flag liechtenstein li flag nation country banner liechtenstein
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇱🇰 flag sri lanka sri lanka flag nation country banner sri lanka
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇱🇷 flag liberia lr flag nation country banner liberia
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇱🇸 flag lesotho ls flag nation country banner lesotho
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇱🇹 flag lithuania lt flag nation country banner lithuania
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇱🇺 flag luxembourg lu flag nation country banner luxembourg
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇱🇻 flag latvia lv flag nation country banner latvia
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇱🇾 flag libya ly flag nation country banner libya
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇲🇦 flag morocco ma flag nation country banner morocco
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇲🇨 flag monaco mc flag nation country banner monaco
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇲🇩 flag moldova moldova republic flag nation country banner moldova
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇲🇪 flag montenegro me flag nation country banner montenegro
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇲🇫 flag st martin
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇲🇬 flag madagascar mg flag nation country banner madagascar
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇲🇭 flag marshall islands marshall islands flag nation country banner marshall islands
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇲🇰 flag north macedonia macedonia flag nation country banner north macedonia
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇲🇱 flag mali ml flag nation country banner mali
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇲🇲 flag myanmar mm flag nation country banner myanmar
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇲🇳 flag mongolia mn flag nation country banner mongolia
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇲🇴 flag macao sar china macao flag nation country banner macao sar china
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇲🇵 flag northern mariana islands northern mariana islands flag nation country banner northern mariana islands
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇲🇶 flag martinique mq flag nation country banner martinique
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇲🇷 flag mauritania mr flag nation country banner mauritania
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇲🇸 flag montserrat ms flag nation country banner montserrat
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇲🇹 flag malta mt flag nation country banner malta
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇲🇺 flag mauritius mu flag nation country banner mauritius
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇲🇻 flag maldives mv flag nation country banner maldives
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇲🇼 flag malawi mw flag nation country banner malawi
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇲🇽 flag mexico mx flag nation country banner mexico
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇲🇾 flag malaysia my flag nation country banner malaysia
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇲🇿 flag mozambique mz flag nation country banner mozambique
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇳🇦 flag namibia na flag nation country banner namibia
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇳🇨 flag new caledonia new caledonia flag nation country banner new caledonia
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇳🇪 flag niger ne flag nation country banner niger
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇳🇫 flag norfolk island norfolk island flag nation country banner norfolk island
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇳🇬 flag nigeria flag nation country banner nigeria
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇳🇮 flag nicaragua ni flag nation country banner nicaragua
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇳🇱 flag netherlands nl flag nation country banner netherlands
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇳🇴 flag norway no flag nation country banner norway
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇳🇵 flag nepal np flag nation country banner nepal
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇳🇷 flag nauru nr flag nation country banner nauru
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇳🇺 flag niue nu flag nation country banner niue
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇳🇿 flag new zealand new zealand flag nation country banner new zealand
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇴🇲 flag oman om symbol flag nation country banner oman
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇵🇦 flag panama pa flag nation country banner panama
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇵🇪 flag peru pe flag nation country banner peru
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇵🇫 flag french polynesia french polynesia flag nation country banner french polynesia
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇵🇬 flag papua new guinea papua new guinea flag nation country banner papua new guinea
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇵🇭 flag philippines ph flag nation country banner philippines
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇵🇰 flag pakistan pk flag nation country banner pakistan
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇵🇱 flag poland pl flag nation country banner poland
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇵🇲 flag st pierre miquelon saint pierre miquelon flag nation country banner st pierre miquelon
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇵🇳 flag pitcairn islands pitcairn flag nation country banner pitcairn islands
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇵🇷 flag puerto rico puerto rico flag nation country banner puerto rico
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇵🇸 flag palestinian territories palestine palestinian territories flag nation country banner palestinian territories
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇵🇹 flag portugal pt flag nation country banner portugal
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇵🇼 flag palau pw flag nation country banner palau
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇵🇾 flag paraguay py flag nation country banner paraguay
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇶🇦 flag qatar qa flag nation country banner qatar
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇷🇪 flag reunion réunion flag nation country banner reunion
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇷🇴 flag romania ro flag nation country banner romania
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇷🇸 flag serbia rs flag nation country banner serbia
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇷🇺 flag russia russian federation flag nation country banner russia
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇷🇼 flag rwanda rw flag nation country banner rwanda
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇸🇦 flag saudi arabia flag nation country banner saudi arabia
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇸🇧 flag solomon islands solomon islands flag nation country banner solomon islands
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇸🇨 flag seychelles sc flag nation country banner seychelles
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇸🇩 flag sudan sd flag nation country banner sudan
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇸🇪 flag sweden se flag nation country banner sweden
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇸🇬 flag singapore sg flag nation country banner singapore
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇸🇭 flag st helena saint helena ascension tristan cunha flag nation country banner st helena
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇸🇮 flag slovenia si flag nation country banner slovenia
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇸🇯 flag svalbard jan mayen
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇸🇰 flag slovakia sk flag nation country banner slovakia
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇸🇱 flag sierra leone sierra leone flag nation country banner sierra leone
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇸🇲 flag san marino san marino flag nation country banner san marino
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇸🇳 flag senegal sn flag nation country banner senegal
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇸🇴 flag somalia so flag nation country banner somalia
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇸🇷 flag suriname sr flag nation country banner suriname
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇸🇸 flag south sudan south sd flag nation country banner south sudan
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇸🇹 flag sao tome principe sao tome principe flag nation country banner sao tome principe
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇸🇻 flag el salvador el salvador flag nation country banner el salvador
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇸🇽 flag sint maarten sint maarten dutch flag nation country banner sint maarten
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇸🇾 flag syria syrian arab republic flag nation country banner syria
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇸🇿 flag eswatini sz flag nation country banner eswatini
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇹🇦 flag tristan da cunha
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇹🇨 flag turks caicos islands turks caicos islands flag nation country banner turks caicos islands
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇹🇩 flag chad td flag nation country banner chad
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇹🇫 flag french southern territories french southern territories flag nation country banner french southern territories
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇹🇬 flag togo tg flag nation country banner togo
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇹🇭 flag thailand th flag nation country banner thailand
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇹🇯 flag tajikistan tj flag nation country banner tajikistan
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇹🇰 flag tokelau tk flag nation country banner tokelau
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇹🇱 flag timor leste timor leste flag nation country banner timor leste
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇹🇲 flag turkmenistan flag nation country banner turkmenistan
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇹🇳 flag tunisia tn flag nation country banner tunisia
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇹🇴 flag tonga to flag nation country banner tonga
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇹🇷 flag turkey turkey flag nation country banner turkey
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇹🇹 flag trinidad tobago trinidad tobago flag nation country banner trinidad tobago
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇹🇻 flag tuvalu flag nation country banner tuvalu
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇹🇼 flag taiwan tw flag nation country banner taiwan
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇹🇿 flag tanzania tanzania united republic flag nation country banner tanzania
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇺🇦 flag ukraine ua flag nation country banner ukraine
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇺🇬 flag uganda ug flag nation country banner uganda
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇺🇲 flag u s outlying islands
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇺🇳 flag united nations un flag banner
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇺🇸 flag united states united states america flag nation country banner united states
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇺🇾 flag uruguay uy flag nation country banner uruguay
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇺🇿 flag uzbekistan uz flag nation country banner uzbekistan
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇻🇦 flag vatican city vatican city flag nation country banner vatican city
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇻🇨 flag st vincent grenadines saint vincent grenadines flag nation country banner st vincent grenadines
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇻🇪 flag venezuela ve bolivarian republic flag nation country banner venezuela
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇻🇬 flag british virgin islands british virgin islands bvi flag nation country banner british virgin islands
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇻🇮 flag u s virgin islands virgin islands us flag nation country banner u s virgin islands
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇻🇳 flag vietnam viet nam flag nation country banner vietnam
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇻🇺 flag vanuatu vu flag nation country banner vanuatu
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇼🇫 flag wallis futuna wallis futuna flag nation country banner wallis futuna
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇼🇸 flag samoa ws flag nation country banner samoa
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇽🇰 flag kosovo xk flag nation country banner kosovo
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇾🇪 flag yemen ye flag nation country banner yemen
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇾🇹 flag mayotte yt flag nation country banner mayotte
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇿🇦 flag south africa south africa flag nation country banner south africa
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇿🇲 flag zambia zm flag nation country banner zambia
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🇿🇼 flag zimbabwe zw flag nation country banner zimbabwe
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏴󠁧󠁢󠁥󠁮󠁧󠁿 flag england flag english
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏴󠁧󠁢󠁳󠁣󠁴󠁿 flag scotland flag scottish
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏴󠁧󠁢󠁷󠁬󠁳󠁿 flag wales flag welsh
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥲 smiling face with tear sad cry pretend
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥸 disguised face pretent brows glasses moustache
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤌 pinched fingers size tiny small
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🫀 anatomical heart health heartbeat
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🫁 lungs breathe
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥷 ninja ninjutsu skills japanese
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤵‍♂️ man in tuxedo formal fashion
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🤵‍♀️ woman in tuxedo formal fashion
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👰‍♂️ man with veil wedding marriage
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👰‍♀️ woman with veil wedding marriage
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👩‍🍼 woman feeding baby birth food
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;👨‍🍼 man feeding baby birth food
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧑‍🍼 person feeding baby birth food
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧑‍🎄 mx claus christmas
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🫂 people hugging care
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐈‍⬛ black cat superstition luck
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦬 bison ox
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦣 mammoth elephant tusks
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦫 beaver animal rodent
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🐻‍❄️ polar bear animal arctic
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦤 dodo animal bird
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪶 feather bird fly
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🦭 seal animal creature sea
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪲 beetle insect
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪳 cockroach insect pests
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪰 fly insect
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪱 worm animal
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪴 potted plant greenery house
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🫐 blueberries fruit
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🫒 olive fruit
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🫑 bell pepper fruit plant
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🫓 flatbread flour food
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🫔 tamale food masa
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🫕 fondue cheese pot food
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🫖 teapot drink hot
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧋 bubble tea taiwan boba milk tea straw
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪨 rock stone
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪵 wood nature timber trunk
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🛖 hut house structure
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🛻 pickup truck car transportation
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🛼 roller skate footwear sports
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪄 magic wand supernature power
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪅 pinata mexico candy celebration
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪆 nesting dolls matryoshka toy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪡 sewing needle stitches
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪢 knot rope scout
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🩴 thong sandal footwear summer
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪖 military helmet army protection
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪗 accordion music
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪘 long drum music
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪙 coin money currency
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪃 boomerang weapon
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪚 carpentry saw cut chop
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪛 screwdriver tools
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪝 hook tools
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪜 ladder tools
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🛗 elevator lift
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪞 mirror reflection
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪟 window scenery
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪠 plunger toilet
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪤 mouse trap cheese
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪣 bucket water container
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪥 toothbrush hygiene dental
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪦 headstone death rip grave
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪧 placard announcement
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⚧️ transgender symbol lgbtq
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🏳️‍⚧️ transgender flag lgbtq
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😶‍🌫️ face in clouds shower steam dream
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😮‍💨 face exhaling relieve relief tired sigh
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;😵‍💫 face with spiral eyes sick ill confused nauseous nausea
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;❤️‍🔥 heart on fire passionate enthusiastic
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;❤️‍🩹 mending heart broken heart bandage wounded
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧔‍♂️ man beard facial hair
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧔‍♀️ woman beard facial hair
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🫠 melting face hot heat
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🫢 face with open eyes and hand over mouth silence secret shock surprise
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🫣 face with peeking eye scared frightening embarrassing
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🫡 saluting face respect salute
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🫥 dotted line face invisible lonely isolation depression
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🫤 face with diagonal mouth skeptic confuse frustrated indifferent
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🥹 face holding back tears touched gratitude
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🫱 rightwards hand palm offer
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🫲 leftwards hand palm offer
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🫳 palm down hand palm drop
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🫴 palm up hand lift offer demand
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🫰 hand with index finger and thumb crossed heart love money expensive
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🫵 index pointing at the viewer you recruit
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🫶 heart hands love appreciation support
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🫦 biting lip flirt sexy pain worry
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🫅 person with crown royalty power
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🫃 pregnant man baby belly
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🫄 pregnant person baby belly
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🧌 troll mystical monster
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪸 coral ocean sea reef
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪷 lotus flower calm meditation
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪹 empty nest bird
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪺 nest with eggs bird
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🫘 beans food
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🫗 pouring liquid cup water
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🫙 jar container sauce
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🛝 playground slide fun park
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🛞 wheel car transport
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🛟 ring buoy life saver life preserver
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪬 hamsa religion protection
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪩 mirror ball disco dance party
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪫 low battery drained dead
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🩼 crutch accessibility assist
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🩻 x-ray skeleton medicine
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🫧 bubbles soap fun carbonation sparkling
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🪪 identification card document
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;🟰 heavy equals sign math&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/details&gt;
&lt;h2 id=&#34;un-launcher-galvanisant&#34;&gt;Un launcher galvanisant &lt;a href=&#34;#un-launcher-galvanisant&#34; class=&#34;paragraph-icon&#34;&gt;🔗&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Bon, bha voilà :-)
Si vous trouvez d&#39;autres utilisations pour ce genre d&#39;outil n&#39;hésitez pas à montrer !&lt;/p&gt;
&lt;p&gt;J&#39;espère que cette petite découverte vous plaira.&lt;/p&gt;

      
      
      </description>
    <category>sway"</category><category>wayland"</category><category>linux"</category><category>ux:"</category>
    
    </item>
    
  </channel>
</rss>
