LINUX.ORG.RU

Транспонирование календаря в Conky, выделение праздников и текущая дата

 , ,


0

1

Доброго всем! Тема сама за себя говорит.

Вертикальный вывод и выделение праздников:

${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



Последнее исправление: AnonymUser (всего исправлений: 20)

Ответ на: комментарий от Roy-Batty

Сам я понял, что не буду пользоваться Conky. Не хочу, чтобы что-то постоянно «крутилось» на рабочем столе.

Сделал вывод календаря в xterm с подсвечиванием даты и выходных дней. Работает так: в .bashrc находится скрипт calendar.sh, который запускает программу, написанную на языке C. Скрипт выполняет форматирование, выводит первые две строки и запускает программу, которая выполняет изменение цветов.

Скрипт и исходный код программу можно посмотреть здесь: https://gitflic.ru/project/dcc0/mix-c-89-php/file?file=colored_caledar

Выглядит вот так: https://ibb.co/vxBPgVq

AnonymUser
() автор топика
31 марта 2024 г.

Дополнение к теме.

Сделал обработку стандартного календаря для Conky Linux на C. Обрабатывает и раскрашивает текущую дату и выходные. Выглядит так: https://ibb.co/P6LJtwX

Строк немного получилось: https://gitflic.ru/project/dcc0/kalendar-dlya-conky

На системах с portage можно поставить через overlay, пакет calendar-comb-conky: https://gitflic.ru/project/dcc0/combinatorica-classica-overlay

Календарь именно для консоли в отдельном пакете: https://gitflic.ru/project/dcc0/kalendar-dlya-terminala-linux

AnonymUser
() автор топика