Introduction
Bonjour et bienvenue, aujourd'hui on va apprendre comment afficher le prix des cryptos que vous souhaitez suivre dans votre barre des tâches, c'est hyper simple à faire et niveau fainéantise informatique on est au max. A savoir que j'utilises Kali Linux donc pour ma part ma barre des tâches sera celle de xfce (c'est important pour là suite)
Generic Monitor
Un genmon est un plugin léger et personnalisable utilisé dans les barres de tâches des environnements de bureau Linux, permettant d’afficher dynamiquement du contenu généré par des scripts externes.
Il récupère et affiche en temps réel des informations telles que la météo, le cours des cryptomonnaies, l’utilisation du système ou d’autres données personnalisées.
Très apprécié pour sa simplicité et sa flexibilité, genmon s’intègre facilement avec des barres populaires comme i3bar, polybar ou xfce4-panel.
Ce plugin offre une solution efficace pour surveiller diverses métriques sans alourdir le système.
Genmon est un outil essentiel pour les utilisateurs Linux souhaitant une barre de tâches informative et adaptable.
En gros c'est un widget pour Linux. Et c'est ce qu'on va utiliser ensuite.
Barre des tâches
- i3bar -> https://i3wm.org/docs/i3bar.html
- polybar -> https://polybar.github.io/
- xfce4-panel (plugin genmon) -> https://docs.xfce.org/xfce/xfce4-panel/start
- lemonbar -> https://github.com/LemonBoy/bar
- i3status (intègre genmon) -> https://i3wm.org/i3status/
- waybar -> https://github.com/Alexays/Waybar
- xmobar -> https://xmobar.org/
- dzen2 -> https://github.com/robm/dzen/wiki
Ce sont toutes les barres pour lesquelles le script suivant va fonctionner. Ca ne fonctionnera pas par contre pour GNOME & KDE ou il faudra faire différemment :
- GNOME : utilise une extension comme Argos qui permet de lancer des scripts et afficher leur sortie dans la barre.
- KDE Plasma : crée un plasmoid personnalisé ou utilise un applet « Scripted widget » pour lancer ton script.
API Disponibles
Maintenant y'a plusieurs api avec lesquelles vous pouvez récupérer le prix d'une crypto en temps réel, en voici une liste de gratuites :
- CoinGecko API -> https://www.coingecko.com/en/api
- Binance API (accès gratuit pour données publiques) -> https://binance-docs.github.io/apidocs/spot/en/
- CoinCap API -> https://docs.coincap.io/
- CryptoCompare API (free tier) -> https://min-api.cryptocompare.com/documentation
- Nomics API (free tier) -> https://nomics.com/docs/
- Messari API (free tier) -> https://messari.io/api
Une fois que vous avez choisi tout ça on peut passer au script
Le Script Simple
⇣ Explications en-dessous ⇣
#!/bin/bash
response=$(curl -s "https://api.coingecko.com/api/v3/simple/price?ids=build-on-bnb,ai-network,vechain&vs_currencies=usd")
price_bob=$(echo "$response" | jq -r '.["build-on-bnb"].usd')
price_ain=$(echo "$response" | jq -r '.["ai-network"].usd')
price_vet=$(echo "$response" | jq -r '.["vechain"].usd')
price_bob_fmt=$(awk -v val="$price_bob" 'BEGIN { printf "%.12f", val }')
price_ain_fmt=$(awk -v val="$price_ain" 'BEGIN { printf "%.7f", val }')
price_vet_fmt=$(awk -v val="$price_vet" 'BEGIN { printf "%.4f", val }')
yellow="\033[33m"
reset="\033[0m"
echo -e "<txt> \$BOB: $price_bob_fmt \$ --- \$AIN: $price_ain_fmt \$ --- \$VET: $price_vet_fmt \$ </txt>"
echo "<tool>Prix actuels : Build On BNB, AI Network, VeChain (USD) - source CoinGecko</tool>"
- La variable
response
récupère le résultat de l'API que vous avez choisi (ici c'est CoinGecko), il est le même sur la plus part des API alors le script a pas besoin de changer. - Les 3 variables
price_$NAME
récupèrent les prix des 3 crypto différentes dans le résultat retourné par la response puis le parsent correctement. - Les 3 variables finissant par
_fmt
permettent d'afficher le prix de la même manière que sur une calculatrice avec tous les chiffre. Ce qui est important ici c'est le%.12f
,%.7f
et%.4f
en fait le chiffre c'est le nombre de caractères qui vont être affichés sur la barre des tâches, le $BOB démarrant a sept 0 derrière la virgule c'est plus pratique. - Le rest c'est l'affichage du texte comme dans n'importe quelle programmation et le
\$
c'est pour mettre du padding (espacement intérieur) pour aérer.
Conclusion
Voilà c'est fini j'espère que ça aura arrangé quelqu'un mdr