Доброго всем! Тема сама за себя говорит.
Вертикальный вывод и выделение праздников:
${execp cal -v -n 1 | head -n6 | sed "s/`date +%e` \|`date +%e`$/\$\{color green\}&\$\{color grey\}/" }
${execp cal -v -n 2 | tail -n2 | sed 's/[Сб|Вс|0-9]/\$\{color purple\}&\$\{color grey\}/g'}
Update: Вариант номер 2 горизонтальный вывод календаря в conky с подстветкой текущей даты и выходных дней.
В .conkyrc
${execp cat /tmp/cal.txt | sed -e 's/-/\$\{color purple\}/g' -e 's/+/\$\{color grey\}/g' -e "s/ `date +%e`\|`date +%e` \|`date +%e`\+$/\$\{color green\}&\$\{color grey\}/" -e 's/:/\$\{color purple\}/g' }
И при старте или планировщиком cron выполнить скрипт 1 раз в сутки. Сам скрипт: calendar.sh
#Обработка строк календаря в Linux (программа cal) для раскрашивания выходных дней и текущей даты
#Выходные и текущая выделяются цветом в файле .conkyrc
cal > /tmp/cal.txt
# Обработка строки 2 #
part2=`cal | sed -n '2p'`; printf "${part2: -5}" > /tmp/cal2.txt
source=`cat /tmp/cal2.txt`
sed -i 's/'"$source"'/\'$'-&+/g' /tmp/cal.txt
####################################################
###Обработка строки 3####
part2=`cal | sed -n '3p'`; printf "${part2: -5}" > /tmp/cal2.txt
source=`cat /tmp/cal2.txt`
sed -i 's/'"$source"'/\'$'-&+/g' /tmp/cal.txt
#Меняем последнее число в строке, чтобы выделить воскресенье
part2=`cat /tmp/cal.txt | sed -n '3p'`; printf "${part2: -3}" > /tmp/cal2-1.txt
source=`cat /tmp/cal2-1.txt`
if [[ $source =~ [0-9+]+$ ]]; then
sed 's/'"$source"'/\'$': &/g' -i /tmp/cal.txt
fi
###################################################
# Обработка строки 4 #
part2=`cal | sed -n '4p'`; printf "${part2: -5}" > /tmp/cal2.txt
source=`cat /tmp/cal2.txt`
sed -i 's/'"$source"'/\'$'-&+/g' /tmp/cal.txt
#
part2=`cat /tmp/cal.txt | sed -n '4p'`; printf "${part2: -3}" > /tmp/cal2.txt
source=`cat /tmp/cal2.txt`
if [[ $source =~ [0-9+]+$ ]]; then
sed 's/'"$source"'/\'$': &/g' -i /tmp/cal.txt
fi
###################################################
# Обработка строки 5 #
part2=`cal | sed -n '5p'`; printf "${part2: -5}" > /tmp/cal2.txt
source=`cat /tmp/cal2.txt`
sed -i 's/'"$source"'/\'$'-&+/g' /tmp/cal.txt
#
part2=`cat /tmp/cal.txt | sed -n '5p'`; printf "${part2: -3}" > /tmp/cal2.txt
source=`cat /tmp/cal2.txt`
if [[ $source =~ [0-9+] ]]; then
sed 's/'"$source"'/\'$': &/g' -i /tmp/cal.txt
fi
###################################################
# Обработка строки 6 #
part2=`cal | sed -n '6p'`; printf "${part2: -5}" > /tmp/cal2.txt
source=`cat /tmp/cal2.txt`
sed -i 's/'"$source"'/\'$'-&+/g' /tmp/cal.txt
#
part2=`cat /tmp/cal.txt | sed -n '6p'`; printf "${part2: -3}" > /tmp/cal2.txt
source=`cat /tmp/cal2.txt`
if [[ $source =~ [0-9+] ]]; then
sed 's/'"$source"'/\'$': &/g' -i /tmp/cal.txt
fi
###################################################
# Обработка строки 7 #
part2=`cal | sed -n '7p'`; printf "${part2: -6}" > /tmp/cal7-1.txt
source=`cat /tmp/cal7-1.txt`
if [[ $source =~ [0-9+] ]]; then
sed -i 's/'"$source"'/\'$'-&+/g' /tmp/cal.txt
echo ok
fi
#
part2=`cat /tmp/cal.txt | sed -n '7p'`; printf "${part2: -3}" > /tmp/cal7-2.txt
source=`cat /tmp/cal7-2.txt`
if [[ $source =~ [0-9+] ]]; then
sed 's/'"$source"'/\'$': &/g' -i /tmp/cal.txt
fi
###################################################
# Обработка строки 8 #
part2=`cal | sed -n '8p'`; printf "${part2: -5}" > /tmp/cal8-1.txt
source=`cat /tmp/cal8-1.txt`
if [[ $source =~ [0-9+]+$ ]]; then
sed -i 's/'"$source"'/\'$'-&+/g' /tmp/cal.txt
fi
#
part2=`cat /tmp/cal.txt | sed -n '8p'`; printf "${part2: -3}" > /tmp/cal8-2.txt
source=`cat /tmp/cal8-2.txt`
if [[ $source =~ [0-9+]+$ ]]; then
sed 's/'"$source"'/\'$': &/g' -i /tmp/cal.txt
fi
Post Scriptum
Варианту проще и лучше будем рады.
Update:
Вариант обработки календаря на php:
https://gitflic.ru/project/dcc0/mix-c-89-php/blob?file=calendar.php