jalali-calendar-cli 0.1.8
Jalali (Shamsi) calendar in your terminal, with holidays
Requires Python: <4.0,>=3.10

#+TITLE: jalali-calendar-cli

Jalali (Shamsi) calendar in your terminal, with holidays

* Install
#+begin_example bash
pip install -U jalali-calendar-cli
#+end_example

This requires Python ≥3.10.

* Usage
# #+ATTR_HTML: :width 884
# [[file:readme.org_imgs/20230524_003016_h5V1Xf.png]]
#+ATTR_HTML: :width 914
[[file:readme.org_imgs/20230606_125421_Bh79HZ.png]]

#+ATTR_HTML: :width 900
[[file:readme.org_imgs/20230606_125356_jLt2Jh.png]]


#+begin_example bash
usage: jalali-calendar [-h] [--color {auto,always,never}]
                       [--true-color | --no-true-color]
                       [--footnotes | --no-footnotes]
                       [--indentation INDENTATION]
                       [--holidays-json-path HOLIDAYS_JSON_PATH]
                       [--color-preset {light,dark}]
                       [--weekend-true-color WEEKEND_TRUE_COLOR]
                       [--holiday-true-color HOLIDAY_TRUE_COLOR]
                       [--header-true-color HEADER_TRUE_COLOR]
                       [--today-true-color TODAY_TRUE_COLOR]
                       [--weekend-color WEEKEND_COLOR]
                       [--holiday-color HOLIDAY_COLOR]
                       [--header-color HEADER_COLOR]
                       [--today-color TODAY_COLOR]
                       [month] [year]

positional arguments:
  month                 month in Jalali calendar (default: current month)
  year                  year in Jalali calendar (default: current year)

options:
  -h, --help            show this help message and exit
  --color {auto,always,never}
                        colorize the output
  --true-color, --no-true-color
                        enable true color support for output (default: False)
  --footnotes, --no-footnotes
                        show footnotes in the output (default: True)
  --indentation INDENTATION
                        number of spaces for indentation (default: 5)
  --holidays-json-path HOLIDAYS_JSON_PATH
                        path to JSON file containing holiday data
  --color-preset {light,dark}
                        color preset for the calendar output (default: light)

24-bit true color options:
  --weekend-true-color WEEKEND_TRUE_COLOR
                        RGB values for weekend color in 24-bit true color
  --holiday-true-color HOLIDAY_TRUE_COLOR
                        RGB values for holiday color in 24-bit true color
  --header-true-color HEADER_TRUE_COLOR
                        RGB values for header color in 24-bit true color
  --today-true-color TODAY_TRUE_COLOR
                        RGB values for the current day's color

colorama 256 color options:
  --weekend-color WEEKEND_COLOR
                        colorama color name for weekend color
  --holiday-color HOLIDAY_COLOR
                        colorama color name for holiday color
  --header-color HEADER_COLOR
                        colorama color name for header color
  --today-color TODAY_COLOR
                        colorama color name for the current day
#+end_example

** Examples
#+begin_example bash
jcal 12
#+end_example

#+begin_example
            1402 Esfand           
 Sat  Sun  Mon  Tue  Wed  Thu  Fri
                  1    2    3    4
   5    6    7    8    9   10   11
  12   13   14   15   16   17   18
  19   20   21   22   23   24   25
  26   27   28   29

 Holidays:
    6: Birthday of Imam Mahdi
   29: Nationalization of the Oil Industry
#+end_example

#+begin_example bash
jcal 7 1402
#+end_example

#+begin_example
             1402 Mehr            
 Sat  Sun  Mon  Tue  Wed  Thu  Fri
   1    2    3    4    5    6    7
   8    9   10   11   12   13   14
  15   16   17   18   19   20   21
  22   23   24   25   26   27   28
  29   30

 Holidays:
    2: Martyrdom of Imam Hassan Askari and Start of Imamate of Imam Mahdi
   11: Birthday of Prophet Muhammad and Imam Sadiq
#+end_example

#+ATTR_HTML: :width 968
[[file:readme.org_imgs/20230606_125617_sazNzJ.png]]

#+ATTR_HTML: :width 968
[[file:readme.org_imgs/20230606_103928_zRAerD.png]]

*** Shell Aliases in Bash
You can add aliases to =~/.bashrc= and =~/.bash_profile= to persist your settings:

#+begin_example bash
alias jcal='command jcal --color-preset dark'
#+end_example

Aliases work the same way in Zsh, you just need to add them to =~/.zshenv=.

*** Today
The current day is highlighted:
#+ATTR_HTML: :width 874
[[file:readme.org_imgs/20230630_060229_Temg6y.png]]

*** Seeing All Months Together
There is a Perl script included in this repository that prints all months together. This script is a WIP.

#+begin_example zsh
perl ./jcal_all.pl 1402 --outer-indent 2 --horizontal-indent 1
#+end_example

#+begin_example
       1402 Farvardin               1402 Ordibehesht                1402 Khordad        
 Sat Sun Mon Tue Wed Thu Fri   Sat Sun Mon Tue Wed Thu Fri   Sat Sun Mon Tue Wed Thu Fri
               1   2   3   4                             1             1   2   3   4   5
   5   6   7   8   9  10  11     2   3   4   5   6   7   8     6   7   8   9  10  11  12
  12  13  14  15  16  17  18     9  10  11  12  13  14  15    13  14  15  16  17  18  19
  19  20  21  22  23  24  25    16  17  18  19  20  21  22    20  21  22  23  24  25  26
  26  27  28  29  30  31        23  24  25  26  27  28  29    27  28  29  30  31        
                                30  31                                                  

          1402 Tir                     1402 Mordad                 1402 Shahrivar       
 Sat Sun Mon Tue Wed Thu Fri   Sat Sun Mon Tue Wed Thu Fri   Sat Sun Mon Tue Wed Thu Fri
                       1   2         1   2   3   4   5   6                     1   2   3
   3   4   5   6   7   8   9     7   8   9  10  11  12  13     4   5   6   7   8   9  10
  10  11  12  13  14  15  16    14  15  16  17  18  19  20    11  12  13  14  15  16  17
  17  18  19  20  21  22  23    21  22  23  24  25  26  27    18  19  20  21  22  23  24
  24  25  26  27  28  29  30    28  29  30  31                25  26  27  28  29  30  31
  31                                                                                    

          1402 Mehr                     1402 Aban                     1402 Azar         
 Sat Sun Mon Tue Wed Thu Fri   Sat Sun Mon Tue Wed Thu Fri   Sat Sun Mon Tue Wed Thu Fri
   1   2   3   4   5   6   7             1   2   3   4   5                     1   2   3
   8   9  10  11  12  13  14     6   7   8   9  10  11  12     4   5   6   7   8   9  10
  15  16  17  18  19  20  21    13  14  15  16  17  18  19    11  12  13  14  15  16  17
  22  23  24  25  26  27  28    20  21  22  23  24  25  26    18  19  20  21  22  23  24
  29  30                        27  28  29  30                25  26  27  28  29  30    

          1402 Dey                     1402 Bahman                   1402 Esfand        
 Sat Sun Mon Tue Wed Thu Fri   Sat Sun Mon Tue Wed Thu Fri   Sat Sun Mon Tue Wed Thu Fri
                           1         1   2   3   4   5   6                 1   2   3   4
   2   3   4   5   6   7   8     7   8   9  10  11  12  13     5   6   7   8   9  10  11
   9  10  11  12  13  14  15    14  15  16  17  18  19  20    12  13  14  15  16  17  18
  16  17  18  19  20  21  22    21  22  23  24  25  26  27    19  20  21  22  23  24  25
  23  24  25  26  27  28  29    28  29  30                    26  27  28  29            
  30
#+end_example

** =colorama= Colors
These colors are defined by your terminal theme. Use true (24-bit) colors if you want to specify colors in RGB.

#+begin_example
BLACK
BLUE
CYAN
GREEN
LIGHTBLACK_EX
LIGHTBLUE_EX
LIGHTCYAN_EX
LIGHTGREEN_EX
LIGHTMAGENTA_EX
LIGHTRED_EX
LIGHTWHITE_EX
LIGHTYELLOW_EX
MAGENTA
RED
RESET
WHITE
YELLOW
#+end_example

* Holiday Data
The default data dictionary is [[https://github.com/NightMachinery/jalali-calendar-cli/blob/master/jalali_calendar_cli/holidays.json][here]]. I plan to keep the data up-to-date for the upcoming years, but you can always supply your own.

The holiday data of previous years (≤1401) has not been added.