#1 Le 26/09/2024, à 19:38
- PowaBanga
(Résolu) Afficher Khal avec les couleurs dans conky
Bonjour à tous,
J'ai trouvé conky qui me permet de faire des widget très custom, et donc pour faire cour, voici une config, qui m'affiche un calendrier avec khal
conky.config = {
update_interval=30,
out_to_console=true,
out_to_stderr=false,
font='DejaVuSansMonoPowerline:size=9',
use_xft=true,
override_utf8_locale=true,
own_window=true,
own_window_type='desktop',
own_window_transparent=true,
own_window_hints='undecorated,below,sticky,skip_taskbar,skip_pager',
alignment='top_left',
gap_x=800,
gap_y=30,
alignment='bottom_right',
minimum_size=200,
maximum_width=380,
}
conky.text = [[
${execpi 30 /home/powabanga/Documents/trucs/scripts/ANSIToConky khal --color calendar $(date +"%d/%m/%Y %H:%M") $(date -d "+2 month" +"%d/%m/%Y %H:%M") | sed 's/[a-z] \$/&{font}\$/g'}
]]
bon khal sans les couleur c'est bof, du coup j'ai fais ce script pour convertir la mise en forme du texte de mon terminal dans conky, en récupérant notemment mes codes couleur hexadecimal correspondant dans mon .Xressources
Command="$@"
colors=()
BbcColorList="$(cat ~/.Xresources | grep '*.color')"
# Extraire les couleurs
for i in {0..15}; do
color_value="$(echo "$BbcColorList" | grep -w "color$i" | awk '{print $NF}')"
colors[i]="$color_value"
# echo "Color $i: \${color ${colors[i]}"
done
# Remplacer les séquences d'échappement par les couleurs
$Command | sed 's/\x1b\[0m/\${color '"${colors[15]}"'}/g;
s/\x1b\[30m/\${color '"${colors[0]}"'}/g;
s/\x1b\[31m/\${color '"${colors[1]}"'}/g;
s/\x1b\[32m/\${color '"${colors[2]}"'}/g;
s/\x1b\[33m/\${color '"${colors[3]}"'}/g;
s/\x1b\[34m/\${color '"${colors[4]}"'}/g;
s/\x1b\[35m/\${color '"${colors[5]}"'}/g;
s/\x1b\[36m/\${color '"${colors[6]}"'}/g;
s/\x1b\[37m/\${color '"${colors[7]}"'}/g;
s/\x1b\[90m/\${color '"${colors[8]}"'}/g;
s/\x1b\[91m/\${color '"${colors[9]}"'}/g;
s/\x1b\[92m/\${color '"${colors[10]}"'}/g;
s/\x1b\[93m/\${color '"${colors[11]}"'}/g;
s/\x1b\[94m/\${color '"${colors[12]}"'}/g;
s/\x1b\[95m/\${color '"${colors[13]}"'}/g;
s/\x1b\[96m/\${color '"${colors[14]}"'}/g;
s/\x1b\[97m/\${color '"${colors[15]}"'}/g;
s/\x1b\[97m/\${color '"${colors[15]}"'}/g;
s/\x1b\[1m/\${font DejaVuSansMono:bold:size=9}/g;
s/[a-z] \$/&{font}\$/g'
bon là le script est pas totalement fini, mais je suis déjà satisfait du résultat. ce qui m'embête le plus là tout de suite, c'est que malgré l'usage de déjàvuSansMono, qui à moin que je ne me trompe est monospace, mes caractères ne sont pas alignés !
Bon, voici une image pour clarifier ce dont je parle :
On voit bien que les dates ne s'alignent pas du tout avec les jours de la semaine. et c'était déjà le cas avant que je ne les mette en gras...
Si quelqu'un a une idée pour arranger ça, ça serait super mega top
Dernière modification par PowaBanga (Le 01/10/2024, à 09:45)
Hors ligne
#2 Le 01/10/2024, à 04:12
- noje
Re : (Résolu) Afficher Khal avec les couleurs dans conky
Je me base sur l'image, car finalement c'est ta sortie.
D'où sort ceci (même si détail ):
qsdfqsdfqsdf
code texte devant le 26 septembre "□[7m"
Perso je ferais un sed sur les espaces des lignes concernées.
Pour Septembre au niveau du 2 trouver le nombre d'espaces, remplacer par nombre d'espaces alignant, a vu d'oeil sur l'image les espaces sont régulier sur les lignes qui pose problème.
!! attention "-" espace comme affiché sous vim avec ":set list"
Remplacement de 5 espaces par 8 espaces (c'est pour l'exemple).
sed 's/^-----/--------/g'
Si tu ressors la commande sur un terminal et non conky, tu as aussi ce décalage ?
- LTS 18.04 & 22.04 - jwm - cwm - zsh
Les seules vraies erreurs sont celles que nous commettons à répétition.
Les autres sont des occasions d'apprentissage. (Dalaï Lama)
Hors ligne
#3 Le 01/10/2024, à 09:40
- PowaBanga
Re : (Résolu) Afficher Khal avec les couleurs dans conky
"qsdfqsdfqsdf" il s'agit juste d'un evenement que j'ai mis pour voir comment il s'affiche dans khal
"□[7m" il s'agit d'une séquence d'échapement, qui permet d'inverse les couleur de background et foreground pour les caractères qui suivent dans un terminal. Il s'affiche en brut car conky ne gère pas ça.
C'est principalement à ce niveau que le script bash intervient.
Je ne sais pas ce qu'il s'est passé, mais ca fonctionne comme attendu à présent. au début j'avais obtenu des résultat en utilisant {tab x} (qui insère une tabulation de x pixels) et {offset x} qui insère un espace de x pixel) via sed comme tu l'a suggéré.
Je poste mon script corrigé ici, sait-on jamais que quelqu'un le trouverait intéressant :
Command="$@"
colors=()
BbcColorList="$(cat ~/.Xresources | grep '*.color')"
# Extraire les couleurs
for i in {0..18}; do
[[ $i -le 15 ]] && color_value="$(echo "$BbcColorList" | grep -w "color$i" | awk '{print $NF}')"
[[ $i -eq 16 ]] && color_value="$(echo "$BbcColorList" | grep -w "foreground" | awk '{print $NF}')"
[[ $i -eq 17 ]] && color_value="$(echo "$BbcColorList" | grep -w "background" | awk '{print $NF}')"
[[ $i -eq 18 ]] && color_value="$(echo "$BbcColorList" | grep -w "cursorColor" | awk '{print $NF}')"
colors[i]="$color_value"
# echo "Color $i: \${color ${colors[i]}"
done
# Remplacer les séquences d'échappement par les couleurs
$Command | sed 's/\x1b\[0m\x1b\[0m/\x1b\[0m/g;
s/\x1b\[0m/\${color '"${colors[15]}"'}\${font DejaVuSansMono:size=9}/g;
s/\x1b\[30m/\${color '"${colors[0]}"'}/g;
s/\x1b\[31m/\${color '"${colors[1]}"'}/g;
s/\x1b\[32m/\${color '"${colors[2]}"'}/g;
s/\x1b\[33m/\${color '"${colors[3]}"'}/g;
s/\x1b\[34m/\${color '"${colors[4]}"'}/g;
s/\x1b\[35m/\${color '"${colors[5]}"'}/g;
s/\x1b\[36m/\${color '"${colors[6]}"'}/g;
s/\x1b\[37m/\${color '"${colors[7]}"'}/g;
s/\x1b\[90m/\${color '"${colors[8]}"'}/g;
s/\x1b\[91m/\${color '"${colors[9]}"'}/g;
s/\x1b\[92m/\${color '"${colors[10]}"'}/g;
s/\x1b\[93m/\${color '"${colors[11]}"'}/g;
s/\x1b\[94m/\${color '"${colors[12]}"'}/g;
s/\x1b\[95m/\${color '"${colors[13]}"'}/g;
s/\x1b\[96m/\${color '"${colors[14]}"'}/g;
s/\x1b\[97m/\${color '"${colors[15]}"'}/g;
s/\x1b\[97m/\${color '"${colors[15]}"'}/g;
s/\x1b\[1m/\${font DejaVuSansMono:bold:size=9}/g;
s/\x1b\[7m/\${font DejaVuSansMono:bold:size=9}/g;
s/}'$(date +%d)'/&\${font}/g;'
Remarque, j'ai fais de modifications dans mon script conky, peut-être que ca vient de là, je n'ai pas vraiment testé en sens inverse pour identifier exactement quel paramètre à change le truc, ca devait être dans une des option "own_window"
conky.config = {
update_interval=30,
out_to_console=true,
out_to_stderr=false,
font='DejaVuSansMonoPowerline:size=9',
use_xft=true,
override_utf8_locale=true,
own_window=true,
own_window_type='desktop',
own_window_transparent=true,
own_window_hints='undecorated,below,sticky,skip_taskbar,skip_pager',
own_window_argb_visual = true,
own_window_class = 'Conky',
own_window_argb_value = 200,
alignment='top_left',
gap_x=800,
gap_y=30,
alignment='bottom_right',
minimum_size=200,
maximum_width=380,
}
conky.text = [[
${execpi 30 /home/powabanga/Documents/trucs/scripts/ANSIToConky khal --color calendar $(date +"%d/%m/%Y %H:%M") $(date -d "+2 month" +"%d/%m/%Y %H:%M") | sed 's/[a-z] \$/&{font}\$/g'}
]]
Dernière modification par PowaBanga (Le 01/10/2024, à 09:44)
Hors ligne
#4 Le 01/10/2024, à 14:36
- RaphaelG
Re : (Résolu) Afficher Khal avec les couleurs dans conky
Dans ton 1er message, dans l'image que tu affiches on voit bien que la chaîne de caractères "lu ma me je ...... 0/2/10/2024" utilise la police dejavuSansMono grâce aux zéros pointés qui se différencient des o minuscules et majuscules.
Mais tout le reste n'est pas en dejavuSansMono; les caractères zéros ne sont pas pointés.
IHTH
Hors ligne