]> gitweb.pimeys.fr Git - scripts-20-100.git/commitdiff
Petits scripts pour faire joujou avec les couleurs dans le terminal.
authorVincent Le Gallic <legallic@crans.org>
Sun, 29 Sep 2013 16:57:50 +0000 (18:57 +0200)
committerVincent Le Gallic <legallic@crans.org>
Sun, 29 Sep 2013 16:57:50 +0000 (18:57 +0200)
colors.sh [new file with mode: 0644]
create_color.py [new file with mode: 0644]
test_base_colors.sh [new file with mode: 0755]

diff --git a/colors.sh b/colors.sh
new file mode 100644 (file)
index 0000000..dc23beb
--- /dev/null
+++ b/colors.sh
@@ -0,0 +1,100 @@
+#!/bin/bash
+
+# Définit des variables cool pour utiliser des couleurs.
+# À sourcer, évidemment.
+
+# Reset
+No_Color='\e[0m'       # Text Reset
+
+# Regular Colors
+Black='\e[0;30m'        # Black
+Red='\e[0;31m'          # Red
+Green='\e[0;32m'        # Green
+Yellow='\e[0;33m'       # Yellow
+Blue='\e[0;34m'         # Blue
+Purple='\e[0;35m'       # Purple
+Cyan='\e[0;36m'         # Cyan
+White='\e[0;37m'        # White
+
+regular_colors_names=(Black Red Green Yellow Blue Purple Cyan White)
+
+# Bold
+BBlack='\e[1;30m'       # Black
+BRed='\e[1;31m'         # Red
+BGreen='\e[1;32m'       # Green
+BYellow='\e[1;33m'      # Yellow
+BBlue='\e[1;34m'        # Blue
+BPurple='\e[1;35m'      # Purple
+BCyan='\e[1;36m'        # Cyan
+BWhite='\e[1;37m'       # White
+
+bold_colors_names=(BBlack BRed BGreen BYellow BBlue BPurple BCyan BWhite)
+
+front_colors_names=(Black Red Green Yellow Blue Purple Cyan White
+                    BBlack BRed BGreen BYellow BBlue BPurple BCyan BWhite)
+
+# Underline
+UBlack='\e[4;30m'       # Black
+URed='\e[4;31m'         # Red
+UGreen='\e[4;32m'       # Green
+UYellow='\e[4;33m'      # Yellow
+UBlue='\e[4;34m'        # Blue
+UPurple='\e[4;35m'      # Purple
+UCyan='\e[4;36m'        # Cyan
+UWhite='\e[4;37m'       # White
+
+underline_colors_names=(UBlack URed UGreen UYellow UBlue UPurple UCyan UWhite)
+
+# Background
+On_Black='\e[40m'       # Black
+On_Red='\e[41m'         # Red
+On_Green='\e[42m'       # Green
+On_Yellow='\e[43m'      # Yellow
+On_Blue='\e[44m'        # Blue
+On_Purple='\e[45m'      # Purple
+On_Cyan='\e[46m'        # Cyan
+On_White='\e[47m'       # White
+
+background_colors_names=(On_Black On_Red On_Green On_Yellow On_Blue On_Purple On_Cyan On_White)
+
+# High Intensity
+IBlack='\e[0;90m'       # Black
+IRed='\e[0;91m'         # Red
+IGreen='\e[0;92m'       # Green
+IYellow='\e[0;93m'      # Yellow
+IBlue='\e[0;94m'        # Blue
+IPurple='\e[0;95m'      # Purple
+ICyan='\e[0;96m'        # Cyan
+IWhite='\e[0;97m'       # White
+
+# Elles sont toutes dans la même liste
+
+# Bold High Intensity
+BIBlack='\e[1;90m'      # Black
+BIRed='\e[1;91m'        # Red
+BIGreen='\e[1;92m'      # Green
+BIYellow='\e[1;93m'     # Yellow
+BIBlue='\e[1;94m'       # Blue
+BIPurple='\e[1;95m'     # Purple
+BICyan='\e[1;96m'       # Cyan
+BIWhite='\e[1;97m'      # White
+
+high_intensity_colors_names=(IBlack IRed IGreen IYellow IBlue IPurple ICyan IWhite
+          BIBlack BIRed BIGreen BIYellow BIBlue BIPurple BICyan BIWhite)
+
+# High Intensity backgrounds
+On_IBlack='\e[0;100m'   # Black
+On_IRed='\e[0;101m'     # Red
+On_IGreen='\e[0;102m'   # Green
+On_IYellow='\e[0;103m'  # Yellow
+On_IBlue='\e[0;104m'    # Blue
+On_IPurple='\e[0;105m'  # Purple
+On_ICyan='\e[0;106m'    # Cyan
+On_IWhite='\e[0;107m'   # White
+
+background_high_intensity_colors_names=(On_IBlack On_IRed On_IGreen On_IYellow On_IBlue On_IPurple On_ICyan On_IWhite)
+
+Test1="\e[0;38m"
+Test2="\e[0;39m"
+tests=(Test1 Test2)
+all_colors_names=(`echo ${front_colors_names[@]} ${underline_colors_names[@]} ${background_colors_names[@]} ${high_intensity_colors_names[@]} ${background_high_intensity_colors_names[@]} ${all_colors_names[@]} ${tests[@]}`)
diff --git a/create_color.py b/create_color.py
new file mode 100644 (file)
index 0000000..17fc082
--- /dev/null
@@ -0,0 +1,94 @@
+#!/usr/bin/python
+# -*- coding:utf8 -*-
+
+""" Petit script pour générer une chaîne de caractère magique
+    qui permet de changer la couleur d'affichage du texte dans le shell
+"""
+
+# Les paramètres sont les suivants :
+# 1 : le type de sortie prompt ou pas
+#      si c'est prompt, la sortie est enadrée de \[ et \], sinon non
+# 2 : fg ou bg ou both
+# 3 : la couleur (black, red, green, yellow, blue, purple, cyan, white)
+# 4 et suivants : des paramètres
+#    liste exhaustive des combinaisons possibles :
+#    []
+#    bold
+#    underline
+#    high
+#    bold underline
+#    bold underline high  #(a prori ça garde que bold)
+#    underline high
+#   avec ground = both
+#    [fg_params] , bg_color [bg_params]
+
+
+import sys
+args=sys.argv
+
+
+
+dicocolor={"black":"0","Black":"0","noir":"0","Noir":"0","BLACK":"0","NOIR":"0",
+          "red":"1","Red":"1","rouge":"1","Rouge":"1","RED":"1","ROUGE":"1",
+          "green":"2","Green":"2","vert":"2","Vert":"2","GREEN":"2","VERT":"2",
+          "yellow":"3","Yellow":"3","jaune":"3","Jaune":"3","YELLOW":"3","JAUNE":"3",
+          "blue":"4","Blue":"4","bleu":"4","Bleu":"4","BLUE":"4","BLEU":"4",
+          "purple":"5","Purple":"5","violet":"5","Violet":"5","PURPLE":"5","VIOLET":"5",
+          "cyan":"6","Cyan":"6","CYAN":"6",
+          "white":"7","White":"7","blanc":"7","Blanc":"7","WHITE":"7","BLANC":"7"}
+
+def isBold(liste):
+  liste_bold=set(["bold","Bold","BOLD","gras","Gras","GRAS"])
+  return not(liste_bold.isdisjoint(set(liste)))
+
+def isUnderline(liste):
+  liste_underline=set(["underline","Underline","UNDERLINE","souligne","Souligne","SOULIGNE"])
+  return not(liste_underline.isdisjoint(set(liste)))
+
+def isHigh(liste):
+  liste_high=set(["high","High","HIGH","high_intensity","High_Intensity","HIGH_INTENSITY"])
+  return not(liste_high.isdisjoint(set(liste)))
+
+def get_fg_color(color,bold,underline,high):
+  prefix=("4;"*underline
+         +"1;"*bold)
+  highoupas="9"*high+"3"*(not(high))
+  return prefix+highoupas+dicocolor[color]
+
+def get_bg_color(color,high):
+  highoupas="4"*high+"10"*(not(high))
+  return highoupas+dicocolor[color]
+
+# Let's go
+out,ground,color=args[1],args[2],args[3]
+params=args[4:] # éventuellement vide
+
+if out=="prompt":
+  deb,fin="\\[\\e[","m\\]"
+else:
+  deb,fin="\\e[","m"
+
+
+
+if ground=="fg":
+  bold = isBold(params)
+  underline = isUnderline(params)
+  high = isHigh(params)
+  print deb+get_fg_color(color,bold,underline,high)+fin
+elif ground=="bg":
+  high = isHigh(params)
+  print deb+get_bg_color(color,high)+fin
+elif ground=="both":
+  # On cherche le séparateur
+  virgule=params.index(",")
+  fg_params=params[:virgule]
+  bg_color=params[virgule+1]
+  bg_params=params[virgule+2:]
+  out = deb
+  out += get_fg_color(color,isBold(fg_params),isUnderline(fg_params),isHigh(fg_params))
+  out += fin+deb
+  out += get_bg_color(bg_color,isHigh(bg_params))
+  out += fin
+  print out
+else:
+  print ""
diff --git a/test_base_colors.sh b/test_base_colors.sh
new file mode 100755 (executable)
index 0000000..7e4ffbc
--- /dev/null
@@ -0,0 +1,13 @@
+#/bin/bash
+
+# Script idiot pour tester toutes les combinaisons de couleurs
+
+source /home/vincent/scripts/colors.sh
+
+
+for coul in "${all_colors_names[@]}"
+do
+    col=${!coul}
+    aff="$coul : ${col}plop$No_Color"
+    echo -e $aff
+done