Skip to content

seanpm2001/DCal

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

*.dcal format specification

This file is under construction. It may not seem tidy at the moment. Subesequent updates will fix this.

Description

Click/tap here to expand/collapse this section

πŸ—“οΈπŸ“…οΈπŸ“†οΈ DCal is an advanced calendar format that adds significant amounts of customization and control to digital calendars. Inspired by the ICS format, and ProtonCalendar, along with real life calendars.

Notes

Click/tap here to expand/collapse this section

  • Not compatible with 8:3 file systems, so not compatible with Windows 3.1/Windows NT 3.51 and below. Nobody should be using these as their daily devices anyways, unless you are using a virtua machine

  • This format is not specific to DCalendar, I am hoping to make this an open standard that will work in all modern calendar software.

Pronunciation

Click/tap here to expand/collapse this section

Dcal pronunciation: Decal, although I have no rules on pronunciation, this is just the way I pronounce it

See: :octocat: seanpm2001/Pronunciation

Structure sample alpha 1

Click/tap here to expand/collapse this section

Alpha 1 build of the file structure.

Click/tap here to expand/collapse this section

<header>
Cover font <set a font>
Millennium font <set a font>
Century font <set a font>
Decade font <set a font>
Year font <set a font>
January font: <set a font>
February font: <set a font>
March font: <set a font>
April font: <set a font>
May font: <set a font>
June font: <set a font>
July font: <set a font>
August font: <set a font>
September font: <set a font>
October font: <set a font>
November font: <set a font>
October font: <set a font>
Y-M-D
M-D-Y
D-M-Y
M-Y-D
D-Y-M
e.t.c
Start on Saturday
Start on Sunday
Default view: day
Default view: week
Default view: month
Default view: year
Default view: decade
Default view: century
Default view: millennium (not yet available in some calendars)
Enable images
Enable videos
Enable OS integration (such as, a specific event in the calendar can trigger an alarm to go off, etc.)
Lighting (Light, Dark, System default)
Enable page flipping animation
Calendar type (Julian, Gregorian, Hebrew, Solar, etc.)
<wikipedia-sample comment="For the supported calendar types, representing the year 2022">
Gregorian calendar	2022
MMXXII
Ab urbe condita	2775
Armenian calendar	1471
ԹՎ ΥŒΥ†Υ€Τ±
Assyrian calendar	6772
BahΓ‘ΚΌΓ­ calendar	178–179
Balinese saka calendar	1943–1944
Bengali calendar	1429
Berber calendar	2972
British Regnal year	70Β Eliz.Β 2 – 1Β Cha.Β 3
Buddhist calendar	2566
Burmese calendar	1384
Byzantine calendar	7530–7531
Chinese calendar	θΎ›δΈ‘εΉ΄ (MetalΒ Ox)
4718 or 4658
Β Β Β Β β€”Β toΒ β€”
壬寅年 (WaterΒ Tiger)
4719 or 4659
Coptic calendar	1738–1739
Discordian calendar	3188
Ethiopian calendar	2014–2015
Hebrew calendar	5782–5783
Hindu calendars	
Β - Vikram Samvat	2078–2079
Β - Shaka Samvat	1943–1944
Β - Kali Yuga	5122–5123
Holocene calendar	12022
Igbo calendar	1022–1023
Iranian calendar	1400–1401
Islamic calendar	1443–1444
Japanese calendar	Reiwa 4
(δ»€ε’ŒοΌ”εΉ΄)
Javanese calendar	1955–1956
Juche calendar	111
Julian calendar	Gregorian minus 13 days
Korean calendar	4355
Minguo calendar	ROC 111
ζ°‘εœ‹111εΉ΄
Nanakshahi calendar	554
Thai solar calendar	2565
Tibetan calendar	ι˜΄ι‡‘η‰›εΉ΄
(female Iron-Ox)
2148 or 1767 or 995
Β Β Β Β β€”Β toΒ β€”
ι˜³ζ°΄θ™ŽεΉ΄
(male Water-Tiger)
2149 or 1768 or 996
Unix time	1640995200 – 1672531199
5 	May 	31 
</wikipedia-sample>
Yes, I do plan to support the Juche calendar, along with other calendars of this magnitude, I will be supporting all calendar formats. People may commonly set their calendar to Juche as a joke, or for historical/research/other purposes, but it will remains an option that won't be removed nonetheless. It isn't that hard to support.
</header>

The calendar can be different depending on the defined calendar type. The following example will use the Gregorian calendar

Click/tap here to expand/collapse this section

<cover>
<image>image for once-a-millennium Calendar cover</image>
<image>image for once-a-century Calendar cover</image>
<image>image for once-a-decade Calendar cover</image>
<image>image for yearly Calendar cover</image>
</cover>

<!-- Supported image formats: Any, or: PNG, SVG, JPG, JPEG, JIF, GIF, JFIF, JP2, JPE, WebP, NetP, HEIF, HEIC, HEIFS, HEICS, TIF, TIFF, BMP, DIB, PSD, etc. !-->

<image>image for January</image>
January
1-31

<image>image for February</image>
February
1-28/29

<image>image for March</image>
March
1-31

<image>image for April</image>
March
1-30

<image>image for May</image>
March
1-31

<image>image for June</image>
March
1-30

<image>image for July</image>
March
1-31

<image>image for August</image>
March
1-31

<image>image for September</image>
March
1-30

<image>image for October</image>
March
1-31

<image>image for November</image>
March
1-30

<image>image for December</image>
March
1-31

Specification

Click/tap here to expand/collapse this section

THe current DCal specification is planned to be written in Python, JavaScript, and TypeScript.


Implementation

Click/tap here to expand/collapse this section

The current DCal implementation is planned to be written in D, and is known as :octocat: DCalendar


Media support

Click/tap here to expand/collapse this section

Images

Click/tap here to expand/collapse this section

You can embed images into the cover of the calendar for each individual month/year/century/millennium, and you can also embed images into the description of each event. The following image formats are currently supported: PNG, SVG, JPG, JPEG, JIF, GIF, JFIF, JP2, JPE, WebP, NetP, HEIF, HEIC, HEIFS, HEICS, TIF, TIFF, BMP, DIB, PSD, and GIF. More formats will be supported in the future.

The calendar distributor can impose a limit of the overall image size that can be applied at a per month, per year, and/or per-decade basis. Users who download their calendar files can change this for their personal use.

The heading looks like this

<img-quota>
    <images>
        <monthly-limit="none">
        <yearly-limit="100000000 bytes"> <!-- Distributors can set the limit to whatever they want, but are advised to take caution, as it can use up lots of space !-->
        <decade-limit="200000000 bytes">   
    </images>
</img-quota>

This heading is defined at the beginning of the file.

Videos

Click/tap here to expand/collapse this section

Videos can be embedded into the clover of the calendar for each individual month/year/century/millennium, and you can also embed videos into the description of each event. One must take extreme caution doing this, as not only will it take up lots of space, it will be a strain on the CPU and bandwidth. The current video formats are currently supported: AVI, MKV, WebM, NetV, MP4, 3GP, 3GPP, GIFV, MOV, WMV, and QT. More formats will be supported in the future.

Just like with images, the calendar distributor can impose a limit of the overall video size that can be applied at a per month, per year, and/or per-decade basis. Users who download their calendar files can change this for their personal use.

The heading looks like this

<vid-quota>
    <videos>
        <monthly-limit="none">
        <yearly-limit="1000000000 bytes"> <!-- Distributors can set the limit to whatever they want, but are advised to take caution, as it can use up lots of space !-->
        <decade-limit="2000000000 bytes">   
    </videos>
</vid-quota>

This heading is defined at the beginning of the file.


Animations

Click/tap here to expand/collapse this section

Calendar flip direction

Click/tap here to expand/collapse this section

The direction of calendar flipping can be changed:

  • up and right
  • up and left
  • down and right
  • down and left

This can be defined in the calendar heading like so:

<animation>
    <flip-direction="Up and left"></flip-direction>
</animation>

If you define left instead of right, the calendar may seem like it is going the wrong direction.

Paper physics

Click/tap here to expand/collapse this section

Paper physics can be enabled (this example builds off of the above example)

<animation>
    <flip-direction="Up and left"></flip-direction>
    <physics-mode="Paper"></physics-mode>
</animation>

Coffee spill

Click/tap here to expand/collapse this section

An Easter Egg known as Coffee Spill is included. It is currently in planning, but the general concept is that you can temporarily stain your calendar with coffee or another beverage by triggering the coffee spill easter egg.


DCal metadata

Click/tap here to expand/collapse this section

  • Email associations
  • Location associations
  • Descriptions
  • Labels
  • Categories
  • Actions {
    1. Trigger a notification
    1. Trigger an alarm
    1. Trigger a popup }
  • Events

Event Timer

Click/tap here to expand/collapse this section

Set a timer for the duration of an event.

  • Can't go any lower than 5 seconds
  • By 5 seconds
  • By 10 seconds
  • By 15 seconds
  • By 20 seconds
  • By 30 seconds
  • By minute
  • By 2.5 minutes
  • By 5 minutes
  • By 10 minutes
  • By 15 minutes
  • By 20 minutes
  • By 30 minutes
  • By 60 minutes
  • By 90 minutes
  • By 120 minutes
  • By 150 minutes
  • By 180 minutes
  • By 210 minutes
  • By 240 minutes
  • By 270 minutes
  • By 300 minutes
  • By 330 minutes
  • By 360 minutes
  • By 390 minutes
  • By 420 minutes
  • By 450 minutes
  • By 480 minutes
  • By 510 minutes
  • By 540 minutes
  • By 570 minutes
  • By 600 minutes
  • By 630 minutes
  • By 660 minutes
  • By 690 minutes
  • By 720 minutes
  • By 750 minutes
  • By 780 minutes
  • By 810 minutes
  • By 840 minutes
  • By 870 minutes
  • By 900 minutes
  • By 930 minutes
  • By 960 minutes
  • By 990 minutes
  • By 1020 minutes
  • By 1050 minutes
  • By 1080 minutes
  • By 1110 minutes
  • By 1140 minutes
  • By 1170 minutes
  • By 1200 minutes
  • By 1230 minutes
  • By 1260 minutes
  • By 1290 minutes
  • By 1320 minutes
  • By 1350 minutes
  • By 1380 minutes
  • By 1410 minutes
  • By 1440 minutes (24 hours)
  • All day (a separate category than - By 1440 minutes)

Demo calendars

Click/tap here to expand/collapse this section

NTS: For demo purposes: create the following sample calendars:

Ab urbe condita calendar

Click/tap here to expand/collapse this section

  • Not enough time to add right now

Armenian Calendar

Click/tap here to expand/collapse this section

  • Not enough time to add right now

Assyrian Calendar

Click/tap here to expand/collapse this section

  • Not enough time to add right now

BahΓ‘ΚΌΓ­ calendar

Click/tap here to expand/collapse this section

  • Not enough time to add right now

Balinese saka calendar

Click/tap here to expand/collapse this section

  • Not enough time to add right now

Bengali calendar

Click/tap here to expand/collapse this section

  • Not enough time to add right now

Berber calendar

Click/tap here to expand/collapse this section

  • Not enough time to add right now

British Regnal year

Click/tap here to expand/collapse this section

  • Not enough time to add right now

Buddhist calendar

Click/tap here to expand/collapse this section

  • Not enough time to add right now

Burmese calendar

Click/tap here to expand/collapse this section

  • Not enough time to add right now

Byzantine calendar

Click/tap here to expand/collapse this section

  • Not enough time to add right now

Chinese Calendar

Click/tap here to expand/collapse this section

  • Not enough time to add right now

Coptic calendar

Click/tap here to expand/collapse this section

  • Not enough time to add right now

Discordian calendar

Click/tap here to expand/collapse this section

  • Not enough time to add right now

Ethiopian calendar

  • Not enough time to add right now

Gregorian

Click/tap here to expand/collapse this section

Gregorian_Simple_Sample1Demo1.dcal

A simple Gregorian calendar with a range of 1000 CE to 2024 CE

Gregorian_Simple_Sample2Demo1.dcal

A simple Gregorian calendar with a range of 10000 BCE to 2024 CE

Gregorian_Simple_Sample3Demo1.dcal

A simple Gregorian calendar with a range of 10000 BCE to 2024 CE

Also includes a calendar cover, and an image for each month.

Hebrew calendar

Click/tap here to expand/collapse this section

  • Not enough time to add right now

Hindu Calendar: Vikram Samvat

Click/tap here to expand/collapse this section

  • Not enough time to add right now

Hindu Calendar: Shaka Samvat

Click/tap here to expand/collapse this section

  • Not enough time to add right now

Hindu Calendar: Kali Yuga

Click/tap here to expand/collapse this section

  • Not enough time to add right now

Holocene calendar

Click/tap here to expand/collapse this section

  • Not enough time to add right now

Igbo calendar

Click/tap here to expand/collapse this section

  • Not enough time to add right now

Iranian calendar

Click/tap here to expand/collapse this section

  • Not enough time to add right now

Islamic calendar

Click/tap here to expand/collapse this section

  • Not enough time to add right now

Japanese calendar

Click/tap here to expand/collapse this section

  • Not enough time to add right now

Javanese calendar

Click/tap here to expand/collapse this section

  • Not enough time to add right now

Julian

Click/tap here to expand/collapse this section

  • Not enough time to add right now

Juche

Click/tap here to expand/collapse this section

Juche_Simple_Sample1Demo1.dcal

North Korean calendar (full range) from Juche 1 (Gregorian: 1912) to Juche 112 (Gregorian: 2023)

Juche_Simple_Sample2Demo1.dcal

North Korean calendar (full range) from Juche 1 (Gregorian: 1912) to Juche 112 (Gregorian: 2023)

Also includes a calendar cover, and an image for each month.

Juche calendar 111

Julian calendar

Click/tap here to expand/collapse this section

  • Not enough time to add right now

Korean calendar

Click/tap here to expand/collapse this section

  • Not enough time to add right now

Minguo calendar

Click/tap here to expand/collapse this section

  • Not enough time to add right now

Nanakshahi calendar

Click/tap here to expand/collapse this section

  • Not enough time to add right now

Thai solar calendar

Click/tap here to expand/collapse this section

  • Not enough time to add right now

Tibetan calendar

Click/tap here to expand/collapse this section

  • Not enough time to add right now

UNIX time calendar

Click/tap here to expand/collapse this section

  • Not enough time to add right now

Import/Export tool

Click/tap here to expand/collapse this section

  • Import ICS file
  • Export to ICS file (will strip out many features if they are in use)
  • Export as DCal
  • Export as DCalB (bundle)

Macros

Click/tap here to expand/collapse this section

Macros help automate the configuration, organization, and maintenance of a calendar.

Macros can be written in:

  • VBScript
  • VB.NET
  • Other language (not yet defined)

Macro files carry the .dcalm file extension.


Bundles

Click/tap here to expand/collapse this section

You can bundle multiple calendars into one with a bundle file. Bundle files carry the .dcalb file extension.


Sample macros

Click/tap here to expand/collapse this section

Included macros

  • Birthdays.dcalm
  • Is-Was.dcalm
  • Daily-tasks.dcalm
  • American-Holidays.dcalm
  • American-History.dcalm
  • Religious-Holidays_Christianity.dcalm
  • Religious-Holidays_Hinduism.dcalm
  • Religious-Holidays_Judaism.dcalm
  • Religious-Holidays_Islam.dcalm
  • More coming soon

Planned platforms

Click/tap here to expand/collapse this section

  • DCalendar
  • ProtonMail
  • Outlook
  • Other

Version control

Click/tap here to expand/collapse this section

DCal will contain version control functionality via Git. This feature can be disabled, but it isn't recommended, unless the version control system is causing problems. The operating systems backup functionality will be separate from the version control system.


Time travel

Click/tap here to expand/collapse this section

With time travel, you can view your calendar at any point in time, without changing your operating systems time/date.


Extras

Click/tap here to expand/collapse this section

Fun things you can do

Click/tap here to expand/collapse this section

  • Turn your calendar into a flipbook
  • Add another example here

File info

Click/tap here to expand/collapse this section

File type: Markdown (*.md *.mkd *.mdown *.markdown)

File version: 2 (2023, Monday, January 2nd at 7:59 pm PST)

Line count (including blank lines and compiler line): 979

Current article language: English (EN_USA) / Markdown (CommonMark) / HTML5 (HyperText Markup Language 5.3)

Encoding: UTF-8 (Emoji 12.0 or higher recommended)

All times are UTC-7 (PDT/Pacific Time) (Please also account for DST (Daylight Savings Time) for older/newer entries up until it is abolished/no longer followed)

Note that on 2022, Sunday, March 13th at 2:00 am PST, the time jumped ahead 1 hour to 3:00 am.

You may need special rendering support for the <details> HTML tag being used in this document


File history

Click/tap here to expand/collapse the file history section for this project

Version 1 (2023, Sunday, January 1st at 5:40 pm PST)

This version was made by: @seanpm2001

Changes:

  • Started the file
  • Added the title section
  • Added the Description section
  • Added the Notes section
  • Added the Pronunciation section
  • Added the Structure sample alpha 1 section
  • Added the DCal Metadata section
  • Added the Event timer section
  • Added the Demo calendars section
    • Added the Ab urbe condita calendar subsection
    • Added the Armenian Calendar subsection
    • Added the Assyrian Calendar subsection
    • Added the BahΓ‘ΚΌΓ­ calendar subsection
    • Added the Balinese saka calendar subsection
    • Added the Bengali calendar subsection
    • Added the Berber calendar subsection
    • Added the British Regnal year subsection
    • Added the Buddhist calendar subsection
    • Added the Burmese calendar subsection
    • Added the Byzantine calendar subsection
    • Added the Chinese Calendar subsection
    • Added the Coptic calendar subsection
    • Added the Discordian calendar subsection
    • Added the Ethiopian calendar subsection
    • Added the Gregorian calendar subsection
    • Added the Hebrew calendar subsection
    • Added the Hindu Calendar: Vikram Samvat subsection
    • Added the Hindu Calendar: Shaka Samvat subsection
    • Added the Hindu Calendar: Kali Yuga subsection
    • Added the Holocene calendar subsection
    • Added the Igbo calendar subsection
    • Added the Iranian calendar subsection
    • Added the Islamic calendar subsection
    • Added the Japanese calendar subsection
    • Added the Javanese calendar subsection
    • Added the Julian subsection
    • Added the Juche subsection
    • Added the Julian calendar subsection
    • Added the Korean calendar subsection
    • Added the Minguo calendar subsection
    • Added the Nanakshahi calendar subsection
    • Added the Thai solar calendar subsection
    • Added the Tibetan calendar subsection
    • Added the UNIX time calendar subsection
  • Added the Import/export tool section
  • Added the Macros section
  • Added the Bundles section
  • Added the Sample macros section
  • Added the Planned platforms section
  • Added the file version section
  • No other changes in version 1

Version 2 (2023, Monday, January 2nd at 7:59 pm PST)

This version was made by: @seanpm2001

Changes:

  • Turned every section into a dropdown
  • Updated the Pronunciation section
  • Updated the title section to include the projects stock logo
  • Added the Specification section
  • Added the Implementation section
  • Added the media support section
    • Added the Images subsection
    • Added the Videos subsection
  • Added the Animations section
    • Added the Calendar flip direction subsection
    • Added the Paper physics subsection
    • Added the Cofee spill subsection
  • Added the Version control section
  • Added the Time travel section
  • Added the Extras section
    • Added the Fun things you can do subsection
  • Removed the File version footer, and replaced it with a file info section
  • Added the file info section
    • Added the version number
    • Added the version date
    • Added the line count
  • Added the file history section
    • Added an entry for version 1
    • Added an entry for version 2
  • No other changes in version 2

Releases

No releases published

Packages

No packages published