summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLukas Fleischer <lfleischer@calcurse.org>2019-01-08 05:55:22 +0100
committerLukas Fleischer <lfleischer@calcurse.org>2019-01-08 06:08:20 +0100
commit65503320320d7e2c137903c205b4290571f53595 (patch)
treebb3001c8e6aa3b912335b4d8c9f6074c61e95945
parent38a642e9c8a44b0608c08898ba94e1c7c38d3093 (diff)
downloadcalcurse.org-65503320320d7e2c137903c205b4290571f53595.tar.gz
calcurse.org-65503320320d7e2c137903c205b4290571f53595.zip
Rebuild documentation with Asciidoctor
Remove chunked manual.
-rw-r--r--files/calcurse-caldav.html681
-rw-r--r--files/calcurse.1.html2893
-rw-r--r--files/manual.chunked/ar01s01.html6
-rw-r--r--files/manual.chunked/ar01s02.html21
-rw-r--r--files/manual.chunked/ar01s03.html20
-rw-r--r--files/manual.chunked/ar01s04.html495
-rw-r--r--files/manual.chunked/ar01s05.html187
-rw-r--r--files/manual.chunked/ar01s06.html8
-rw-r--r--files/manual.chunked/ar01s07.html2
-rw-r--r--files/manual.chunked/ar01s08.html161
-rw-r--r--files/manual.chunked/ar01s09.html6
-rw-r--r--files/manual.chunked/ar01s10.html54
-rw-r--r--files/manual.chunked/docbook-xsl.css329
-rw-r--r--files/manual.chunked/index.html7
-rw-r--r--files/manual.html5324
-rw-r--r--files/submitting-patches.html1555
-rw-r--r--support/index.html11
17 files changed, 5275 insertions, 6485 deletions
diff --git a/files/calcurse-caldav.html b/files/calcurse-caldav.html
index bac33a1..336bac3 100644
--- a/files/calcurse-caldav.html
+++ b/files/calcurse-caldav.html
@@ -1,138 +1,639 @@
-
<!DOCTYPE html>
-
<html lang="en">
<head>
-<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
-<meta name="viewport" content="width=device-width, initial-scale=1">
-<title>calcurse-caldav README</title>
-<style type="text/css">
-body { font-family: Georgia,serif; }
-h1, h2, h3, h4, h5, h6 { font-family: Arial,Helvetica,sans-serif; color: #527bbd; margin-top: 1.2em; margin-bottom: 0.5em; line-height: 1.3; }
-body { margin: 1em 5% 1em 5%; }
-a { color: blue; text-decoration: underline; }
-a:visited { color: fuchsia; }
-em { font-style: italic; color: navy; }
-strong { font-weight: bold; color: #083194; }
-h1, h2, h3 { border-bottom: 2px solid silver; }
-h2 { padding-top: 0.5em; } h3 { float: left; }
-h3 + * { clear: left; }
-h5 { font-size: 1.0em; }
-hr { border: 1px solid silver; }
-p { margin-top: 0.5em; margin-bottom: 0.5em; }
-code, pre { font-family: "Courier New", Courier, monospace; font-size: inherit; color: navy; padding: 0; margin: 0; }
-pre { border: 1px solid #dddddd; border-left: 5px solid #f0f0f0; background: #f8f8f8; padding: 0.5em; white-space: pre-wrap; }
+<meta charset="UTF-8">
+<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta name="generator" content="Asciidoctor 1.5.8">
+<title>calcurse-caldav</title>
+<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700">
+<style>
+/* Asciidoctor default stylesheet | MIT License | http://asciidoctor.org */
+/* Uncomment @import statement below to use as custom stylesheet */
+/*@import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700";*/
+article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}
+audio,canvas,video{display:inline-block}
+audio:not([controls]){display:none;height:0}
+script{display:none!important}
+html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}
+a{background:transparent}
+a:focus{outline:thin dotted}
+a:active,a:hover{outline:0}
+h1{font-size:2em;margin:.67em 0}
+abbr[title]{border-bottom:1px dotted}
+b,strong{font-weight:bold}
+dfn{font-style:italic}
+hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}
+mark{background:#ff0;color:#000}
+code,kbd,pre,samp{font-family:monospace;font-size:1em}
+pre{white-space:pre-wrap}
+q{quotes:"\201C" "\201D" "\2018" "\2019"}
+small{font-size:80%}
+sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
+sup{top:-.5em}
+sub{bottom:-.25em}
+img{border:0}
+svg:not(:root){overflow:hidden}
+figure{margin:0}
+fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
+legend{border:0;padding:0}
+button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
+button,input{line-height:normal}
+button,select{text-transform:none}
+button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}
+button[disabled],html input[disabled]{cursor:default}
+input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}
+button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
+textarea{overflow:auto;vertical-align:top}
+table{border-collapse:collapse;border-spacing:0}
+*,*::before,*::after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}
+html,body{font-size:100%}
+body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
+a:hover{cursor:pointer}
+img,object,embed{max-width:100%;height:auto}
+object,embed{height:100%}
+img{-ms-interpolation-mode:bicubic}
+.left{float:left!important}
+.right{float:right!important}
+.text-left{text-align:left!important}
+.text-right{text-align:right!important}
+.text-center{text-align:center!important}
+.text-justify{text-align:justify!important}
+.hide{display:none}
+img,object,svg{display:inline-block;vertical-align:middle}
+textarea{height:auto;min-height:50px}
+select{width:100%}
+.center{margin-left:auto;margin-right:auto}
+.stretch{width:100%}
+.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
+div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;direction:ltr}
+a{color:#2156a5;text-decoration:underline;line-height:inherit}
+a:hover,a:focus{color:#1d4b8f}
+a img{border:none}
+p{font-family:inherit;font-weight:400;font-size:1em;line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}
+p aside{font-size:.875em;line-height:1.35;font-style:italic}
+h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em}
+h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0}
+h1{font-size:2.125em}
+h2{font-size:1.6875em}
+h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em}
+h4,h5{font-size:1.125em}
+h6{font-size:1em}
+hr{border:solid #dddddf;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em;height:0}
+em,i{font-style:italic;line-height:inherit}
+strong,b{font-weight:bold;line-height:inherit}
+small{font-size:60%;line-height:inherit}
+code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)}
+ul,ol,dl{font-size:1em;line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}
+ul,ol{margin-left:1.5em}
+ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0;font-size:1em}
+ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit}
+ul.square{list-style-type:square}
+ul.circle{list-style-type:circle}
+ul.disc{list-style-type:disc}
+ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0}
+dl dt{margin-bottom:.3125em;font-weight:bold}
+dl dd{margin-bottom:1.25em}
+abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help}
+abbr{text-transform:none}
+blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
+blockquote cite{display:block;font-size:.9375em;color:rgba(0,0,0,.6)}
+blockquote cite::before{content:"\2014 \0020"}
+blockquote cite a,blockquote cite a:visited{color:rgba(0,0,0,.6)}
+blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
+@media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
+h1{font-size:2.75em}
+h2{font-size:2.3125em}
+h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
+h4{font-size:1.4375em}}
+table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede}
+table thead,table tfoot{background:#f7f8f7}
+table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
+table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
+table tr.even,table tr.alt,table tr:nth-of-type(even){background:#f8f8f7}
+table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6}
+h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
+h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
+.clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table}
+.clearfix::after,.float-group::after{clear:both}
+*:not(pre)>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background-color:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed;word-wrap:break-word}
+*:not(pre)>code.nobreak{word-wrap:normal}
+*:not(pre)>code.nowrap{white-space:nowrap}
+pre,pre>code{line-height:1.45;color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;text-rendering:optimizeSpeed}
+em em{font-style:normal}
+strong strong{font-weight:400}
+.keyseq{color:rgba(51,51,51,.8)}
+kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background-color:#f7f7f7;border:1px solid #ccc;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em white inset;box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em #fff inset;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap}
+.keyseq kbd:first-child{margin-left:0}
+.keyseq kbd:last-child{margin-right:0}
+.menuseq,.menuref{color:#000}
+.menuseq b:not(.caret),.menuref{font-weight:inherit}
+.menuseq{word-spacing:-.02em}
+.menuseq b.caret{font-size:1.25em;line-height:.8}
+.menuseq i.caret{font-weight:bold;text-align:center;width:.45em}
+b.button::before,b.button::after{position:relative;top:-1px;font-weight:400}
+b.button::before{content:"[";padding:0 3px 0 2px}
+b.button::after{content:"]";padding:0 2px 0 3px}
+p a>code:hover{color:rgba(0,0,0,.9)}
+#header,#content,#footnotes,#footer{width:100%;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em}
+#header::before,#header::after,#content::before,#content::after,#footnotes::before,#footnotes::after,#footer::before,#footer::after{content:" ";display:table}
+#header::after,#content::after,#footnotes::after,#footer::after{clear:both}
+#content{margin-top:1.25em}
+#content::before{content:none}
+#header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0}
+#header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #dddddf}
+#header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #dddddf;padding-bottom:8px}
+#header .details{border-bottom:1px solid #dddddf;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap}
+#header .details span:first-child{margin-left:-.125em}
+#header .details span.email a{color:rgba(0,0,0,.85)}
+#header .details br{display:none}
+#header .details br+span::before{content:"\00a0\2013\00a0"}
+#header .details br+span.author::before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)}
+#header .details br+span#revremark::before{content:"\00a0|\00a0"}
+#header #revnumber{text-transform:capitalize}
+#header #revnumber::after{content:"\00a0"}
+#content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #dddddf;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem}
+#toc{border-bottom:1px solid #e7e7e9;padding-bottom:.5em}
+#toc>ul{margin-left:.125em}
+#toc ul.sectlevel0>li>a{font-style:italic}
+#toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0}
+#toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none}
+#toc li{line-height:1.3334;margin-top:.3334em}
+#toc a{text-decoration:none}
+#toc a:active{text-decoration:underline}
+#toctitle{color:#7a2518;font-size:1.2em}
+@media screen and (min-width:768px){#toctitle{font-size:1.375em}
+body.toc2{padding-left:15em;padding-right:0}
+#toc.toc2{margin-top:0!important;background-color:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #e7e7e9;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto}
+#toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em}
+#toc.toc2>ul{font-size:.9em;margin-bottom:0}
+#toc.toc2 ul ul{margin-left:0;padding-left:1em}
+#toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em}
+body.toc2.toc-right{padding-left:0;padding-right:15em}
+body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #e7e7e9;left:auto;right:0}}
+@media screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0}
+#toc.toc2{width:20em}
+#toc.toc2 #toctitle{font-size:1.375em}
+#toc.toc2>ul{font-size:.95em}
+#toc.toc2 ul ul{padding-left:1.25em}
+body.toc2.toc-right{padding-left:0;padding-right:20em}}
+#content #toc{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
+#content #toc>:first-child{margin-top:0}
+#content #toc>:last-child{margin-bottom:0}
+#footer{max-width:100%;background-color:rgba(0,0,0,.8);padding:1.25em}
+#footer-text{color:rgba(255,255,255,.8);line-height:1.44}
+#content{margin-bottom:.625em}
+.sect1{padding-bottom:.625em}
+@media screen and (min-width:768px){#content{margin-bottom:1.25em}
+.sect1{padding-bottom:1.25em}}
+.sect1:last-child{padding-bottom:0}
+.sect1+.sect1{border-top:1px solid #e7e7e9}
+#content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400}
+#content h1>a.anchor::before,h2>a.anchor::before,h3>a.anchor::before,#toctitle>a.anchor::before,.sidebarblock>.content>.title>a.anchor::before,h4>a.anchor::before,h5>a.anchor::before,h6>a.anchor::before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em}
+#content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible}
+#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none}
+#content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221}
+.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em}
+.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic}
+table.tableblock.fit-content>caption.title{white-space:nowrap;width:0}
+.paragraph.lead>p,#preamble>.sectionbody>[class="paragraph"]:first-of-type p{font-size:1.21875em;line-height:1.6;color:rgba(0,0,0,.85)}
+table.tableblock #preamble>.sectionbody>[class="paragraph"]:first-of-type p{font-size:inherit}
+.admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%}
+.admonitionblock>table td.icon{text-align:center;width:80px}
+.admonitionblock>table td.icon img{max-width:none}
+.admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
+.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6)}
+.admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
+.exampleblock>.content{border-style:solid;border-width:1px;border-color:#e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;-webkit-border-radius:4px;border-radius:4px}
+.exampleblock>.content>:first-child{margin-top:0}
+.exampleblock>.content>:last-child{margin-bottom:0}
+.sidebarblock{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
+.sidebarblock>:first-child{margin-top:0}
+.sidebarblock>:last-child{margin-bottom:0}
+.sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
+.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
+.literalblock pre,.listingblock pre:not(.highlight),.listingblock pre[class="highlight"],.listingblock pre[class^="highlight "],.listingblock pre.CodeRay,.listingblock pre.prettyprint{background:#f7f7f8}
+.sidebarblock .literalblock pre,.sidebarblock .listingblock pre:not(.highlight),.sidebarblock .listingblock pre[class="highlight"],.sidebarblock .listingblock pre[class^="highlight "],.sidebarblock .listingblock pre.CodeRay,.sidebarblock .listingblock pre.prettyprint{background:#f2f1f1}
+.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{-webkit-border-radius:4px;border-radius:4px;word-wrap:break-word;overflow-x:auto;padding:1em;font-size:.8125em}
+@media screen and (min-width:768px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:.90625em}}
+@media screen and (min-width:1280px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:1em}}
+.literalblock pre.nowrap,.literalblock pre.nowrap pre,.listingblock pre.nowrap,.listingblock pre.nowrap pre{white-space:pre;word-wrap:normal}
+.literalblock.output pre{color:#f7f7f8;background-color:rgba(0,0,0,.9)}
+.listingblock pre.highlightjs{padding:0}
+.listingblock pre.highlightjs>code{padding:1em;-webkit-border-radius:4px;border-radius:4px}
+.listingblock pre.prettyprint{border-width:0}
+.listingblock>.content{position:relative}
+.listingblock code[data-lang]::before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:#999}
+.listingblock:hover code[data-lang]::before{display:block}
+.listingblock.terminal pre .command::before{content:attr(data-prompt);padding-right:.5em;color:#999}
+.listingblock.terminal pre .command:not([data-prompt])::before{content:"$"}
+table.pyhltable{border-collapse:separate;border:0;margin-bottom:0;background:none}
+table.pyhltable td{vertical-align:top;padding-top:0;padding-bottom:0;line-height:1.45}
+table.pyhltable td.code{padding-left:.75em;padding-right:0}
+pre.pygments .lineno,table.pyhltable td:not(.code){color:#999;padding-left:0;padding-right:.5em;border-right:1px solid #dddddf}
+pre.pygments .lineno{display:inline-block;margin-right:.25em}
+table.pyhltable .linenodiv{background:none!important;padding-right:0!important}
+.quoteblock{margin:0 1em 1.25em 1.5em;display:table}
+.quoteblock>.title{margin-left:-1.5em;margin-bottom:.75em}
+.quoteblock blockquote,.quoteblock p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify}
+.quoteblock blockquote{margin:0;padding:0;border:0}
+.quoteblock blockquote::before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)}
+.quoteblock blockquote>.paragraph:last-child p{margin-bottom:0}
+.quoteblock .attribution{margin-top:.75em;margin-right:.5ex;text-align:right}
+.verseblock{margin:0 1em 1.25em}
+.verseblock pre{font-family:"Open Sans","DejaVu Sans",sans;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility}
+.verseblock pre strong{font-weight:400}
+.verseblock .attribution{margin-top:1.25rem;margin-left:.5ex}
+.quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic}
+.quoteblock .attribution br,.verseblock .attribution br{display:none}
+.quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)}
+.quoteblock.abstract blockquote::before,.quoteblock.excerpt blockquote::before,.quoteblock .quoteblock blockquote::before{display:none}
+.quoteblock.abstract blockquote,.quoteblock.abstract p,.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{line-height:1.6;word-spacing:0}
+.quoteblock.abstract{margin:0 1em 1.25em;display:block}
+.quoteblock.abstract>.title{margin:0 0 .375em;font-size:1.15em;text-align:center}
+.quoteblock.excerpt,.quoteblock .quoteblock{margin:0 0 1.25em;padding:0 0 .25em 1em;border-left:.25em solid #dddddf}
+.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:1.0625rem}
+.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;text-align:left;margin-right:0}
+table.tableblock{max-width:100%;border-collapse:separate}
+p.tableblock:last-child{margin-bottom:0}
+td.tableblock>.content{margin-bottom:-1.25em}
+table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
+table.grid-all>thead>tr>.tableblock,table.grid-all>tbody>tr>.tableblock{border-width:0 1px 1px 0}
+table.grid-all>tfoot>tr>.tableblock{border-width:1px 1px 0 0}
+table.grid-cols>*>tr>.tableblock{border-width:0 1px 0 0}
+table.grid-rows>thead>tr>.tableblock,table.grid-rows>tbody>tr>.tableblock{border-width:0 0 1px}
+table.grid-rows>tfoot>tr>.tableblock{border-width:1px 0 0}
+table.grid-all>*>tr>.tableblock:last-child,table.grid-cols>*>tr>.tableblock:last-child{border-right-width:0}
+table.grid-all>tbody>tr:last-child>.tableblock,table.grid-all>thead:last-child>tr>.tableblock,table.grid-rows>tbody>tr:last-child>.tableblock,table.grid-rows>thead:last-child>tr>.tableblock{border-bottom-width:0}
+table.frame-all{border-width:1px}
+table.frame-sides{border-width:0 1px}
+table.frame-topbot,table.frame-ends{border-width:1px 0}
+table.stripes-all tr,table.stripes-odd tr:nth-of-type(odd){background:#f8f8f7}
+table.stripes-none tr,table.stripes-odd tr:nth-of-type(even){background:none}
+th.halign-left,td.halign-left{text-align:left}
+th.halign-right,td.halign-right{text-align:right}
+th.halign-center,td.halign-center{text-align:center}
+th.valign-top,td.valign-top{vertical-align:top}
+th.valign-bottom,td.valign-bottom{vertical-align:bottom}
+th.valign-middle,td.valign-middle{vertical-align:middle}
+table thead th,table tfoot th{font-weight:bold}
+tbody tr th{display:table-cell;line-height:1.6;background:#f7f8f7}
+tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
+p.tableblock>code:only-child{background:none;padding:0}
+p.tableblock{font-size:1em}
+td>div.verse{white-space:pre}
+ol{margin-left:1.75em}
+ul li ol{margin-left:1.5em}
+dl dd{margin-left:1.125em}
+dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0}
+ol>li p,ul>li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
+ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none}
+ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em}
+ul.unstyled,ol.unstyled{margin-left:0}
+ul.checklist{margin-left:.625em}
+ul.checklist li>p:first-child>.fa-square-o:first-child,ul.checklist li>p:first-child>.fa-check-square-o:first-child{width:1.25em;font-size:.8em;position:relative;bottom:.125em}
+ul.checklist li>p:first-child>input[type="checkbox"]:first-child{margin-right:.25em}
+ul.inline{display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap;list-style:none;margin:0 0 .625em -1.25em}
+ul.inline>li{margin-left:1.25em}
+.unstyled dl dt{font-weight:400;font-style:normal}
+ol.arabic{list-style-type:decimal}
+ol.decimal{list-style-type:decimal-leading-zero}
+ol.loweralpha{list-style-type:lower-alpha}
+ol.upperalpha{list-style-type:upper-alpha}
+ol.lowerroman{list-style-type:lower-roman}
+ol.upperroman{list-style-type:upper-roman}
+ol.lowergreek{list-style-type:lower-greek}
+.hdlist>table,.colist>table{border:0;background:none}
+.hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
+td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
+td.hdlist1{font-weight:bold;padding-bottom:1.25em}
+.literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
+.colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top}
+.colist td:not([class]):first-child img{max-width:none}
+.colist td:not([class]):last-child{padding:.25em 0}
+.thumb,.th{line-height:0;display:inline-block;border:solid 4px #fff;-webkit-box-shadow:0 0 0 1px #ddd;box-shadow:0 0 0 1px #ddd}
+.imageblock.left{margin:.25em .625em 1.25em 0}
+.imageblock.right{margin:.25em 0 1.25em .625em}
+.imageblock>.title{margin-bottom:0}
+.imageblock.thumb,.imageblock.th{border-width:6px}
+.imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em}
+.image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0}
+.image.left{margin-right:.625em}
+.image.right{margin-left:.625em}
+a.image{text-decoration:none;display:inline-block}
+a.image object{pointer-events:none}
+sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super}
+sup.footnote a,sup.footnoteref a{text-decoration:none}
+sup.footnote a:active,sup.footnoteref a:active{text-decoration:underline}
+#footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em}
+#footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em;border-width:1px 0 0}
+#footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;margin-bottom:.2em}
+#footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none;margin-left:-1.05em}
+#footnotes .footnote:last-of-type{margin-bottom:0}
+#content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0}
+.gist .file-data>table{border:0;background:#fff;width:100%;margin-bottom:0}
+.gist .file-data>table td.line-data{width:99%}
+div.unbreakable{page-break-inside:avoid}
+.big{font-size:larger}
+.small{font-size:smaller}
+.underline{text-decoration:underline}
+.overline{text-decoration:overline}
+.line-through{text-decoration:line-through}
+.aqua{color:#00bfbf}
+.aqua-background{background-color:#00fafa}
+.black{color:#000}
+.black-background{background-color:#000}
+.blue{color:#0000bf}
+.blue-background{background-color:#0000fa}
+.fuchsia{color:#bf00bf}
+.fuchsia-background{background-color:#fa00fa}
+.gray{color:#606060}
+.gray-background{background-color:#7d7d7d}
+.green{color:#006000}
+.green-background{background-color:#007d00}
+.lime{color:#00bf00}
+.lime-background{background-color:#00fa00}
+.maroon{color:#600000}
+.maroon-background{background-color:#7d0000}
+.navy{color:#000060}
+.navy-background{background-color:#00007d}
+.olive{color:#606000}
+.olive-background{background-color:#7d7d00}
+.purple{color:#600060}
+.purple-background{background-color:#7d007d}
+.red{color:#bf0000}
+.red-background{background-color:#fa0000}
+.silver{color:#909090}
+.silver-background{background-color:#bcbcbc}
+.teal{color:#006060}
+.teal-background{background-color:#007d7d}
+.white{color:#bfbfbf}
+.white-background{background-color:#fafafa}
+.yellow{color:#bfbf00}
+.yellow-background{background-color:#fafa00}
+span.icon>.fa{cursor:default}
+a span.icon>.fa{cursor:inherit}
+.admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}
+.admonitionblock td.icon .icon-note::before{content:"\f05a";color:#19407c}
+.admonitionblock td.icon .icon-tip::before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111}
+.admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900}
+.admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400}
+.admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000}
+.conum[data-value]{display:inline-block;color:#fff!important;background-color:rgba(0,0,0,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
+.conum[data-value] *{color:#fff!important}
+.conum[data-value]+b{display:none}
+.conum[data-value]::after{content:attr(data-value)}
+pre .conum[data-value]{position:relative;top:-.125em}
+b.conum *{color:inherit!important}
+.conum:not([data-value]):empty{display:none}
+dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility}
+h1,h2,p,td.content,span.alt{letter-spacing:-.01em}
+p strong,td.content strong,div.footnote strong{letter-spacing:-.005em}
+p,blockquote,dt,td.content,span.alt{font-size:1.0625rem}
+p{margin-bottom:1.25rem}
+.sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em}
+.exampleblock>.content{background-color:#fffef7;border-color:#e0e0dc;-webkit-box-shadow:0 1px 4px #e0e0dc;box-shadow:0 1px 4px #e0e0dc}
+.print-only{display:none!important}
+@page{margin:1.25cm .75cm}
+@media print{*{-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:none!important}
+html{font-size:80%}
+a{color:inherit!important;text-decoration:underline!important}
+a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important}
+a[href^="http:"]:not(.bare)::after,a[href^="https:"]:not(.bare)::after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em}
+abbr[title]::after{content:" (" attr(title) ")"}
+pre,blockquote,tr,img,object,svg{page-break-inside:avoid}
+thead{display:table-header-group}
+svg{max-width:100%}
+p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
+h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
+#toc,.sidebarblock,.exampleblock>.content{background:none!important}
+#toc{border-bottom:1px solid #dddddf!important;padding-bottom:0!important}
+body.book #header{text-align:center}
+body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em}
+body.book #header .details{border:0!important;display:block;padding:0!important}
+body.book #header .details span:first-child{margin-left:0!important}
+body.book #header .details br{display:block}
+body.book #header .details br+span::before{content:none!important}
+body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important}
+body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always}
+.listingblock code[data-lang]::before{display:block}
+#footer{padding:0 .9375em}
+.hide-on-print{display:none!important}
+.print-only{display:block!important}
+.hide-for-print{display:none!important}
+.show-for-print{display:inherit!important}}
+@media print,amzn-kf8{#header>h1:first-child{margin-top:1.25rem}
+.sect1{padding:0!important}
+.sect1+.sect1{border:0}
+#footer{background:none}
+#footer-text{color:rgba(0,0,0,.6);font-size:.9em}}
+@media amzn-kf8{#header,#content,#footnotes,#footer{padding:0}}
</style>
</head>
-<body>
-<div>
+<body class="article">
+<div id="header">
<h1>calcurse-caldav</h1>
+</div>
+<div id="content">
+<div id="preamble">
+<div class="sectionbody">
+<div class="paragraph">
<p>calcurse-caldav is a simple Python script that can be used to synchronize
calcurse with a CalDAV server. Please note that the script is alpha software!
This means that:</p>
+</div>
+<div class="ulist">
<ul>
<li>
<p>We are eagerly looking for testers to run the script and give feedback! If
- you find any bugs, please report them to the calcurse mailing lists or to the
- GitHub bug tracker. If the script works fine for you, please report back as
- well!</p>
+you find any bugs, please report them to the calcurse mailing lists or to the
+GitHub bug tracker. If the script works fine for you, please report back as
+well!</p>
</li>
<li>
<p>The script might still have bugs. MAKE BACKUPS, especially before running
- calcurse-caldav for the first time!</p>
+calcurse-caldav for the first time!</p>
</li>
</ul>
-<h2>Usage</h2>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_usage">Usage</h2>
+<div class="sectionbody">
+<div class="paragraph">
<p>calcurse-caldav requires an up-to-date version of calcurse and a configuration
file located at ~/.calcurse/caldav/config. An example configuration file can be
found under contrib/caldav/config.sample in the calcurse source tree. You will
-also need to install <em>httplib2</em> for Python 3 using <em>pip</em> (e.g. <code>pip3 install
---user httplib2</code>) or your distribution's package manager.</p>
+also need to install <strong>httplib2</strong> for Python 3 using <strong>pip</strong> (e.g. <code>pip3 install
+--user httplib2</code>) or your distribution&#8217;s package manager.</p>
+</div>
+<div class="paragraph">
<p>If you run calcurse-caldav for the first time, you need to provide the <code>--init</code>
argument. You can choose between the following initialization modes:</p>
-<pre><code>--init=keep-remote Remove all local calcurse items and import remote objects
+</div>
+<div class="literalblock">
+<div class="content">
+<pre>--init=keep-remote Remove all local calcurse items and import remote objects
--init=keep-local Remove all remote objects and push local calcurse items
---init=two-way Copy local objects to the CalDAV server and vice versa
-</code></pre>
-<p>For subsequent calcurse-caldav invocations, you don't need to specify any
+--init=two-way Copy local objects to the CalDAV server and vice versa</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>For subsequent calcurse-caldav invocations, you don&#8217;t need to specify any
additional parameters.</p>
+</div>
+<div class="paragraph">
<p>You can specify a username and password for basic authentication in the
config file. Alternatively, the password can be passed securely from another
-program (such as <em>pass</em>) via the <code>CALCURSE_CALDAV_PASSWORD</code> environment variable like
+program (such as <strong>pass</strong>) via the <code>CALCURSE_CALDAV_PASSWORD</code> environment variable like
so:</p>
-<pre><code>CALCURSE_CALDAV_PASSWORD=$(pass show calcurse) calcurse-caldav
-</code></pre>
-
-<h2>Hooks</h2>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code>CALCURSE_CALDAV_PASSWORD=$(pass show calcurse) calcurse-caldav</code></pre>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_hooks">Hooks</h2>
+<div class="sectionbody">
+<div class="paragraph">
<p>You can place scripts in <code>$HOME/.calcurse/caldav/hooks/</code> to trigger actions at
certain events. To enable a hook, add a script with one of the following names
to this directory. Also make sure the scripts are executable.</p>
-<p><em>pre-sync</em>::
- Executed before the data files are synchronized.
-<em>post-sync</em>::
- Executed after the data files are synchronized.</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><strong>pre-sync</strong></dt>
+<dd>
+<p>Executed before the data files are synchronized.</p>
+</dd>
+<dt class="hdlist1"><strong>post-sync</strong></dt>
+<dd>
+<p>Executed after the data files are synchronized.</p>
+</dd>
+</dl>
+</div>
+<div class="paragraph">
<p>Some examples can be found in the <code>contrib/caldav/hooks/</code> directory of the
calcurse source tree.</p>
-<h2>How It Works</h2>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_how_it_works">How It Works</h2>
+<div class="sectionbody">
+<div class="paragraph">
<p>calcurse-caldav creates a so-called synchronization database at
<code>~/.calcurse/caldav/sync.db</code> that always keeps a snapshot of the last time the
script was executed. When running the script, it compares the objects on the
server and the local objects with that snapshot to identify items that were
added or deleted. It then</p>
+</div>
+<div class="ulist">
<ul>
-<li>downloads new objects from the server and imports them into calcurse,</li>
-<li>deletes local objects that no longer exist on the server,</li>
-<li>uploads objects to the server that were added locally,</li>
-<li>deleted objects from the server that were deleted locally,</li>
-<li>updates the synchronization database with a new snapshot.</li>
+<li>
+<p>downloads new objects from the server and imports them into calcurse,</p>
+</li>
+<li>
+<p>deletes local objects that no longer exist on the server,</p>
+</li>
+<li>
+<p>uploads objects to the server that were added locally,</p>
+</li>
+<li>
+<p>deleted objects from the server that were deleted locally,</p>
+</li>
+<li>
+<p>updates the synchronization database with a new snapshot.</p>
+</li>
</ul>
+</div>
+<div class="paragraph">
<p>Note: Since calcurse does not use unique identifiers for items, it cannot keep
track of moved/edited items. Thus, modifying an item is equivalent to deleting
the old item and creating a new one.</p>
-<h2>OAuth2 Authentication</h2>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_oauth2_authentication">OAuth2 Authentication</h2>
+<div class="sectionbody">
+<div class="paragraph">
<p>calcurse-caldav also has support for services requiring OAuth2 authentication
such as Google Calendar. Note that you can only have a single calendar synced
at any given time, regardless of authentication method. To enable OAuth2 you
will need to:</p>
+</div>
+<div class="ulist">
<ul>
-<li>Change <em>AuthMethod</em> from "<em>basic</em>" to "<em>oauth2</em>" in your config file</li>
-<li>Fill in the appropriate settings in your config file: "<em>ClientID</em>",
- "<em>ClientSecret</em>", "<em>Scope</em>", and "<em>RedirectURI</em>". These can be obtained from
- the API provider. (See below for Google Calendar)</li>
-<li>Install <em>oauth2client</em> for Python 3 using <em>pip</em> (e.g. <code>pip3 install --user
-oauth2client</code>) or your distribution's package manager</li>
+<li>
+<p>Change <strong>AuthMethod</strong> from "<strong>basic</strong>" to "<strong>oauth2</strong>" in your config file</p>
+</li>
+<li>
+<p>Fill in the appropriate settings in your config file: "<strong>ClientID</strong>",
+"<strong>ClientSecret</strong>", "<strong>Scope</strong>", and "<strong>RedirectURI</strong>". These can be obtained from
+the API provider. (See below for Google Calendar)</p>
+</li>
+<li>
+<p>Install <strong>oauth2client</strong> for Python 3 using <strong>pip</strong> (e.g. <code>pip3 install --user
+oauth2client</code>) or your distribution&#8217;s package manager</p>
+</li>
</ul>
-<h2>Synchronization With Google Calendar</h2>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_synchronization_with_google_calendar">Synchronization With Google Calendar</h2>
+<div class="sectionbody">
+<div class="paragraph">
<p>You will need to use your Google account to create a Google API project and
enable both the CalDAV API and the Google Calendar API. We will be doing this to
receive a Client ID and Client Secret. The hostname, path, scope and redirect
URI are listed below.</p>
-<p>First, you will need to go to the <a href="https://console.developers.google.com/project">Google Developers Console</a> and click <em>Create
-Project</em>. After doing that, you can go to the <a href="https://console.developers.google.com/project/_/apiui/apis/library">API Library</a> and
+</div>
+<div class="paragraph">
+<p>First, you will need to go to the [Google Developers Console](<a href="https://console.developers.google.com/project" class="bare">https://console.developers.google.com/project</a>) and click <strong>Create
+Project</strong>. After doing that, you can go to the [API Library](<a href="https://console.developers.google.com/project/_/apiui/apis/library" class="bare">https://console.developers.google.com/project/_/apiui/apis/library</a>) and
search for the CalDAV API and enable it for your project. You will then need to
do the same for the Google Calendar API.</p>
-<p>Next, go to the <a href="https://console.developers.google.com/project/_/apiui/credential">Credentials page</a>
-, click on <em>Create credentials</em>, and choose <em>OAuth client ID</em>. If it asks you
-to "set a product name on the consent screen", click on <em>Configure consent
-screen</em> to do so. Any product name will do. Upon saving and returning to the
-"Create client ID" screen, choose <em>Other</em> as the Application type and click
-<em>Create</em>. You now have your Client ID and Client Secret to put into your
+</div>
+<div class="paragraph">
+<p>Next, go to the [Credentials page](<a href="https://console.developers.google.com/project/_/apiui/credential" class="bare">https://console.developers.google.com/project/_/apiui/credential</a>)
+, click on <strong>Create credentials</strong>, and choose <strong>OAuth client ID</strong>. If it asks you
+to "set a product name on the consent screen", click on <strong>Configure consent
+screen</strong> to do so. Any product name will do. Upon saving and returning to the
+"Create client ID" screen, choose <strong>Other</strong> as the Application type and click
+<strong>Create</strong>. You now have your Client ID and Client Secret to put into your
calcurse-caldav config file!</p>
+</div>
+<div class="paragraph">
<p>The following options should also be changed in your config file:</p>
-<pre><code>Hostname = apidata.googleusercontent.com
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code>Hostname = apidata.googleusercontent.com
Path = /caldav/v2/*your_calendar_id_here*/events/
Scope = https://www.googleapis.com/auth/calendar
-SyncFilter = cal
-</code></pre>
-
-<p>Your Calendar ID for "<em>Path</em>" should be your email for the default calendar.
+SyncFilter = cal</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Your Calendar ID for "<strong>Path</strong>" should be your email for the default calendar.
If you have multiple calendars, you can get the Calendar ID by going under
-Calendar Details at <a href="https://calendar.google.com">calendar.google.com</a>.
-The default Redirect URI in the config file is http://127.0.0.1; this should
-work fine, but can be changed to http://localhost, a local web server, or
+Calendar Details at [calendar.google.com](<a href="https://calendar.google.com" class="bare">https://calendar.google.com</a>).
+The default Redirect URI in the config file is <a href="http://127.0.0.1" class="bare">http://127.0.0.1</a>; this should
+work fine, but can be changed to <a href="http://localhost" class="bare">http://localhost</a>, a local web server, or
another device if you encounter errors related to it.</p>
-<p>A complete config file for example@gmail.com would have the following options:</p>
-<pre><code>[General]
+</div>
+<div class="paragraph">
+<p>A complete config file for <a href="mailto:example@gmail.com">example@gmail.com</a> would have the following options:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code>[General]
...
@@ -147,10 +648,13 @@ SyncFilter = cal
ClientID = 22802342jlkjlksjdlfkjq1htpvbcn.apps.googleusercontent.com
ClientSecret = XPYGqHFsfF343GwJeOGiUi
Scope = https://www.googleapis.com/auth/calendar
-RedirectURI = http://127.0.0.1
-</code></pre>
-
-<p><a href="https://developers.google.com/google-apps/calendar/caldav/v2/guide">The full guide from Google can be found here.</a></p>
+RedirectURI = http://127.0.0.1</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>[The full guide from Google can be found here.](<a href="https://developers.google.com/google-apps/calendar/caldav/v2/guide" class="bare">https://developers.google.com/google-apps/calendar/caldav/v2/guide</a>)</p>
+</div>
+<div class="paragraph">
<p>Upon your first run with the <code>--init</code> flag, you will be asked to go to a URL to
log in and authorize synchronization with your Google account. You can access
this URL on any other device if you cannot open a browser locally (e.g., on
@@ -159,11 +663,24 @@ to your Redirect URI with a code attached to the end, e.g.,
<code>http://127.0.0.1/?code=4/Ok6mBNW2nppfIwyL-Q1ZPVkEk3zZdZN3mHcY#</code>. You will need
to copy the code after <code>http://127.0.0.1/?code=</code>. In this case, it would be
<code>4/Ok6mBNW2nppfIwyL-Q1ZPVkEk3zZdZN3mHcY#</code>.</p>
+</div>
+<div class="paragraph">
<p>Finally pass this authorization code to calcurse-caldav with the <code>--authcode</code>
flag and initialize the synchronization database like so (note that the quotes
around the authorization code might be necessary or not, depending on your shell):</p>
-<pre><code>calcurse-caldav --init keep-remote --authcode '4/Ok6mBNW2nppfIwyL-Q1ZPVkEk3zZdZN3mHcY#'
-</code></pre>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code>calcurse-caldav --init keep-remote --authcode '4/Ok6mBNW2nppfIwyL-Q1ZPVkEk3zZdZN3mHcY#'</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div id="footer">
+<div id="footer-text">
+Last updated 2019-01-08 06:05:47 +0100
+</div>
</div>
</body>
-</html>
+</html> \ No newline at end of file
diff --git a/files/calcurse.1.html b/files/calcurse.1.html
index 14f5ce4..f235630 100644
--- a/files/calcurse.1.html
+++ b/files/calcurse.1.html
@@ -1,1442 +1,1451 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
- "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-<head>
-<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
-<meta name="generator" content="AsciiDoc 8.6.9" />
-<meta name="viewport" content="width=device-width, initial-scale=1">
-<title>calcurse(1)</title>
-<style type="text/css">
-/* Shared CSS for AsciiDoc xhtml11 and html5 backends */
-
-/* Default font. */
-body {
- font-family: Georgia,serif;
-}
-
-/* Title font. */
-h1, h2, h3, h4, h5, h6,
-div.title, caption.title,
-thead, p.table.header,
-#toctitle,
-#author, #revnumber, #revdate, #revremark,
-#footer {
- font-family: Arial,Helvetica,sans-serif;
-}
-
-body {
- margin: 1em 5% 1em 5%;
-}
-
-a {
- color: blue;
- text-decoration: underline;
-}
-a:visited {
- color: fuchsia;
-}
-
-em {
- font-style: italic;
- color: navy;
-}
-
-strong {
- font-weight: bold;
- color: #083194;
-}
-
-h1, h2, h3, h4, h5, h6 {
- color: #527bbd;
- margin-top: 1.2em;
- margin-bottom: 0.5em;
- line-height: 1.3;
-}
-
-h1, h2, h3 {
- border-bottom: 2px solid silver;
-}
-h2 {
- padding-top: 0.5em;
-}
-h3 {
- float: left;
-}
-h3 + * {
- clear: left;
-}
-h5 {
- font-size: 1.0em;
-}
-
-div.sectionbody {
- margin-left: 0;
-}
-
-hr {
- border: 1px solid silver;
-}
-
-p {
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-
-ul, ol, li > p {
- margin-top: 0;
-}
-ul > li { color: #aaa; }
-ul > li > * { color: black; }
-
-.monospaced, code, pre {
- font-family: "Courier New", Courier, monospace;
- font-size: inherit;
- color: navy;
- padding: 0;
- margin: 0;
-}
-pre {
- white-space: pre-wrap;
-}
-
-#author {
- color: #527bbd;
- font-weight: bold;
- font-size: 1.1em;
-}
-#email {
-}
-#revnumber, #revdate, #revremark {
-}
-
-#footer {
- font-size: small;
- border-top: 2px solid silver;
- padding-top: 0.5em;
- margin-top: 4.0em;
-}
-#footer-text {
- float: left;
- padding-bottom: 0.5em;
-}
-#footer-badges {
- float: right;
- padding-bottom: 0.5em;
-}
-
-#preamble {
- margin-top: 1.5em;
- margin-bottom: 1.5em;
-}
-div.imageblock, div.exampleblock, div.verseblock,
-div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
-div.admonitionblock {
- margin-top: 1.0em;
- margin-bottom: 1.5em;
-}
-div.admonitionblock {
- margin-top: 2.0em;
- margin-bottom: 2.0em;
- margin-right: 10%;
- color: #606060;
-}
-
-div.content { /* Block element content. */
- padding: 0;
-}
-
-/* Block element titles. */
-div.title, caption.title {
- color: #527bbd;
- font-weight: bold;
- text-align: left;
- margin-top: 1.0em;
- margin-bottom: 0.5em;
-}
-div.title + * {
- margin-top: 0;
-}
-
-td div.title:first-child {
- margin-top: 0.0em;
-}
-div.content div.title:first-child {
- margin-top: 0.0em;
-}
-div.content + div.title {
- margin-top: 0.0em;
-}
-
-div.sidebarblock > div.content {
- background: #ffffee;
- border: 1px solid #dddddd;
- border-left: 4px solid #f0f0f0;
- padding: 0.5em;
-}
-
-div.listingblock > div.content {
- border: 1px solid #dddddd;
- border-left: 5px solid #f0f0f0;
- background: #f8f8f8;
- padding: 0.5em;
-}
-
-div.quoteblock, div.verseblock {
- padding-left: 1.0em;
- margin-left: 1.0em;
- margin-right: 10%;
- border-left: 5px solid #f0f0f0;
- color: #888;
-}
-
-div.quoteblock > div.attribution {
- padding-top: 0.5em;
- text-align: right;
-}
-
-div.verseblock > pre.content {
- font-family: inherit;
- font-size: inherit;
-}
-div.verseblock > div.attribution {
- padding-top: 0.75em;
- text-align: left;
-}
-/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
-div.verseblock + div.attribution {
- text-align: left;
-}
-
-div.admonitionblock .icon {
- vertical-align: top;
- font-size: 1.1em;
- font-weight: bold;
- text-decoration: underline;
- color: #527bbd;
- padding-right: 0.5em;
-}
-div.admonitionblock td.content {
- padding-left: 0.5em;
- border-left: 3px solid #dddddd;
-}
-
-div.exampleblock > div.content {
- border-left: 3px solid #dddddd;
- padding-left: 0.5em;
-}
-
-div.imageblock div.content { padding-left: 0; }
-span.image img { border-style: none; vertical-align: text-bottom; }
-a.image:visited { color: white; }
-
-dl {
- margin-top: 0.8em;
- margin-bottom: 0.8em;
-}
-dt {
- margin-top: 0.5em;
- margin-bottom: 0;
- font-style: normal;
- color: navy;
-}
-dd > *:first-child {
- margin-top: 0.1em;
-}
-
-ul, ol {
- list-style-position: outside;
-}
-ol.arabic {
- list-style-type: decimal;
-}
-ol.loweralpha {
- list-style-type: lower-alpha;
-}
-ol.upperalpha {
- list-style-type: upper-alpha;
-}
-ol.lowerroman {
- list-style-type: lower-roman;
-}
-ol.upperroman {
- list-style-type: upper-roman;
-}
-
-div.compact ul, div.compact ol,
-div.compact p, div.compact p,
-div.compact div, div.compact div {
- margin-top: 0.1em;
- margin-bottom: 0.1em;
-}
-
-tfoot {
- font-weight: bold;
-}
-td > div.verse {
- white-space: pre;
-}
-
-div.hdlist {
- margin-top: 0.8em;
- margin-bottom: 0.8em;
-}
-div.hdlist tr {
- padding-bottom: 15px;
-}
-dt.hdlist1.strong, td.hdlist1.strong {
- font-weight: bold;
-}
-td.hdlist1 {
- vertical-align: top;
- font-style: normal;
- padding-right: 0.8em;
- color: navy;
-}
-td.hdlist2 {
- vertical-align: top;
-}
-div.hdlist.compact tr {
- margin: 0;
- padding-bottom: 0;
-}
-
-.comment {
- background: yellow;
-}
-
-.footnote, .footnoteref {
- font-size: 0.8em;
-}
-
-span.footnote, span.footnoteref {
- vertical-align: super;
-}
-
-#footnotes {
- margin: 20px 0 20px 0;
- padding: 7px 0 0 0;
-}
-
-#footnotes div.footnote {
- margin: 0 0 5px 0;
-}
-
-#footnotes hr {
- border: none;
- border-top: 1px solid silver;
- height: 1px;
- text-align: left;
- margin-left: 0;
- width: 20%;
- min-width: 100px;
-}
-
-div.colist td {
- padding-right: 0.5em;
- padding-bottom: 0.3em;
- vertical-align: top;
-}
-div.colist td img {
- margin-top: 0.3em;
-}
-
-@media print {
- #footer-badges { display: none; }
-}
-
-#toc {
- margin-bottom: 2.5em;
-}
-
-#toctitle {
- color: #527bbd;
- font-size: 1.1em;
- font-weight: bold;
- margin-top: 1.0em;
- margin-bottom: 0.1em;
-}
-
-div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
- margin-top: 0;
- margin-bottom: 0;
-}
-div.toclevel2 {
- margin-left: 2em;
- font-size: 0.9em;
-}
-div.toclevel3 {
- margin-left: 4em;
- font-size: 0.9em;
-}
-div.toclevel4 {
- margin-left: 6em;
- font-size: 0.9em;
-}
-
-span.aqua { color: aqua; }
-span.black { color: black; }
-span.blue { color: blue; }
-span.fuchsia { color: fuchsia; }
-span.gray { color: gray; }
-span.green { color: green; }
-span.lime { color: lime; }
-span.maroon { color: maroon; }
-span.navy { color: navy; }
-span.olive { color: olive; }
-span.purple { color: purple; }
-span.red { color: red; }
-span.silver { color: silver; }
-span.teal { color: teal; }
-span.white { color: white; }
-span.yellow { color: yellow; }
-
-span.aqua-background { background: aqua; }
-span.black-background { background: black; }
-span.blue-background { background: blue; }
-span.fuchsia-background { background: fuchsia; }
-span.gray-background { background: gray; }
-span.green-background { background: green; }
-span.lime-background { background: lime; }
-span.maroon-background { background: maroon; }
-span.navy-background { background: navy; }
-span.olive-background { background: olive; }
-span.purple-background { background: purple; }
-span.red-background { background: red; }
-span.silver-background { background: silver; }
-span.teal-background { background: teal; }
-span.white-background { background: white; }
-span.yellow-background { background: yellow; }
-
-span.big { font-size: 2em; }
-span.small { font-size: 0.6em; }
-
-span.underline { text-decoration: underline; }
-span.overline { text-decoration: overline; }
-span.line-through { text-decoration: line-through; }
-
-div.unbreakable { page-break-inside: avoid; }
-
-
-/*
- * xhtml11 specific
- *
- * */
-
-div.tableblock {
- margin-top: 1.0em;
- margin-bottom: 1.5em;
-}
-div.tableblock > table {
- border: 3px solid #527bbd;
-}
-thead, p.table.header {
- font-weight: bold;
- color: #527bbd;
-}
-p.table {
- margin-top: 0;
-}
-/* Because the table frame attribute is overriden by CSS in most browsers. */
-div.tableblock > table[frame="void"] {
- border-style: none;
-}
-div.tableblock > table[frame="hsides"] {
- border-left-style: none;
- border-right-style: none;
-}
-div.tableblock > table[frame="vsides"] {
- border-top-style: none;
- border-bottom-style: none;
-}
-
-
-/*
- * html5 specific
- *
- * */
-
-table.tableblock {
- margin-top: 1.0em;
- margin-bottom: 1.5em;
-}
-thead, p.tableblock.header {
- font-weight: bold;
- color: #527bbd;
-}
-p.tableblock {
- margin-top: 0;
-}
-table.tableblock {
- border-width: 3px;
- border-spacing: 0px;
- border-style: solid;
- border-color: #527bbd;
- border-collapse: collapse;
-}
-th.tableblock, td.tableblock {
- border-width: 1px;
- padding: 4px;
- border-style: solid;
- border-color: #527bbd;
-}
-
-table.tableblock.frame-topbot {
- border-left-style: hidden;
- border-right-style: hidden;
-}
-table.tableblock.frame-sides {
- border-top-style: hidden;
- border-bottom-style: hidden;
-}
-table.tableblock.frame-none {
- border-style: hidden;
-}
-
-th.tableblock.halign-left, td.tableblock.halign-left {
- text-align: left;
-}
-th.tableblock.halign-center, td.tableblock.halign-center {
- text-align: center;
-}
-th.tableblock.halign-right, td.tableblock.halign-right {
- text-align: right;
-}
-
-th.tableblock.valign-top, td.tableblock.valign-top {
- vertical-align: top;
-}
-th.tableblock.valign-middle, td.tableblock.valign-middle {
- vertical-align: middle;
-}
-th.tableblock.valign-bottom, td.tableblock.valign-bottom {
- vertical-align: bottom;
-}
-
-
-/*
- * manpage specific
- *
- * */
-
-body.manpage h1 {
- padding-top: 0.5em;
- padding-bottom: 0.5em;
- border-top: 2px solid silver;
- border-bottom: 2px solid silver;
-}
-body.manpage h2 {
- border-style: none;
-}
-body.manpage div.sectionbody {
- margin-left: 3em;
-}
-
-@media print {
- body.manpage div#toc { display: none; }
-}
-
-
-</style>
-<script type="text/javascript">
-/*<![CDATA[*/
-var asciidoc = { // Namespace.
-
-/////////////////////////////////////////////////////////////////////
-// Table Of Contents generator
-/////////////////////////////////////////////////////////////////////
-
-/* Author: Mihai Bazon, September 2002
- * http://students.infoiasi.ro/~mishoo
- *
- * Table Of Content generator
- * Version: 0.4
- *
- * Feel free to use this script under the terms of the GNU General Public
- * License, as long as you do not remove or alter this notice.
- */
-
- /* modified by Troy D. Hanson, September 2006. License: GPL */
- /* modified by Stuart Rackham, 2006, 2009. License: GPL */
-
-// toclevels = 1..4.
-toc: function (toclevels) {
-
- function getText(el) {
- var text = "";
- for (var i = el.firstChild; i != null; i = i.nextSibling) {
- if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
- text += i.data;
- else if (i.firstChild != null)
- text += getText(i);
- }
- return text;
- }
-
- function TocEntry(el, text, toclevel) {
- this.element = el;
- this.text = text;
- this.toclevel = toclevel;
- }
-
- function tocEntries(el, toclevels) {
- var result = new Array;
- var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
- // Function that scans the DOM tree for header elements (the DOM2
- // nodeIterator API would be a better technique but not supported by all
- // browsers).
- var iterate = function (el) {
- for (var i = el.firstChild; i != null; i = i.nextSibling) {
- if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
- var mo = re.exec(i.tagName);
- if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
- result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
- }
- iterate(i);
- }
- }
- }
- iterate(el);
- return result;
- }
-
- var toc = document.getElementById("toc");
- if (!toc) {
- return;
- }
-
- // Delete existing TOC entries in case we're reloading the TOC.
- var tocEntriesToRemove = [];
- var i;
- for (i = 0; i < toc.childNodes.length; i++) {
- var entry = toc.childNodes[i];
- if (entry.nodeName.toLowerCase() == 'div'
- && entry.getAttribute("class")
- && entry.getAttribute("class").match(/^toclevel/))
- tocEntriesToRemove.push(entry);
- }
- for (i = 0; i < tocEntriesToRemove.length; i++) {
- toc.removeChild(tocEntriesToRemove[i]);
- }
-
- // Rebuild TOC entries.
- var entries = tocEntries(document.getElementById("content"), toclevels);
- for (var i = 0; i < entries.length; ++i) {
- var entry = entries[i];
- if (entry.element.id == "")
- entry.element.id = "_toc_" + i;
- var a = document.createElement("a");
- a.href = "#" + entry.element.id;
- a.appendChild(document.createTextNode(entry.text));
- var div = document.createElement("div");
- div.appendChild(a);
- div.className = "toclevel" + entry.toclevel;
- toc.appendChild(div);
- }
- if (entries.length == 0)
- toc.parentNode.removeChild(toc);
-},
-
-
-/////////////////////////////////////////////////////////////////////
-// Footnotes generator
-/////////////////////////////////////////////////////////////////////
-
-/* Based on footnote generation code from:
- * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
- */
-
-footnotes: function () {
- // Delete existing footnote entries in case we're reloading the footnodes.
- var i;
- var noteholder = document.getElementById("footnotes");
- if (!noteholder) {
- return;
- }
- var entriesToRemove = [];
- for (i = 0; i < noteholder.childNodes.length; i++) {
- var entry = noteholder.childNodes[i];
- if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
- entriesToRemove.push(entry);
- }
- for (i = 0; i < entriesToRemove.length; i++) {
- noteholder.removeChild(entriesToRemove[i]);
- }
-
- // Rebuild footnote entries.
- var cont = document.getElementById("content");
- var spans = cont.getElementsByTagName("span");
- var refs = {};
- var n = 0;
- for (i=0; i<spans.length; i++) {
- if (spans[i].className == "footnote") {
- n++;
- var note = spans[i].getAttribute("data-note");
- if (!note) {
- // Use [\s\S] in place of . so multi-line matches work.
- // Because JavaScript has no s (dotall) regex flag.
- note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
- spans[i].innerHTML =
- "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
- "' title='View footnote' class='footnote'>" + n + "</a>]";
- spans[i].setAttribute("data-note", note);
- }
- noteholder.innerHTML +=
- "<div class='footnote' id='_footnote_" + n + "'>" +
- "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
- n + "</a>. " + note + "</div>";
- var id =spans[i].getAttribute("id");
- if (id != null) refs["#"+id] = n;
- }
- }
- if (n == 0)
- noteholder.parentNode.removeChild(noteholder);
- else {
- // Process footnoterefs.
- for (i=0; i<spans.length; i++) {
- if (spans[i].className == "footnoteref") {
- var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
- href = href.match(/#.*/)[0]; // Because IE return full URL.
- n = refs[href];
- spans[i].innerHTML =
- "[<a href='#_footnote_" + n +
- "' title='View footnote' class='footnote'>" + n + "</a>]";
- }
- }
- }
-},
-
-install: function(toclevels) {
- var timerId;
-
- function reinstall() {
- asciidoc.footnotes();
- if (toclevels) {
- asciidoc.toc(toclevels);
- }
- }
-
- function reinstallAndRemoveTimer() {
- clearInterval(timerId);
- reinstall();
- }
-
- timerId = setInterval(reinstall, 500);
- if (document.addEventListener)
- document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
- else
- window.onload = reinstallAndRemoveTimer;
-}
-
-}
-asciidoc.install();
-/*]]>*/
-</script>
-</head>
-<body class="article">
-<div id="header">
-<h1>calcurse(1)</h1>
-</div>
-<div id="content">
-<div class="sect1">
-<h2 id="_name">Name</h2>
-<div class="sectionbody">
-<div class="paragraph"><p>calcurse - text-based organizer</p></div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_synopsis">Synopsis</h2>
-<div class="sectionbody">
-<div class="verseblock">
-<pre class="content"><strong>calcurse</strong> [<strong>-h</strong>|<strong>-v</strong>] [<strong>-an</strong>] [<strong>-t</strong>[num]] [<strong>-c</strong>&lt;file&gt;] [<strong>-D</strong>&lt;dir&gt;]
- [<strong>-i</strong>&lt;file&gt;] [<strong>-x</strong>[format]] [<strong>-d</strong> &lt;date&gt;|&lt;num&gt;] [<strong>-s</strong>[date]]
- [<strong>-l</strong> &lt;num&gt;] [<strong>-r</strong>[range]] [<strong>-S</strong> &lt;regex&gt;] [<strong>--status</strong>]</pre>
-<div class="attribution">
-</div></div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_description">Description</h2>
-<div class="sectionbody">
-<div class="paragraph"><p>Calcurse is a text-based calendar and scheduling application. It helps keeping
-track of events, appointments and everyday tasks. A configurable notification
-system reminds user of upcoming deadlines, and the curses based interface can
-be customized to suit user needs. All of the commands are documented within an
-online help system.</p></div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_options">Options</h2>
-<div class="sectionbody">
-<div class="paragraph"><p>The following options are supported:</p></div>
-<div class="dlist"><dl>
-<dt class="hdlist1">
-<strong>-a</strong>, <strong>--appointment</strong>
-</dt>
-<dd>
-<p>
- Print the appointments and events for the current day and exit. <em>Note:</em> The calendar
- from which to read the appointments can be specified using the <strong>-c</strong> flag.
-</p>
-</dd>
-<dt class="hdlist1">
-<strong>-c</strong> &lt;file&gt;, <strong>--calendar</strong> &lt;file&gt;
-</dt>
-<dd>
-<p>
- Specify the calendar file to use. The default calendar is <strong>~/.calcurse/apts</strong>
- (see section <em>FILES</em> below). This option has precedence over <strong>-D</strong>.
-</p>
-</dd>
-<dt class="hdlist1">
-<strong>-d</strong> &lt;date|num&gt;, <strong>--day</strong> &lt;date|num&gt;
-</dt>
-<dd>
-<p>
- Print the appointments for the given date or for the given number of
- upcoming days, depending on the argument format. Two possible formats are
- supported:
-</p>
-<div class="openblock">
-<div class="content">
-<div class="ulist"><ul>
-<li>
-<p>
-a date (possible formats described below).
-</p>
-</li>
-<li>
-<p>
-a number <strong>n</strong>.
-</p>
-</li>
-</ul></div>
-</div></div>
-<div class="paragraph"><p>In the first case, the appointment list for the specified date will be
-returned, while in the second case the appointment list for the <strong>n</strong> upcoming
-days will be returned.</p></div>
-<div class="paragraph"><p>As an example, typing <strong>calcurse -d 3</strong> will display your appointments for
-today, tomorrow, and the day after tomorrow.</p></div>
-<div class="paragraph"><p>The date format used is the one specified in the &#8220;General options&#8221;
-menu. Four formats are available:</p></div>
-<div class="openblock">
-<div class="content">
-<div class="olist arabic"><ol class="arabic">
-<li>
-<p>
-mm/dd/yyyy
-</p>
-</li>
-<li>
-<p>
-dd/mm/yyyy
-</p>
-</li>
-<li>
-<p>
-yyyy/mm/dd
-</p>
-</li>
-<li>
-<p>
-yyyy-mm-dd
-</p>
-</li>
-</ol></div>
-</div></div>
-<div class="paragraph"><p><em>Note:</em> as for the <strong>-a</strong> flag, the calendar from which to read the
-appointments can be specified using the <strong>-c</strong> flag.</p></div>
-</dd>
-<dt class="hdlist1">
-<strong>-D</strong> &lt;dir&gt;, <strong>--directory</strong> &lt;dir&gt;
-</dt>
-<dd>
-<p>
- Specify the data directory to use. If not specified, the default directory is
- <strong>~/.calcurse/</strong>.
-</p>
-</dd>
-<dt class="hdlist1">
-<strong>--format-apt</strong> &lt;format&gt;
-</dt>
-<dd>
-<p>
- Specify a format to control the output of appointments in non-interactive
- mode. See the <em>FORMAT STRINGS</em> section for detailed information on format
- strings.
-</p>
-</dd>
-<dt class="hdlist1">
-<strong>--format-recur-apt</strong> &lt;format&gt;
-</dt>
-<dd>
-<p>
- Specify a format to control the output of recurrent appointments in
- non-interactive mode. See the <em>FORMAT STRINGS</em> section for detailed
- information on format strings.
-</p>
-</dd>
-<dt class="hdlist1">
-<strong>--format-event</strong> &lt;format&gt;
-</dt>
-<dd>
-<p>
- Specify a format to control the output of events in non-interactive mode. See
- the <em>FORMAT STRINGS</em> section for detailed information on format strings.
-</p>
-</dd>
-<dt class="hdlist1">
-<strong>--format-recur-event</strong> &lt;format&gt;
-</dt>
-<dd>
-<p>
- Specify a format to control the output of recurrent events in non-interactive
- mode. See the <em>FORMAT STRINGS</em> section for detailed information on format
- strings.
-</p>
-</dd>
-<dt class="hdlist1">
-<strong>--format-todo</strong> &lt;format&gt;
-</dt>
-<dd>
-<p>
- Specify a format to control the output of todo items in non-interactive mode.
- See the <em>FORMAT STRINGS</em> section for detailed information on format strings.
-</p>
-</dd>
-<dt class="hdlist1">
-<strong>-g</strong>, <strong>--gc</strong>
-</dt>
-<dd>
-<p>
- Run the garbage collector for note files and exit.
-</p>
-</dd>
-<dt class="hdlist1">
-<strong>-h</strong>, <strong>--help</strong>
-</dt>
-<dd>
-<p>
- Print a short help text describing the supported command-line options,
- and exit.
-</p>
-</dd>
-<dt class="hdlist1">
-<strong>-i</strong> &lt;file&gt;, <strong>--import</strong> &lt;file&gt;
-</dt>
-<dd>
-<p>
- Import the icalendar data contained in <em>file</em>.
-</p>
-</dd>
-<dt class="hdlist1">
-<strong>-l</strong> &lt;num&gt;, <strong>--limit</strong> &lt;num&gt;
-</dt>
-<dd>
-<p>
- Limit the number of results printed to <em>num</em>.
-</p>
-</dd>
-<dt class="hdlist1">
-<strong>-n</strong>, <strong>--next</strong>
-</dt>
-<dd>
-<p>
- Print the next appointment within upcoming 24 hours and exit. The indicated
- time is the number of hours and minutes left before this appointment.
-</p>
-<div class="paragraph"><p><em>Note:</em> the calendar from which to read the appointments can be specified using
-the <strong>-c</strong> flag.</p></div>
-</dd>
-<dt class="hdlist1">
-<strong>-r</strong>[num], <strong>--range</strong>[=num]
-</dt>
-<dd>
-<p>
- Print events and appointments for the <em>num</em> number of days and exit. If no
- <em>num</em> is given, a range of 1 day is considered.
-</p>
-</dd>
-<dt class="hdlist1">
-<strong>--read-only</strong>
-</dt>
-<dd>
-<p>
- Don&#8217;t save configuration nor appointments/todos.
-</p>
-<div class="paragraph"><p><em>Warning:</em> Use this this with care! If you run an interactive calcurse instance
-in read-only mode, all changes from this session will be lost without warning!</p></div>
-</dd>
-<dt class="hdlist1">
-<strong>-s</strong>[date], <strong>--startday</strong>[=date]
-</dt>
-<dd>
-<p>
- Print events and appointments from <em>date</em> and exit. If no <em>date</em> is given,
- the current day is considered.
-</p>
-</dd>
-<dt class="hdlist1">
-<strong>-S</strong>&lt;regex&gt;, <strong>--search</strong>=&lt;regex&gt;
-</dt>
-<dd>
-<p>
- When used with the <strong>-a</strong>, <strong>-d</strong>, <strong>-r</strong>, <strong>-s</strong>, or <strong>-t</strong> flag, print only the items
- having a description that matches the given regular expression.
-</p>
-</dd>
-<dt class="hdlist1">
-<strong>--status</strong>
-</dt>
-<dd>
-<p>
- Display the status of running instances of calcurse. If calcurse is
- running, this will tell if the interactive mode was launched or if
- calcurse is running in background. The process pid will also be indicated.
-</p>
-</dd>
-<dt class="hdlist1">
-<strong>-t</strong>[num], <strong>--todo</strong>[=num]
-</dt>
-<dd>
-<p>
- Print the <strong>todo</strong> list and exit. If the optional number <em>num</em> is given, then
- only todos having a priority equal to <em>num</em> will be returned. The priority
- number must be between 1 (highest) and 9 (lowest). It is also possible to
- specify <strong>0</strong> for the priority, in which case only completed tasks will be
- shown.
-</p>
-</dd>
-<dt class="hdlist1">
-<strong>-v</strong>, <strong>--version</strong>
-</dt>
-<dd>
-<p>
- Display <strong>calcurse</strong> version and exit.
-</p>
-</dd>
-<dt class="hdlist1">
-<strong>-x</strong>[format], <strong>--export</strong>[=format]
-</dt>
-<dd>
-<p>
- Export user data to specified format. Events, appointments and todos are
- converted and echoed to stdout. Two possible formats are available: <em>ical</em>
- and <em>pcal</em>. If the optional argument <em>format</em> is not given, ical format is
- selected by default.
-</p>
-<div class="paragraph"><p><em>Note:</em> redirect standard output to export data to a file, by issuing a command
-such as:</p></div>
-<div class="listingblock">
-<div class="content">
-<pre><code>$ calcurse --export &gt; my_data.dat</code></pre>
-</div></div>
-</dd>
-</dl></div>
-<div class="paragraph"><p><em>Note:</em> The <strong>-N</strong> option has been removed in calcurse 3.0.0. See the <em>FORMAT
-STRINGS</em> section on how to print note along with appointments and events.</p></div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_format_strings">Format strings</h2>
-<div class="sectionbody">
-<div class="paragraph"><p>Format strings are composed of printf()-style format specifiers&#8201;&#8212;&#8201;ordinary
-characters are copied to stdout without modification. Each specifier is
-introduced by a <strong>%</strong> and is followed by a character which specifies the field to
-print. The set of available fields depends on the item type.</p></div>
-<div class="sect2">
-<h3 id="_format_specifiers_for_appointments">Format specifiers for appointments</h3>
-<div class="dlist"><dl>
-<dt class="hdlist1">
-<strong>s</strong>
-</dt>
-<dd>
-<p>
- Print the start time of the appointment as UNIX time stamp
-</p>
-</dd>
-<dt class="hdlist1">
-<strong>S</strong>
-</dt>
-<dd>
-<p>
- Print the start time of the appointment using the <strong>hh:mm</strong> format
-</p>
-</dd>
-<dt class="hdlist1">
-<strong>d</strong>
-</dt>
-<dd>
-<p>
- Print the duration of the appointment in seconds
-</p>
-</dd>
-<dt class="hdlist1">
-<strong>e</strong>
-</dt>
-<dd>
-<p>
- Print the end time of the appointment as UNIX time stamp
-</p>
-</dd>
-<dt class="hdlist1">
-<strong>E</strong>
-</dt>
-<dd>
-<p>
- Print the end time of the appointment using the <strong>hh:mm</strong> format
-</p>
-</dd>
-<dt class="hdlist1">
-<strong>m</strong>
-</dt>
-<dd>
-<p>
- Print the description of the item
-</p>
-</dd>
-<dt class="hdlist1">
-<strong>n</strong>
-</dt>
-<dd>
-<p>
- Print the name of the note file belonging to the item
-</p>
-</dd>
-<dt class="hdlist1">
-<strong>N</strong>
-</dt>
-<dd>
-<p>
- Print the note belonging to the item
-</p>
-</dd>
-</dl></div>
-</div>
-<div class="sect2">
-<h3 id="_format_specifiers_for_events">Format specifiers for events</h3>
-<div class="dlist"><dl>
-<dt class="hdlist1">
-<strong>m</strong>
-</dt>
-<dd>
-<p>
- Print the description of the item
-</p>
-</dd>
-<dt class="hdlist1">
-<strong>n</strong>
-</dt>
-<dd>
-<p>
- Print the name of the note file belonging to the item
-</p>
-</dd>
-<dt class="hdlist1">
-<strong>N</strong>
-</dt>
-<dd>
-<p>
- Print the note belonging to the item
-</p>
-</dd>
-</dl></div>
-</div>
-<div class="sect2">
-<h3 id="_format_specifiers_for_todo_items">Format specifiers for todo items</h3>
-<div class="dlist"><dl>
-<dt class="hdlist1">
-<strong>p</strong>
-</dt>
-<dd>
-<p>
- Print the priority of the item
-</p>
-</dd>
-<dt class="hdlist1">
-<strong>m</strong>
-</dt>
-<dd>
-<p>
- Print the description of the item
-</p>
-</dd>
-<dt class="hdlist1">
-<strong>n</strong>
-</dt>
-<dd>
-<p>
- Print the name of the note file belonging to the item
-</p>
-</dd>
-<dt class="hdlist1">
-<strong>N</strong>
-</dt>
-<dd>
-<p>
- Print the note belonging to the item
-</p>
-</dd>
-</dl></div>
-</div>
-<div class="sect2">
-<h3 id="_examples">Examples</h3>
-<div class="dlist"><dl>
-<dt class="hdlist1">
-<strong><code>calcurse -r7 --format-apt='- %S -&gt; %E\n\t%m\n%N'</code></strong>
-</dt>
-<dd>
-<p>
- Print appointments and events for the next seven days. Also, print the notes
- attached to each regular appointment (simulates <strong>-N</strong> for appointments).
-</p>
-</dd>
-<dt class="hdlist1">
-<strong><code>calcurse -r7 --format-apt=' - %m (%S to %E)\n' --format-recur-apt=' - %m (%S to %E)\n'</code></strong>
-</dt>
-<dd>
-<p>
- Print appointments and events for the next seven days and use a custom format
- for (recurrent) appointments: * - Some appointment (18:30 to 21:30)*.
-</p>
-</dd>
-<dt class="hdlist1">
-<strong><code>calcurse -t --format-todo '(%p) %m\n'</code></strong>
-</dt>
-<dd>
-<p>
- List all todo items and put parentheses around the priority specifiers.
-</p>
-</dd>
-</dl></div>
-</div>
-<div class="sect2">
-<h3 id="_extended_format_specifiers">Extended format specifiers</h3>
-<div class="paragraph"><p>Extended format specifiers can be used if you want to specify advanced
-formatting options. Extended specifiers are introduced by <strong>%(</strong> and are
-terminated by a closing parenthesis (<strong>)</strong>). The following list includes all
-short specifiers and corresponding long options:</p></div>
-<div class="ulist"><ul>
-<li>
-<p>
-<strong>s</strong>: <strong>(start)</strong>
-</p>
-</li>
-<li>
-<p>
-<strong>S</strong>: <strong>(start:epoch)</strong>
-</p>
-</li>
-<li>
-<p>
-<strong>e</strong>: <strong>(end)</strong>
-</p>
-</li>
-<li>
-<p>
-<strong>E</strong>: <strong>(end:epoch)</strong>
-</p>
-</li>
-<li>
-<p>
-<strong>d</strong>: <strong>(duration)</strong>
-</p>
-</li>
-<li>
-<p>
-<strong>r</strong>: <strong>(remaining)</strong>
-</p>
-</li>
-<li>
-<p>
-<strong>m</strong>: <strong>(message)</strong>
-</p>
-</li>
-<li>
-<p>
-<strong>n</strong>: <strong>(noteid)</strong>
-</p>
-</li>
-<li>
-<p>
-<strong>N</strong>: <strong>(note)</strong>
-</p>
-</li>
-<li>
-<p>
-<strong>p</strong>: <strong>(priority)</strong>
-</p>
-</li>
-</ul></div>
-<div class="paragraph"><p>The <strong>(start)</strong> and <strong>(end)</strong> specifiers support strftime()-style extended
-formatting options that can be used for fine-grained formatting. Additionally,
-the special formats <strong>epoch</strong> (which is equivalent to <strong>(start:%s)</strong> or <strong>(end:%s)</strong>)
-and <strong>default</strong> (which is mostly equivalent to <strong>(start:%H:%M)</strong> or <strong>(end:%H:%M)</strong>
-but displays <strong>..:..</strong> if the item doesn&#8217;t start/end at the current day) are
-supported.</p></div>
-<div class="paragraph"><p>The <strong>(remaining)</strong> and <strong>(duration)</strong> specifiers support a subset of the
-strftime()-style formatting options, along with two extra qualifiers.
-The supported options are <strong>%d</strong>, <strong>%H</strong>, <strong>%M</strong> and <strong>%S</strong>, and by default each
-of these is zero-padded to two decimal places. To avoid the
-zero-padding, add <strong>-</strong> in front of the formatting option (for example,
-<strong>%-d</strong>). Additionally, the <strong>E</strong> option will display the total number of
-time units until the appointment, rather than showing the remaining
-number of time units modulo the next larger time unit. For example, an
-appointment in 50 hours will show as 02:00 with the formatting string
-<strong>%H:%M</strong>, but will show 50:00 with the formatting string <strong>%EH:%M</strong>. Note
-that if you are combining the <strong>-</strong> and <strong>E</strong> options, the <strong>-</strong> must come
-first. The default format for the <strong>(remaining)</strong> specifier is <strong>%EH:%M</strong>.</p></div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_notes">Notes</h2>
-<div class="sectionbody">
-<div class="paragraph"><p>Calcurse interface contains three different panels (calendar, appointment list,
-and todo list) on which you can perform different actions. All the possible
-actions, together with their associated keystrokes, are listed on the status
-bar. This status bar takes place at the bottom of the screen.</p></div>
-<div class="paragraph"><p>At any time, the built-in help system can be invoked by pressing the <em>?</em> key.
-Once viewing the help screens, informations on a specific command can be
-accessed by pressing the keystroke corresponding to that command.</p></div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_configuration">Configuration</h2>
-<div class="sectionbody">
-<div class="paragraph"><p>The calcurse options can be changed from the configuration menu (shown when <em>C</em>
-is hit). Five possible categories are to be chosen from : the color scheme, the
-layout (the location of the three panels on the screen), notification options,
-key bindings configuration menu, and more general options (such as automatic
-save before quitting). All of these options are detailed in the configuration
-menu.</p></div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_files">Files</h2>
-<div class="sectionbody">
-<div class="paragraph"><p>The following structure is created in your $HOME directory (or in the directory
-you specified with the <strong>-D</strong> option), the first time calcurse is run:</p></div>
-<div class="listingblock">
-<div class="content">
-<pre><code>$HOME/.calcurse/
- |___notes/
- |___conf
- |___keys
- |___apts
- |___todo</code></pre>
-</div></div>
-<div class="paragraph"><p>The <em>notes</em> subdirectory contains descriptions of the notes which are attached
-to appointments, events or todos. One text file is created per note, whose name
-is built using mkstemp(3) and should be unique, but with no relation with the
-corresponding item&#8217;s description.</p></div>
-<div class="paragraph"><p>The <em>conf</em> file contains the user configuration. The <em>keys</em> file contains the
-user-defined key bindings. The <em>apts</em> file contains all of the user&#8217;s
-appointments and events, and the <em>todo</em> file contains the todo list.</p></div>
-<div class="paragraph"><p><em>Note:</em> if the logging of calcurse daemon activity was set in the notification
-configuration menu, the extra file <em>daemon.log</em> will appear in calcurse data
-directory. This file contains logs about calcurse activity when running in
-background.</p></div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_environment">Environment</h2>
-<div class="sectionbody">
-<div class="paragraph"><p>This section describes the environment variables that affect how calcurse
-operates.</p></div>
-<div class="dlist"><dl>
-<dt class="hdlist1">
-<strong>VISUAL</strong>
-</dt>
-<dd>
-<p>
- Specifies the external editor to use for writing notes.
-</p>
-</dd>
-<dt class="hdlist1">
-<strong>EDITOR</strong>
-</dt>
-<dd>
-<p>
- If the <em>VISUAL</em> environment variable is not set, then <em>EDITOR</em> will be used
- as the default external editor. If none of those variables are set, then
- <em>/usr/bin/vi</em> is used instead.
-</p>
-</dd>
-<dt class="hdlist1">
-<strong>PAGER</strong>
-</dt>
-<dd>
-<p>
- Specifies the default viewer to be used for reading notes. If this variable
- is not set, then <em>/usr/bin/less</em> is used.
-</p>
-</dd>
-</dl></div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_bugs">Bugs</h2>
-<div class="sectionbody">
-<div class="paragraph"><p>Incorrect highlighting of items appear when using calcurse black and white
-theme together with a <strong>$TERM</strong> variable set to <em>xterm-color</em>. To fix this bug,
-and as advised by Thomas E. Dickey (xterm maintainer), <em>xterm-xfree86</em> should
-be used instead of <em>xterm-color</em> to set the <strong>$TERM</strong> variable:</p></div>
-<div class="literalblock">
-<div class="content">
-<pre><code>"The xterm-color value for $TERM is a bad choice for
- XFree86 xterm because it is commonly used for a
- terminfo entry which happens to not support bce.
- Use the xterm-xfree86 entry which is distributed
- with XFree86 xterm (or the similar one distributed
- with ncurses)."</code></pre>
-</div></div>
-<div class="paragraph"><p>If you find other bugs, please send a report to <a href="mailto:bugs@calcurse.org">bugs@calcurse.org</a> or to one of
-the authors, below.</p></div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_see_also">See also</h2>
-<div class="sectionbody">
-<div class="paragraph"><p>vi(1), less(1), ncurses(3), mkstemp(3)</p></div>
-<div class="paragraph"><p>The ical specification (rfc2445) can be found at:
-<a href="http://tools.ietf.org/html/rfc2445">http://tools.ietf.org/html/rfc2445</a></p></div>
-<div class="paragraph"><p>The pcal project page: <a href="http://pcal.sourceforge.net/">http://pcal.sourceforge.net/</a></p></div>
-<div class="paragraph"><p>Calcurse home page: <a href="http://calcurse.org/">http://calcurse.org/</a></p></div>
-<div class="paragraph"><p>Calcurse complete manual, translated in many languages and maintained in
-html format, can be found in the doc/ directory of the source package,
-or at: <a href="http://calcurse.org/files/manual.html">http://calcurse.org/files/manual.html</a></p></div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_authors">Authors</h2>
-<div class="sectionbody">
-<div class="ulist"><ul>
-<li>
-<p>
-<strong>Frederic Culot</strong> &lt;<a href="mailto:frederic@culot.org">frederic@culot.org</a>&gt;
-</p>
-</li>
-<li>
-<p>
-<strong>Lukas Fleischer</strong> &lt;<a href="mailto:calcurse@cryptocrack.de">calcurse@cryptocrack.de</a>&gt;
-</p>
-</li>
-</ul></div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_copyright">Copyright</h2>
-<div class="sectionbody">
-<div class="paragraph"><p>Copyright (c) 2004-2013 calcurse Development Team.
-This software is released under the BSD License.</p></div>
-</div>
-</div>
-</div>
-<div id="footnotes"><hr /></div>
-<div id="footer">
-<div id="footer-text">
-Last updated 2014-01-31 21:24:17 CET
-</div>
-</div>
-</body>
-</html>
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="UTF-8">
+<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta name="generator" content="Asciidoctor 1.5.8">
+<title>CALCURSE(1)</title>
+<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700">
+<style>
+/* Asciidoctor default stylesheet | MIT License | http://asciidoctor.org */
+/* Uncomment @import statement below to use as custom stylesheet */
+/*@import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700";*/
+article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}
+audio,canvas,video{display:inline-block}
+audio:not([controls]){display:none;height:0}
+script{display:none!important}
+html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}
+a{background:transparent}
+a:focus{outline:thin dotted}
+a:active,a:hover{outline:0}
+h1{font-size:2em;margin:.67em 0}
+abbr[title]{border-bottom:1px dotted}
+b,strong{font-weight:bold}
+dfn{font-style:italic}
+hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}
+mark{background:#ff0;color:#000}
+code,kbd,pre,samp{font-family:monospace;font-size:1em}
+pre{white-space:pre-wrap}
+q{quotes:"\201C" "\201D" "\2018" "\2019"}
+small{font-size:80%}
+sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
+sup{top:-.5em}
+sub{bottom:-.25em}
+img{border:0}
+svg:not(:root){overflow:hidden}
+figure{margin:0}
+fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
+legend{border:0;padding:0}
+button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
+button,input{line-height:normal}
+button,select{text-transform:none}
+button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}
+button[disabled],html input[disabled]{cursor:default}
+input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}
+button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
+textarea{overflow:auto;vertical-align:top}
+table{border-collapse:collapse;border-spacing:0}
+*,*::before,*::after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}
+html,body{font-size:100%}
+body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
+a:hover{cursor:pointer}
+img,object,embed{max-width:100%;height:auto}
+object,embed{height:100%}
+img{-ms-interpolation-mode:bicubic}
+.left{float:left!important}
+.right{float:right!important}
+.text-left{text-align:left!important}
+.text-right{text-align:right!important}
+.text-center{text-align:center!important}
+.text-justify{text-align:justify!important}
+.hide{display:none}
+img,object,svg{display:inline-block;vertical-align:middle}
+textarea{height:auto;min-height:50px}
+select{width:100%}
+.center{margin-left:auto;margin-right:auto}
+.stretch{width:100%}
+.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
+div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;direction:ltr}
+a{color:#2156a5;text-decoration:underline;line-height:inherit}
+a:hover,a:focus{color:#1d4b8f}
+a img{border:none}
+p{font-family:inherit;font-weight:400;font-size:1em;line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}
+p aside{font-size:.875em;line-height:1.35;font-style:italic}
+h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em}
+h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0}
+h1{font-size:2.125em}
+h2{font-size:1.6875em}
+h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em}
+h4,h5{font-size:1.125em}
+h6{font-size:1em}
+hr{border:solid #dddddf;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em;height:0}
+em,i{font-style:italic;line-height:inherit}
+strong,b{font-weight:bold;line-height:inherit}
+small{font-size:60%;line-height:inherit}
+code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)}
+ul,ol,dl{font-size:1em;line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}
+ul,ol{margin-left:1.5em}
+ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0;font-size:1em}
+ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit}
+ul.square{list-style-type:square}
+ul.circle{list-style-type:circle}
+ul.disc{list-style-type:disc}
+ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0}
+dl dt{margin-bottom:.3125em;font-weight:bold}
+dl dd{margin-bottom:1.25em}
+abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help}
+abbr{text-transform:none}
+blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
+blockquote cite{display:block;font-size:.9375em;color:rgba(0,0,0,.6)}
+blockquote cite::before{content:"\2014 \0020"}
+blockquote cite a,blockquote cite a:visited{color:rgba(0,0,0,.6)}
+blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
+@media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
+h1{font-size:2.75em}
+h2{font-size:2.3125em}
+h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
+h4{font-size:1.4375em}}
+table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede}
+table thead,table tfoot{background:#f7f8f7}
+table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
+table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
+table tr.even,table tr.alt,table tr:nth-of-type(even){background:#f8f8f7}
+table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6}
+h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
+h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
+.clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table}
+.clearfix::after,.float-group::after{clear:both}
+*:not(pre)>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background-color:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed;word-wrap:break-word}
+*:not(pre)>code.nobreak{word-wrap:normal}
+*:not(pre)>code.nowrap{white-space:nowrap}
+pre,pre>code{line-height:1.45;color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;text-rendering:optimizeSpeed}
+em em{font-style:normal}
+strong strong{font-weight:400}
+.keyseq{color:rgba(51,51,51,.8)}
+kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background-color:#f7f7f7;border:1px solid #ccc;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em white inset;box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em #fff inset;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap}
+.keyseq kbd:first-child{margin-left:0}
+.keyseq kbd:last-child{margin-right:0}
+.menuseq,.menuref{color:#000}
+.menuseq b:not(.caret),.menuref{font-weight:inherit}
+.menuseq{word-spacing:-.02em}
+.menuseq b.caret{font-size:1.25em;line-height:.8}
+.menuseq i.caret{font-weight:bold;text-align:center;width:.45em}
+b.button::before,b.button::after{position:relative;top:-1px;font-weight:400}
+b.button::before{content:"[";padding:0 3px 0 2px}
+b.button::after{content:"]";padding:0 2px 0 3px}
+p a>code:hover{color:rgba(0,0,0,.9)}
+#header,#content,#footnotes,#footer{width:100%;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em}
+#header::before,#header::after,#content::before,#content::after,#footnotes::before,#footnotes::after,#footer::before,#footer::after{content:" ";display:table}
+#header::after,#content::after,#footnotes::after,#footer::after{clear:both}
+#content{margin-top:1.25em}
+#content::before{content:none}
+#header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0}
+#header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #dddddf}
+#header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #dddddf;padding-bottom:8px}
+#header .details{border-bottom:1px solid #dddddf;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap}
+#header .details span:first-child{margin-left:-.125em}
+#header .details span.email a{color:rgba(0,0,0,.85)}
+#header .details br{display:none}
+#header .details br+span::before{content:"\00a0\2013\00a0"}
+#header .details br+span.author::before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)}
+#header .details br+span#revremark::before{content:"\00a0|\00a0"}
+#header #revnumber{text-transform:capitalize}
+#header #revnumber::after{content:"\00a0"}
+#content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #dddddf;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem}
+#toc{border-bottom:1px solid #e7e7e9;padding-bottom:.5em}
+#toc>ul{margin-left:.125em}
+#toc ul.sectlevel0>li>a{font-style:italic}
+#toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0}
+#toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none}
+#toc li{line-height:1.3334;margin-top:.3334em}
+#toc a{text-decoration:none}
+#toc a:active{text-decoration:underline}
+#toctitle{color:#7a2518;font-size:1.2em}
+@media screen and (min-width:768px){#toctitle{font-size:1.375em}
+body.toc2{padding-left:15em;padding-right:0}
+#toc.toc2{margin-top:0!important;background-color:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #e7e7e9;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto}
+#toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em}
+#toc.toc2>ul{font-size:.9em;margin-bottom:0}
+#toc.toc2 ul ul{margin-left:0;padding-left:1em}
+#toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em}
+body.toc2.toc-right{padding-left:0;padding-right:15em}
+body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #e7e7e9;left:auto;right:0}}
+@media screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0}
+#toc.toc2{width:20em}
+#toc.toc2 #toctitle{font-size:1.375em}
+#toc.toc2>ul{font-size:.95em}
+#toc.toc2 ul ul{padding-left:1.25em}
+body.toc2.toc-right{padding-left:0;padding-right:20em}}
+#content #toc{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
+#content #toc>:first-child{margin-top:0}
+#content #toc>:last-child{margin-bottom:0}
+#footer{max-width:100%;background-color:rgba(0,0,0,.8);padding:1.25em}
+#footer-text{color:rgba(255,255,255,.8);line-height:1.44}
+#content{margin-bottom:.625em}
+.sect1{padding-bottom:.625em}
+@media screen and (min-width:768px){#content{margin-bottom:1.25em}
+.sect1{padding-bottom:1.25em}}
+.sect1:last-child{padding-bottom:0}
+.sect1+.sect1{border-top:1px solid #e7e7e9}
+#content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400}
+#content h1>a.anchor::before,h2>a.anchor::before,h3>a.anchor::before,#toctitle>a.anchor::before,.sidebarblock>.content>.title>a.anchor::before,h4>a.anchor::before,h5>a.anchor::before,h6>a.anchor::before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em}
+#content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible}
+#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none}
+#content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221}
+.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em}
+.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic}
+table.tableblock.fit-content>caption.title{white-space:nowrap;width:0}
+.paragraph.lead>p,#preamble>.sectionbody>[class="paragraph"]:first-of-type p{font-size:1.21875em;line-height:1.6;color:rgba(0,0,0,.85)}
+table.tableblock #preamble>.sectionbody>[class="paragraph"]:first-of-type p{font-size:inherit}
+.admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%}
+.admonitionblock>table td.icon{text-align:center;width:80px}
+.admonitionblock>table td.icon img{max-width:none}
+.admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
+.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6)}
+.admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
+.exampleblock>.content{border-style:solid;border-width:1px;border-color:#e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;-webkit-border-radius:4px;border-radius:4px}
+.exampleblock>.content>:first-child{margin-top:0}
+.exampleblock>.content>:last-child{margin-bottom:0}
+.sidebarblock{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
+.sidebarblock>:first-child{margin-top:0}
+.sidebarblock>:last-child{margin-bottom:0}
+.sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
+.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
+.literalblock pre,.listingblock pre:not(.highlight),.listingblock pre[class="highlight"],.listingblock pre[class^="highlight "],.listingblock pre.CodeRay,.listingblock pre.prettyprint{background:#f7f7f8}
+.sidebarblock .literalblock pre,.sidebarblock .listingblock pre:not(.highlight),.sidebarblock .listingblock pre[class="highlight"],.sidebarblock .listingblock pre[class^="highlight "],.sidebarblock .listingblock pre.CodeRay,.sidebarblock .listingblock pre.prettyprint{background:#f2f1f1}
+.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{-webkit-border-radius:4px;border-radius:4px;word-wrap:break-word;overflow-x:auto;padding:1em;font-size:.8125em}
+@media screen and (min-width:768px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:.90625em}}
+@media screen and (min-width:1280px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:1em}}
+.literalblock pre.nowrap,.literalblock pre.nowrap pre,.listingblock pre.nowrap,.listingblock pre.nowrap pre{white-space:pre;word-wrap:normal}
+.literalblock.output pre{color:#f7f7f8;background-color:rgba(0,0,0,.9)}
+.listingblock pre.highlightjs{padding:0}
+.listingblock pre.highlightjs>code{padding:1em;-webkit-border-radius:4px;border-radius:4px}
+.listingblock pre.prettyprint{border-width:0}
+.listingblock>.content{position:relative}
+.listingblock code[data-lang]::before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:#999}
+.listingblock:hover code[data-lang]::before{display:block}
+.listingblock.terminal pre .command::before{content:attr(data-prompt);padding-right:.5em;color:#999}
+.listingblock.terminal pre .command:not([data-prompt])::before{content:"$"}
+table.pyhltable{border-collapse:separate;border:0;margin-bottom:0;background:none}
+table.pyhltable td{vertical-align:top;padding-top:0;padding-bottom:0;line-height:1.45}
+table.pyhltable td.code{padding-left:.75em;padding-right:0}
+pre.pygments .lineno,table.pyhltable td:not(.code){color:#999;padding-left:0;padding-right:.5em;border-right:1px solid #dddddf}
+pre.pygments .lineno{display:inline-block;margin-right:.25em}
+table.pyhltable .linenodiv{background:none!important;padding-right:0!important}
+.quoteblock{margin:0 1em 1.25em 1.5em;display:table}
+.quoteblock>.title{margin-left:-1.5em;margin-bottom:.75em}
+.quoteblock blockquote,.quoteblock p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify}
+.quoteblock blockquote{margin:0;padding:0;border:0}
+.quoteblock blockquote::before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)}
+.quoteblock blockquote>.paragraph:last-child p{margin-bottom:0}
+.quoteblock .attribution{margin-top:.75em;margin-right:.5ex;text-align:right}
+.verseblock{margin:0 1em 1.25em}
+.verseblock pre{font-family:"Open Sans","DejaVu Sans",sans;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility}
+.verseblock pre strong{font-weight:400}
+.verseblock .attribution{margin-top:1.25rem;margin-left:.5ex}
+.quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic}
+.quoteblock .attribution br,.verseblock .attribution br{display:none}
+.quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)}
+.quoteblock.abstract blockquote::before,.quoteblock.excerpt blockquote::before,.quoteblock .quoteblock blockquote::before{display:none}
+.quoteblock.abstract blockquote,.quoteblock.abstract p,.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{line-height:1.6;word-spacing:0}
+.quoteblock.abstract{margin:0 1em 1.25em;display:block}
+.quoteblock.abstract>.title{margin:0 0 .375em;font-size:1.15em;text-align:center}
+.quoteblock.excerpt,.quoteblock .quoteblock{margin:0 0 1.25em;padding:0 0 .25em 1em;border-left:.25em solid #dddddf}
+.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:1.0625rem}
+.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;text-align:left;margin-right:0}
+table.tableblock{max-width:100%;border-collapse:separate}
+p.tableblock:last-child{margin-bottom:0}
+td.tableblock>.content{margin-bottom:-1.25em}
+table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
+table.grid-all>thead>tr>.tableblock,table.grid-all>tbody>tr>.tableblock{border-width:0 1px 1px 0}
+table.grid-all>tfoot>tr>.tableblock{border-width:1px 1px 0 0}
+table.grid-cols>*>tr>.tableblock{border-width:0 1px 0 0}
+table.grid-rows>thead>tr>.tableblock,table.grid-rows>tbody>tr>.tableblock{border-width:0 0 1px}
+table.grid-rows>tfoot>tr>.tableblock{border-width:1px 0 0}
+table.grid-all>*>tr>.tableblock:last-child,table.grid-cols>*>tr>.tableblock:last-child{border-right-width:0}
+table.grid-all>tbody>tr:last-child>.tableblock,table.grid-all>thead:last-child>tr>.tableblock,table.grid-rows>tbody>tr:last-child>.tableblock,table.grid-rows>thead:last-child>tr>.tableblock{border-bottom-width:0}
+table.frame-all{border-width:1px}
+table.frame-sides{border-width:0 1px}
+table.frame-topbot,table.frame-ends{border-width:1px 0}
+table.stripes-all tr,table.stripes-odd tr:nth-of-type(odd){background:#f8f8f7}
+table.stripes-none tr,table.stripes-odd tr:nth-of-type(even){background:none}
+th.halign-left,td.halign-left{text-align:left}
+th.halign-right,td.halign-right{text-align:right}
+th.halign-center,td.halign-center{text-align:center}
+th.valign-top,td.valign-top{vertical-align:top}
+th.valign-bottom,td.valign-bottom{vertical-align:bottom}
+th.valign-middle,td.valign-middle{vertical-align:middle}
+table thead th,table tfoot th{font-weight:bold}
+tbody tr th{display:table-cell;line-height:1.6;background:#f7f8f7}
+tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
+p.tableblock>code:only-child{background:none;padding:0}
+p.tableblock{font-size:1em}
+td>div.verse{white-space:pre}
+ol{margin-left:1.75em}
+ul li ol{margin-left:1.5em}
+dl dd{margin-left:1.125em}
+dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0}
+ol>li p,ul>li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
+ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none}
+ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em}
+ul.unstyled,ol.unstyled{margin-left:0}
+ul.checklist{margin-left:.625em}
+ul.checklist li>p:first-child>.fa-square-o:first-child,ul.checklist li>p:first-child>.fa-check-square-o:first-child{width:1.25em;font-size:.8em;position:relative;bottom:.125em}
+ul.checklist li>p:first-child>input[type="checkbox"]:first-child{margin-right:.25em}
+ul.inline{display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap;list-style:none;margin:0 0 .625em -1.25em}
+ul.inline>li{margin-left:1.25em}
+.unstyled dl dt{font-weight:400;font-style:normal}
+ol.arabic{list-style-type:decimal}
+ol.decimal{list-style-type:decimal-leading-zero}
+ol.loweralpha{list-style-type:lower-alpha}
+ol.upperalpha{list-style-type:upper-alpha}
+ol.lowerroman{list-style-type:lower-roman}
+ol.upperroman{list-style-type:upper-roman}
+ol.lowergreek{list-style-type:lower-greek}
+.hdlist>table,.colist>table{border:0;background:none}
+.hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
+td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
+td.hdlist1{font-weight:bold;padding-bottom:1.25em}
+.literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
+.colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top}
+.colist td:not([class]):first-child img{max-width:none}
+.colist td:not([class]):last-child{padding:.25em 0}
+.thumb,.th{line-height:0;display:inline-block;border:solid 4px #fff;-webkit-box-shadow:0 0 0 1px #ddd;box-shadow:0 0 0 1px #ddd}
+.imageblock.left{margin:.25em .625em 1.25em 0}
+.imageblock.right{margin:.25em 0 1.25em .625em}
+.imageblock>.title{margin-bottom:0}
+.imageblock.thumb,.imageblock.th{border-width:6px}
+.imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em}
+.image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0}
+.image.left{margin-right:.625em}
+.image.right{margin-left:.625em}
+a.image{text-decoration:none;display:inline-block}
+a.image object{pointer-events:none}
+sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super}
+sup.footnote a,sup.footnoteref a{text-decoration:none}
+sup.footnote a:active,sup.footnoteref a:active{text-decoration:underline}
+#footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em}
+#footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em;border-width:1px 0 0}
+#footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;margin-bottom:.2em}
+#footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none;margin-left:-1.05em}
+#footnotes .footnote:last-of-type{margin-bottom:0}
+#content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0}
+.gist .file-data>table{border:0;background:#fff;width:100%;margin-bottom:0}
+.gist .file-data>table td.line-data{width:99%}
+div.unbreakable{page-break-inside:avoid}
+.big{font-size:larger}
+.small{font-size:smaller}
+.underline{text-decoration:underline}
+.overline{text-decoration:overline}
+.line-through{text-decoration:line-through}
+.aqua{color:#00bfbf}
+.aqua-background{background-color:#00fafa}
+.black{color:#000}
+.black-background{background-color:#000}
+.blue{color:#0000bf}
+.blue-background{background-color:#0000fa}
+.fuchsia{color:#bf00bf}
+.fuchsia-background{background-color:#fa00fa}
+.gray{color:#606060}
+.gray-background{background-color:#7d7d7d}
+.green{color:#006000}
+.green-background{background-color:#007d00}
+.lime{color:#00bf00}
+.lime-background{background-color:#00fa00}
+.maroon{color:#600000}
+.maroon-background{background-color:#7d0000}
+.navy{color:#000060}
+.navy-background{background-color:#00007d}
+.olive{color:#606000}
+.olive-background{background-color:#7d7d00}
+.purple{color:#600060}
+.purple-background{background-color:#7d007d}
+.red{color:#bf0000}
+.red-background{background-color:#fa0000}
+.silver{color:#909090}
+.silver-background{background-color:#bcbcbc}
+.teal{color:#006060}
+.teal-background{background-color:#007d7d}
+.white{color:#bfbfbf}
+.white-background{background-color:#fafafa}
+.yellow{color:#bfbf00}
+.yellow-background{background-color:#fafa00}
+span.icon>.fa{cursor:default}
+a span.icon>.fa{cursor:inherit}
+.admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}
+.admonitionblock td.icon .icon-note::before{content:"\f05a";color:#19407c}
+.admonitionblock td.icon .icon-tip::before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111}
+.admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900}
+.admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400}
+.admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000}
+.conum[data-value]{display:inline-block;color:#fff!important;background-color:rgba(0,0,0,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
+.conum[data-value] *{color:#fff!important}
+.conum[data-value]+b{display:none}
+.conum[data-value]::after{content:attr(data-value)}
+pre .conum[data-value]{position:relative;top:-.125em}
+b.conum *{color:inherit!important}
+.conum:not([data-value]):empty{display:none}
+dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility}
+h1,h2,p,td.content,span.alt{letter-spacing:-.01em}
+p strong,td.content strong,div.footnote strong{letter-spacing:-.005em}
+p,blockquote,dt,td.content,span.alt{font-size:1.0625rem}
+p{margin-bottom:1.25rem}
+.sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em}
+.exampleblock>.content{background-color:#fffef7;border-color:#e0e0dc;-webkit-box-shadow:0 1px 4px #e0e0dc;box-shadow:0 1px 4px #e0e0dc}
+.print-only{display:none!important}
+@page{margin:1.25cm .75cm}
+@media print{*{-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:none!important}
+html{font-size:80%}
+a{color:inherit!important;text-decoration:underline!important}
+a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important}
+a[href^="http:"]:not(.bare)::after,a[href^="https:"]:not(.bare)::after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em}
+abbr[title]::after{content:" (" attr(title) ")"}
+pre,blockquote,tr,img,object,svg{page-break-inside:avoid}
+thead{display:table-header-group}
+svg{max-width:100%}
+p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
+h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
+#toc,.sidebarblock,.exampleblock>.content{background:none!important}
+#toc{border-bottom:1px solid #dddddf!important;padding-bottom:0!important}
+body.book #header{text-align:center}
+body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em}
+body.book #header .details{border:0!important;display:block;padding:0!important}
+body.book #header .details span:first-child{margin-left:0!important}
+body.book #header .details br{display:block}
+body.book #header .details br+span::before{content:none!important}
+body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important}
+body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always}
+.listingblock code[data-lang]::before{display:block}
+#footer{padding:0 .9375em}
+.hide-on-print{display:none!important}
+.print-only{display:block!important}
+.hide-for-print{display:none!important}
+.show-for-print{display:inherit!important}}
+@media print,amzn-kf8{#header>h1:first-child{margin-top:1.25rem}
+.sect1{padding:0!important}
+.sect1+.sect1{border:0}
+#footer{background:none}
+#footer-text{color:rgba(0,0,0,.6);font-size:.9em}}
+@media amzn-kf8{#header,#content,#footnotes,#footer{padding:0}}
+</style>
+</head>
+<body class="article">
+<div id="header">
+<h1>CALCURSE(1)</h1>
+</div>
+<div id="content">
+<div class="sect1">
+<h2 id="_name">NAME</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>calcurse - terminal-based organizer for interactive and command line use</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_synopsis">SYNOPSIS</h2>
+<div class="sectionbody">
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p><strong>calcurse</strong> [-D <em>directory</em>] [-C <em>confdir</em>] [-c <em>calendar-file</em>]</p>
+</div>
+<div class="paragraph">
+<p><strong>calcurse</strong> -Q [<strong>--from</strong> <em>date</em>] [<strong>--to</strong> <em>date</em> | <strong>--days</strong> <em>number</em>]</p>
+</div>
+<div class="paragraph">
+<p><strong>calcurse</strong> -a | -d <em>date</em> | -d <em>number</em> | -n | -r[<em>number</em>] | -s[<em>date</em>] | -t[<em>number</em>]</p>
+</div>
+<div class="paragraph">
+<p><strong>calcurse</strong> -G [<em>filter options</em>] [<em>format options</em>] | -P [<em>filter options</em>] [<em>format options</em>]</p>
+</div>
+<div class="paragraph">
+<p><strong>calcurse</strong> -h | --status | -g | -i <em>file</em> | -x[<em>file</em>] | --daemon</p>
+</div>
+</div>
+</div>
+<div class="paragraph">
+<p>The first form shows how to invoke calcurse interactively; the remainder is
+command line forms.</p>
+</div>
+<div class="paragraph">
+<p>The second form shows queries (as opposed to interactive use). For
+convenience, common queries have abbriviated forms shown in the third line.
+All queries may be combined with filter options as well as format options.</p>
+</div>
+<div class="paragraph">
+<p>The fourth form shows operations on the calcurse data files, one for
+display of entries, the other for removal of them.</p>
+</div>
+<div class="paragraph">
+<p>The fifth form is miscellaneous help and support functions.</p>
+</div>
+<div class="paragraph">
+<p>All details are in <a href="#_options">OPTIONS</a>.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_description">DESCRIPTION</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>calcurse is a calendar and scheduling application for use in a terminal
+session (terminal emulator). When invoked without options, calcurse enters
+interactive mode; in most other cases, calcurse produces output on the
+terminal and exits. It helps keeping track of events, appointments and
+everyday tasks. Interactive mode is used when data are entered or when already
+existing entries are inspected or edited. All data are saved to disk as text
+files. Command line mode is used for queries and administrative tasks and for
+automating tasks in scripts.</p>
+</div>
+<div class="paragraph">
+<p>The interactive interface is based on ncurses and can be customized to suit
+user preferences. Customization includes program behaviour as well as visual
+appearance and key bindings, and is performed interactively; the result is
+automatically saved to disk and loaded on every invocation. Available actions
+are documented in an online help system. A configurable notification system
+issues reminders of upcoming deadlines.</p>
+</div>
+<div class="paragraph">
+<p>When leaving the interactive program, a background daemon may continue running
+and issue reminders; it stops automatically when the interactive mode is
+reentered.</p>
+</div>
+<div class="paragraph">
+<p>This man page mainly describes the command-line mode. The following two
+subsectiions contain some general desriptions of command line options and usage.</p>
+</div>
+<div class="sect2">
+<h3 id="_input_and_output_date_format">Input and Output Date Format</h3>
+<div class="paragraph">
+<p>Many options require a <em>date</em> argument, and query results per day are set apart
+by a leading <em>date line</em>.</p>
+</div>
+<div class="paragraph">
+<p>The input format of <em>date</em> options and the output format of <em>date lines</em> are
+taken from the configuration file (see <a href="#_files">FILES</a>). The formats are set
+in the "General Options" submenu in interactive mode. Particularly in scripts
+it may be desirable that formats are independent of the local user
+configuration. For this purpose use the options <strong>--input-datefmt</strong> and
+<strong>--output-datefmt</strong>.</p>
+</div>
+<div class="paragraph">
+<p>An input date consists of <em>date</em>, <em>month</em> and <em>year</em>. Here <em>day</em> must be in
+the range 1-31 and <em>month</em> in 1-12. Depending on the operating system <em>year</em>
+must be in the range 1902-2037 or 1902-?. Additionally, some short forms are
+allowed with the obvious meaning: <code>today</code>, <code>tomorrow</code>, <code>yesterday</code>, <code>now</code> and
+weekdays <code>mon</code>, &#8230;&#8203;, <code>sun</code>.</p>
+</div>
+<div class="paragraph">
+<p>Optionally, a <em>date</em> argument for a filter option (see
+<a href="#_filter_options">Filter Options</a>) may be followed by a time-of-day
+specification in hours and minutes (24-hour clock). The specification has the
+fixed format hh:mm (example: <code>"2018-12-1 20:30"</code> when the input date format is
+the ISO standard format). Note that the entire date specification must be
+quoted to create one argument.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_filter_format_and_day_range_options">Filter, format and day range options</h3>
+<div class="paragraph">
+<p>These options do not accomplish anything in and of themselves. They influence
+other options and are in a way opposites: filter options affect the input to,
+format and day range options the output from calcurse. Specifically, filter
+options limit what is loaded from the data files into calcurse, day range
+options limit what is output (see <a href="#_query">-Q</a>), and
+<a href="#_format_options">format options</a> describe how it is presented.</p>
+</div>
+<div class="paragraph">
+<p>Filter options have effect on queries (<strong>-Q</strong> and query short-forms), grep
+(<strong>-G</strong>), purge (<strong>-P</strong>) and export (<strong>-x</strong>). Format options have effect on queries,
+grep and <strong>--dump-imported</strong>. Day range options have effect on queries only.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_options">OPTIONS</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Most options imply command line mode. Options compatible with interactive mode
+are marked "(<em>also interactively</em>)".</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><strong>-a</strong>, <strong>--appointment</strong></dt>
+<dd>
+<p>Print the appointments and events for the current day. Equivalent to <strong>-Q
+--filter-type cal</strong>.</p>
+</dd>
+<dt class="hdlist1"><strong>-c</strong> <em>file</em>, <strong>--calendar</strong> <em>file</em></dt>
+<dd>
+<p>(<em>also interactively</em>) Specify the calendar file to use. The default
+calendar is <strong>~/.calcurse/apts</strong> (see <a href="#_files">FILES</a>). If <em>file</em> is not an
+absolute path name, it is interpreted relative to the current working
+directory. The option has precedence over <strong>-D</strong>.</p>
+</dd>
+<dt class="hdlist1"><strong>-C</strong> <em>dir</em>, <strong>--conf</strong> <em>dir</em></dt>
+<dd>
+<p>(<em>also interactively</em>) Specify the configuration directory to use. If not
+specified, the default directory is <strong>~/.calcurse/</strong>. See <a href="#_files">FILES</a> for
+the interaction with <strong>-D</strong>.</p>
+</dd>
+<dt class="hdlist1"><strong>-D</strong> <em>dir</em>, <strong>--directory</strong> <em>dir</em></dt>
+<dd>
+<p>(<em>also interactively</em>) Specify the (data) directory to use. If not specified,
+the default directory is <strong>~/.calcurse/</strong>. See section <a href="#_files">FILES</a> for
+the interaction with <strong>-C</strong>.</p>
+</dd>
+<dt class="hdlist1"><strong>-d</strong> <em>date|num</em>, <strong>--day</strong> <em>date|num</em></dt>
+<dd>
+<p>Print appointments and events for the given date or given range of days,
+depending on the argument format:</p>
+<div class="openblock">
+<div class="content">
+<div class="ulist">
+<ul>
+<li>
+<p>a <em>date</em></p>
+</li>
+<li>
+<p>a number <em>num</em></p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+<div class="paragraph">
+<p>In the first case, appointments and events for <em>date</em> are returned, while in
+the second case those for <em>num</em> days are returned. Positive values of <em>num</em>
+means the future, negative the past; the range either starts or ends with the
+current day. As an example <code>calcurse -d 3</code> displays appointments and events
+for today, tomorrow and the day after tomorrow, while <code>calcurse -d -2</code>
+displays those for yesterday and today. The first form is equivalent to <strong>-Q
+--filter-type cal --from</strong> <em>date</em>, the second to <strong>-Q --filter-type cal --days</strong>
+<em>num</em>.</p>
+</div>
+</dd>
+<dt class="hdlist1"><strong>--daemon</strong></dt>
+<dd>
+<p>Start calcurse in background mode; restart, if the daemon was already
+running. Usually done automatically by setting the configuration option
+<code>daemon.enable</code> in the <em>Notify</em> submenu in interactive mode.</p>
+</dd>
+<dt class="hdlist1"><strong>--days</strong> <em>num</em></dt>
+<dd>
+<p>Specify the range of days when used with <strong>-Q</strong>. Can be combined with
+<strong>--from</strong>, but not with <strong>--to</strong>. Without <strong>--from</strong>, the first day of the range
+defaults to the current day. The number may be negative, see
+<a href="#_query">-Q --query</a>.</p>
+</dd>
+<dt class="hdlist1"><strong>--dump-imported</strong></dt>
+<dd>
+<p>When importing items, print each newly created object to stdout. Format
+options can be used to specify which details are printed. See also
+<a href="#_format_options">Format Options</a>.</p>
+</dd>
+<dt class="hdlist1"><strong>--export-uid</strong></dt>
+<dd>
+<p>When exporting items, add the hash of each item to the exported object as an
+UID property.</p>
+</dd>
+<dt class="hdlist1"><strong>--from</strong> <em>date</em></dt>
+<dd>
+<p>Specify the start date of the day range when used with <strong>-Q</strong>. When used
+without <strong>-to</strong> or <strong>--days</strong> the range is one day (the specified day), see
+<a href="#_query">-Q --query</a>.</p>
+</dd>
+<dt class="hdlist1"><strong>-F</strong>, <strong>--filter</strong></dt>
+<dd>
+<p>Deprecated, see <a href="#_purge">-P, --purge</a>. Note that this option is for
+backward compatibility and not the same as <strong>-P</strong> (it does not use the invert
+filter option.</p>
+</dd>
+<dt class="hdlist1"><strong>-g</strong>, <strong>--gc</strong></dt>
+<dd>
+<p>Run the garbage collector for note files. The garbage collector removes
+files from the <code>notes</code> directory (see <a href="#_files">FILES</a>) that are no longer
+linked to an item. Ususally done automatically by setting the configuration
+option <code>general.autogc</code> in the <em>General Options</em> submenu in interactive mode.</p>
+</dd>
+<dt class="hdlist1"><strong>-G</strong>, <strong>--grep</strong></dt>
+<dd>
+<p>Print appointments, events and TODO items in calcurse data file format.</p>
+</dd>
+<dt class="hdlist1"><strong>-h</strong>, <strong>--help</strong></dt>
+<dd>
+<p>Print a short help text describing the supported command-line options.</p>
+</dd>
+<dt class="hdlist1"><strong>-i</strong> <em>file</em>, <strong>--import</strong> <em>file</em></dt>
+<dd>
+<p>Import the icalendar data contained in <em>file</em>.</p>
+</dd>
+<dt class="hdlist1"><strong>--input-datefmt</strong> <em>format</em></dt>
+<dd>
+<p>For command line and script use only: override the configuration file
+setting of the option <code>format.inputdate</code> (<em>General Options</em> submenu in
+interactive mode). A valid <em>format</em> is any of 1, 2, 3, or 4, with 1 =
+mm/dd/yyyy, 2 = dd/mm/yyyy, 3 = yyyy/mm/dd, 4 = yyyy-mm-dd.</p>
+</dd>
+<dt class="hdlist1"><strong>-l</strong> <em>num</em>, <strong>--limit</strong> <em>num</em></dt>
+<dd>
+<p>Limit the number of results printed to <em>num</em>.</p>
+</dd>
+<dt class="hdlist1"><strong>-n</strong>, <strong>--next</strong></dt>
+<dd>
+<p>Print the first appointment within the next 24 hours. The printed time is
+the number of hours and minutes left before this appointment.</p>
+</dd>
+<dt class="hdlist1"><strong>--output-datefmt</strong> <em>format</em></dt>
+<dd>
+<p>For command line and script use only: override the configuration file
+setting of the option <code>format.outputdate</code> (<em>General Options</em> submenu in
+interactive mode). A valid <em>format</em> is any strftime(3) format string.</p>
+</dd>
+<dt class="hdlist1"><strong>-P</strong>, <strong>--purge</strong><a id="_purge"></a></dt>
+<dd>
+<p>Load items from the data files and save them back; the items are described
+by suitable filter options (see <a href="#_filter_options">Filter Options</a>). It may
+be used to drop specific items from the data files, see
+<a href="#_examples">EXAMPLES</a>.</p>
+<div class="paragraph">
+<p>The matching items are (silently) <em>removed</em> from the data files. Any
+combination of filter options, except <code>--filter-invert</code>, may be used in
+describing the items to be removed. The invert filter is used internally by
+the purge option, and its simultaneous use on the command line may result in
+unpredictable behaviour.</p>
+</div>
+<div class="paragraph">
+<p><em>Warning:</em> Be careful with this option, specifying the wrong filter options
+may result in data loss. It is highly recommended to test with <strong>-G</strong> first
+and fine-tune the filters to show the items to be removed. Then run the
+same command with <code>-P</code> instead of <code>-G</code>. In any case, make a backup of the
+data files in advance.</p>
+</div>
+</dd>
+<dt class="hdlist1"><strong>-q</strong>, <strong>--quiet</strong></dt>
+<dd>
+<p>(<em>also interactively</em>) Be quiet. Do not show system dialogs.</p>
+</dd>
+<dt class="hdlist1"><strong>-Q</strong>, <strong>--query</strong><a id="_query"></a></dt>
+<dd>
+<p>Print all appointments and events in a given <em>range of days</em> followed by all
+TODO items. The calendar part is displayed per day with a leading line
+containing the date and a trailing empty line (much like the calendar panel
+in interactive mode).</p>
+<div class="paragraph">
+<p>The <em>day range</em> defaults to the current day and is changed with the options
+<strong>--from</strong> and <strong>--to</strong>/<strong>--days</strong>. The range <code>--from</code> <em>a</em> <code>--to</code> <em>z</em> includes both
+<em>a</em> and <em>z</em>. The range <code>--from</code> <em>a</em> <code>--days</code> <em>n</em>, includes <em>a</em> as the first
+day, if <em>n</em> is positive, or last day, if <em>n</em> is negative.</p>
+</div>
+<div class="paragraph">
+<p>Day range has an effect on queries only.</p>
+</div>
+</dd>
+<dt class="hdlist1"><strong>-r</strong>[<em>num</em>], <strong>--range</strong>[=<em>num</em>]</dt>
+<dd>
+<p>Print appointments and events for <em>num</em> number of days starting with the
+current day. If <em>num</em> is left out, a range of 1 day is used. The number may
+be negative in which case the range is in the past, ending with the current
+day. Equivalent to <strong>-Q --filter-type cal --days</strong> <em>num</em>.</p>
+</dd>
+<dt class="hdlist1"><strong>--read-only</strong></dt>
+<dd>
+<p>(<em>also interactively</em>) Do not save configuration nor appointments and todos.</p>
+<div class="paragraph">
+<p><em>Warning:</em> If you run calcurse interactively in read-only mode, all changes
+from that session will be lost without warning!</p>
+</div>
+</dd>
+<dt class="hdlist1"><strong>-s</strong>[<em>date</em>], <strong>--startday</strong>[=<em>date</em>]</dt>
+<dd>
+<p>Print events and appointments from the optional <em>date</em>; default is the
+current day. Equivalent to <strong>-Q --filter-type cal --from</strong> <em>date</em>.</p>
+</dd>
+<dt class="hdlist1"><strong>-S</strong> <em>regex</em>, <strong>--search</strong> <em>regex</em></dt>
+<dd>
+<p>When used with any of <strong>-a</strong>, <strong>-d</strong>, <strong>-r</strong>, <strong>-s</strong>, or <strong>-t</strong> print only the
+items having a description that matches the given regular expression.
+Equivalent to <strong>-Q --filter-pattern</strong> <em>regex</em>.</p>
+</dd>
+<dt class="hdlist1"><strong>--status</strong></dt>
+<dd>
+<p>Display the status of running instances of calcurse, interactive or
+background mode. The process pid is also printed.</p>
+</dd>
+<dt class="hdlist1"><strong>-t</strong>[<em>num</em>], <strong>--todo</strong>[=<em>num</em>]</dt>
+<dd>
+<p>Print the <strong>todo</strong> list. If the optional number <em>num</em> is given, then only
+uncompleted (open) todos having a priority equal to <em>num</em> will be returned.
+The priority number must be between <code>1</code> (highest) and <code>9</code> (lowest). It is
+also possible to specify <code>0</code> for the priority, in which case only completed
+(closed) tasks will be shown. Equivalent to <strong>-Q --filter-type todo</strong>,
+combined with <strong>--filter-priority</strong> and <strong>--filter-completed</strong> or
+<strong>--filter-uncompleted</strong>.</p>
+</dd>
+<dt class="hdlist1"><strong>--to</strong> <em>date</em></dt>
+<dd>
+<p>Specify the end date of the day range when used with <strong>-Q</strong>. When used without
+<strong>--from</strong> the start day is the current day. Cannot be combined with <strong>--days</strong>,
+see <a href="#_query">-Q --query</a>.</p>
+</dd>
+<dt class="hdlist1"><strong>-v</strong>, <strong>--version</strong></dt>
+<dd>
+<p>Display <strong>calcurse</strong> version.</p>
+</dd>
+<dt class="hdlist1"><strong>-x</strong>[<em>format</em>], <strong>--export</strong>[=<em>format</em>]</dt>
+<dd>
+<p>Export user data in the specified format. Events, appointments and todos are
+converted and echoed to stdout. Two formats are available: <code>ical</code> and
+<code>pcal</code>. The default <em>format</em> is <code>ical</code>.</p>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_filter_options">FILTER OPTIONS</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Filter options have effect on queries (<strong>-Q</strong> and query short-forms), grep
+(<strong>-G</strong>), purge (<strong>-P</strong>) and export (<strong>-x</strong>), see also options in the
+<a href="#_filter_format_and_day_range_options">DESCRIPTION</a> section.</p>
+</div>
+<div class="paragraph">
+<p>Several filter options may be given. For an item to be loaded into calcurse it
+must match all filters. In other words, filters are logically "and"-ed.
+The <strong>--filter-type</strong> option has a default value which matches any item.
+All other filter options have no default value and only apply when explicitly
+set.</p>
+</div>
+<div class="paragraph">
+<p>The filter options fall into three groups: general, calendar, todo. The
+<em>general filters</em> apply to all items, the <em>calendar filters</em> concern start and end
+times and apply to appointments and events only, and the <em>todo filters</em> concern
+priority and completeness and apply to TODOs only.</p>
+</div>
+<div class="paragraph">
+<p>Outside the three groups is the invert filter.</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><strong>--filter-invert</strong> </dt>
+<dd>
+<p>Invert the combined effect of any other filters, i.e. load the items that
+do <em>not</em> match them.</p>
+</dd>
+</dl>
+</div>
+<div class="sect2">
+<h3 id="_general_filters">General filters</h3>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><strong>--filter-type</strong> <em>type</em></dt>
+<dd>
+<p>Include items that match <em>type</em>. The type value is a comma-separated
+list of type descriptions selected from <code>event</code>, <code>apt</code>, <code>recur-event</code>,
+<code>recur-apt</code> and <code>todo</code>. You can also use <code>recur</code> as a shorthand for
+<code>recur-event,recur-apt</code> and <code>cal</code> as a shorthand for <code>event,apt,recur</code>.</p>
+</dd>
+<dt class="hdlist1"><strong>--filter-pattern</strong> <em>pattern</em></dt>
+<dd>
+<p>Include items with a description that matches the pattern. The pattern is
+interpreted as an extended regular expression.</p>
+</dd>
+<dt class="hdlist1"><strong>--filter-hash</strong> <em>string</em></dt>
+<dd>
+<p>Include items with a hash starting with <em>string</em>. The filter can be negated
+by prepending an exclamation mark (<code>!</code>): include items with a hash string
+<em>not</em> starting with <em>string</em>. For the (SHA1) hash of an item refer to
+<a href="#_extended_format_specifiers">Extended format specifiers</a>.</p>
+</dd>
+</dl>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_calendar_filters">Calendar filters</h3>
+<div class="paragraph">
+<p>For filter options ending in <strong>-from</strong>, <strong>-to</strong>, <strong>-after</strong>, <strong>-before</strong> and <strong>-range</strong>,
+start or end time is the filter criterion.</p>
+</div>
+<div class="paragraph">
+<p>An event is an all-day appointment for which no times are displayed. The
+start time of an event is the beginning of the event day (midnight), the end
+time is the end of the event day (one second before next midnight).</p>
+</div>
+<div class="paragraph">
+<p>The <strong>-start-</strong> options ending in <strong>-from</strong>, <strong>-after</strong> and <strong>-range</strong> refer to the
+same filter criterion and cannot be used together. The same is the case for
+options ending in <strong>-to</strong>, <strong>-before</strong> and <strong>-range</strong>. Similar restrictions apply to
+<strong>-end-</strong> options.</p>
+</div>
+<div class="paragraph">
+<p>Start and end times of a recurrent item refer to the very first occurrence, not
+to those of any of the repetitions. If a recurrent item meets the criterion,
+all of the repetitions are displayed in queries, even though they may not meet the
+criterion. If they are unwanted, they may be removed from the output with the
+<a href="#_query">day range</a> options, although this will also remove other items in
+that range.</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><strong>--filter-start-from</strong> <em>date</em></dt>
+<dd>
+<p>Include items that start at or after a given date.</p>
+</dd>
+<dt class="hdlist1"><strong>--filter-start-to</strong> <em>date</em></dt>
+<dd>
+<p>Include items that start at or before a given date.</p>
+</dd>
+<dt class="hdlist1"><strong>--filter-start-after</strong> <em>date</em></dt>
+<dd>
+<p>Include items that start after a given date.</p>
+</dd>
+<dt class="hdlist1"><strong>--filter-start-before</strong> <em>date</em></dt>
+<dd>
+<p>Include items that start before a given date.</p>
+</dd>
+<dt class="hdlist1"><strong>--filter-start-range</strong> <em>range</em></dt>
+<dd>
+<p>Include items with a start date that belongs to a given range. A range
+consists of a start date and an end date, separated by a comma.</p>
+</dd>
+<dt class="hdlist1"><strong>--filter-end-from</strong> <em>date</em></dt>
+<dd>
+<p>Include items that end at or after a given date.</p>
+</dd>
+<dt class="hdlist1"><strong>--filter-end-to</strong> <em>date</em></dt>
+<dd>
+<p>Include items that end at or before a given date.</p>
+</dd>
+<dt class="hdlist1"><strong>--filter-end-after</strong> <em>date</em></dt>
+<dd>
+<p>Include items that end after a given date.</p>
+</dd>
+<dt class="hdlist1"><strong>--filter-end-before</strong> <em>date</em></dt>
+<dd>
+<p>Include items that end before a given date.</p>
+</dd>
+<dt class="hdlist1"><strong>--filter-end-range</strong> <em>range</em></dt>
+<dd>
+<p>Include items with an end date that belongs to a given range. A range
+consists of a start date and an end date, separated by a comma.</p>
+</dd>
+</dl>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_todo_filters">Todo filters</h3>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><strong>--filter-priority</strong> <em>priority</em></dt>
+<dd>
+<p>Include TODO items with a given priority.</p>
+</dd>
+<dt class="hdlist1"><strong>--filter-completed</strong></dt>
+<dd>
+<p>Include completed TODO items.</p>
+</dd>
+<dt class="hdlist1"><strong>--filter-uncompleted</strong></dt>
+<dd>
+<p>Include uncompleted TODO items.</p>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_format_options">FORMAT OPTIONS</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Format options have effect on queries, grep and <strong>--dump-imported</strong>.</p>
+</div>
+<div class="paragraph">
+<p>The options specify a format for appointments, recurring appointments, events,
+recurring events or todo items, respectively.</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><strong>--format-apt</strong> <em>format</em></dt>
+<dt class="hdlist1"><strong>--format-recur-apt</strong> <em>format</em></dt>
+<dt class="hdlist1"><strong>--format-event</strong> <em>format</em></dt>
+<dt class="hdlist1"><strong>--format-recur-event</strong> <em>format</em></dt>
+<dt class="hdlist1"><strong>--format-todo</strong> <em>format</em></dt>
+<dd>
+<p>The <em>format</em> argument is a string composed of printf-style format
+specifiers, which are replaced as explained below, and ordinary characters,
+which are copied to stdout without modification. Each option has a default
+<em>format</em> string which is used when the option is not given. Default strings
+are described in <a href="#_default_format_strings">Default Format Strings</a>.</p>
+<div class="paragraph">
+<p><em>Note</em>: Use of a format option requires explicit formatting of field
+separation and line spacing.</p>
+</div>
+</dd>
+</dl>
+</div>
+<div class="sect2">
+<h3 id="_default_format_strings">Default format strings</h3>
+<div class="paragraph">
+<p>Each specifier is introduced by a <code>%</code> followed by a character which tells what to
+print. The available specifiers depend on the item type. Times are printed as
+hours and minutes (<code>hh:mm</code>) unless otherwise noted; time formats can be
+changed with <a href="#_extended_format_specifiers">extended specifiers</a>.</p>
+</div>
+<div class="paragraph">
+<p>For each format option there is a default format string which is used when the option
+is not given. In query results the default format options are:</p>
+</div>
+<div class="literalblock">
+<div class="content">
+<pre>--format-apt " - %S -&gt; %E\n\t%m\n"
+--format-recur-apt " - %S -&gt; %E\n\t%m\n"
+--format-event " * %m\n"
+--format-recur-event " * %m\n"
+--format-todo "%p. %m\n"</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>In all other cases (grep and dump-imported) the default format string is <code>"%(raw)"</code>.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_appointments">Appointments</h3>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><strong>%d</strong></dt>
+<dd>
+<p>Print the duration of the appointment in seconds</p>
+</dd>
+<dt class="hdlist1"><strong>%e</strong></dt>
+<dd>
+<p>Print the end time of the appointment as the Unix time in seconds</p>
+</dd>
+<dt class="hdlist1"><strong>%E</strong></dt>
+<dd>
+<p>Print the end time of the appointment or the marker <code>..:..</code> if
+it ends after midnight</p>
+</dd>
+<dt class="hdlist1"><strong>%m</strong></dt>
+<dd>
+<p>Print the description of the item</p>
+</dd>
+<dt class="hdlist1"><strong>%n</strong></dt>
+<dd>
+<p>Print the name of the note file belonging to the item</p>
+</dd>
+<dt class="hdlist1"><strong>%N</strong></dt>
+<dd>
+<p>Print the note belonging to the item</p>
+</dd>
+<dt class="hdlist1"><strong>%r</strong></dt>
+<dd>
+<p>Print the remaining time before the appointment</p>
+</dd>
+<dt class="hdlist1"><strong>%s</strong></dt>
+<dd>
+<p>Print the start time of the appointment as the Unix time in seconds</p>
+</dd>
+<dt class="hdlist1"><strong>%S</strong></dt>
+<dd>
+<p>Print the start time of the appointment or the marker <code>..:..</code> if it begins
+before midnight</p>
+</dd>
+</dl>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_events">Events</h3>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><strong>%m</strong></dt>
+<dd>
+<p>Print the description of the item</p>
+</dd>
+<dt class="hdlist1"><strong>%n</strong></dt>
+<dd>
+<p>Print the name of the note file belonging to the item</p>
+</dd>
+<dt class="hdlist1"><strong>%N</strong></dt>
+<dd>
+<p>Print the note belonging to the item</p>
+</dd>
+</dl>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_todo_items">Todo items</h3>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><strong>%m</strong></dt>
+<dd>
+<p>Print the description of the item</p>
+</dd>
+<dt class="hdlist1"><strong>%n</strong></dt>
+<dd>
+<p>Print the name of the note file belonging to the item</p>
+</dd>
+<dt class="hdlist1"><strong>%N</strong></dt>
+<dd>
+<p>Print the note belonging to the item</p>
+</dd>
+<dt class="hdlist1"><strong>%p</strong></dt>
+<dd>
+<p>Print the priority of the item</p>
+</dd>
+</dl>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_extended_format_specifiers">Extended format specifiers</h3>
+<div class="paragraph">
+<p>Extended format specifiers can be used to control the printing of times for
+some of the single-letter specifiers. Additionally there are two specifiers
+that do not have any corresponding short form and are intended for use in
+scripting.</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><strong>%(duration</strong><code>[</code><strong>:</strong><em>format</em><code>]</code><strong>)</strong></dt>
+<dd>
+<p>extended form of <strong>%d</strong></p>
+</dd>
+<dt class="hdlist1"><strong>%(remaining</strong><code>[</code><strong>:</strong><em>format</em><code>]</code><strong>)</strong></dt>
+<dd>
+<p>extended form of <strong>%r</strong></p>
+<div class="paragraph">
+<p><em>format</em> may contain any of the strftime(3) specifiers <strong>%d</strong>, <strong>%H</strong>, <strong>%M</strong> or
+<strong>%S</strong> with the following modifications: 1) days are not limited to the
+"calendar" values 0-31 (hours, minutes and seconds are "clock" values, but see
+<strong>E</strong> in the following) 2) each number is by default padded with zeros to two
+decimal places, 3) the <strong>%</strong> character may be followed by one or two optional
+flags: <strong>-</strong>, which suppresses the zero-padding, <strong>E</strong>, which will suppress the
+"clock" limits on <strong>%H</strong>, <strong>%M</strong> and <strong>%S</strong>; if both are used, <strong>-</strong> must precede <strong>E</strong>,
+4) no other flags or width specifications are supported</p>
+</div>
+</dd>
+<dt class="hdlist1"><strong>%(start</strong><code>[</code><strong>:</strong><em>format</em><code>]</code><strong>)</strong></dt>
+<dd>
+<p>extended form of <strong>%s</strong></p>
+</dd>
+<dt class="hdlist1"><strong>%(end</strong><code>[</code><strong>:</strong><em>format</em><code>]</code><strong>)</strong></dt>
+<dd>
+<p>extended form of <strong>%e</strong></p>
+<div class="paragraph">
+<p><em>format</em> may be any strftime(3) format specifier or one of the strings <strong>epoch</strong>
+or <strong>default</strong>; the former is equivalent to the (calcurse) specifiers <strong>%s</strong> and
+<strong>%e</strong> (seconds since the Epoch); the latter is equivalent to the (calcurse)
+specifiers <strong>%S</strong> and <strong>%E</strong> or the (strftime) format string <strong>%H:%M</strong>, except that
+the continuation marker <code>..:..</code> is printed if the start/end time belongs to
+another day</p>
+</div>
+</dd>
+<dt class="hdlist1"><strong>%(raw)</strong></dt>
+<dd>
+<p>the text file format of an item as saved on disk; the default format for
+the grep and dump-imported options; can be used with all format options</p>
+</dd>
+<dt class="hdlist1"><strong>%(hash)</strong></dt>
+<dd>
+<p>the (SHA1) hash of the above; can be used with all format options</p>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_examples">EXAMPLES</h2>
+<div class="sectionbody">
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>calcurse -d tomorrow</code></dt>
+<dd>
+<p>Display the calendar for tomorrow (same as <code>calcurse -Q --filter-type
+cal --from tomorrow</code>).</p>
+</dd>
+<dt class="hdlist1"><code>calcurse -d friday</code></dt>
+<dd>
+<p>Display the calendar for the upcoming friday.</p>
+</dd>
+<dt class="hdlist1"><code>calcurse -d 7</code></dt>
+<dd>
+<p>Display the calendar for the next seven days (same as <code>calcurse -Q
+-filter-type cal --days 7</code>).</p>
+</dd>
+<dt class="hdlist1"><code>calcurse -r7 --format-apt " - %S -&gt; %E\n\t%m\n%N"</code></dt>
+<dd>
+<p>Print appointments and events for the next seven days. Also, print the notes
+attached to each regular appointment.</p>
+</dd>
+<dt class="hdlist1"><code>calcurse -r7 --format-apt " - %m (%S to %E)\n" --format-recur-apt " - %m (%S to %E)\n"</code></dt>
+<dd>
+<p>Print appointments and events for the next seven days and use a custom format
+for (recurrent) appointments:</p>
+<div class="paragraph">
+<p><code>- Some appointment (18:30 to 21:30)</code></p>
+</div>
+</dd>
+<dt class="hdlist1"><code>calcurse -t --format-todo "(%p) %m\n"</code></dt>
+<dd>
+<p>List all todo items and put parentheses around the priority specifiers.</p>
+</dd>
+</dl>
+</div>
+<div class="paragraph">
+<p>If the calcurse data files contain many entries which are no longer needed or
+wanted, they can, of course, be removed interactively. If there are many, it
+can be a tedious task and may be done better as in the following two examples.</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>calcurse --input-datefmt 4 -G --filter-start-before 2015-1-1</code></dt>
+<dd>
+<p>List event and appointment entries in the data files with a start time
+before 1 January 2015, and all TODO entries.</p>
+<div class="paragraph">
+<p><strong>Purge</strong>. When <code>-G</code> is replaced by <code>-P</code>, those entries are removed. This may
+remove recurring items that have occurrences after 1 January 2015.</p>
+</div>
+</dd>
+<dt class="hdlist1"><code>calcurse --input-datefmt 1 -G --filter-start-from 11/1/2015 --filter-type event,apt</code></dt>
+<dd>
+<p>List (ordinary) event and appointment entries with a start time of 1
+November 2015 or later.</p>
+</dd>
+<dt class="hdlist1"><code>calcurse -G --filter-type apt --format-apt "%(hash) %m\n"</code></dt>
+<dd>
+<p>For each appointment list the SHA1 hash of the data file entry followed by
+the description.</p>
+</dd>
+<dt class="hdlist1"><code>calcurse -G --filter-type apt --format-apt "%(duration:%d/%EH/%EM)\t%m\n"</code></dt>
+<dd>
+<p>For each appointment list the (total) duration as either days, hours or
+minutes followed by the description.</p>
+</dd>
+<dt class="hdlist1"><code>calcurse -G --filter-type apt --format-apt "%(start:%c) %(duration:%d %H:%M)\t%m\n"</code></dt>
+<dd>
+<p>For each appointment list the start time in a localized standard format,
+followed by the duration in days, hours and minutes, followed by the
+description.</p>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_files">FILES</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The following structure is created by default in your home directory the
+first time calcurse is run without any options:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>$HOME/.calcurse/
+ |___apts
+ |___conf
+ |___hooks/
+ |___keys
+ |___notes/
+ |___todo</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The files are of two different kinds: data and configuration. The data files
+constitute the calcurse database and are independent of the calcurse release
+version; the configuration files depend on the calcurse version although
+backwards compatibility is always aimed at.</p>
+</div>
+<div class="sect2">
+<h3 id="_data_files">Data files</h3>
+<div class="paragraph">
+<p>The calendar file <code>apts</code> contains all of the user&#8217;s appointments and events,
+and the <code>todo</code> file contains the todo list. The <code>notes</code> subdirectory contains
+the notes which are attached to appointments, events or todos. One text file
+is created per note, whose name is the SHA1 message digest of the note itself.</p>
+</div>
+<div class="paragraph">
+<p>The (hidden) lock files of the calcurse (<code>.calcurse.pid</code>) and daemon
+(<code>.daemon.log</code>) programs are present when they are running. If daemon log
+activity has been enabled in the notification configuration menu, the file
+<code>daemon.log</code> is present.</p>
+</div>
+<div class="paragraph">
+<p>An alternative calendar file may be specified with the <strong>-c</strong> option.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_configuration_files">Configuration files</h3>
+<div class="paragraph">
+<p>The <code>conf</code> file contains the user configuration and the <code>keys</code> file
+the user-defined key bindings. The <code>hooks</code> directory contains user-supplied
+scripts, see <a href="#_hooks">Hooks</a>.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_directory_configuration">Directory configuration</h3>
+<div class="paragraph">
+<p>An alternative directory to the default <code>$HOME/.calcurse</code> may be specified
+with the <strong>-D</strong> option.</p>
+</div>
+<div class="paragraph">
+<p>An alternative directory for the configuration files <em>only</em> may be specified
+with the <strong>-C</strong> option; in that case data files are either in the default
+directory or in the directory specified by <strong>-D</strong>. If both <strong>-D</strong> and
+<strong>-C</strong> are present, configuration files in the data directory, if any, are
+ignored.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>&lt;datadir&gt; &lt;confdir&gt;
+ | |
+ |__ apts |___ conf
+ |__ todo |___ keys
+ |__ notes/ |___ hooks/
+
+default for both: $HOME/.calcurse/</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>calcurse may switch between two configuration setups, but still access
+the same data files e.g. with:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>$ calcurse
+
+$ calcurse -C "$HOME/.calcurse/config"</pre>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_hooks">Hooks</h3>
+<div class="paragraph">
+<p>Scripts placed in <code>$HOME/.calcurse/hooks/</code> trigger actions at certain
+events. To enable a hook, add a script with one of the following names to this
+directory. Also make sure the script is executable.</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><strong>pre-load</strong></dt>
+<dd>
+<p>Executed before the data files are loaded.</p>
+</dd>
+<dt class="hdlist1"><strong>post-load</strong></dt>
+<dd>
+<p>Executed after the data files are loaded.</p>
+</dd>
+<dt class="hdlist1"><strong>pre-save</strong></dt>
+<dd>
+<p>Executed before the data files are saved.</p>
+</dd>
+<dt class="hdlist1"><strong>post-save</strong></dt>
+<dd>
+<p>Executed after the data files are saved.</p>
+</dd>
+</dl>
+</div>
+<div class="paragraph">
+<p>Some examples can be found in the <code>contrib/hooks/</code> directory of the calcurse
+source tree.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_environment">ENVIRONMENT</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>A few environment variables affect how calcurse operates.</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><strong>CALCURSE_EDITOR</strong></dt>
+<dt class="hdlist1"><strong>VISUAL</strong></dt>
+<dt class="hdlist1"><strong>EDITOR</strong></dt>
+<dd>
+<p>Specifies the external editor to use for writing notes. They are tried in
+the order listed until one is found. If none of them are set, <code>vi</code> is used.</p>
+</dd>
+<dt class="hdlist1"><strong>CALCURSE_PAGER</strong></dt>
+<dt class="hdlist1"><strong>PAGER</strong></dt>
+<dd>
+<p>Specifies - as for the editor - the default viewer to be used for reading
+notes. Default is <code>less</code>.</p>
+</dd>
+<dt class="hdlist1"><strong>MERGETOOL</strong></dt>
+<dd>
+<p>Tool used to merge two files to solve a save conflict. Default is <code>vimdiff</code>.
+The program is called with two file names as the only arguments.</p>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_bugs">BUGS</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>If you find a bug, please send a report to <a href="mailto:bugs@calcurse.org">bugs@calcurse.org</a>, or, if you are a
+Github user, raise an issue at <a href="https://github.com/lfos/calcurse" class="bare">https://github.com/lfos/calcurse</a>.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_see_also">SEE ALSO</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The ical specification (rfc2445) can be found at:
+<a href="http://tools.ietf.org/html/rfc2445" class="bare">http://tools.ietf.org/html/rfc2445</a></p>
+</div>
+<div class="paragraph">
+<p>The pcal project page: <a href="http://pcal.sourceforge.net/" class="bare">http://pcal.sourceforge.net/</a></p>
+</div>
+<div class="paragraph">
+<p>calcurse home page: <a href="http://calcurse.org/" class="bare">http://calcurse.org/</a></p>
+</div>
+<div class="paragraph">
+<p>calcurse at GitHub: <a href="https://github.com/lfos/calcurse" class="bare">https://github.com/lfos/calcurse</a></p>
+</div>
+<div class="paragraph">
+<p>The complete manual, maintained in html format, can be found in the doc/
+directory of the source package, or at: <a href="http://calcurse.org/files/manual.html" class="bare">http://calcurse.org/files/manual.html</a></p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_authors">AUTHORS</h2>
+<div class="sectionbody">
+<div class="ulist">
+<ul>
+<li>
+<p><strong>Frederic Culot</strong> &lt;<a href="mailto:frederic@culot.org">frederic@culot.org</a>&gt;</p>
+</li>
+<li>
+<p><strong>Lukas Fleischer</strong> &lt;<a href="mailto:lfleischer@calcurse.org">lfleischer@calcurse.org</a>&gt;</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_copyright">COPYRIGHT</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Copyright (c) 2004-2018 calcurse Development Team.
+This software is released under the BSD License.</p>
+</div>
+</div>
+</div>
+</div>
+<div id="footer">
+<div id="footer-text">
+Last updated 2019-01-08 05:57:14 +0100
+</div>
+</div>
+</body>
+</html> \ No newline at end of file
diff --git a/files/manual.chunked/ar01s01.html b/files/manual.chunked/ar01s01.html
deleted file mode 100644
index f0e3095..0000000
--- a/files/manual.chunked/ar01s01.html
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>1. Introduction</title><link rel="stylesheet" type="text/css" href="docbook-xsl.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="CALCURSE - text-based organizer" /><link rel="up" href="index.html" title="CALCURSE - text-based organizer" /><link rel="prev" href="index.html" title="CALCURSE - text-based organizer" /><link rel="next" href="ar01s02.html" title="2. Overview" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ar01s02.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_introduction"></a>1. Introduction</h2></div></div></div><p><code class="literal">calcurse</code> is a text-based calendar and scheduling application. It helps
-keeping track of events, appointments and everyday tasks. A configurable
-notification system reminds user of upcoming deadlines, and the curses based
-interface can be customized to suit user needs. All of the commands are
-documented within an online help system.</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ar01s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html> \ No newline at end of file
diff --git a/files/manual.chunked/ar01s02.html b/files/manual.chunked/ar01s02.html
deleted file mode 100644
index 42b46da..0000000
--- a/files/manual.chunked/ar01s02.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>2. Overview</title><link rel="stylesheet" type="text/css" href="docbook-xsl.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="CALCURSE - text-based organizer" /><link rel="up" href="index.html" title="CALCURSE - text-based organizer" /><link rel="prev" href="ar01s01.html" title="1. Introduction" /><link rel="next" href="ar01s03.html" title="3. Installation" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><td width="20%" align="left"><a accesskey="p" href="ar01s01.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ar01s03.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_overview"></a>2. Overview</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_creation_history"></a>2.1. Creation history</h3></div></div></div><p>Frederic started thinking about this project when he was finishing his Ph.D. in
-Astrophysics as it started to be a little hard to organize himself and he
-really needed a good tool for managing his appointments and todo list.
-Unfortunately, he finished his Ph.D. before finishing <code class="literal">calcurse</code> but he
-continued working on it, hoping it would be helpful to other people.</p><p>In mid-2010, Lukas took over development of <code class="literal">calcurse</code> and is now the main
-contributor and reviewer of patches.</p><p>But why <code class="literal">calcurse</code> anyway? Well, it is simply the concatenation of *cal*endar
-and *curse*s, the name of the library used to build the user interface.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_important_features"></a>2.2. Important features</h3></div></div></div><p><code class="literal">Calcurse</code> is multi-platform and intended to be lightweight, fast and reliable.
-It is to be used inside a console or terminal, locally or on a distant machine
-within an ssh (or similar) connection.</p><p><code class="literal">Calcurse</code> can be run in two different modes : interactive or non-interactive
-mode. The first mode allows oneself to view its own personal organizer almost
-everywhere, thanks to the text-based interface. The second mode permits to
-easily build reminders just by adding <code class="literal">calcurse</code> with appropriate command line
-arguments inside a cron tab or within a shell init script.</p><p>Moreover, <code class="literal">calcurse</code> was created with the end-user in mind, and tends to be as
-friendly as possible. This means a complete on-line help system, together with
-having all of the possible actions displayed at any time inside a status bar.
-The user interface is configurable, and one can choose between several color
-and layout combinations. Key bindings are also configurable, to fit everyone’s
-needs. Last, a configurable notification system reminds user of upcoming
-appointments. The reminders are sent even if the user’s interface is not
-running, as calcurse is able to run in background.</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ar01s01.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ar01s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html> \ No newline at end of file
diff --git a/files/manual.chunked/ar01s03.html b/files/manual.chunked/ar01s03.html
deleted file mode 100644
index 61e7ccf..0000000
--- a/files/manual.chunked/ar01s03.html
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>3. Installation</title><link rel="stylesheet" type="text/css" href="docbook-xsl.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="CALCURSE - text-based organizer" /><link rel="up" href="index.html" title="CALCURSE - text-based organizer" /><link rel="prev" href="ar01s02.html" title="2. Overview" /><link rel="next" href="ar01s04.html" title="4. calcurse basics" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><td width="20%" align="left"><a accesskey="p" href="ar01s02.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ar01s04.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_installation"></a>3. Installation</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_requirements"></a>3.1. Requirements</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_ncurses_library"></a>ncurses library</h4></div></div></div><p><code class="literal">Calcurse</code> requires only a <code class="literal">C</code> compiler, such as <code class="literal">cc</code> or <code class="literal">gcc</code>, and the
-<code class="literal">ncurses</code> library. It would be very surprising not to have a valid <code class="literal">ncurses</code>
-library already installed on your computer, but if not, you can find it at the
-following url: <a class="ulink" href="http://ftp.gnu.org/pub/gnu/ncurses/" target="_top">http://ftp.gnu.org/pub/gnu/ncurses/</a></p><div class="note" style="margin-left: 0; margin-right: 10%;"><h3 class="title">Note</h3><p>It is also possible to link <code class="literal">calcurse</code> against the <code class="literal">ncursesw</code> library
- (ncurses with support for unicode).</p></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="install_requirements_gettext"></a>gettext library</h4></div></div></div><p><code class="literal">calcurse</code> supports internationalization (<span class="strong"><strong>i18n</strong></span> hereafter) through the
-<code class="literal">gettext</code> utilities. This means <code class="literal">calcurse</code> can produce multi-lingual messages
-if compiled with native language support (i.e. <span class="strong"><strong>NLS</strong></span>).</p><p>However, <span class="strong"><strong>NLS</strong></span> is optionnal and if you do not want to have support for
-multi-lingual messages, you can disable this feature. This is done by giving
-the <code class="literal">--disable-nls</code> option to <code class="literal">configure</code> (see section
-<a class="link" href="ar01s03.html#install_process" title="3.2. Install process">Install process</a>). To check if the <code class="literal">gettext</code> utilities are
-installed on your system, you can search for the <code class="literal">libintl.h</code> header file for
-instance:</p><pre class="screen">$ locate libintl.h</pre><p>If this header file is not found, then you can obtain the <code class="literal">gettext</code> sources at
-the following url : <a class="ulink" href="http://ftp.gnu.org/pub/gnu/gettext/" target="_top">http://ftp.gnu.org/pub/gnu/gettext/</a></p><div class="note" style="margin-left: 0; margin-right: 10%;"><h3 class="title">Note</h3><p>Even if <code class="literal">libintl.h</code> is found on your system, it can be wise to specify
- its location during the <a class="link" href="ar01s03.html#install_process" title="3.2. Install process">install process</a>, by using the
- <code class="literal">--with-libintl-prefix</code> option with <code class="literal">configure</code>. Indeed, the <code class="literal">configure</code>
- could fail to locate this library if installed in an uncommon place.</p></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="install_process"></a>3.2. Install process</h3></div></div></div><p>First you need to gunzip and untar the source archive:</p><pre class="screen">$ tar zxvf calcurse-3.2.1.tar.gz</pre><p>Once you meet the requirements and have extracted the archive, the install
-process is quite simple, and follows the standard three steps process:</p><pre class="screen">$ ./configure
-$ make
-$ make install # (may require root privilege)</pre><p>Use <code class="literal">./configure --help</code> to obtain a list of possible options.</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ar01s02.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ar01s04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html> \ No newline at end of file
diff --git a/files/manual.chunked/ar01s04.html b/files/manual.chunked/ar01s04.html
deleted file mode 100644
index ed57ba7..0000000
--- a/files/manual.chunked/ar01s04.html
+++ /dev/null
@@ -1,495 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>4. calcurse basics</title><link rel="stylesheet" type="text/css" href="docbook-xsl.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="CALCURSE - text-based organizer" /><link rel="up" href="index.html" title="CALCURSE - text-based organizer" /><link rel="prev" href="ar01s03.html" title="3. Installation" /><link rel="next" href="ar01s05.html" title="5. Options" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><td width="20%" align="left"><a accesskey="p" href="ar01s03.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ar01s05.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_calcurse_basics"></a>4. calcurse basics</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_invocation"></a>4.1. Invocation</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="basics_invocation_commandline"></a>Command line arguments</h4></div></div></div><p><code class="literal">calcurse</code> takes the following options from the command line (both short and
-long options are supported):</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-<code class="literal">-a, --appointment</code>
-</span></dt><dd>
- Print the appointments and events for the current day and exit. The calendar
- from which to read the appointments can be specified using the <code class="literal">-c</code> flag.
-</dd><dt><span class="term">
-<code class="literal">-c &lt;file&gt;, --calendar &lt;file&gt;</code>
-</span></dt><dd>
- Specify the calendar file to use. The default calendar is <code class="literal">~/.calcurse/apts</code>
- (see section <a class="link" href="ar01s04.html#basics_files" title="4.4. calcurse files">calcurse files</a>). This option has precedence
- over <code class="literal">-D</code>.
-</dd><dt><span class="term">
-<code class="literal">-d &lt;date|num&gt;, --day &lt;date|num&gt;</code>
-</span></dt><dd><p class="simpara">
- Print the appointments for the given date or for the given number of
- upcoming days, depending on the argument format. Two possible formats are
- supported:
-</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-a date (possible formats described below).
-</li><li class="listitem">
-a number <code class="literal">n</code>.
-</li></ul></div><p class="simpara">In the first case, the appointment list for the specified date will be
-returned, while in the second case the appointment list for the <code class="literal">n</code> upcoming
-days will be returned. As an example, typing <code class="literal">calcurse -d 3</code> will display
-your appointments for today, tomorrow, and the day after tomorrow. Possible
-formats for specifying the date are defined inside the general configuration
-menu (see <a class="link" href="ar01s05.html#options_general" title="5.1. General options">General options</a>), using the
-<code class="literal">format.inputdate</code> variable.</p><p class="simpara">Note: as for the <code class="literal">-a</code> flag, the calendar from which to read the appointments
-can be specified using the <code class="literal">-c</code> flag.</p></dd><dt><span class="term">
-<code class="literal">-D &lt;dir&gt;, --directory &lt;dir&gt;</code>
-</span></dt><dd>
- Specify the data directory to use. If not specified, the default directory is
- <code class="literal">~/.calcurse/</code>.
-</dd><dt><span class="term">
-<code class="literal">--format-apt &lt;format&gt;</code>
-</span></dt><dd>
- Specify a format to control the output of appointments in non-interactive
- mode. See the <a class="link" href="ar01s04.html#basics_format_strings" title="Format strings">Format strings</a> section for detailed
- information on format strings.
-</dd><dt><span class="term">
-<code class="literal">--format-recur-apt &lt;format&gt;</code>
-</span></dt><dd>
- Specify a format to control the output of recurrent appointments in
- non-interactive mode. See the <a class="link" href="ar01s04.html#basics_format_strings" title="Format strings">Format strings</a>
- section for detailed information on format strings.
-</dd><dt><span class="term">
-<code class="literal">--format-event &lt;format&gt;</code>
-</span></dt><dd>
- Specify a format to control the output of events in non-interactive mode. See
- the <a class="link" href="ar01s04.html#basics_format_strings" title="Format strings">Format strings</a> section for detailed information
- on format strings.
-</dd><dt><span class="term">
-<code class="literal">--format-recur-event &lt;format&gt;</code>
-</span></dt><dd>
- Specify a format to control the output of recurrent events in non-interactive
- mode. See the <a class="link" href="ar01s04.html#basics_format_strings" title="Format strings">Format strings</a> section for detailed
- information on format strings.
-</dd><dt><span class="term">
-<code class="literal">--format-todo &lt;format&gt;</code>
-</span></dt><dd>
- Specify a format to control the output of todo items in non-interactive mode.
- See the <a class="link" href="ar01s04.html#basics_format_strings" title="Format strings">Format strings</a> section for detailed
- information on format strings.
-</dd><dt><span class="term">
-<code class="literal">-g, --gc</code>
-</span></dt><dd>
- Run the garbage collector for note files and exit.
-</dd><dt><span class="term">
-<code class="literal">-h, --help</code>
-</span></dt><dd>
- Print a short help text describing the supported command-line options,
- and exit.
-</dd><dt><span class="term">
-<code class="literal">-i &lt;file&gt;, --import &lt;file&gt;</code>
-</span></dt><dd>
- Import the icalendar data contained in <code class="literal">file</code>.
-</dd><dt><span class="term">
-<code class="literal">-l &lt;num&gt;, --limit &lt;num&gt;</code>
-</span></dt><dd>
- Limit the number of results printed to <span class="emphasis"><em>num</em></span>.
-</dd><dt><span class="term">
-<code class="literal">-n, --next</code>
-</span></dt><dd><p class="simpara">
- Print the next appointment within upcoming 24 hours and exit. The indicated
- time is the number of hours and minutes left before this appointment.
-</p><p class="simpara">Note: the calendar from which to read the appointments can be specified using
-the <code class="literal">-c</code> flag.</p></dd><dt><span class="term">
-<code class="literal">-r[num], --range[=num]</code>
-</span></dt><dd>
- Print events and appointments for the num number of days and exit. If no num
- is given, a range of 1 day is considered.
-</dd><dt><span class="term">
-<code class="literal">--read-only</code>
-</span></dt><dd><p class="simpara">
- Don’t save configuration nor appointments/todos.
-</p><div class="warning" style="margin-left: 0; margin-right: 10%;"><h3 class="title">Warning</h3><p>Use this this with care! If you run an interactive calcurse instance
-in read-only mode, all changes from this session will be lost without warning!</p></div></dd><dt><span class="term">
-<code class="literal">-s[date], --startday[=date]</code>
-</span></dt><dd>
- Print events and appointments from date and exit. If no date is given, the
- current day is considered.
-</dd><dt><span class="term">
-<code class="literal">-S&lt;regex&gt;, --search=&lt;regex&gt;</code>
-</span></dt><dd>
- When used with the <code class="literal">-a</code>, <code class="literal">-d</code>, <code class="literal">-r</code>, <code class="literal">-s</code>, or <code class="literal">-t</code> flag, print only the items
- having a description that matches the given regular expression.
-</dd><dt><span class="term">
-<code class="literal">--status</code>
-</span></dt><dd>
- Display the status of running instances of calcurse. If calcurse is
- running, this will tell if the interactive mode was launched or if
- calcurse is running in background. The process pid will also be indicated.
-</dd><dt><span class="term">
-<code class="literal">-t[num], --todo[=num]</code>
-</span></dt><dd>
- Print the <code class="literal">todo</code> list and exit. If the optional number <code class="literal">num</code> is given, then
- only todos having a priority equal to <code class="literal">num</code> will be returned. The priority
- number must be between 1 (highest) and 9 (lowest). It is also possible to
- specify <code class="literal">0</code> for the priority, in which case only completed tasks will be
- shown.
-</dd><dt><span class="term">
-<code class="literal">-v, --version</code>
-</span></dt><dd>
- Display <code class="literal">calcurse</code> version and exit.
-</dd><dt><span class="term">
-<code class="literal">-x[format], --export[=format]</code>
-</span></dt><dd><p class="simpara">
- Export user data to specified format. Events, appointments and todos are
- converted and echoed to stdout. Two possible formats are available: ical and
- pcal (see section <a class="link" href="ar01s09.html#links_others" title="9.3. Other links">Links</a> below). If the optional
- argument <code class="literal">format</code> is not given, ical format is selected by default.
-</p><p class="simpara">Note: redirect standard output to export data to a file, by issuing a command
-such as:</p><pre class="screen">$ calcurse --export &gt; my_data.dat</pre></dd></dl></div><div class="note" style="margin-left: 0; margin-right: 10%;"><h3 class="title">Note</h3><p>The <code class="literal">-N</code> option has been removed in calcurse 3.0.0. See the
-<a class="link" href="ar01s04.html#basics_format_strings" title="Format strings">Format strings</a> section on how to print note along
-with appointments and events.</p></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="basics_format_strings"></a>Format strings</h4></div></div></div><p>Format strings are composed of printf()-style format specifiers — ordinary
-characters are copied to stdout without modification. Each specifier is
-introduced by a <code class="literal">%</code> and is followed by a character which specifies the field to
-print. The set of available fields depends on the item type.</p><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="_format_specifiers_for_appointments"></a>Format specifiers for appointments</h5></div></div></div><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-<code class="literal">s</code>
-</span></dt><dd>
- Print the start time of the appointment as UNIX time stamp
-</dd><dt><span class="term">
-<code class="literal">S</code>
-</span></dt><dd>
- Print the start time of the appointment using the <code class="literal">hh:mm</code> format
-</dd><dt><span class="term">
-<code class="literal">d</code>
-</span></dt><dd>
- Print the duration of the appointment in seconds
-</dd><dt><span class="term">
-<code class="literal">e</code>
-</span></dt><dd>
- Print the end time of the appointment as UNIX time stamp
-</dd><dt><span class="term">
-<code class="literal">E</code>
-</span></dt><dd>
- Print the end time of the appointment using the <code class="literal">hh:mm</code> format
-</dd><dt><span class="term">
-<code class="literal">m</code>
-</span></dt><dd>
- Print the description of the item
-</dd><dt><span class="term">
-<code class="literal">n</code>
-</span></dt><dd>
- Print the name of the note file belonging to the item
-</dd><dt><span class="term">
-<code class="literal">N</code>
-</span></dt><dd>
- Print the note belonging to the item
-</dd></dl></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="_format_specifiers_for_events"></a>Format specifiers for events</h5></div></div></div><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-<code class="literal">m</code>
-</span></dt><dd>
- Print the description of the item
-</dd><dt><span class="term">
-<code class="literal">n</code>
-</span></dt><dd>
- Print the name of the note file belonging to the item
-</dd><dt><span class="term">
-<code class="literal">N</code>
-</span></dt><dd>
- Print the note belonging to the item
-</dd></dl></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="_format_specifiers_for_todo_items"></a>Format specifiers for todo items</h5></div></div></div><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-<code class="literal">p</code>
-</span></dt><dd>
- Print the priority of the item
-</dd><dt><span class="term">
-<code class="literal">m</code>
-</span></dt><dd>
- Print the description of the item
-</dd><dt><span class="term">
-<code class="literal">n</code>
-</span></dt><dd>
- Print the name of the note file belonging to the item
-</dd><dt><span class="term">
-<code class="literal">N</code>
-</span></dt><dd>
- Print the note belonging to the item
-</dd></dl></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="_examples"></a>Examples</h5></div></div></div><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-<code class="literal">calcurse -r7 --format-apt='- %S -&gt; %E\n\t%m\n%N'</code>
-</span></dt><dd>
- Print appointments and events for the next seven days. Also, print the notes
- attached to each regular appointment (simulates <code class="literal">-N</code> for appointments).
-</dd><dt><span class="term">
-<code class="literal">calcurse -r7 --format-apt=' - %m (%S to %E)\n' --format-recur-apt=' - %m (%S to %E)\n'</code>
-</span></dt><dd>
- Print appointments and events for the next seven days and use a custom format
- for (recurrent) appointments: ` - Some appointment (18:30 to 21:30)`.
-</dd><dt><span class="term">
-<code class="literal">calcurse -t --format-todo '(%p) %m\n'</code>
-</span></dt><dd>
- List all todo items and put parentheses around the priority specifiers.
-</dd></dl></div></div><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="_extended_format_specifiers"></a>Extended format specifiers</h5></div></div></div><p>Extended format specifiers can be used if you want to specify advanced
-formatting options. Extended specifiers are introduced by <code class="literal">%(</code> and are
-terminated by a closing parenthesis (<code class="literal">)</code>). The following list includes all
-short specifiers and corresponding long options:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-<code class="literal">s</code>: <code class="literal">(start)</code>
-</li><li class="listitem">
-<code class="literal">S</code>: <code class="literal">(start:epoch)</code>
-</li><li class="listitem">
-<code class="literal">e</code>: <code class="literal">(end)</code>
-</li><li class="listitem">
-<code class="literal">E</code>: <code class="literal">(end:epoch)</code>
-</li><li class="listitem">
-<code class="literal">d</code>: <code class="literal">(duration)</code>
-</li><li class="listitem">
-<code class="literal">r</code>: <code class="literal">(remaining)</code>
-</li><li class="listitem">
-<code class="literal">m</code>: <code class="literal">(message)</code>
-</li><li class="listitem">
-<code class="literal">n</code>: <code class="literal">(noteid)</code>
-</li><li class="listitem">
-<code class="literal">N</code>: <code class="literal">(note)</code>
-</li><li class="listitem">
-<code class="literal">p</code>: <code class="literal">(priority)</code>
-</li></ul></div><p>The <code class="literal">(start)</code> and <code class="literal">(end)</code> specifiers support strftime()-style extended
-formatting options that can be used for fine-grained formatting. Additionally,
-the special formats <code class="literal">epoch</code> (which is equivalent to <code class="literal">(start:%s)</code> or <code class="literal">(end:%s)</code>)
-and <code class="literal">default</code> (which is mostly equivalent to <code class="literal">(start:%H:%M)</code> or <code class="literal">(end:%H:%M)</code>
-but displays <code class="literal">..:..</code> if the item doesn’t start/end at the current day) are
-supported.</p><p>The <code class="literal">(remaining)</code> and <code class="literal">(duration)</code> specifiers support a subset of the
-strftime()-style formatting options, along with two extra qualifiers.
-The supported options are <code class="literal">%d</code>, <code class="literal">%H</code>, <code class="literal">%M</code> and <code class="literal">%S</code>, and by default each
-of these is zero-padded to two decimal places. To avoid the
-zero-padding, add <code class="literal">-</code> before the formatting option (for example, <code class="literal">%-d</code>).
-Additionally, the <code class="literal">E</code> option will display the total number of time units
-until the appointment, rather than showing the remaining number of time
-units modulo the next larger time unit. For example, an appointment in
-50 hours will show as 02:00 with the formatting string <code class="literal">%H:%M</code>, but will
-show 50:00 with the formatting string <code class="literal">%EH:%M</code>. Note that if you are
-combining the <code class="literal">-</code> and <code class="literal">E</code> options, the <code class="literal">-</code> must come first. The default
-format for the <code class="literal">(remaining)</code> specifier is <code class="literal">%EH:%M</code>.</p></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="basics_invocation_variable"></a>Environment variable for i18n</h4></div></div></div><p><code class="literal">calcurse</code> can be compiled with native language support (see
-<a class="link" href="ar01s03.html#install_requirements_gettext" title="gettext library">gettext library</a>). Thus, if you wish to have
-messages displayed into your native language, first make sure it is available
-by looking at the <code class="literal">po/LINGUAS</code> file. This file indicates the set of available
-languages by showing the two-letters corresponding code (for exemple, <span class="strong"><strong>fr</strong></span>
-stands for french). If you do not find your language, it would be greatly
-appreciated if you could help translating <code class="literal">calcurse</code> (see the <a class="link" href="ar01s08.html" title="8. How to contribute?">How to contribute?</a> section).</p><p>If your language is available, run <code class="literal">calcurse</code> with the following command:</p><pre class="screen">$ LC_ALL=fr_FR calcurse</pre><div class="orderedlist"><ol class="orderedlist" type="i"><li class="listitem">
-where <span class="strong"><strong>fr_FR</strong></span> is the locale name in this exemple, but should be replaced by
-the locale corresponding to the desired language.
-</li></ol></div><p>You should also specify the charset to be used, because in some cases the
-accents and such are not displayed correctly. This charset is indicated at the
-beginning of the po file corresponding to the desired language. For instance,
-you can see in the fr.po file that it uses the iso-8859-1 charset, so you could
-run <code class="literal">calcurse</code> using the following command:</p><pre class="screen">$ LC_ALL=fr_FR.ISO8859-1 calcurse</pre></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_other_environment_variables"></a>Other environment variables</h4></div></div></div><p>The following environment variables affect the way <code class="literal">calcurse</code> operates:</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-<code class="literal">VISUAL</code>
-</span></dt><dd>
- Specifies the external editor to use for writing notes.
-</dd><dt><span class="term">
-<code class="literal">EDITOR</code>
-</span></dt><dd>
- If the <code class="literal">VISUAL</code> environment variable is not set, then <code class="literal">EDITOR</code> will be used
- as the default external editor. If none of those variables are set, then
- <code class="literal">/usr/bin/vi</code> is used instead.
-</dd><dt><span class="term">
-<code class="literal">PAGER</code>
-</span></dt><dd>
- Specifies the default viewer to be used for reading notes. If this variable
- is not set, then <code class="literal">/usr/bin/less</code> is used.
-</dd></dl></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_user_interface"></a>4.2. User interface</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_non_interactive_mode"></a>Non-interactive mode</h4></div></div></div><p>When called with at least one of the following arguments: <code class="literal">-a</code>, <code class="literal">-d</code>, <code class="literal">-h</code>,
-<code class="literal">-n</code>, <code class="literal">-t</code>, <code class="literal">-v</code>, <code class="literal">-x</code>, <code class="literal">calcurse</code> is started in non-interactive mode. This
-means the desired information will be displayed, and after that, <code class="literal">calcurse</code>
-simply quits and you are driven back to the shell prompt.</p><p>That way, one can add a line such as <code class="literal">calcurse --todo --appointment</code> in its
-init config file to display at logon the list of tasks and appointments
-scheduled for the current day.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="basics_interface_interactive"></a>Interactive mode</h4></div></div></div><div class="note" style="margin-left: 0; margin-right: 10%;"><h3 class="title">Note</h3><p>Key bindings that are indicated in this manual correspond to the default
- ones, defined when <code class="literal">calcurse</code> is launched for the first time. If those
- key bindings do not suit user’s needs, it is possible to change them
- within the keys configuration menu (see <a class="link" href="ar01s05.html#options_keys" title="5.2. Key bindings">key bindings</a>).</p></div><p>When called without any argument or only with the <code class="literal">-c</code> option, <code class="literal">calcurse</code> is
-started in interactive mode. In this mode, you are shown an interface
-containing three different panels which you can browse using the <code class="literal">TAB</code> key,
-plus a notification bar and a status bar (see figure below).</p><pre class="screen"> appointment panel---. .---calendar panel
- | |
- v v
- +------------------------------------++----------------------------+
- | Appointments || Calendar |
- |------------------------------------||----------------------------|
- | (|) April 6, 2006 || April 2006 |
- | ||Mon Tue Wed Thu Fri Sat Sun |
- | || 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 |
- | || |
- | |+----------------------------+
- | |+----------------------------+
- | || ToDo | todo
- | ||----------------------------| panel
- | || | |
- | || | |
- | || |&lt;--.
- | || |
- +------------------------------------++----------------------------+
- |---[ Mon 2006-11-22 | 10:11:43 ]---(apts)----&gt; 01:20 :: lunch &lt;---|&lt;--.
- +------------------------------------------------------------------+ notify-bar
- | ? Help R Redraw H/L -/+1 Day G GoTo C Config |
- | Q Quit S Save J/K -/+1 Week Tab Chg View |&lt;-.
- +------------------------------------------------------------------+ |
- |
- status bar</pre><p>The first panel represents a calendar which allows to highlight a particular
-day, the second one contains the list of the events and appointments on that
-day, and the last one contains a list of tasks to do but which are not assigned
-to any specific day.</p><p>Depending on the selected view, the calendar could either display a monthly
-(default as shown in previous figure) or weekly view. The weekly view would
-look like the following:</p><pre class="screen">+------------------------------------+
-| Calendar |
-|----------------------------(# 13)--|
-| Mon Tue Wed Thu Fri Sat Sun |
-| 29 30 31 01 02 03 04 |
-| &lt;----+-- slice 1: 00:00 to 04:00 AM
-| -- -- -- -- -- -- |
-| &lt;----+-- slice 2: 04:00 to 08:00 AM
-| -- -- -- -- -- -- |
-| &lt;----+-- slice 3: 08:00 to 12:00 AM
-| - -- -- -- -- -- -- - &lt;-+-- midday
-| &lt;----+-- slice 4: 12:00 to 04:00 PM
-| -- -- -- -- -- -- |
-| &lt;----+-- slice 5: 04:00 to 08:00 PM
-| -- -- -- -- -- -- |
-| &lt;----+-- slice 6: 08:00 to 12:00 PM
-+------------------------------------+</pre><p>The current week number is displayed on the top-right side of the panel (<span class="strong"><strong># 13</strong></span>
-meaning it is the 13th week of the year in the above example). The seven days
-of the current week are displayed in column. Each day is divided into slices of
-4 hours each (6 slices in total, see figure above). A slice will appear in a
-different color if an appointment falls into the corresponding time-slot.</p><p>In the appointment panel, one can notice the <span class="strong"><strong><code class="literal">(|)</code></strong></span> sign just in front of the
-date. This indicates the current phase of the moon. Depending on which is the
-current phase, the following signs can be seen:</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-` |) `
-</span></dt><dd>
- first quarter
-</dd><dt><span class="term">
-` (|) `
-</span></dt><dd>
- full moon
-</dd><dt><span class="term">
-` (| `
-</span></dt><dd>
- last quarter
-</dd><dt><span class="term">
-` | `
-</span></dt><dd>
- new moon
-</dd><dt><span class="term">
-no sign
-</span></dt><dd>
- Phase of the moon does not correspond to any of the above ones.
-</dd></dl></div><p>At the very bottom of the screen there is a status bar, which indicates the
-possible actions and the corresponding keystrokes.</p><p>Just above this status bar is the notify-bar, which indicates from left to
-right : the current date, the current time, the calendar file currently in use
-(apts on the above example, which is the default calendar file, see the
-following section), and the next appointment within the upcoming 24 hours. Here
-it says that it will be lunch time in one hour and twenty minutes.</p><div class="note" style="margin-left: 0; margin-right: 10%;"><h3 class="title">Note</h3><p>Some actions, such as editing or adding an item, require to type in some
- text. This is done with the help of the built-in input line editor.</p></div><p>Within this editor, if a line is longer than the screen width, a <code class="literal">&gt;</code>, <code class="literal">*</code>, or
-<code class="literal">&lt;</code> character is displayed in the last column indicating that there are more
-character after, before and after, or before the current position,
-respectively. The line is scrolled horizontally as necessary.</p><p>Moreover, some editing commands are bound to particular control characters.
-Hereafter are indicated the available editing commands (<code class="literal">^</code> stands for the
-control key):</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-<code class="literal">^a</code>
-</span></dt><dd>
- moves the cursor to the beginning of the input line
-</dd><dt><span class="term">
-<code class="literal">^b</code>
-</span></dt><dd>
- moves the cursor backward
-</dd><dt><span class="term">
-<code class="literal">^d</code>
-</span></dt><dd>
- deletes one character forward
-</dd><dt><span class="term">
-<code class="literal">^e</code>
-</span></dt><dd>
- moves the cursor to the end of the input line
-</dd><dt><span class="term">
-<code class="literal">^f</code>
-</span></dt><dd>
- moves the cursor forward
-</dd><dt><span class="term">
-<code class="literal">^h</code>
-</span></dt><dd>
- deletes one character backward
-</dd><dt><span class="term">
-<code class="literal">^k</code>
-</span></dt><dd>
- deletes the input from the cursor to the end of the line
-</dd><dt><span class="term">
-<code class="literal">^w</code>
-</span></dt><dd>
- deletes backward to the beginning of the current word
-</dd><dt><span class="term">
-<code class="literal">ESCAPE</code>
-</span></dt><dd>
- cancels the editing
-</dd></dl></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="basics_daemon"></a>4.3. Background mode</h3></div></div></div><p>When the daemon mode is enabled in the notification configuration menu (see
-<a class="link" href="ar01s05.html#options_notify" title="5.6. Notify-bar settings">Notify-bar settings</a>), <code class="literal">calcurse</code> will stay in background
-when the user interface is not running. In background mode, <code class="literal">calcurse</code> checks
-for upcoming appointments and runs the user-defined notification command when
- necessary. When the user interface is started again, the daemon automatically
- stops.</p><p>‘calcurse` background activity can be logged (set the <code class="literal">daemon.log</code> variable in
-the notification configuration <a class="link" href="ar01s05.html#options_notify" title="5.6. Notify-bar settings">menu</a>), and in that case,
-information about the daemon start and stop time, reminders’ command launch
-time, signals received… will be written in the <code class="literal">daemon.log</code> file (see section
-<a class="link" href="ar01s04.html#basics_files" title="4.4. calcurse files">files</a>).</p><p>Using the <code class="literal">--status</code> command line option (see section
-<a class="link" href="ar01s04.html#basics_invocation_commandline" title="Command line arguments">Command line arguments</a>), one can know if
-<code class="literal">calcurse</code> is currently running in background or not. If the daemon is
-running, a message like the following one will be displayed (the pid of the
-daemon process will be shown):</p><pre class="screen">calcurse is running in background (pid 14536)</pre><div class="note" style="margin-left: 0; margin-right: 10%;"><h3 class="title">Note</h3><p>To stop the daemon, just send the <code class="literal">TERM</code> signal to it, using a command
- such as: <code class="literal">kill daemon_pid</code>, where <span class="strong"><strong>daemon_pid</strong></span> is the process id of the
- daemon (14536 in the above example).</p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="basics_files"></a>4.4. calcurse files</h3></div></div></div><p>The following structure is created in your <code class="literal">$HOME</code> directory (or in the
-directory you specified with the -D option) the first time <code class="literal">calcurse</code> is run
-:</p><pre class="screen">$HOME/.calcurse/
- |___notes/
- |___conf
- |___keys
- |___apts
- |___todo</pre><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-<code class="literal">notes/</code>
-</span></dt><dd>
- this subdirectory contains descriptions of the notes which are attached to
- appointments, events or todos. Since the file name of each note file is a
- SHA1 hash of the note itself, multiple items can share the same note file.
- calcurse provides a garbage collector (see the <code class="literal">-g</code> command line parameter)
- that can be used to remove note files which are no longer linked to any item.
-</dd><dt><span class="term">
-<code class="literal">conf</code>
-</span></dt><dd>
- this file contains the user configuration
-</dd><dt><span class="term">
-<code class="literal">keys</code>
-</span></dt><dd>
- this file contains the user-defined key bindings
-</dd><dt><span class="term">
-<code class="literal">apts</code>
-</span></dt><dd>
- this file contains all of the events and user’s appointments
-</dd><dt><span class="term">
-<code class="literal">todo</code>
-</span></dt><dd>
- this file contains the todo list
-</dd></dl></div><div class="note" style="margin-left: 0; margin-right: 10%;"><h3 class="title">Note</h3><p>If the logging of calcurse daemon activity was set in the notification
- configuration menu, the extra file <code class="literal">daemon.log</code> will appear in calcurse
- data directory. This file contains logs about calcurse activity when
- running in background.</p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_import_export_capabilities"></a>4.5. Import/Export capabilities</h3></div></div></div><p>The import and export capabilities offered by <code class="literal">calcurse</code> are described below.</p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_import"></a>Import</h4></div></div></div><p>Data in icalendar format as described in the rfc2445 specification (see
-<a class="link" href="ar01s09.html#links_others" title="9.3. Other links">links</a> section below) can be imported into calcurse. Calcurse
-ical parser is based on version 2.0 of this specification, but for now on, only
-a subset of it is supported.</p><p>The following icalendar properties are handled by calcurse:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-<code class="literal">VTODO</code> items: "PRIORITY", "VALARM", "SUMMARY", "DESCRIPTION"
-</li><li class="listitem">
-<code class="literal">VEVENT</code> items: "DTSTART", "DTEND", "DURATION", "RRULE", "EXDATE", "VALARM",
- "SUMMARY", "DESCRIPTION"
-</li></ul></div><p>The icalendar <code class="literal">DESCRIPTION</code> property will be converted into calcurse format by
-adding a note to the item. If a "VALARM" property is found, the item will be
-flagged as important and the user will get a notification (this is only
-applicable to appointments).</p><p>Here are the properties that are not implemented:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-negative time durations are not taken into account (item is skipped)
-</li><li class="listitem">
-some recurence frequences are not recognize: "SECONDLY" / "MINUTELY" /
- "HOURLY"
-</li><li class="listitem">
-some recurrence keywords are not recognized (all those starting with <code class="literal">BY</code>):
- "BYSECOND" / "BYMINUTE" / "BYHOUR" / "BYDAY" / "BYMONTHDAY" / "BYYEARDAY" /
- "BYWEEKNO" / "BYMONTH" / "BYSETPOS" plus "WKST"
-</li><li class="listitem">
-the recurrence exception keyword "EXRULE" is not recognized
-</li><li class="listitem">
-timezones are not taken into account
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_export"></a>Export</h4></div></div></div><p>Two possible export formats are available: <code class="literal">ical</code> and <code class="literal">pcal</code> (see section
-<a class="link" href="ar01s09.html#links_others" title="9.3. Other links">Links</a> below to find out about those formats).</p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_online_help"></a>4.6. Online help</h3></div></div></div><p>At any time, the built-in help system can be invoked by pressing the <code class="literal">?</code> key.
-By default, it shows an introduction to the help system in an external pager.
-You need to exit the pager in order to get back to calcurse (pressing <code class="literal">q</code>
-should almost always work). The default pager can be changed by setting the
-PAGER environment variable.</p><p>If you want to display help on a specific feature or key binding, type <code class="literal">:help
-&lt;feature&gt;</code> (e.g. <code class="literal">:help add</code>) or <code class="literal">:help &lt;key&gt;</code> (e.g. <code class="literal">:help ^A</code>) on the main
-screen.</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ar01s03.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ar01s05.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html> \ No newline at end of file
diff --git a/files/manual.chunked/ar01s05.html b/files/manual.chunked/ar01s05.html
deleted file mode 100644
index 32d703a..0000000
--- a/files/manual.chunked/ar01s05.html
+++ /dev/null
@@ -1,187 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>5. Options</title><link rel="stylesheet" type="text/css" href="docbook-xsl.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="CALCURSE - text-based organizer" /><link rel="up" href="index.html" title="CALCURSE - text-based organizer" /><link rel="prev" href="ar01s04.html" title="4. calcurse basics" /><link rel="next" href="ar01s06.html" title="6. Known bugs" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><td width="20%" align="left"><a accesskey="p" href="ar01s04.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ar01s06.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_options"></a>5. Options</h2></div></div></div><p>All of the <code class="literal">calcurse</code> parameters are configurable from the Configuration menu
-available when pressing <code class="literal">C</code>. You are then driven to a submenu with five
-possible choices : pressing <code class="literal">C</code> again will lead you to the Color scheme
-configuration, pressing <code class="literal">L</code> allows you to choose the layout of the main
-<code class="literal">calcurse</code> screen (in other words, where to put the three different panels on
-screen), pressing <code class="literal">G</code> permits you to choose between different general options,
-pressing <code class="literal">K</code> opens the key bindings configuration menu, and last you can modify
-the notify-bar settings by pressing <code class="literal">N</code>.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="options_general"></a>5.1. General options</h3></div></div></div><p>These options control <code class="literal">calcurse</code> general behavior, as described below:</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-<code class="literal">general.autosave</code> (default: <span class="strong"><strong>yes</strong></span>)
-</span></dt><dd>
- This option allows to automatically save the user’s data (if set to <span class="strong"><strong>yes</strong></span>)
- when quitting. &lt;p class="rq"&gt;&lt;span class="valorise"&gt;warning:&lt;/span&gt; No data
- will be automatically saved if <code class="literal">general.autosave</code> is set to <span class="strong"><strong>no</strong></span>. This means
- the user must press <code class="literal">S</code> (for saving) in order to retrieve its modifications.
-</dd><dt><span class="term">
-<code class="literal">general.autogc</code> (default: <span class="strong"><strong>no</strong></span>)
-</span></dt><dd>
- Automatically run the garbage collector for note files when quitting.
-</dd><dt><span class="term">
-<code class="literal">general.periodicsave</code> (default: <span class="strong"><strong>0</strong></span>)
-</span></dt><dd>
- If different from <code class="literal">0</code>, user’s data will be automatically saved every
- <span class="strong"><strong>general.periodicsave</strong></span> minutes. When an automatic save is performed, two
- asterisks (i.e. <code class="literal">**</code>) will appear on the top right-hand side of the screen).
-</dd><dt><span class="term">
-<code class="literal">general.confirmquit</code> (default: <span class="strong"><strong>yes</strong></span>)
-</span></dt><dd>
- If set to <span class="strong"><strong>yes</strong></span>, confirmation is required before quitting, otherwise pressing
- <code class="literal">Q</code> will cause <code class="literal">calcurse</code> to quit without prompting for user confirmation.
-</dd><dt><span class="term">
-<code class="literal">general.confirmdelete</code> (default: <span class="strong"><strong>yes</strong></span>)
-</span></dt><dd>
- If this option is set to <span class="strong"><strong>yes</strong></span>, pressing <code class="literal">D</code> for deleting an item (either a
- <span class="strong"><strong>todo</strong></span>, <span class="strong"><strong>appointment</strong></span>, or <span class="strong"><strong>event</strong></span>), will lead to a prompt asking for user
- confirmation before removing the selected item from the list. Otherwise, no
- confirmation will be needed before deleting the item.
-</dd><dt><span class="term">
-<code class="literal">general.systemdialogs</code> (default: <span class="strong"><strong>yes</strong></span>)
-</span></dt><dd>
- Setting this option to <span class="strong"><strong>no</strong></span> will result in skipping the system dialogs
- related to the saving and loading of data. This can be useful to speed up
- the input/output processes.
-</dd><dt><span class="term">
-<code class="literal">general.progressbar</code> (default: <span class="strong"><strong>yes</strong></span>)
-</span></dt><dd>
- If set to <span class="strong"><strong>no</strong></span>, this will cause the disappearing of the progress bar which is
- usually shown when saving data to file. If set to <span class="strong"><strong>yes</strong></span>, this bar will be
- displayed, together with the name of the file being saved (see section
- <a class="link" href="ar01s04.html#basics_files" title="4.4. calcurse files">calcurse files</a>).
-</dd><dt><span class="term">
-<code class="literal">appearance.calendarview</code> (default: <span class="strong"><strong>0</strong></span>)
-</span></dt><dd>
- If set to <code class="literal">0</code>, the monthly calendar view will be displayed by default
- otherwise it is the weekly view that will be displayed.
-</dd><dt><span class="term">
-<code class="literal">general.firstdayofweek</code> (default: <span class="strong"><strong>monday</strong></span>)
-</span></dt><dd>
- One can choose between Monday and Sunday as the first day of the week. If
- <code class="literal">general.firstdayofweek</code> is set to <span class="strong"><strong>monday</strong></span>, Monday will be first in the
- calendar view. Otherwise, Sunday will be the first day of the week.
-</dd><dt><span class="term">
-<code class="literal">format.outputdate</code> (default: <span class="strong"><strong>%D</strong></span>)
-</span></dt><dd>
- This option indicates the format to be used when displaying dates in
- non-interactive mode. Using the default values, dates are displayed the
- following way: <span class="strong"><strong>mm/dd/aa</strong></span>. You can see all of the possible formats by typing
- <code class="literal">man 3 strftime</code> inside a terminal.
-</dd><dt><span class="term">
-<code class="literal">format.inputdate</code> (default: <span class="strong"><strong>1</strong></span>)
-</span></dt><dd><p class="simpara">
- This option indicates the format that will be used to enter dates in
- <span class="strong"><strong>calcurse</strong></span>. Four choices are available:
-</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
-mm/dd/yyyy
-</li><li class="listitem">
-dd/mm/yyyy
-</li><li class="listitem">
-yyyy/mm/dd
-</li><li class="listitem">
-yyyy-mm-dd
-</li></ol></div></dd></dl></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="options_keys"></a>5.2. Key bindings</h3></div></div></div><p>One can define ones own key bindings within the <code class="literal">Keys</code> configuration menu. The
-default keys look like the one used by the <code class="literal">vim</code> editor, especially the
-displacement keys. Anyway, within this configuration menu, users can redefine
-all of the keys available from within calcurse’s user interface.</p><p>To define new key bindings, first highlight the action to which it will apply.
-Then, delete the actual key binding if necessary, and add a new one. You will
-then be asked to press the key corresponding to the new binding. It is possible
-to define more than one key binding for a single action.</p><p>An automatic check is performed to see if the new key binding is not already
-set for another action. In that case, you will be asked to choose a different
-one. Another check is done when exiting from this menu, to make sure all
-possible actions have a key associated with it.</p><p>The following keys can be used to define bindings:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-lower-case, upper-case letters and numbers, such as <code class="literal">a</code>, <code class="literal">Z</code>, <code class="literal">0</code>
-</li><li class="listitem">
-CONTROL-key followed by one of the above letters
-</li><li class="listitem">
-escape, horizontal tab, and space keys
-</li><li class="listitem">
-arrow keys (up, down, left, and right)
-</li><li class="listitem">
-<code class="literal">HOME</code> and <code class="literal">END</code> keys
-</li></ul></div><p>While inside the key configuration menu, an online help is available for each
-one of the available actions. This help briefly describes what the highlighted
-action is used for.</p><div class="note" style="margin-left: 0; margin-right: 10%;"><h3 class="title">Note</h3><p>As of calcurse 3.0.0, displacement commands can be preceded by an
- optional number to repeat the command. For example, <code class="literal">10k</code> will move the
- cursor ten weeks forwards if you use default key bindings.</p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_color_themes"></a>5.3. Color themes</h3></div></div></div><p><code class="literal">calcurse</code> color theme can be customized to suit user’s needs. To change the
-default theme, the configuration page displays possible choices for foreground
-and background colors. Using arrows or calcurse displacement keys to move, and
-<code class="literal">X</code> or space to select a color, user can preview the theme which will be
-applied. It is possible to keep the terminal’s default colors by selecting the
-corresponding choice in the list.</p><p>The chosen color theme will then be applied to the panel borders, to the
-titles, to the keystrokes, and to general informations displayed inside status
-bar. A black and white theme is also available, in order to support non-color
-terminals.</p><div class="note" style="margin-left: 0; margin-right: 10%;"><h3 class="title">Note</h3><p>Depending on your terminal type and on the value of the <code class="literal">$TERM</code>
- environment variable, color could or could not be supported. An error
- message will appear if you try to change colors whereas your terminal
- does not support this feature. If you do know your terminal supports
- colors but could not get <code class="literal">calcurse</code> to display them, try to set your
- <code class="literal">$TERM</code> variable to another value (such as <span class="strong"><strong>xterm-xfree86</strong></span> for instance).</p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_layout_configuration"></a>5.4. Layout configuration</h3></div></div></div><p>The layout corresponds to the position of the panels inside <code class="literal">calcurse</code> screen.
-The default layout makes the calendar panel to be displayed on the top-right
-corner of the terminal, the todo panel on the bottom-right corner, while the
-appointment panel is displayed on the left hand-side of the screen (see the
-figure in section <a class="link" href="ar01s04.html#basics_interface_interactive" title="Interactive mode">Interactive mode</a> for an
-example of the default layout). By choosing another layout in the
-configuration screen, user can customize <code class="literal">calcurse</code> appearance to best suit his
-needs by placing the different panels where needed.</p><p>The following option is used to modify the layout configuration:</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-<code class="literal">appearance.layout</code> (default: <span class="strong"><strong>0</strong></span>)
-</span></dt><dd>
- Eight different layouts are to be chosen from (see layout configuration
- screen for the description of the available layouts).
-</dd></dl></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_sidebar_configuration"></a>5.5. Sidebar configuration</h3></div></div></div><p>The sidebar is the part of the screen which contains two panels: the calendar
-and, depending on the chosen layout, either the todo list or the appointment
-list.</p><p>The following option is used to change the width of the sidebar:</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-<code class="literal">appearance.sidebarwidth</code> (default: <span class="strong"><strong>0</strong></span>)
-</span></dt><dd>
- Width (in percentage, 0 being the minimum width) of the side bar.
-</dd></dl></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="options_notify"></a>5.6. Notify-bar settings</h3></div></div></div><p>The following options are used to modify the notify-bar behavior:</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-<code class="literal">appearance.notifybar</code> (default: <span class="strong"><strong>yes</strong></span>)
-</span></dt><dd>
- This option indicates if you want the notify-bar to be displayed or not.
-</dd><dt><span class="term">
-<code class="literal">format.notifydate</code> (default: <span class="strong"><strong>%a %F</strong></span>)
-</span></dt><dd>
- With this option, you can specify the format to be used to display the
- current date inside the notification bar. You can see all of the possible
- formats by typing <code class="literal">man 3 strftime</code> inside a terminal.
-</dd><dt><span class="term">
-<code class="literal">format.notifytime</code> (default: <span class="strong"><strong>%T</strong></span>)
-</span></dt><dd>
- With this option, you can specify the format to be used to display the
- current time inside the notification bar. You can see all of the possible
- formats by typing <code class="literal">man 3 strftime</code> inside a terminal.
-</dd><dt><span class="term">
-<code class="literal">notification.warning</code> (default: <span class="strong"><strong>300</strong></span>)
-</span></dt><dd>
- When there is an appointment which is flagged as <code class="literal">important</code> within the next
- <code class="literal">notification.warning</code> seconds, the display of that appointment inside the
- notify-bar starts to blink. Moreover, the command defined by the
- <code class="literal">notification.command</code> option will be launched. That way, the user is warned
- and knows there will be soon an upcoming appointment.
-</dd><dt><span class="term">
-<code class="literal">notification.command</code> (default: <span class="strong"><strong>printf <span class="emphasis"><em>\a</em></span></strong></span>)
-</span></dt><dd><p class="simpara">
- This option indicates which command is to be launched when there is an
- upcoming appointment flagged as <code class="literal">important</code>. This command will be passed to
- the user’s shell which will interpret it. To know what shell must be used,
- the content of the <code class="literal">$SHELL</code> environment variable is used. If this variable is
- not set, <code class="literal">/bin/sh</code> is used instead.
-</p><div class="informalexample"><p>Say the <code class="literal">mail</code> command is available on the user’s system, one can use the
-following command to get notified by mail of an upcoming appointment (the
-appointment description will also be mentioned in the mail body):</p><pre class="screen">$ calcurse --next | mail -s "[calcurse] upcoming appointment!" user@host.com</pre></div></dd><dt><span class="term">
-<code class="literal">notification.notifyall</code> (default: <span class="strong"><strong>no</strong></span>)
-</span></dt><dd>
- Invert the sense of flagging an appointment as <code class="literal">important</code>. If this is
- enabled, all appointments will be notified - except for flagged ones.
-</dd><dt><span class="term">
-<code class="literal">daemon.enable</code> (default: <span class="strong"><strong>no</strong></span>)
-</span></dt><dd>
- If set to yes, daemon mode will be enabled, meaning <code class="literal">calcurse</code> will run into
- background when the user’s interface is exited. This will allow the
- notifications to be launched even when the interface is not running. More
- details can be found in section <a class="link" href="ar01s04.html#basics_daemon" title="4.3. Background mode">Background mode</a>.
-</dd><dt><span class="term">
-<code class="literal">daemon.log</code> (default: <span class="strong"><strong>no</strong></span>)
-</span></dt><dd>
- If set to yes, <code class="literal">calcurse</code> daemon activity will be logged (see section
- <a class="link" href="ar01s04.html#basics_files" title="4.4. calcurse files">files</a>).
-</dd></dl></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ar01s04.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ar01s06.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html> \ No newline at end of file
diff --git a/files/manual.chunked/ar01s06.html b/files/manual.chunked/ar01s06.html
deleted file mode 100644
index badb06f..0000000
--- a/files/manual.chunked/ar01s06.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>6. Known bugs</title><link rel="stylesheet" type="text/css" href="docbook-xsl.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="CALCURSE - text-based organizer" /><link rel="up" href="index.html" title="CALCURSE - text-based organizer" /><link rel="prev" href="ar01s05.html" title="5. Options" /><link rel="next" href="ar01s07.html" title="7. Reporting bugs and feedback" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><td width="20%" align="left"><a accesskey="p" href="ar01s05.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ar01s07.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_known_bugs"></a>6. Known bugs</h2></div></div></div><p>Incorrect highlighting of items appear when using calcurse black and white
-theme together with a <code class="literal">$TERM</code> variable set to <span class="strong"><strong>xterm-color</strong></span>. To fix this bug,
-and as advised by Thomas E. Dickey (<code class="literal">xterm</code> maintainer), <span class="strong"><strong>xterm-xfree86</strong></span> should
-be used instead of <span class="strong"><strong>xterm-color</strong></span> to set the <code class="literal">$TERM</code> variable:</p><div class="blockquote"><blockquote class="blockquote"><p>"The xterm-color value for $TERM is a bad choice for XFree86 xterm because it
-is commonly used for a <code class="literal">terminfo</code> entry which happens to not support bce. Use
-the xterm-xfree86 entry which is distributed with XFree86 xterm (or the similar
-one distributed with ncurses)."</p></blockquote></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ar01s05.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ar01s07.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html> \ No newline at end of file
diff --git a/files/manual.chunked/ar01s07.html b/files/manual.chunked/ar01s07.html
deleted file mode 100644
index a0540ce..0000000
--- a/files/manual.chunked/ar01s07.html
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>7. Reporting bugs and feedback</title><link rel="stylesheet" type="text/css" href="docbook-xsl.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="CALCURSE - text-based organizer" /><link rel="up" href="index.html" title="CALCURSE - text-based organizer" /><link rel="prev" href="ar01s06.html" title="6. Known bugs" /><link rel="next" href="ar01s08.html" title="8. How to contribute?" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><td width="20%" align="left"><a accesskey="p" href="ar01s06.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ar01s08.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="bugs"></a>7. Reporting bugs and feedback</h2></div></div></div><p>Please send bug reports and feedback to: <code class="literal">misc .at. calcurse .dot. org</code>.</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ar01s06.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ar01s08.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html> \ No newline at end of file
diff --git a/files/manual.chunked/ar01s08.html b/files/manual.chunked/ar01s08.html
deleted file mode 100644
index 24535b8..0000000
--- a/files/manual.chunked/ar01s08.html
+++ /dev/null
@@ -1,161 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>8. How to contribute?</title><link rel="stylesheet" type="text/css" href="docbook-xsl.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="CALCURSE - text-based organizer" /><link rel="up" href="index.html" title="CALCURSE - text-based organizer" /><link rel="prev" href="ar01s07.html" title="7. Reporting bugs and feedback" /><link rel="next" href="ar01s09.html" title="9. Links" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><td width="20%" align="left"><a accesskey="p" href="ar01s07.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ar01s09.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="contribute"></a>8. How to contribute?</h2></div></div></div><p>If you would like to contribute to the project, you can first send your
-feedback on what you like or dislike, and if there are features you miss in
-<code class="literal">calcurse</code>. For now on, possible contributions concern the translation of
-<code class="literal">calcurse</code> messages and documentation.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_translating_documentation"></a>8.1. Translating documentation</h3></div></div></div><div class="note" style="margin-left: 0; margin-right: 10%;"><h3 class="title">Note</h3><p>We recently dropped all translations of the manual files from the
- distribution tarball. There are plan to reintroduce them in form of a
- Wiki on the calcurse website. Please follow the mailing lists for
- up-to-date information.</p></div><p>The <span class="strong"><strong>doc/</strong></span> directory of the source package already contains translated version
-of <code class="literal">calcurse</code> manual. However, if the manual is not yet available into your
-native language, it would be appreciated if you could help translating it.</p><p>To do so, just copy one of the existing manual file to <code class="literal">manual_XX.html</code>, where
-<span class="strong"><strong>XX</strong></span> identifies your language. Then translate this newly created file and send
-it to the author (see <a class="link" href="ar01s07.html" title="7. Reporting bugs and feedback">Reporting bugs and feeback</a>), so that it can be
-included in the next <code class="literal">calcurse</code> release.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_calcurse_i18n"></a>8.2. calcurse i18n</h3></div></div></div><p>As already mentioned, <code class="literal">gettext</code> utilities are used by <code class="literal">calcurse</code> to produce
-multi-lingual messages. We are currently using
-<a class="ulink" href="http://www.transifex.net/" target="_top">Transifex</a> to manage those translations.</p><p>This section provides informations about how to translate those messages into
-your native language. However, this howto is deliberately incomplete, focusing
-on working with <code class="literal">gettext</code> for <code class="literal">calcurse</code> specifically. For more comprehensive
-informations or to grasp the Big Picture of Native Language Support, you should
-refer to the <code class="literal">GNU gettext</code> manual at:
-<a class="ulink" href="http://www.gnu.org/software/gettext/manual/" target="_top">http://www.gnu.org/software/gettext/manual/</a></p><div class="important" style="margin-left: 0; margin-right: 10%;"><h3 class="title">Important</h3><p>Since we switched to Transifex, editing <span class="strong"><strong>po</strong></span> files is not necessary
- anymore as Transifex provides a user-friendly, intuitive web
- interface for translators. Knowledge of <code class="literal">gettext</code> and the <span class="strong"><strong>po</strong></span>
- format is still useful for those of you who prefer the command line
- and local editing. If you want to use the web UI to edit the
- translation strings, you can skip over to <a class="link" href="ar01s08.html#transifex_webui" title="Using the Transifex web UI">Using the Transifex web UI</a> tough.</p></div><p>Basically, three different people get involved in the translation chain:
-coders, language coordinator, and translators. After a quick overview of how
-things work, the translator tasks will be described hereafter.</p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_overview_2"></a>Overview</h4></div></div></div><p>To be able to display texts in the native language of the user, two steps are
-required: <span class="strong"><strong>internationalization</strong></span> (i18n) and <span class="strong"><strong>localization</strong></span> (l10n).</p><p>i18n is about making <code class="literal">calcurse</code> support multiple languages. It is performed by
-coders, who will mark translatable texts and provide a way to display them
-translated at runtime.</p><p>l10n is about making the i18n’ed <code class="literal">calcurse</code> adapt to the specific language of
-the user, ie translating the strings previously marked by the developers, and
-setting the environment correctly for <code class="literal">calcurse</code> to use the result of this
-translation.</p><p>So, translatable strings are first marked by the coders within the <code class="literal">C</code> source
-files, then gathered in a template file (<span class="strong"><strong>calcurse.pot</strong></span> - the <span class="strong"><strong>pot</strong></span> extension
-meaning <span class="strong"><strong>portable object template</strong></span>). The content of this template file is then
-merged with the translation files for each language (<span class="strong"><strong>fr.po</strong></span> for French, for
-instance - with <span class="strong"><strong>po</strong></span> standing for <span class="strong"><strong>portable object</strong></span>, ie meant to be read and
-edited by humans). A given translation team will take this file, translate its
-strings, and send it back to the developers. At compilation time, a binary
-version of this file (for efficiency reasons) will be produced (<span class="strong"><strong>fr.mo</strong></span> - <span class="strong"><strong>mo</strong></span>
-stands for <span class="strong"><strong>machine object</strong></span>, i.e. meant to be read by programs), and then
-installed. Then <code class="literal">calcurse</code> will use this file at runtime, translating the
-strings according to the locale settings of the user.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_translator_tasks"></a>Translator tasks</h4></div></div></div><p>Suppose someone wants to initiate the translation of a new language. Here are
-the steps to follow:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-First, find out what the locale name is. For instance, for french, it is
- <code class="literal">fr_FR</code>, or simply <code class="literal">fr</code>. This is the value the user will have to put in his
- <code class="literal">LC_ALL</code> environment variable for software to be translated (see
- <a class="link" href="ar01s04.html#basics_invocation_variable" title="Environment variable for i18n">Environment variable for i18n</a>).
-</li><li class="listitem">
-Then, go into the <span class="strong"><strong>po/</strong></span> directory, and create a new po-file
- from the template file using the following command: <code class="literal">msginit -i calcurse.pot
- -o fr.po -l fr --no-translator</code> If you do not have <code class="literal">msginit</code> installed on
- your system, simply copy the <span class="strong"><strong>calcurse.pot</strong></span> file to <span class="strong"><strong>fr.po</strong></span> and edit the
- header by hand.
-</li></ul></div><p>Now, having this <span class="strong"><strong>fr.po</strong></span> file, the translator is ready to begin.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_po_files"></a>po-files</h4></div></div></div><p>The format of the po-files is quite simple. Indeed, po-files are made of four
-things:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
-<span class="strong"><strong>location lines:</strong></span> tells you where the strings can be seen (name of file and
- line number), in case you need to see a bit of context.
-</li><li class="listitem">
-<span class="strong"><strong>msgid lines:</strong></span> the strings to translate.
-</li><li class="listitem">
-<span class="strong"><strong>msgstr lines:</strong></span> the translated strings.
-</li><li class="listitem">
-<span class="strong"><strong>lines prefixed with <code class="literal">#</code>:</strong></span> comments (some with a special meaning, as we will
- see below).
-</li></ol></div><p>Basically, all you have to do is fill the <span class="strong"><strong>msgstr</strong></span> lines with the translation
-of the above <span class="strong"><strong>msgid</strong></span> line.</p><p>A few notes:</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-<span class="strong"><strong>Fuzzy strings</strong></span>
-</span></dt><dd>
- You will meet strings marked with a <code class="literal">"#, fuzzy"</code> comment. <code class="literal">calcurse</code> won’t
- use the translations of such strings until you do something about them. A
- string being fuzzy means either that the string has already been translated
- but has since been changed in the sources of the program, or that this is a
- new string for which <code class="literal">gettext</code> made a <span class="emphasis"><em>wild guess</em></span> for the translation, based
- on other strings in the file. It means you have to review the translation.
- Sometimes, the original string has changed just because a typo has been
- fixed. In this case, you won’t have to change anything. But sometimes, the
- translation will no longer be accurate and needs to be changed. Once you are
- done and happy with the translation, just remove the <code class="literal">"#, fuzzy"</code> line, and
- the translation will be used again in <code class="literal">calcurse</code>.
-</dd><dt><span class="term">
-<span class="strong"><strong>c-format strings and special sequences</strong></span>
-</span></dt><dd>
- Some strings have the following comment: <code class="literal">"#, c-format"</code>. This tells that
- parts of the string to translate have a special meaning for the program, and
- that you should leave them alone. For instance, %-sequences, like <code class="literal">"%s"</code>.
- These means that <code class="literal">calcurse</code> will replace them with another string. So it is
- important it remains. There are also \-sequences, like <code class="literal">\n</code> or <code class="literal">\t</code>. Leave
- them, too. The former represents an end of line, the latter a tabulation.
-</dd><dt><span class="term">
-<span class="strong"><strong>Translations can be wrapped</strong></span>
-</span></dt><dd><p class="simpara">
- If lines are too long, you can just break them like this:
-</p><pre class="screen">msgid ""
-"some very long line"
-"another line"</pre></dd><dt><span class="term">
-<span class="strong"><strong>po-file header</strong></span>
-</span></dt><dd><p class="simpara">
- At the very beginning of the po-file, the first string form a header, where
- various kind of information has to be filled in. Most important one is the
- charset. It should resemble
-</p><pre class="screen">"Content-Type: text/plain; charset=utf-8\n"</pre><p class="simpara">You should also fill in the Last-Translator field, so that potential
-contributors can contact you if they want to join you in the translation team,
-or have remarks/typo fixes to give about the translations. You can either just
-give your name/nick, or add an email address, for exemple:</p><pre class="screen">"Last-Translator: Frederic Culot &lt;frederic@culot.org&gt;\n"</pre></dd><dt><span class="term">
-<span class="strong"><strong>Comments</strong></span>
-</span></dt><dd>
- Adding comments (lines begining with the <code class="literal">#</code> character) can be a good way to
- point out problems or translation difficulties to proofreaders or other
- members of your team.
-</dd><dt><span class="term">
-<span class="strong"><strong>Strings size</strong></span>
-</span></dt><dd>
- <code class="literal">calcurse</code> is a curses/console program, thus it can be heavily dependant on
- the terminal size (number of columns). You should think about this when
- translating. Often, a string must fit into a single line (standard length is
- 80 characters). Don’t translate blindly, try to look where your string will
- be displayed to adapt your translation.
-</dd><dt><span class="term">
-<span class="strong"><strong>A few useful tools</strong></span>
-</span></dt><dd><p class="simpara">
- The po-file format is very simple, and the file can be edited with a standard
- text editor. But if you prefer, there are few specialized tools you may find
- convenient for translating:
-</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-<code class="literal">poEdit</code> (<a class="ulink" href="http://www.poedit.org/" target="_top">http://www.poedit.org/</a>)
-</li><li class="listitem">
-<code class="literal">KBabel</code> (<a class="ulink" href="http://i18n.kde.org/tools/kbabel/" target="_top">http://i18n.kde.org/tools/kbabel/</a>)
-</li><li class="listitem">
-<code class="literal">GTranslator</code> (<a class="ulink" href="http://gtranslator.sourceforge.net/" target="_top">http://gtranslator.sourceforge.net/</a>)
-</li><li class="listitem">
-<code class="literal">Emacs</code> po mode
-</li><li class="listitem">
-<code class="literal">Vim</code> po mode
-</li></ul></div></dd><dt><span class="term">
-<span class="strong"><strong>And finally</strong></span>
-</span></dt><dd>
- I hope you’ll have fun contributing to a more internationalized world. :) If
- you have any more questions, don’t hesitate to contact us at <span class="strong"><strong>misc .at.
- calcurse .dot. org</strong></span>.
-</dd></dl></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="transifex_uploading"></a>Uploading to Transifex</h4></div></div></div><p>There’s several different ways to upload a finished (or semi-finished)
-translation for a new language to Transifex. The easiest way is to browse to
-the <a class="ulink" href="http://www.transifex.net/projects/p/calcurse/teams/" target="_top">Translation Teams</a> page
-and request the addition of a new team.</p><p>As soon as we accepted your request, you will be able to upload your <span class="strong"><strong>po</strong></span> file
-on the
-<a class="ulink" href="http://www.transifex.net/projects/p/calcurse/resource/calcursepot/" target="_top">calcurse
-resource page</a> by clicking the <span class="strong"><strong>Add translation</strong></span> button at the bottom.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_using_transifex_client"></a>Using transifex-client</h4></div></div></div><p>You can also use a command line client to submit translations instead of having
-to use the web interface every time you want to submit an updated version. If
-you have a recent version of <code class="literal">setuptools</code> installed, you can get the CLI client
-by issuing the following command:</p><pre class="screen">$ easy_install -U transifex-client</pre><p>Alternatively, you can get the source code of transifex-client at
-<a class="ulink" href="http://pypi.python.org/pypi/transifex-client" target="_top">http://pypi.python.org/pypi/transifex-client</a>.</p><p>After you downloaded and installed the client, run the following commands in
-the calcurse source directory to checkout the translation resources of
-<span class="strong"><strong>calcurse</strong></span>:</p><pre class="screen">$ tx pull -a</pre><p>To submit changes back to the server, use:</p><pre class="screen">$ tx push -r calcurse.calcursepot -t -l &lt;locale&gt;</pre><p>For more details, read up on <code class="literal">transifex-client</code> usage at the
-<a class="ulink" href="http://help.transifex.net/user-guide/client/" target="_top">The Transifex Command-line Client
-v0.4</a> section of the <a class="ulink" href="http://help.transifex.net/" target="_top">Transifex documentation</a>.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="transifex_webui"></a>Using the Transifex web UI</h4></div></div></div><p>As an alternative to editing <span class="strong"><strong>po</strong></span> files, there is a web-based interface that
-can be used to create and update translations. After having signed up and
-created a new translation team (see <a class="link" href="ar01s08.html#transifex_uploading" title="Uploading to Transifex">Uploading to Transifex</a> on how to do that), click the <span class="strong"><strong>Add translation</strong></span> button at the
-bottom on the
-<a class="ulink" href="http://www.transifex.net/projects/p/calcurse/resource/calcursepot/" target="_top">calcurse
-resource page</a>, select the language you’d like to translate and choose
-<span class="strong"><strong>Translate Online</strong></span>.</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ar01s07.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ar01s09.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html> \ No newline at end of file
diff --git a/files/manual.chunked/ar01s09.html b/files/manual.chunked/ar01s09.html
deleted file mode 100644
index adb3a36..0000000
--- a/files/manual.chunked/ar01s09.html
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>9. Links</title><link rel="stylesheet" type="text/css" href="docbook-xsl.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="CALCURSE - text-based organizer" /><link rel="up" href="index.html" title="CALCURSE - text-based organizer" /><link rel="prev" href="ar01s08.html" title="8. How to contribute?" /><link rel="next" href="ar01s10.html" title="10. Thanks" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><td width="20%" align="left"><a accesskey="p" href="ar01s08.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ar01s10.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_links"></a>9. Links</h2></div></div></div><p>This section contains links and references that may be of interest to you.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_calcurse_homepage"></a>9.1. calcurse homepage</h3></div></div></div><p>The <code class="literal">calcurse</code> homepage can be found at <a class="ulink" href="http://calcurse.org" target="_top">http://calcurse.org</a></p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_calcurse_announce_list"></a>9.2. calcurse announce list</h3></div></div></div><p>If you are interested in the project and want to be warned when a new release
-comes out, you can subscribe to the <code class="literal">calcurse</code> announce list. In doing so, you
-will receive an email as soon as a new feature appears in <code class="literal">calcurse</code>.</p><p>To subscribe to this list, send a message to <span class="strong"><strong>announce+subscribe .at. calcurse
-.dot. org</strong></span> with "subscribe" in the subject field.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="links_others"></a>9.3. Other links</h3></div></div></div><p>You may want to look at the ical format specification (rfc2445) at:
-<a class="ulink" href="http://tools.ietf.org/html/rfc2445" target="_top">http://tools.ietf.org/html/rfc2445</a></p><p>The pcal project page can be found at: <a class="ulink" href="http://pcal.sourceforge.net/" target="_top">http://pcal.sourceforge.net/</a></p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ar01s08.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ar01s10.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html> \ No newline at end of file
diff --git a/files/manual.chunked/ar01s10.html b/files/manual.chunked/ar01s10.html
deleted file mode 100644
index 2a524cb..0000000
--- a/files/manual.chunked/ar01s10.html
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>10. Thanks</title><link rel="stylesheet" type="text/css" href="docbook-xsl.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="CALCURSE - text-based organizer" /><link rel="up" href="index.html" title="CALCURSE - text-based organizer" /><link rel="prev" href="ar01s09.html" title="9. Links" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><td width="20%" align="left"><a accesskey="p" href="ar01s09.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> </td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_thanks"></a>10. Thanks</h2></div></div></div><p>Its time now to thank other people without whom this program would not exist!
-So here is a list of contributing persons I would like to thank :</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Alex for its patches, help and advices with <code class="literal">C</code> programming
-</li><li class="listitem">
-Gwen for testing and general discussions about how to improve <code class="literal">calcurse</code>
-</li><li class="listitem">
-Herbert for packaging <code class="literal">calcurse</code> for FreeBSD
-</li><li class="listitem">
-Zul for packaging <code class="literal">calcurse</code> for NetBSD
-</li><li class="listitem">
-Wain, Steffen and Ronald for packaging <code class="literal">calcurse</code> for Archlinux
-</li><li class="listitem">
-Kevin, Ryan, and fEnIo for packaging <code class="literal">calcurse</code> for Debian and Ubuntu
-</li><li class="listitem">
-Pascal for packaging <code class="literal">calcurse</code> for Slackware
-</li><li class="listitem">
-Alexandre and Markus for packaging <code class="literal">calcurse</code> for Mac OsX and Darwin
-</li><li class="listitem">
-Igor for packaging <code class="literal">calcurse</code> for ALT Linux
-</li><li class="listitem">
-Joel for its calendar script which inspired <code class="literal">calcurse</code> calendar view
-</li><li class="listitem">
-Jeremy Roon for the Dutch translation
-</li><li class="listitem">
-Frédéric Culot, Toucouch, Erik Saule, Stéphane Aulery
- and Baptiste Jonglez for the French translation
-</li><li class="listitem">
-Michael Schulz, Chris M., Benjamin Moeller and Lukas Fleischer for the German
- translation
-</li><li class="listitem">
-Rafael Ferreira for the Portuguese (Brazil) translation
-</li><li class="listitem">
-Aleksey Mechonoshin for the Russian translation
-</li><li class="listitem">
-Jose Lopez for the Spanish translation
-</li><li class="listitem">
-Tony for its patch which helped improving the recur_item_inday() function,
- and for implementing the date format configuration options
-</li><li class="listitem">
-Erik Saule for its patch implementing the <code class="literal">-N</code>, <code class="literal">-s</code>, <code class="literal">-S</code>, <code class="literal">-r</code> and <code class="literal">-D</code>
- flags
-</li><li class="listitem"><p class="simpara">
-people who write softwares I like and which inspired me, especially :
-</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem">
-<code class="literal">vim</code> for the displacement keys
-</li><li class="listitem">
-<code class="literal">orpheus</code> and <code class="literal">abook</code> for documentation
-</li><li class="listitem">
-<code class="literal">pine</code> and <code class="literal">aptitude</code> for the text user interface
-</li><li class="listitem">
-<code class="literal">tmux</code> for coding style
-</li></ul></div></li></ul></div><p>And last, many many thanks to all of the <code class="literal">calcurse</code> users who sent me their
-feedback.</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ar01s09.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> </td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html> \ No newline at end of file
diff --git a/files/manual.chunked/docbook-xsl.css b/files/manual.chunked/docbook-xsl.css
deleted file mode 100644
index ee9ca46..0000000
--- a/files/manual.chunked/docbook-xsl.css
+++ /dev/null
@@ -1,329 +0,0 @@
-/*
- CSS stylesheet for XHTML produced by DocBook XSL stylesheets.
-*/
-
-body {
- font-family: Georgia,serif;
-}
-
-code, pre {
- font-family: "Courier New", Courier, monospace;
-}
-
-span.strong {
- font-weight: bold;
-}
-
-body blockquote {
- margin-top: .75em;
- line-height: 1.5;
- margin-bottom: .75em;
-}
-
-html body {
- margin: 1em 5% 1em 5%;
- line-height: 1.2;
-}
-
-body div {
- margin: 0;
-}
-
-h1, h2, h3, h4, h5, h6
-{
- color: #527bbd;
- font-family: Arial,Helvetica,sans-serif;
-}
-
-div.toc p:first-child,
-div.list-of-figures p:first-child,
-div.list-of-tables p:first-child,
-div.list-of-examples p:first-child,
-div.example p.title,
-div.sidebar p.title
-{
- font-weight: bold;
- color: #527bbd;
- font-family: Arial,Helvetica,sans-serif;
- margin-bottom: 0.2em;
-}
-
-body h1 {
- margin: .0em 0 0 -4%;
- line-height: 1.3;
- border-bottom: 2px solid silver;
-}
-
-body h2 {
- margin: 0.5em 0 0 -4%;
- line-height: 1.3;
- border-bottom: 2px solid silver;
-}
-
-body h3 {
- margin: .8em 0 0 -3%;
- line-height: 1.3;
-}
-
-body h4 {
- margin: .8em 0 0 -3%;
- line-height: 1.3;
-}
-
-body h5 {
- margin: .8em 0 0 -2%;
- line-height: 1.3;
-}
-
-body h6 {
- margin: .8em 0 0 -1%;
- line-height: 1.3;
-}
-
-body hr {
- border: none; /* Broken on IE6 */
-}
-div.footnotes hr {
- border: 1px solid silver;
-}
-
-div.navheader th, div.navheader td, div.navfooter td {
- font-family: Arial,Helvetica,sans-serif;
- font-size: 0.9em;
- font-weight: bold;
- color: #527bbd;
-}
-div.navheader img, div.navfooter img {
- border-style: none;
-}
-div.navheader a, div.navfooter a {
- font-weight: normal;
-}
-div.navfooter hr {
- border: 1px solid silver;
-}
-
-body td {
- line-height: 1.2
-}
-
-body th {
- line-height: 1.2;
-}
-
-ol {
- line-height: 1.2;
-}
-
-ul, body dir, body menu {
- line-height: 1.2;
-}
-
-html {
- margin: 0;
- padding: 0;
-}
-
-body h1, body h2, body h3, body h4, body h5, body h6 {
- margin-left: 0
-}
-
-body pre {
- margin: 0.5em 10% 0.5em 1em;
- line-height: 1.0;
- color: navy;
-}
-
-tt.literal, code.literal {
- color: navy;
-}
-
-.programlisting, .screen {
- border: 1px solid silver;
- background: #f4f4f4;
- margin: 0.5em 10% 0.5em 0;
- padding: 0.5em 1em;
-}
-
-div.sidebar {
- background: #ffffee;
- margin: 1.0em 10% 0.5em 0;
- padding: 0.5em 1em;
- border: 1px solid silver;
-}
-div.sidebar * { padding: 0; }
-div.sidebar div { margin: 0; }
-div.sidebar p.title {
- margin-top: 0.5em;
- margin-bottom: 0.2em;
-}
-
-div.bibliomixed {
- margin: 0.5em 5% 0.5em 1em;
-}
-
-div.glossary dt {
- font-weight: bold;
-}
-div.glossary dd p {
- margin-top: 0.2em;
-}
-
-dl {
- margin: .8em 0;
- line-height: 1.2;
-}
-
-dt {
- margin-top: 0.5em;
-}
-
-dt span.term {
- font-style: normal;
- color: navy;
-}
-
-div.variablelist dd p {
- margin-top: 0;
-}
-
-div.itemizedlist li, div.orderedlist li {
- margin-left: -0.8em;
- margin-top: 0.5em;
-}
-
-ul, ol {
- list-style-position: outside;
-}
-
-div.sidebar ul, div.sidebar ol {
- margin-left: 2.8em;
-}
-
-div.itemizedlist p.title,
-div.orderedlist p.title,
-div.variablelist p.title
-{
- margin-bottom: -0.8em;
-}
-
-div.revhistory table {
- border-collapse: collapse;
- border: none;
-}
-div.revhistory th {
- border: none;
- color: #527bbd;
- font-family: Arial,Helvetica,sans-serif;
-}
-div.revhistory td {
- border: 1px solid silver;
-}
-
-/* Keep TOC and index lines close together. */
-div.toc dl, div.toc dt,
-div.list-of-figures dl, div.list-of-figures dt,
-div.list-of-tables dl, div.list-of-tables dt,
-div.indexdiv dl, div.indexdiv dt
-{
- line-height: normal;
- margin-top: 0;
- margin-bottom: 0;
-}
-
-/*
- Table styling does not work because of overriding attributes in
- generated HTML.
-*/
-div.table table,
-div.informaltable table
-{
- margin-left: 0;
- margin-right: 5%;
- margin-bottom: 0.8em;
-}
-div.informaltable table
-{
- margin-top: 0.4em
-}
-div.table thead,
-div.table tfoot,
-div.table tbody,
-div.informaltable thead,
-div.informaltable tfoot,
-div.informaltable tbody
-{
- /* No effect in IE6. */
- border-top: 3px solid #527bbd;
- border-bottom: 3px solid #527bbd;
-}
-div.table thead, div.table tfoot,
-div.informaltable thead, div.informaltable tfoot
-{
- font-weight: bold;
-}
-
-div.mediaobject img {
- margin-bottom: 0.8em;
-}
-div.figure p.title,
-div.table p.title
-{
- margin-top: 1em;
- margin-bottom: 0.4em;
-}
-
-div.calloutlist p
-{
- margin-top: 0em;
- margin-bottom: 0.4em;
-}
-
-a img {
- border-style: none;
-}
-
-@media print {
- div.navheader, div.navfooter { display: none; }
-}
-
-span.aqua { color: aqua; }
-span.black { color: black; }
-span.blue { color: blue; }
-span.fuchsia { color: fuchsia; }
-span.gray { color: gray; }
-span.green { color: green; }
-span.lime { color: lime; }
-span.maroon { color: maroon; }
-span.navy { color: navy; }
-span.olive { color: olive; }
-span.purple { color: purple; }
-span.red { color: red; }
-span.silver { color: silver; }
-span.teal { color: teal; }
-span.white { color: white; }
-span.yellow { color: yellow; }
-
-span.aqua-background { background: aqua; }
-span.black-background { background: black; }
-span.blue-background { background: blue; }
-span.fuchsia-background { background: fuchsia; }
-span.gray-background { background: gray; }
-span.green-background { background: green; }
-span.lime-background { background: lime; }
-span.maroon-background { background: maroon; }
-span.navy-background { background: navy; }
-span.olive-background { background: olive; }
-span.purple-background { background: purple; }
-span.red-background { background: red; }
-span.silver-background { background: silver; }
-span.teal-background { background: teal; }
-span.white-background { background: white; }
-span.yellow-background { background: yellow; }
-
-span.big { font-size: 2em; }
-span.small { font-size: 0.6em; }
-
-span.underline { text-decoration: underline; }
-span.overline { text-decoration: overline; }
-span.line-through { text-decoration: line-through; }
diff --git a/files/manual.chunked/index.html b/files/manual.chunked/index.html
deleted file mode 100644
index 133fdbf..0000000
--- a/files/manual.chunked/index.html
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>CALCURSE - text-based organizer</title><link rel="stylesheet" type="text/css" href="docbook-xsl.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /><link rel="home" href="index.html" title="CALCURSE - text-based organizer" /><link rel="next" href="ar01s01.html" title="1. Introduction" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><td width="20%" align="left"> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ar01s01.html">Next</a></td></tr></table><hr /></div><div xml:lang="en" class="article" lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="idm140468952919024"></a>CALCURSE - text-based organizer</h2></div></div><hr /></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="ar01s01.html">1. Introduction</a></span></dt><dt><span class="section"><a href="ar01s02.html">2. Overview</a></span></dt><dd><dl><dt><span class="section"><a href="ar01s02.html#_creation_history">2.1. Creation history</a></span></dt><dt><span class="section"><a href="ar01s02.html#_important_features">2.2. Important features</a></span></dt></dl></dd><dt><span class="section"><a href="ar01s03.html">3. Installation</a></span></dt><dd><dl><dt><span class="section"><a href="ar01s03.html#_requirements">3.1. Requirements</a></span></dt><dt><span class="section"><a href="ar01s03.html#install_process">3.2. Install process</a></span></dt></dl></dd><dt><span class="section"><a href="ar01s04.html">4. calcurse basics</a></span></dt><dd><dl><dt><span class="section"><a href="ar01s04.html#_invocation">4.1. Invocation</a></span></dt><dt><span class="section"><a href="ar01s04.html#_user_interface">4.2. User interface</a></span></dt><dt><span class="section"><a href="ar01s04.html#basics_daemon">4.3. Background mode</a></span></dt><dt><span class="section"><a href="ar01s04.html#basics_files">4.4. calcurse files</a></span></dt><dt><span class="section"><a href="ar01s04.html#_import_export_capabilities">4.5. Import/Export capabilities</a></span></dt><dt><span class="section"><a href="ar01s04.html#_online_help">4.6. Online help</a></span></dt></dl></dd><dt><span class="section"><a href="ar01s05.html">5. Options</a></span></dt><dd><dl><dt><span class="section"><a href="ar01s05.html#options_general">5.1. General options</a></span></dt><dt><span class="section"><a href="ar01s05.html#options_keys">5.2. Key bindings</a></span></dt><dt><span class="section"><a href="ar01s05.html#_color_themes">5.3. Color themes</a></span></dt><dt><span class="section"><a href="ar01s05.html#_layout_configuration">5.4. Layout configuration</a></span></dt><dt><span class="section"><a href="ar01s05.html#_sidebar_configuration">5.5. Sidebar configuration</a></span></dt><dt><span class="section"><a href="ar01s05.html#options_notify">5.6. Notify-bar settings</a></span></dt></dl></dd><dt><span class="section"><a href="ar01s06.html">6. Known bugs</a></span></dt><dt><span class="section"><a href="ar01s07.html">7. Reporting bugs and feedback</a></span></dt><dt><span class="section"><a href="ar01s08.html">8. How to contribute?</a></span></dt><dd><dl><dt><span class="section"><a href="ar01s08.html#_translating_documentation">8.1. Translating documentation</a></span></dt><dt><span class="section"><a href="ar01s08.html#_calcurse_i18n">8.2. calcurse i18n</a></span></dt></dl></dd><dt><span class="section"><a href="ar01s09.html">9. Links</a></span></dt><dd><dl><dt><span class="section"><a href="ar01s09.html#_calcurse_homepage">9.1. calcurse homepage</a></span></dt><dt><span class="section"><a href="ar01s09.html#_calcurse_announce_list">9.2. calcurse announce list</a></span></dt><dt><span class="section"><a href="ar01s09.html#links_others">9.3. Other links</a></span></dt></dl></dd><dt><span class="section"><a href="ar01s10.html">10. Thanks</a></span></dt></dl></div><div class="abstract"><a id="_abstract"></a><p class="title"><strong>Abstract</strong></p><p>This manual describes <code class="literal">calcurse</code> functionalities, and how to use them. The
-installation from source is first described, together with the available
-command line arguments. The user interface is then presented, with all of the
-customizable options that change <code class="literal">calcurse</code> behavior. Last, bug reporting
-procedure is explained, as well as the way one can contribute to <code class="literal">calcurse</code>
-development.</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ar01s01.html">Next</a></td></tr></table></div></body></html> \ No newline at end of file
diff --git a/files/manual.html b/files/manual.html
index 40d8c7c..b807666 100644
--- a/files/manual.html
+++ b/files/manual.html
@@ -1,2755 +1,2569 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
- "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-<head>
-<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
-<meta name="generator" content="AsciiDoc 8.6.9" />
-<meta name="viewport" content="width=device-width, initial-scale=1">
-<title>CALCURSE - text-based organizer</title>
-<style type="text/css">
-/* Shared CSS for AsciiDoc xhtml11 and html5 backends */
-
-/* Default font. */
-body {
- font-family: Georgia,serif;
-}
-
-/* Title font. */
-h1, h2, h3, h4, h5, h6,
-div.title, caption.title,
-thead, p.table.header,
-#toctitle,
-#author, #revnumber, #revdate, #revremark,
-#footer {
- font-family: Arial,Helvetica,sans-serif;
-}
-
-body {
- margin: 1em 5% 1em 5%;
-}
-
-a {
- color: blue;
- text-decoration: underline;
-}
-a:visited {
- color: fuchsia;
-}
-
-em {
- font-style: italic;
- color: navy;
-}
-
-strong {
- font-weight: bold;
- color: #083194;
-}
-
-h1, h2, h3, h4, h5, h6 {
- color: #527bbd;
- margin-top: 1.2em;
- margin-bottom: 0.5em;
- line-height: 1.3;
-}
-
-h1, h2, h3 {
- border-bottom: 2px solid silver;
-}
-h2 {
- padding-top: 0.5em;
-}
-h3 {
- float: left;
-}
-h3 + * {
- clear: left;
-}
-h5 {
- font-size: 1.0em;
-}
-
-div.sectionbody {
- margin-left: 0;
-}
-
-hr {
- border: 1px solid silver;
-}
-
-p {
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-
-ul, ol, li > p {
- margin-top: 0;
-}
-ul > li { color: #aaa; }
-ul > li > * { color: black; }
-
-.monospaced, code, pre {
- font-family: "Courier New", Courier, monospace;
- font-size: inherit;
- color: navy;
- padding: 0;
- margin: 0;
-}
-pre {
- white-space: pre-wrap;
-}
-
-#author {
- color: #527bbd;
- font-weight: bold;
- font-size: 1.1em;
-}
-#email {
-}
-#revnumber, #revdate, #revremark {
-}
-
-#footer {
- font-size: small;
- border-top: 2px solid silver;
- padding-top: 0.5em;
- margin-top: 4.0em;
-}
-#footer-text {
- float: left;
- padding-bottom: 0.5em;
-}
-#footer-badges {
- float: right;
- padding-bottom: 0.5em;
-}
-
-#preamble {
- margin-top: 1.5em;
- margin-bottom: 1.5em;
-}
-div.imageblock, div.exampleblock, div.verseblock,
-div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
-div.admonitionblock {
- margin-top: 1.0em;
- margin-bottom: 1.5em;
-}
-div.admonitionblock {
- margin-top: 2.0em;
- margin-bottom: 2.0em;
- margin-right: 10%;
- color: #606060;
-}
-
-div.content { /* Block element content. */
- padding: 0;
-}
-
-/* Block element titles. */
-div.title, caption.title {
- color: #527bbd;
- font-weight: bold;
- text-align: left;
- margin-top: 1.0em;
- margin-bottom: 0.5em;
-}
-div.title + * {
- margin-top: 0;
-}
-
-td div.title:first-child {
- margin-top: 0.0em;
-}
-div.content div.title:first-child {
- margin-top: 0.0em;
-}
-div.content + div.title {
- margin-top: 0.0em;
-}
-
-div.sidebarblock > div.content {
- background: #ffffee;
- border: 1px solid #dddddd;
- border-left: 4px solid #f0f0f0;
- padding: 0.5em;
-}
-
-div.listingblock > div.content {
- border: 1px solid #dddddd;
- border-left: 5px solid #f0f0f0;
- background: #f8f8f8;
- padding: 0.5em;
-}
-
-div.quoteblock, div.verseblock {
- padding-left: 1.0em;
- margin-left: 1.0em;
- margin-right: 10%;
- border-left: 5px solid #f0f0f0;
- color: #888;
-}
-
-div.quoteblock > div.attribution {
- padding-top: 0.5em;
- text-align: right;
-}
-
-div.verseblock > pre.content {
- font-family: inherit;
- font-size: inherit;
-}
-div.verseblock > div.attribution {
- padding-top: 0.75em;
- text-align: left;
-}
-/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
-div.verseblock + div.attribution {
- text-align: left;
-}
-
-div.admonitionblock .icon {
- vertical-align: top;
- font-size: 1.1em;
- font-weight: bold;
- text-decoration: underline;
- color: #527bbd;
- padding-right: 0.5em;
-}
-div.admonitionblock td.content {
- padding-left: 0.5em;
- border-left: 3px solid #dddddd;
-}
-
-div.exampleblock > div.content {
- border-left: 3px solid #dddddd;
- padding-left: 0.5em;
-}
-
-div.imageblock div.content { padding-left: 0; }
-span.image img { border-style: none; vertical-align: text-bottom; }
-a.image:visited { color: white; }
-
-dl {
- margin-top: 0.8em;
- margin-bottom: 0.8em;
-}
-dt {
- margin-top: 0.5em;
- margin-bottom: 0;
- font-style: normal;
- color: navy;
-}
-dd > *:first-child {
- margin-top: 0.1em;
-}
-
-ul, ol {
- list-style-position: outside;
-}
-ol.arabic {
- list-style-type: decimal;
-}
-ol.loweralpha {
- list-style-type: lower-alpha;
-}
-ol.upperalpha {
- list-style-type: upper-alpha;
-}
-ol.lowerroman {
- list-style-type: lower-roman;
-}
-ol.upperroman {
- list-style-type: upper-roman;
-}
-
-div.compact ul, div.compact ol,
-div.compact p, div.compact p,
-div.compact div, div.compact div {
- margin-top: 0.1em;
- margin-bottom: 0.1em;
-}
-
-tfoot {
- font-weight: bold;
-}
-td > div.verse {
- white-space: pre;
-}
-
-div.hdlist {
- margin-top: 0.8em;
- margin-bottom: 0.8em;
-}
-div.hdlist tr {
- padding-bottom: 15px;
-}
-dt.hdlist1.strong, td.hdlist1.strong {
- font-weight: bold;
-}
-td.hdlist1 {
- vertical-align: top;
- font-style: normal;
- padding-right: 0.8em;
- color: navy;
-}
-td.hdlist2 {
- vertical-align: top;
-}
-div.hdlist.compact tr {
- margin: 0;
- padding-bottom: 0;
-}
-
-.comment {
- background: yellow;
-}
-
-.footnote, .footnoteref {
- font-size: 0.8em;
-}
-
-span.footnote, span.footnoteref {
- vertical-align: super;
-}
-
-#footnotes {
- margin: 20px 0 20px 0;
- padding: 7px 0 0 0;
-}
-
-#footnotes div.footnote {
- margin: 0 0 5px 0;
-}
-
-#footnotes hr {
- border: none;
- border-top: 1px solid silver;
- height: 1px;
- text-align: left;
- margin-left: 0;
- width: 20%;
- min-width: 100px;
-}
-
-div.colist td {
- padding-right: 0.5em;
- padding-bottom: 0.3em;
- vertical-align: top;
-}
-div.colist td img {
- margin-top: 0.3em;
-}
-
-@media print {
- #footer-badges { display: none; }
-}
-
-#toc {
- margin-bottom: 2.5em;
-}
-
-#toctitle {
- color: #527bbd;
- font-size: 1.1em;
- font-weight: bold;
- margin-top: 1.0em;
- margin-bottom: 0.1em;
-}
-
-div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
- margin-top: 0;
- margin-bottom: 0;
-}
-div.toclevel2 {
- margin-left: 2em;
- font-size: 0.9em;
-}
-div.toclevel3 {
- margin-left: 4em;
- font-size: 0.9em;
-}
-div.toclevel4 {
- margin-left: 6em;
- font-size: 0.9em;
-}
-
-span.aqua { color: aqua; }
-span.black { color: black; }
-span.blue { color: blue; }
-span.fuchsia { color: fuchsia; }
-span.gray { color: gray; }
-span.green { color: green; }
-span.lime { color: lime; }
-span.maroon { color: maroon; }
-span.navy { color: navy; }
-span.olive { color: olive; }
-span.purple { color: purple; }
-span.red { color: red; }
-span.silver { color: silver; }
-span.teal { color: teal; }
-span.white { color: white; }
-span.yellow { color: yellow; }
-
-span.aqua-background { background: aqua; }
-span.black-background { background: black; }
-span.blue-background { background: blue; }
-span.fuchsia-background { background: fuchsia; }
-span.gray-background { background: gray; }
-span.green-background { background: green; }
-span.lime-background { background: lime; }
-span.maroon-background { background: maroon; }
-span.navy-background { background: navy; }
-span.olive-background { background: olive; }
-span.purple-background { background: purple; }
-span.red-background { background: red; }
-span.silver-background { background: silver; }
-span.teal-background { background: teal; }
-span.white-background { background: white; }
-span.yellow-background { background: yellow; }
-
-span.big { font-size: 2em; }
-span.small { font-size: 0.6em; }
-
-span.underline { text-decoration: underline; }
-span.overline { text-decoration: overline; }
-span.line-through { text-decoration: line-through; }
-
-div.unbreakable { page-break-inside: avoid; }
-
-
-/*
- * xhtml11 specific
- *
- * */
-
-div.tableblock {
- margin-top: 1.0em;
- margin-bottom: 1.5em;
-}
-div.tableblock > table {
- border: 3px solid #527bbd;
-}
-thead, p.table.header {
- font-weight: bold;
- color: #527bbd;
-}
-p.table {
- margin-top: 0;
-}
-/* Because the table frame attribute is overriden by CSS in most browsers. */
-div.tableblock > table[frame="void"] {
- border-style: none;
-}
-div.tableblock > table[frame="hsides"] {
- border-left-style: none;
- border-right-style: none;
-}
-div.tableblock > table[frame="vsides"] {
- border-top-style: none;
- border-bottom-style: none;
-}
-
-
-/*
- * html5 specific
- *
- * */
-
-table.tableblock {
- margin-top: 1.0em;
- margin-bottom: 1.5em;
-}
-thead, p.tableblock.header {
- font-weight: bold;
- color: #527bbd;
-}
-p.tableblock {
- margin-top: 0;
-}
-table.tableblock {
- border-width: 3px;
- border-spacing: 0px;
- border-style: solid;
- border-color: #527bbd;
- border-collapse: collapse;
-}
-th.tableblock, td.tableblock {
- border-width: 1px;
- padding: 4px;
- border-style: solid;
- border-color: #527bbd;
-}
-
-table.tableblock.frame-topbot {
- border-left-style: hidden;
- border-right-style: hidden;
-}
-table.tableblock.frame-sides {
- border-top-style: hidden;
- border-bottom-style: hidden;
-}
-table.tableblock.frame-none {
- border-style: hidden;
-}
-
-th.tableblock.halign-left, td.tableblock.halign-left {
- text-align: left;
-}
-th.tableblock.halign-center, td.tableblock.halign-center {
- text-align: center;
-}
-th.tableblock.halign-right, td.tableblock.halign-right {
- text-align: right;
-}
-
-th.tableblock.valign-top, td.tableblock.valign-top {
- vertical-align: top;
-}
-th.tableblock.valign-middle, td.tableblock.valign-middle {
- vertical-align: middle;
-}
-th.tableblock.valign-bottom, td.tableblock.valign-bottom {
- vertical-align: bottom;
-}
-
-
-/*
- * manpage specific
- *
- * */
-
-body.manpage h1 {
- padding-top: 0.5em;
- padding-bottom: 0.5em;
- border-top: 2px solid silver;
- border-bottom: 2px solid silver;
-}
-body.manpage h2 {
- border-style: none;
-}
-body.manpage div.sectionbody {
- margin-left: 3em;
-}
-
-@media print {
- body.manpage div#toc { display: none; }
-}
-
-
-</style>
-<script type="text/javascript">
-/*<![CDATA[*/
-var asciidoc = { // Namespace.
-
-/////////////////////////////////////////////////////////////////////
-// Table Of Contents generator
-/////////////////////////////////////////////////////////////////////
-
-/* Author: Mihai Bazon, September 2002
- * http://students.infoiasi.ro/~mishoo
- *
- * Table Of Content generator
- * Version: 0.4
- *
- * Feel free to use this script under the terms of the GNU General Public
- * License, as long as you do not remove or alter this notice.
- */
-
- /* modified by Troy D. Hanson, September 2006. License: GPL */
- /* modified by Stuart Rackham, 2006, 2009. License: GPL */
-
-// toclevels = 1..4.
-toc: function (toclevels) {
-
- function getText(el) {
- var text = "";
- for (var i = el.firstChild; i != null; i = i.nextSibling) {
- if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
- text += i.data;
- else if (i.firstChild != null)
- text += getText(i);
- }
- return text;
- }
-
- function TocEntry(el, text, toclevel) {
- this.element = el;
- this.text = text;
- this.toclevel = toclevel;
- }
-
- function tocEntries(el, toclevels) {
- var result = new Array;
- var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
- // Function that scans the DOM tree for header elements (the DOM2
- // nodeIterator API would be a better technique but not supported by all
- // browsers).
- var iterate = function (el) {
- for (var i = el.firstChild; i != null; i = i.nextSibling) {
- if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
- var mo = re.exec(i.tagName);
- if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
- result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
- }
- iterate(i);
- }
- }
- }
- iterate(el);
- return result;
- }
-
- var toc = document.getElementById("toc");
- if (!toc) {
- return;
- }
-
- // Delete existing TOC entries in case we're reloading the TOC.
- var tocEntriesToRemove = [];
- var i;
- for (i = 0; i < toc.childNodes.length; i++) {
- var entry = toc.childNodes[i];
- if (entry.nodeName.toLowerCase() == 'div'
- && entry.getAttribute("class")
- && entry.getAttribute("class").match(/^toclevel/))
- tocEntriesToRemove.push(entry);
- }
- for (i = 0; i < tocEntriesToRemove.length; i++) {
- toc.removeChild(tocEntriesToRemove[i]);
- }
-
- // Rebuild TOC entries.
- var entries = tocEntries(document.getElementById("content"), toclevels);
- for (var i = 0; i < entries.length; ++i) {
- var entry = entries[i];
- if (entry.element.id == "")
- entry.element.id = "_toc_" + i;
- var a = document.createElement("a");
- a.href = "#" + entry.element.id;
- a.appendChild(document.createTextNode(entry.text));
- var div = document.createElement("div");
- div.appendChild(a);
- div.className = "toclevel" + entry.toclevel;
- toc.appendChild(div);
- }
- if (entries.length == 0)
- toc.parentNode.removeChild(toc);
-},
-
-
-/////////////////////////////////////////////////////////////////////
-// Footnotes generator
-/////////////////////////////////////////////////////////////////////
-
-/* Based on footnote generation code from:
- * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
- */
-
-footnotes: function () {
- // Delete existing footnote entries in case we're reloading the footnodes.
- var i;
- var noteholder = document.getElementById("footnotes");
- if (!noteholder) {
- return;
- }
- var entriesToRemove = [];
- for (i = 0; i < noteholder.childNodes.length; i++) {
- var entry = noteholder.childNodes[i];
- if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
- entriesToRemove.push(entry);
- }
- for (i = 0; i < entriesToRemove.length; i++) {
- noteholder.removeChild(entriesToRemove[i]);
- }
-
- // Rebuild footnote entries.
- var cont = document.getElementById("content");
- var spans = cont.getElementsByTagName("span");
- var refs = {};
- var n = 0;
- for (i=0; i<spans.length; i++) {
- if (spans[i].className == "footnote") {
- n++;
- var note = spans[i].getAttribute("data-note");
- if (!note) {
- // Use [\s\S] in place of . so multi-line matches work.
- // Because JavaScript has no s (dotall) regex flag.
- note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
- spans[i].innerHTML =
- "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
- "' title='View footnote' class='footnote'>" + n + "</a>]";
- spans[i].setAttribute("data-note", note);
- }
- noteholder.innerHTML +=
- "<div class='footnote' id='_footnote_" + n + "'>" +
- "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
- n + "</a>. " + note + "</div>";
- var id =spans[i].getAttribute("id");
- if (id != null) refs["#"+id] = n;
- }
- }
- if (n == 0)
- noteholder.parentNode.removeChild(noteholder);
- else {
- // Process footnoterefs.
- for (i=0; i<spans.length; i++) {
- if (spans[i].className == "footnoteref") {
- var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
- href = href.match(/#.*/)[0]; // Because IE return full URL.
- n = refs[href];
- spans[i].innerHTML =
- "[<a href='#_footnote_" + n +
- "' title='View footnote' class='footnote'>" + n + "</a>]";
- }
- }
- }
-},
-
-install: function(toclevels) {
- var timerId;
-
- function reinstall() {
- asciidoc.footnotes();
- if (toclevels) {
- asciidoc.toc(toclevels);
- }
- }
-
- function reinstallAndRemoveTimer() {
- clearInterval(timerId);
- reinstall();
- }
-
- timerId = setInterval(reinstall, 500);
- if (document.addEventListener)
- document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
- else
- window.onload = reinstallAndRemoveTimer;
-}
-
-}
-asciidoc.install();
-/*]]>*/
-</script>
-</head>
-<body class="article">
-<div id="header">
-<h1>CALCURSE - text-based organizer</h1>
-</div>
-<div id="content">
-<div class="sect1">
-<h2 id="_abstract">Abstract</h2>
-<div class="sectionbody">
-<div class="paragraph"><p>This manual describes <code>calcurse</code> functionalities, and how to use them. The
-installation from source is first described, together with the available
-command line arguments. The user interface is then presented, with all of the
-customizable options that change <code>calcurse</code> behavior. Last, bug reporting
-procedure is explained, as well as the way one can contribute to <code>calcurse</code>
-development.</p></div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_introduction">Introduction</h2>
-<div class="sectionbody">
-<div class="paragraph"><p><code>calcurse</code> is a text-based calendar and scheduling application. It helps
-keeping track of events, appointments and everyday tasks. A configurable
-notification system reminds user of upcoming deadlines, and the curses based
-interface can be customized to suit user needs. All of the commands are
-documented within an online help system.</p></div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_overview">Overview</h2>
-<div class="sectionbody">
-<div class="sect2">
-<h3 id="_creation_history">Creation history</h3>
-<div class="paragraph"><p>Frederic started thinking about this project when he was finishing his Ph.D. in
-Astrophysics as it started to be a little hard to organize himself and he
-really needed a good tool for managing his appointments and todo list.
-Unfortunately, he finished his Ph.D. before finishing <code>calcurse</code> but he
-continued working on it, hoping it would be helpful to other people.</p></div>
-<div class="paragraph"><p>In mid-2010, Lukas took over development of <code>calcurse</code> and is now the main
-contributor and reviewer of patches.</p></div>
-<div class="paragraph"><p>But why <code>calcurse</code> anyway? Well, it is simply the concatenation of *cal*endar
-and *curse*s, the name of the library used to build the user interface.</p></div>
-</div>
-<div class="sect2">
-<h3 id="_important_features">Important features</h3>
-<div class="paragraph"><p><code>Calcurse</code> is multi-platform and intended to be lightweight, fast and reliable.
-It is to be used inside a console or terminal, locally or on a distant machine
-within an ssh (or similar) connection.</p></div>
-<div class="paragraph"><p><code>Calcurse</code> can be run in two different modes : interactive or non-interactive
-mode. The first mode allows oneself to view its own personal organizer almost
-everywhere, thanks to the text-based interface. The second mode permits to
-easily build reminders just by adding <code>calcurse</code> with appropriate command line
-arguments inside a cron tab or within a shell init script.</p></div>
-<div class="paragraph"><p>Moreover, <code>calcurse</code> was created with the end-user in mind, and tends to be as
-friendly as possible. This means a complete on-line help system, together with
-having all of the possible actions displayed at any time inside a status bar.
-The user interface is configurable, and one can choose between several color
-and layout combinations. Key bindings are also configurable, to fit everyone&#8217;s
-needs. Last, a configurable notification system reminds user of upcoming
-appointments. The reminders are sent even if the user&#8217;s interface is not
-running, as calcurse is able to run in background.</p></div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_installation">Installation</h2>
-<div class="sectionbody">
-<div class="sect2">
-<h3 id="_requirements">Requirements</h3>
-<div class="sect3">
-<h4 id="_ncurses_library">ncurses library</h4>
-<div class="paragraph"><p><code>Calcurse</code> requires only a <code>C</code> compiler, such as <code>cc</code> or <code>gcc</code>, and the
-<code>ncurses</code> library. It would be very surprising not to have a valid <code>ncurses</code>
-library already installed on your computer, but if not, you can find it at the
-following url: <a href="http://ftp.gnu.org/pub/gnu/ncurses/">http://ftp.gnu.org/pub/gnu/ncurses/</a></p></div>
-<div class="admonitionblock">
-<table><tr>
-<td class="icon">
-<div class="title">Note</div>
-</td>
-<td class="content">It is also possible to link <code>calcurse</code> against the <code>ncursesw</code> library
- (ncurses with support for unicode).</td>
-</tr></table>
-</div>
-</div>
-<div class="sect3">
-<h4 id="install_requirements_gettext">gettext library</h4>
-<div class="paragraph"><p><code>calcurse</code> supports internationalization (<strong>i18n</strong> hereafter) through the
-<code>gettext</code> utilities. This means <code>calcurse</code> can produce multi-lingual messages
-if compiled with native language support (i.e. <strong>NLS</strong>).</p></div>
-<div class="paragraph"><p>However, <strong>NLS</strong> is optionnal and if you do not want to have support for
-multi-lingual messages, you can disable this feature. This is done by giving
-the <code>--disable-nls</code> option to <code>configure</code> (see section
-<a href="#install_process">Install process</a>). To check if the <code>gettext</code> utilities are
-installed on your system, you can search for the <code>libintl.h</code> header file for
-instance:</p></div>
-<div class="listingblock">
-<div class="content">
-<pre><code>$ locate libintl.h</code></pre>
-</div></div>
-<div class="paragraph"><p>If this header file is not found, then you can obtain the <code>gettext</code> sources at
-the following url : <a href="http://ftp.gnu.org/pub/gnu/gettext/">http://ftp.gnu.org/pub/gnu/gettext/</a></p></div>
-<div class="admonitionblock">
-<table><tr>
-<td class="icon">
-<div class="title">Note</div>
-</td>
-<td class="content">Even if <code>libintl.h</code> is found on your system, it can be wise to specify
- its location during the <a href="#install_process">install process</a>, by using the
- <code>--with-libintl-prefix</code> option with <code>configure</code>. Indeed, the <code>configure</code>
- could fail to locate this library if installed in an uncommon place.</td>
-</tr></table>
-</div>
-</div>
-</div>
-<div class="sect2">
-<h3 id="install_process">Install process</h3>
-<div class="paragraph"><p>First you need to gunzip and untar the source archive:</p></div>
-<div class="listingblock">
-<div class="content">
-<pre><code>$ tar zxvf calcurse-3.2.1.tar.gz</code></pre>
-</div></div>
-<div class="paragraph"><p>Once you meet the requirements and have extracted the archive, the install
-process is quite simple, and follows the standard three steps process:</p></div>
-<div class="listingblock">
-<div class="content">
-<pre><code>$ ./configure
-$ make
-$ make install # (may require root privilege)</code></pre>
-</div></div>
-<div class="paragraph"><p>Use <code>./configure --help</code> to obtain a list of possible options.</p></div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_calcurse_basics">calcurse basics</h2>
-<div class="sectionbody">
-<div class="sect2">
-<h3 id="_invocation">Invocation</h3>
-<div class="sect3">
-<h4 id="basics_invocation_commandline">Command line arguments</h4>
-<div class="paragraph"><p><code>calcurse</code> takes the following options from the command line (both short and
-long options are supported):</p></div>
-<div class="dlist"><dl>
-<dt class="hdlist1">
-<code>-a, --appointment</code>
-</dt>
-<dd>
-<p>
- Print the appointments and events for the current day and exit. The calendar
- from which to read the appointments can be specified using the <code>-c</code> flag.
-</p>
-</dd>
-<dt class="hdlist1">
-<code>-c &lt;file&gt;, --calendar &lt;file&gt;</code>
-</dt>
-<dd>
-<p>
- Specify the calendar file to use. The default calendar is <code>~/.calcurse/apts</code>
- (see section <a href="#basics_files">calcurse files</a>). This option has precedence
- over <code>-D</code>.
-</p>
-</dd>
-<dt class="hdlist1">
-<code>-d &lt;date|num&gt;, --day &lt;date|num&gt;</code>
-</dt>
-<dd>
-<p>
- Print the appointments for the given date or for the given number of
- upcoming days, depending on the argument format. Two possible formats are
- supported:
-</p>
-<div class="openblock">
-<div class="content">
-<div class="ulist"><ul>
-<li>
-<p>
-a date (possible formats described below).
-</p>
-</li>
-<li>
-<p>
-a number <code>n</code>.
-</p>
-</li>
-</ul></div>
-</div></div>
-<div class="paragraph"><p>In the first case, the appointment list for the specified date will be
-returned, while in the second case the appointment list for the <code>n</code> upcoming
-days will be returned. As an example, typing <code>calcurse -d 3</code> will display
-your appointments for today, tomorrow, and the day after tomorrow. Possible
-formats for specifying the date are defined inside the general configuration
-menu (see <a href="#options_general">General options</a>), using the
-<code>format.inputdate</code> variable.</p></div>
-<div class="paragraph"><p>Note: as for the <code>-a</code> flag, the calendar from which to read the appointments
-can be specified using the <code>-c</code> flag.</p></div>
-</dd>
-<dt class="hdlist1">
-<code>-D &lt;dir&gt;, --directory &lt;dir&gt;</code>
-</dt>
-<dd>
-<p>
- Specify the data directory to use. If not specified, the default directory is
- <code>~/.calcurse/</code>.
-</p>
-</dd>
-<dt class="hdlist1">
-<code>--format-apt &lt;format&gt;</code>
-</dt>
-<dd>
-<p>
- Specify a format to control the output of appointments in non-interactive
- mode. See the <a href="#basics_format_strings">Format strings</a> section for detailed
- information on format strings.
-</p>
-</dd>
-<dt class="hdlist1">
-<code>--format-recur-apt &lt;format&gt;</code>
-</dt>
-<dd>
-<p>
- Specify a format to control the output of recurrent appointments in
- non-interactive mode. See the <a href="#basics_format_strings">Format strings</a>
- section for detailed information on format strings.
-</p>
-</dd>
-<dt class="hdlist1">
-<code>--format-event &lt;format&gt;</code>
-</dt>
-<dd>
-<p>
- Specify a format to control the output of events in non-interactive mode. See
- the <a href="#basics_format_strings">Format strings</a> section for detailed information
- on format strings.
-</p>
-</dd>
-<dt class="hdlist1">
-<code>--format-recur-event &lt;format&gt;</code>
-</dt>
-<dd>
-<p>
- Specify a format to control the output of recurrent events in non-interactive
- mode. See the <a href="#basics_format_strings">Format strings</a> section for detailed
- information on format strings.
-</p>
-</dd>
-<dt class="hdlist1">
-<code>--format-todo &lt;format&gt;</code>
-</dt>
-<dd>
-<p>
- Specify a format to control the output of todo items in non-interactive mode.
- See the <a href="#basics_format_strings">Format strings</a> section for detailed
- information on format strings.
-</p>
-</dd>
-<dt class="hdlist1">
-<code>-g, --gc</code>
-</dt>
-<dd>
-<p>
- Run the garbage collector for note files and exit.
-</p>
-</dd>
-<dt class="hdlist1">
-<code>-h, --help</code>
-</dt>
-<dd>
-<p>
- Print a short help text describing the supported command-line options,
- and exit.
-</p>
-</dd>
-<dt class="hdlist1">
-<code>-i &lt;file&gt;, --import &lt;file&gt;</code>
-</dt>
-<dd>
-<p>
- Import the icalendar data contained in <code>file</code>.
-</p>
-</dd>
-<dt class="hdlist1">
-<code>-l &lt;num&gt;, --limit &lt;num&gt;</code>
-</dt>
-<dd>
-<p>
- Limit the number of results printed to <em>num</em>.
-</p>
-</dd>
-<dt class="hdlist1">
-<code>-n, --next</code>
-</dt>
-<dd>
-<p>
- Print the next appointment within upcoming 24 hours and exit. The indicated
- time is the number of hours and minutes left before this appointment.
-</p>
-<div class="paragraph"><p>Note: the calendar from which to read the appointments can be specified using
-the <code>-c</code> flag.</p></div>
-</dd>
-<dt class="hdlist1">
-<code>-r[num], --range[=num]</code>
-</dt>
-<dd>
-<p>
- Print events and appointments for the num number of days and exit. If no num
- is given, a range of 1 day is considered.
-</p>
-</dd>
-<dt class="hdlist1">
-<code>--read-only</code>
-</dt>
-<dd>
-<p>
- Don&#8217;t save configuration nor appointments/todos.
-</p>
-<div class="admonitionblock">
-<table><tr>
-<td class="icon">
-<div class="title">Warning</div>
-</td>
-<td class="content">Use this this with care! If you run an interactive calcurse instance
-in read-only mode, all changes from this session will be lost without warning!</td>
-</tr></table>
-</div>
-</dd>
-<dt class="hdlist1">
-<code>-s[date], --startday[=date]</code>
-</dt>
-<dd>
-<p>
- Print events and appointments from date and exit. If no date is given, the
- current day is considered.
-</p>
-</dd>
-<dt class="hdlist1">
-<code>-S&lt;regex&gt;, --search=&lt;regex&gt;</code>
-</dt>
-<dd>
-<p>
- When used with the <code>-a</code>, <code>-d</code>, <code>-r</code>, <code>-s</code>, or <code>-t</code> flag, print only the items
- having a description that matches the given regular expression.
-</p>
-</dd>
-<dt class="hdlist1">
-<code>--status</code>
-</dt>
-<dd>
-<p>
- Display the status of running instances of calcurse. If calcurse is
- running, this will tell if the interactive mode was launched or if
- calcurse is running in background. The process pid will also be indicated.
-</p>
-</dd>
-<dt class="hdlist1">
-<code>-t[num], --todo[=num]</code>
-</dt>
-<dd>
-<p>
- Print the <code>todo</code> list and exit. If the optional number <code>num</code> is given, then
- only todos having a priority equal to <code>num</code> will be returned. The priority
- number must be between 1 (highest) and 9 (lowest). It is also possible to
- specify <code>0</code> for the priority, in which case only completed tasks will be
- shown.
-</p>
-</dd>
-<dt class="hdlist1">
-<code>-v, --version</code>
-</dt>
-<dd>
-<p>
- Display <code>calcurse</code> version and exit.
-</p>
-</dd>
-<dt class="hdlist1">
-<code>-x[format], --export[=format]</code>
-</dt>
-<dd>
-<p>
- Export user data to specified format. Events, appointments and todos are
- converted and echoed to stdout. Two possible formats are available: ical and
- pcal (see section <a href="#links_others">Links</a> below). If the optional
- argument <code>format</code> is not given, ical format is selected by default.
-</p>
-<div class="paragraph"><p>Note: redirect standard output to export data to a file, by issuing a command
-such as:</p></div>
-<div class="listingblock">
-<div class="content">
-<pre><code>$ calcurse --export &gt; my_data.dat</code></pre>
-</div></div>
-</dd>
-</dl></div>
-<div class="admonitionblock">
-<table><tr>
-<td class="icon">
-<div class="title">Note</div>
-</td>
-<td class="content">The <code>-N</code> option has been removed in calcurse 3.0.0. See the
-<a href="#basics_format_strings">Format strings</a> section on how to print note along
-with appointments and events.</td>
-</tr></table>
-</div>
-</div>
-<div class="sect3">
-<h4 id="basics_format_strings">Format strings</h4>
-<div class="paragraph"><p>Format strings are composed of printf()-style format specifiers&#8201;&#8212;&#8201;ordinary
-characters are copied to stdout without modification. Each specifier is
-introduced by a <code>%</code> and is followed by a character which specifies the field to
-print. The set of available fields depends on the item type.</p></div>
-<div class="sect4">
-<h5 id="_format_specifiers_for_appointments">Format specifiers for appointments</h5>
-<div class="dlist"><dl>
-<dt class="hdlist1">
-<code>s</code>
-</dt>
-<dd>
-<p>
- Print the start time of the appointment as UNIX time stamp
-</p>
-</dd>
-<dt class="hdlist1">
-<code>S</code>
-</dt>
-<dd>
-<p>
- Print the start time of the appointment using the <code>hh:mm</code> format
-</p>
-</dd>
-<dt class="hdlist1">
-<code>d</code>
-</dt>
-<dd>
-<p>
- Print the duration of the appointment in seconds
-</p>
-</dd>
-<dt class="hdlist1">
-<code>e</code>
-</dt>
-<dd>
-<p>
- Print the end time of the appointment as UNIX time stamp
-</p>
-</dd>
-<dt class="hdlist1">
-<code>E</code>
-</dt>
-<dd>
-<p>
- Print the end time of the appointment using the <code>hh:mm</code> format
-</p>
-</dd>
-<dt class="hdlist1">
-<code>m</code>
-</dt>
-<dd>
-<p>
- Print the description of the item
-</p>
-</dd>
-<dt class="hdlist1">
-<code>n</code>
-</dt>
-<dd>
-<p>
- Print the name of the note file belonging to the item
-</p>
-</dd>
-<dt class="hdlist1">
-<code>N</code>
-</dt>
-<dd>
-<p>
- Print the note belonging to the item
-</p>
-</dd>
-</dl></div>
-</div>
-<div class="sect4">
-<h5 id="_format_specifiers_for_events">Format specifiers for events</h5>
-<div class="dlist"><dl>
-<dt class="hdlist1">
-<code>m</code>
-</dt>
-<dd>
-<p>
- Print the description of the item
-</p>
-</dd>
-<dt class="hdlist1">
-<code>n</code>
-</dt>
-<dd>
-<p>
- Print the name of the note file belonging to the item
-</p>
-</dd>
-<dt class="hdlist1">
-<code>N</code>
-</dt>
-<dd>
-<p>
- Print the note belonging to the item
-</p>
-</dd>
-</dl></div>
-</div>
-<div class="sect4">
-<h5 id="_format_specifiers_for_todo_items">Format specifiers for todo items</h5>
-<div class="dlist"><dl>
-<dt class="hdlist1">
-<code>p</code>
-</dt>
-<dd>
-<p>
- Print the priority of the item
-</p>
-</dd>
-<dt class="hdlist1">
-<code>m</code>
-</dt>
-<dd>
-<p>
- Print the description of the item
-</p>
-</dd>
-<dt class="hdlist1">
-<code>n</code>
-</dt>
-<dd>
-<p>
- Print the name of the note file belonging to the item
-</p>
-</dd>
-<dt class="hdlist1">
-<code>N</code>
-</dt>
-<dd>
-<p>
- Print the note belonging to the item
-</p>
-</dd>
-</dl></div>
-</div>
-<div class="sect4">
-<h5 id="_examples">Examples</h5>
-<div class="dlist"><dl>
-<dt class="hdlist1">
-<code>calcurse -r7 --format-apt='- %S -&gt; %E\n\t%m\n%N'</code>
-</dt>
-<dd>
-<p>
- Print appointments and events for the next seven days. Also, print the notes
- attached to each regular appointment (simulates <code>-N</code> for appointments).
-</p>
-</dd>
-<dt class="hdlist1">
-<code>calcurse -r7 --format-apt=' - %m (%S to %E)\n' --format-recur-apt=' - %m (%S to %E)\n'</code>
-</dt>
-<dd>
-<p>
- Print appointments and events for the next seven days and use a custom format
- for (recurrent) appointments: ` - Some appointment (18:30 to 21:30)`.
-</p>
-</dd>
-<dt class="hdlist1">
-<code>calcurse -t --format-todo '(%p) %m\n'</code>
-</dt>
-<dd>
-<p>
- List all todo items and put parentheses around the priority specifiers.
-</p>
-</dd>
-</dl></div>
-</div>
-<div class="sect4">
-<h5 id="_extended_format_specifiers">Extended format specifiers</h5>
-<div class="paragraph"><p>Extended format specifiers can be used if you want to specify advanced
-formatting options. Extended specifiers are introduced by <code>%(</code> and are
-terminated by a closing parenthesis (<code>)</code>). The following list includes all
-short specifiers and corresponding long options:</p></div>
-<div class="ulist"><ul>
-<li>
-<p>
-<code>s</code>: <code>(start)</code>
-</p>
-</li>
-<li>
-<p>
-<code>S</code>: <code>(start:epoch)</code>
-</p>
-</li>
-<li>
-<p>
-<code>e</code>: <code>(end)</code>
-</p>
-</li>
-<li>
-<p>
-<code>E</code>: <code>(end:epoch)</code>
-</p>
-</li>
-<li>
-<p>
-<code>d</code>: <code>(duration)</code>
-</p>
-</li>
-<li>
-<p>
-<code>r</code>: <code>(remaining)</code>
-</p>
-</li>
-<li>
-<p>
-<code>m</code>: <code>(message)</code>
-</p>
-</li>
-<li>
-<p>
-<code>n</code>: <code>(noteid)</code>
-</p>
-</li>
-<li>
-<p>
-<code>N</code>: <code>(note)</code>
-</p>
-</li>
-<li>
-<p>
-<code>p</code>: <code>(priority)</code>
-</p>
-</li>
-</ul></div>
-<div class="paragraph"><p>The <code>(start)</code> and <code>(end)</code> specifiers support strftime()-style extended
-formatting options that can be used for fine-grained formatting. Additionally,
-the special formats <code>epoch</code> (which is equivalent to <code>(start:%s)</code> or <code>(end:%s)</code>)
-and <code>default</code> (which is mostly equivalent to <code>(start:%H:%M)</code> or <code>(end:%H:%M)</code>
-but displays <code>..:..</code> if the item doesn&#8217;t start/end at the current day) are
-supported.</p></div>
-<div class="paragraph"><p>The <code>(remaining)</code> and <code>(duration)</code> specifiers support a subset of the
-strftime()-style formatting options, along with two extra qualifiers.
-The supported options are <code>%d</code>, <code>%H</code>, <code>%M</code> and <code>%S</code>, and by default each
-of these is zero-padded to two decimal places. To avoid the
-zero-padding, add <code>-</code> before the formatting option (for example, <code>%-d</code>).
-Additionally, the <code>E</code> option will display the total number of time units
-until the appointment, rather than showing the remaining number of time
-units modulo the next larger time unit. For example, an appointment in
-50 hours will show as 02:00 with the formatting string <code>%H:%M</code>, but will
-show 50:00 with the formatting string <code>%EH:%M</code>. Note that if you are
-combining the <code>-</code> and <code>E</code> options, the <code>-</code> must come first. The default
-format for the <code>(remaining)</code> specifier is <code>%EH:%M</code>.</p></div>
-</div>
-</div>
-<div class="sect3">
-<h4 id="basics_invocation_variable">Environment variable for i18n</h4>
-<div class="paragraph"><p><code>calcurse</code> can be compiled with native language support (see
-<a href="#install_requirements_gettext">gettext library</a>). Thus, if you wish to have
-messages displayed into your native language, first make sure it is available
-by looking at the <code>po/LINGUAS</code> file. This file indicates the set of available
-languages by showing the two-letters corresponding code (for exemple, <strong>fr</strong>
-stands for french). If you do not find your language, it would be greatly
-appreciated if you could help translating <code>calcurse</code> (see the <a href="#contribute">How to contribute?</a> section).</p></div>
-<div class="paragraph"><p>If your language is available, run <code>calcurse</code> with the following command:</p></div>
-<div class="listingblock">
-<div class="content">
-<pre><code>$ LC_ALL=fr_FR calcurse</code></pre>
-</div></div>
-<div class="olist lowerroman"><ol class="lowerroman">
-<li>
-<p>
-where <strong>fr_FR</strong> is the locale name in this exemple, but should be replaced by
-the locale corresponding to the desired language.
-</p>
-</li>
-</ol></div>
-<div class="paragraph"><p>You should also specify the charset to be used, because in some cases the
-accents and such are not displayed correctly. This charset is indicated at the
-beginning of the po file corresponding to the desired language. For instance,
-you can see in the fr.po file that it uses the iso-8859-1 charset, so you could
-run <code>calcurse</code> using the following command:</p></div>
-<div class="listingblock">
-<div class="content">
-<pre><code>$ LC_ALL=fr_FR.ISO8859-1 calcurse</code></pre>
-</div></div>
-</div>
-<div class="sect3">
-<h4 id="_other_environment_variables">Other environment variables</h4>
-<div class="paragraph"><p>The following environment variables affect the way <code>calcurse</code> operates:</p></div>
-<div class="dlist"><dl>
-<dt class="hdlist1">
-<code>VISUAL</code>
-</dt>
-<dd>
-<p>
- Specifies the external editor to use for writing notes.
-</p>
-</dd>
-<dt class="hdlist1">
-<code>EDITOR</code>
-</dt>
-<dd>
-<p>
- If the <code>VISUAL</code> environment variable is not set, then <code>EDITOR</code> will be used
- as the default external editor. If none of those variables are set, then
- <code>/usr/bin/vi</code> is used instead.
-</p>
-</dd>
-<dt class="hdlist1">
-<code>PAGER</code>
-</dt>
-<dd>
-<p>
- Specifies the default viewer to be used for reading notes. If this variable
- is not set, then <code>/usr/bin/less</code> is used.
-</p>
-</dd>
-</dl></div>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_user_interface">User interface</h3>
-<div class="sect3">
-<h4 id="_non_interactive_mode">Non-interactive mode</h4>
-<div class="paragraph"><p>When called with at least one of the following arguments: <code>-a</code>, <code>-d</code>, <code>-h</code>,
-<code>-n</code>, <code>-t</code>, <code>-v</code>, <code>-x</code>, <code>calcurse</code> is started in non-interactive mode. This
-means the desired information will be displayed, and after that, <code>calcurse</code>
-simply quits and you are driven back to the shell prompt.</p></div>
-<div class="paragraph"><p>That way, one can add a line such as <code>calcurse --todo --appointment</code> in its
-init config file to display at logon the list of tasks and appointments
-scheduled for the current day.</p></div>
-</div>
-<div class="sect3">
-<h4 id="basics_interface_interactive">Interactive mode</h4>
-<div class="admonitionblock">
-<table><tr>
-<td class="icon">
-<div class="title">Note</div>
-</td>
-<td class="content">Key bindings that are indicated in this manual correspond to the default
- ones, defined when <code>calcurse</code> is launched for the first time. If those
- key bindings do not suit user&#8217;s needs, it is possible to change them
- within the keys configuration menu (see <a href="#options_keys">key bindings</a>).</td>
-</tr></table>
-</div>
-<div class="paragraph"><p>When called without any argument or only with the <code>-c</code> option, <code>calcurse</code> is
-started in interactive mode. In this mode, you are shown an interface
-containing three different panels which you can browse using the <code>TAB</code> key,
-plus a notification bar and a status bar (see figure below).</p></div>
-<div class="listingblock">
-<div class="content">
-<pre><code> appointment panel---. .---calendar panel
- | |
- v v
- +------------------------------------++----------------------------+
- | Appointments || Calendar |
- |------------------------------------||----------------------------|
- | (|) April 6, 2006 || April 2006 |
- | ||Mon Tue Wed Thu Fri Sat Sun |
- | || 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 |
- | || |
- | |+----------------------------+
- | |+----------------------------+
- | || ToDo | todo
- | ||----------------------------| panel
- | || | |
- | || | |
- | || |&lt;--.
- | || |
- +------------------------------------++----------------------------+
- |---[ Mon 2006-11-22 | 10:11:43 ]---(apts)----&gt; 01:20 :: lunch &lt;---|&lt;--.
- +------------------------------------------------------------------+ notify-bar
- | ? Help R Redraw H/L -/+1 Day G GoTo C Config |
- | Q Quit S Save J/K -/+1 Week Tab Chg View |&lt;-.
- +------------------------------------------------------------------+ |
- |
- status bar</code></pre>
-</div></div>
-<div class="paragraph"><p>The first panel represents a calendar which allows to highlight a particular
-day, the second one contains the list of the events and appointments on that
-day, and the last one contains a list of tasks to do but which are not assigned
-to any specific day.</p></div>
-<div class="paragraph"><p>Depending on the selected view, the calendar could either display a monthly
-(default as shown in previous figure) or weekly view. The weekly view would
-look like the following:</p></div>
-<div class="listingblock">
-<div class="content">
-<pre><code>+------------------------------------+
-| Calendar |
-|----------------------------(# 13)--|
-| Mon Tue Wed Thu Fri Sat Sun |
-| 29 30 31 01 02 03 04 |
-| &lt;----+-- slice 1: 00:00 to 04:00 AM
-| -- -- -- -- -- -- |
-| &lt;----+-- slice 2: 04:00 to 08:00 AM
-| -- -- -- -- -- -- |
-| &lt;----+-- slice 3: 08:00 to 12:00 AM
-| - -- -- -- -- -- -- - &lt;-+-- midday
-| &lt;----+-- slice 4: 12:00 to 04:00 PM
-| -- -- -- -- -- -- |
-| &lt;----+-- slice 5: 04:00 to 08:00 PM
-| -- -- -- -- -- -- |
-| &lt;----+-- slice 6: 08:00 to 12:00 PM
-+------------------------------------+</code></pre>
-</div></div>
-<div class="paragraph"><p>The current week number is displayed on the top-right side of the panel (<strong># 13</strong>
-meaning it is the 13th week of the year in the above example). The seven days
-of the current week are displayed in column. Each day is divided into slices of
-4 hours each (6 slices in total, see figure above). A slice will appear in a
-different color if an appointment falls into the corresponding time-slot.</p></div>
-<div class="paragraph"><p>In the appointment panel, one can notice the <strong><code>(|)</code></strong> sign just in front of the
-date. This indicates the current phase of the moon. Depending on which is the
-current phase, the following signs can be seen:</p></div>
-<div class="dlist"><dl>
-<dt class="hdlist1">
-` |) `
-</dt>
-<dd>
-<p>
- first quarter
-</p>
-</dd>
-<dt class="hdlist1">
-` (|) `
-</dt>
-<dd>
-<p>
- full moon
-</p>
-</dd>
-<dt class="hdlist1">
-` (| `
-</dt>
-<dd>
-<p>
- last quarter
-</p>
-</dd>
-<dt class="hdlist1">
-` | `
-</dt>
-<dd>
-<p>
- new moon
-</p>
-</dd>
-<dt class="hdlist1">
-no sign
-</dt>
-<dd>
-<p>
- Phase of the moon does not correspond to any of the above ones.
-</p>
-</dd>
-</dl></div>
-<div class="paragraph"><p>At the very bottom of the screen there is a status bar, which indicates the
-possible actions and the corresponding keystrokes.</p></div>
-<div class="paragraph"><p>Just above this status bar is the notify-bar, which indicates from left to
-right : the current date, the current time, the calendar file currently in use
-(apts on the above example, which is the default calendar file, see the
-following section), and the next appointment within the upcoming 24 hours. Here
-it says that it will be lunch time in one hour and twenty minutes.</p></div>
-<div class="admonitionblock">
-<table><tr>
-<td class="icon">
-<div class="title">Note</div>
-</td>
-<td class="content">Some actions, such as editing or adding an item, require to type in some
- text. This is done with the help of the built-in input line editor.</td>
-</tr></table>
-</div>
-<div class="paragraph"><p>Within this editor, if a line is longer than the screen width, a <code>&gt;</code>, <code>*</code>, or
-<code>&lt;</code> character is displayed in the last column indicating that there are more
-character after, before and after, or before the current position,
-respectively. The line is scrolled horizontally as necessary.</p></div>
-<div class="paragraph"><p>Moreover, some editing commands are bound to particular control characters.
-Hereafter are indicated the available editing commands (<code>^</code> stands for the
-control key):</p></div>
-<div class="dlist"><dl>
-<dt class="hdlist1">
-<code>^a</code>
-</dt>
-<dd>
-<p>
- moves the cursor to the beginning of the input line
-</p>
-</dd>
-<dt class="hdlist1">
-<code>^b</code>
-</dt>
-<dd>
-<p>
- moves the cursor backward
-</p>
-</dd>
-<dt class="hdlist1">
-<code>^d</code>
-</dt>
-<dd>
-<p>
- deletes one character forward
-</p>
-</dd>
-<dt class="hdlist1">
-<code>^e</code>
-</dt>
-<dd>
-<p>
- moves the cursor to the end of the input line
-</p>
-</dd>
-<dt class="hdlist1">
-<code>^f</code>
-</dt>
-<dd>
-<p>
- moves the cursor forward
-</p>
-</dd>
-<dt class="hdlist1">
-<code>^h</code>
-</dt>
-<dd>
-<p>
- deletes one character backward
-</p>
-</dd>
-<dt class="hdlist1">
-<code>^k</code>
-</dt>
-<dd>
-<p>
- deletes the input from the cursor to the end of the line
-</p>
-</dd>
-<dt class="hdlist1">
-<code>^w</code>
-</dt>
-<dd>
-<p>
- deletes backward to the beginning of the current word
-</p>
-</dd>
-<dt class="hdlist1">
-<code>ESCAPE</code>
-</dt>
-<dd>
-<p>
- cancels the editing
-</p>
-</dd>
-</dl></div>
-</div>
-</div>
-<div class="sect2">
-<h3 id="basics_daemon">Background mode</h3>
-<div class="paragraph"><p>When the daemon mode is enabled in the notification configuration menu (see
-<a href="#options_notify">Notify-bar settings</a>), <code>calcurse</code> will stay in background
-when the user interface is not running. In background mode, <code>calcurse</code> checks
-for upcoming appointments and runs the user-defined notification command when
- necessary. When the user interface is started again, the daemon automatically
- stops.</p></div>
-<div class="paragraph"><p>&#8216;calcurse` background activity can be logged (set the <code>daemon.log</code> variable in
-the notification configuration <a href="#options_notify">menu</a>), and in that case,
-information about the daemon start and stop time, reminders&#8217; command launch
-time, signals received&#8230; will be written in the <code>daemon.log</code> file (see section
-<a href="#basics_files">files</a>).</p></div>
-<div class="paragraph"><p>Using the <code>--status</code> command line option (see section
-<a href="#basics_invocation_commandline">Command line arguments</a>), one can know if
-<code>calcurse</code> is currently running in background or not. If the daemon is
-running, a message like the following one will be displayed (the pid of the
-daemon process will be shown):</p></div>
-<div class="listingblock">
-<div class="content">
-<pre><code>calcurse is running in background (pid 14536)</code></pre>
-</div></div>
-<div class="admonitionblock">
-<table><tr>
-<td class="icon">
-<div class="title">Note</div>
-</td>
-<td class="content">To stop the daemon, just send the <code>TERM</code> signal to it, using a command
- such as: <code>kill daemon_pid</code>, where <strong>daemon_pid</strong> is the process id of the
- daemon (14536 in the above example).</td>
-</tr></table>
-</div>
-</div>
-<div class="sect2">
-<h3 id="basics_files">calcurse files</h3>
-<div class="paragraph"><p>The following structure is created in your <code>$HOME</code> directory (or in the
-directory you specified with the -D option) the first time <code>calcurse</code> is run
-:</p></div>
-<div class="listingblock">
-<div class="content">
-<pre><code>$HOME/.calcurse/
- |___notes/
- |___conf
- |___keys
- |___apts
- |___todo</code></pre>
-</div></div>
-<div class="dlist"><dl>
-<dt class="hdlist1">
-<code>notes/</code>
-</dt>
-<dd>
-<p>
- this subdirectory contains descriptions of the notes which are attached to
- appointments, events or todos. Since the file name of each note file is a
- SHA1 hash of the note itself, multiple items can share the same note file.
- calcurse provides a garbage collector (see the <code>-g</code> command line parameter)
- that can be used to remove note files which are no longer linked to any item.
-</p>
-</dd>
-<dt class="hdlist1">
-<code>conf</code>
-</dt>
-<dd>
-<p>
- this file contains the user configuration
-</p>
-</dd>
-<dt class="hdlist1">
-<code>keys</code>
-</dt>
-<dd>
-<p>
- this file contains the user-defined key bindings
-</p>
-</dd>
-<dt class="hdlist1">
-<code>apts</code>
-</dt>
-<dd>
-<p>
- this file contains all of the events and user&#8217;s appointments
-</p>
-</dd>
-<dt class="hdlist1">
-<code>todo</code>
-</dt>
-<dd>
-<p>
- this file contains the todo list
-</p>
-</dd>
-</dl></div>
-<div class="admonitionblock">
-<table><tr>
-<td class="icon">
-<div class="title">Note</div>
-</td>
-<td class="content">If the logging of calcurse daemon activity was set in the notification
- configuration menu, the extra file <code>daemon.log</code> will appear in calcurse
- data directory. This file contains logs about calcurse activity when
- running in background.</td>
-</tr></table>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_import_export_capabilities">Import/Export capabilities</h3>
-<div class="paragraph"><p>The import and export capabilities offered by <code>calcurse</code> are described below.</p></div>
-<div class="sect3">
-<h4 id="_import">Import</h4>
-<div class="paragraph"><p>Data in icalendar format as described in the rfc2445 specification (see
-<a href="#links_others">links</a> section below) can be imported into calcurse. Calcurse
-ical parser is based on version 2.0 of this specification, but for now on, only
-a subset of it is supported.</p></div>
-<div class="paragraph"><p>The following icalendar properties are handled by calcurse:</p></div>
-<div class="ulist"><ul>
-<li>
-<p>
-<code>VTODO</code> items: "PRIORITY", "VALARM", "SUMMARY", "DESCRIPTION"
-</p>
-</li>
-<li>
-<p>
-<code>VEVENT</code> items: "DTSTART", "DTEND", "DURATION", "RRULE", "EXDATE", "VALARM",
- "SUMMARY", "DESCRIPTION"
-</p>
-</li>
-</ul></div>
-<div class="paragraph"><p>The icalendar <code>DESCRIPTION</code> property will be converted into calcurse format by
-adding a note to the item. If a "VALARM" property is found, the item will be
-flagged as important and the user will get a notification (this is only
-applicable to appointments).</p></div>
-<div class="paragraph"><p>Here are the properties that are not implemented:</p></div>
-<div class="ulist"><ul>
-<li>
-<p>
-negative time durations are not taken into account (item is skipped)
-</p>
-</li>
-<li>
-<p>
-some recurence frequences are not recognize: "SECONDLY" / "MINUTELY" /
- "HOURLY"
-</p>
-</li>
-<li>
-<p>
-some recurrence keywords are not recognized (all those starting with <code>BY</code>):
- "BYSECOND" / "BYMINUTE" / "BYHOUR" / "BYDAY" / "BYMONTHDAY" / "BYYEARDAY" /
- "BYWEEKNO" / "BYMONTH" / "BYSETPOS" plus "WKST"
-</p>
-</li>
-<li>
-<p>
-the recurrence exception keyword "EXRULE" is not recognized
-</p>
-</li>
-<li>
-<p>
-timezones are not taken into account
-</p>
-</li>
-</ul></div>
-</div>
-<div class="sect3">
-<h4 id="_export">Export</h4>
-<div class="paragraph"><p>Two possible export formats are available: <code>ical</code> and <code>pcal</code> (see section
-<a href="#links_others">Links</a> below to find out about those formats).</p></div>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_online_help">Online help</h3>
-<div class="paragraph"><p>At any time, the built-in help system can be invoked by pressing the <code>?</code> key.
-By default, it shows an introduction to the help system in an external pager.
-You need to exit the pager in order to get back to calcurse (pressing <code>q</code>
-should almost always work). The default pager can be changed by setting the
-PAGER environment variable.</p></div>
-<div class="paragraph"><p>If you want to display help on a specific feature or key binding, type <code>:help
-&lt;feature&gt;</code> (e.g. <code>:help add</code>) or <code>:help &lt;key&gt;</code> (e.g. <code>:help ^A</code>) on the main
-screen.</p></div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_options">Options</h2>
-<div class="sectionbody">
-<div class="paragraph"><p>All of the <code>calcurse</code> parameters are configurable from the Configuration menu
-available when pressing <code>C</code>. You are then driven to a submenu with five
-possible choices : pressing <code>C</code> again will lead you to the Color scheme
-configuration, pressing <code>L</code> allows you to choose the layout of the main
-<code>calcurse</code> screen (in other words, where to put the three different panels on
-screen), pressing <code>G</code> permits you to choose between different general options,
-pressing <code>K</code> opens the key bindings configuration menu, and last you can modify
-the notify-bar settings by pressing <code>N</code>.</p></div>
-<div class="sect2">
-<h3 id="options_general">General options</h3>
-<div class="paragraph"><p>These options control <code>calcurse</code> general behavior, as described below:</p></div>
-<div class="dlist"><dl>
-<dt class="hdlist1">
-<code>general.autosave</code> (default: <strong>yes</strong>)
-</dt>
-<dd>
-<p>
- This option allows to automatically save the user&#8217;s data (if set to <strong>yes</strong>)
- when quitting. &lt;p class="rq"&gt;&lt;span class="valorise"&gt;warning:&lt;/span&gt; No data
- will be automatically saved if <code>general.autosave</code> is set to <strong>no</strong>. This means
- the user must press <code>S</code> (for saving) in order to retrieve its modifications.
-</p>
-</dd>
-<dt class="hdlist1">
-<code>general.autogc</code> (default: <strong>no</strong>)
-</dt>
-<dd>
-<p>
- Automatically run the garbage collector for note files when quitting.
-</p>
-</dd>
-<dt class="hdlist1">
-<code>general.periodicsave</code> (default: <strong>0</strong>)
-</dt>
-<dd>
-<p>
- If different from <code>0</code>, user&#8217;s data will be automatically saved every
- <strong>general.periodicsave</strong> minutes. When an automatic save is performed, two
- asterisks (i.e. <code>**</code>) will appear on the top right-hand side of the screen).
-</p>
-</dd>
-<dt class="hdlist1">
-<code>general.confirmquit</code> (default: <strong>yes</strong>)
-</dt>
-<dd>
-<p>
- If set to <strong>yes</strong>, confirmation is required before quitting, otherwise pressing
- <code>Q</code> will cause <code>calcurse</code> to quit without prompting for user confirmation.
-</p>
-</dd>
-<dt class="hdlist1">
-<code>general.confirmdelete</code> (default: <strong>yes</strong>)
-</dt>
-<dd>
-<p>
- If this option is set to <strong>yes</strong>, pressing <code>D</code> for deleting an item (either a
- <strong>todo</strong>, <strong>appointment</strong>, or <strong>event</strong>), will lead to a prompt asking for user
- confirmation before removing the selected item from the list. Otherwise, no
- confirmation will be needed before deleting the item.
-</p>
-</dd>
-<dt class="hdlist1">
-<code>general.systemdialogs</code> (default: <strong>yes</strong>)
-</dt>
-<dd>
-<p>
- Setting this option to <strong>no</strong> will result in skipping the system dialogs
- related to the saving and loading of data. This can be useful to speed up
- the input/output processes.
-</p>
-</dd>
-<dt class="hdlist1">
-<code>general.progressbar</code> (default: <strong>yes</strong>)
-</dt>
-<dd>
-<p>
- If set to <strong>no</strong>, this will cause the disappearing of the progress bar which is
- usually shown when saving data to file. If set to <strong>yes</strong>, this bar will be
- displayed, together with the name of the file being saved (see section
- <a href="#basics_files">calcurse files</a>).
-</p>
-</dd>
-<dt class="hdlist1">
-<code>appearance.calendarview</code> (default: <strong>0</strong>)
-</dt>
-<dd>
-<p>
- If set to <code>0</code>, the monthly calendar view will be displayed by default
- otherwise it is the weekly view that will be displayed.
-</p>
-</dd>
-<dt class="hdlist1">
-<code>general.firstdayofweek</code> (default: <strong>monday</strong>)
-</dt>
-<dd>
-<p>
- One can choose between Monday and Sunday as the first day of the week. If
- <code>general.firstdayofweek</code> is set to <strong>monday</strong>, Monday will be first in the
- calendar view. Otherwise, Sunday will be the first day of the week.
-</p>
-</dd>
-<dt class="hdlist1">
-<code>format.outputdate</code> (default: <strong>%D</strong>)
-</dt>
-<dd>
-<p>
- This option indicates the format to be used when displaying dates in
- non-interactive mode. Using the default values, dates are displayed the
- following way: <strong>mm/dd/aa</strong>. You can see all of the possible formats by typing
- <code>man 3 strftime</code> inside a terminal.
-</p>
-</dd>
-<dt class="hdlist1">
-<code>format.inputdate</code> (default: <strong>1</strong>)
-</dt>
-<dd>
-<p>
- This option indicates the format that will be used to enter dates in
- <strong>calcurse</strong>. Four choices are available:
-</p>
-<div class="olist arabic"><ol class="arabic">
-<li>
-<p>
-mm/dd/yyyy
-</p>
-</li>
-<li>
-<p>
-dd/mm/yyyy
-</p>
-</li>
-<li>
-<p>
-yyyy/mm/dd
-</p>
-</li>
-<li>
-<p>
-yyyy-mm-dd
-</p>
-</li>
-</ol></div>
-</dd>
-</dl></div>
-</div>
-<div class="sect2">
-<h3 id="options_keys">Key bindings</h3>
-<div class="paragraph"><p>One can define ones own key bindings within the <code>Keys</code> configuration menu. The
-default keys look like the one used by the <code>vim</code> editor, especially the
-displacement keys. Anyway, within this configuration menu, users can redefine
-all of the keys available from within calcurse&#8217;s user interface.</p></div>
-<div class="paragraph"><p>To define new key bindings, first highlight the action to which it will apply.
-Then, delete the actual key binding if necessary, and add a new one. You will
-then be asked to press the key corresponding to the new binding. It is possible
-to define more than one key binding for a single action.</p></div>
-<div class="paragraph"><p>An automatic check is performed to see if the new key binding is not already
-set for another action. In that case, you will be asked to choose a different
-one. Another check is done when exiting from this menu, to make sure all
-possible actions have a key associated with it.</p></div>
-<div class="paragraph"><p>The following keys can be used to define bindings:</p></div>
-<div class="ulist"><ul>
-<li>
-<p>
-lower-case, upper-case letters and numbers, such as <code>a</code>, <code>Z</code>, <code>0</code>
-</p>
-</li>
-<li>
-<p>
-CONTROL-key followed by one of the above letters
-</p>
-</li>
-<li>
-<p>
-escape, horizontal tab, and space keys
-</p>
-</li>
-<li>
-<p>
-arrow keys (up, down, left, and right)
-</p>
-</li>
-<li>
-<p>
-<code>HOME</code> and <code>END</code> keys
-</p>
-</li>
-</ul></div>
-<div class="paragraph"><p>While inside the key configuration menu, an online help is available for each
-one of the available actions. This help briefly describes what the highlighted
-action is used for.</p></div>
-<div class="admonitionblock">
-<table><tr>
-<td class="icon">
-<div class="title">Note</div>
-</td>
-<td class="content">As of calcurse 3.0.0, displacement commands can be preceded by an
- optional number to repeat the command. For example, <code>10k</code> will move the
- cursor ten weeks forwards if you use default key bindings.</td>
-</tr></table>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_color_themes">Color themes</h3>
-<div class="paragraph"><p><code>calcurse</code> color theme can be customized to suit user&#8217;s needs. To change the
-default theme, the configuration page displays possible choices for foreground
-and background colors. Using arrows or calcurse displacement keys to move, and
-<code>X</code> or space to select a color, user can preview the theme which will be
-applied. It is possible to keep the terminal&#8217;s default colors by selecting the
-corresponding choice in the list.</p></div>
-<div class="paragraph"><p>The chosen color theme will then be applied to the panel borders, to the
-titles, to the keystrokes, and to general informations displayed inside status
-bar. A black and white theme is also available, in order to support non-color
-terminals.</p></div>
-<div class="admonitionblock">
-<table><tr>
-<td class="icon">
-<div class="title">Note</div>
-</td>
-<td class="content">Depending on your terminal type and on the value of the <code>$TERM</code>
- environment variable, color could or could not be supported. An error
- message will appear if you try to change colors whereas your terminal
- does not support this feature. If you do know your terminal supports
- colors but could not get <code>calcurse</code> to display them, try to set your
- <code>$TERM</code> variable to another value (such as <strong>xterm-xfree86</strong> for instance).</td>
-</tr></table>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_layout_configuration">Layout configuration</h3>
-<div class="paragraph"><p>The layout corresponds to the position of the panels inside <code>calcurse</code> screen.
-The default layout makes the calendar panel to be displayed on the top-right
-corner of the terminal, the todo panel on the bottom-right corner, while the
-appointment panel is displayed on the left hand-side of the screen (see the
-figure in section <a href="#basics_interface_interactive">Interactive mode</a> for an
-example of the default layout). By choosing another layout in the
-configuration screen, user can customize <code>calcurse</code> appearance to best suit his
-needs by placing the different panels where needed.</p></div>
-<div class="paragraph"><p>The following option is used to modify the layout configuration:</p></div>
-<div class="dlist"><dl>
-<dt class="hdlist1">
-<code>appearance.layout</code> (default: <strong>0</strong>)
-</dt>
-<dd>
-<p>
- Eight different layouts are to be chosen from (see layout configuration
- screen for the description of the available layouts).
-</p>
-</dd>
-</dl></div>
-</div>
-<div class="sect2">
-<h3 id="_sidebar_configuration">Sidebar configuration</h3>
-<div class="paragraph"><p>The sidebar is the part of the screen which contains two panels: the calendar
-and, depending on the chosen layout, either the todo list or the appointment
-list.</p></div>
-<div class="paragraph"><p>The following option is used to change the width of the sidebar:</p></div>
-<div class="dlist"><dl>
-<dt class="hdlist1">
-<code>appearance.sidebarwidth</code> (default: <strong>0</strong>)
-</dt>
-<dd>
-<p>
- Width (in percentage, 0 being the minimum width) of the side bar.
-</p>
-</dd>
-</dl></div>
-</div>
-<div class="sect2">
-<h3 id="options_notify">Notify-bar settings</h3>
-<div class="paragraph"><p>The following options are used to modify the notify-bar behavior:</p></div>
-<div class="dlist"><dl>
-<dt class="hdlist1">
-<code>appearance.notifybar</code> (default: <strong>yes</strong>)
-</dt>
-<dd>
-<p>
- This option indicates if you want the notify-bar to be displayed or not.
-</p>
-</dd>
-<dt class="hdlist1">
-<code>format.notifydate</code> (default: <strong>%a %F</strong>)
-</dt>
-<dd>
-<p>
- With this option, you can specify the format to be used to display the
- current date inside the notification bar. You can see all of the possible
- formats by typing <code>man 3 strftime</code> inside a terminal.
-</p>
-</dd>
-<dt class="hdlist1">
-<code>format.notifytime</code> (default: <strong>%T</strong>)
-</dt>
-<dd>
-<p>
- With this option, you can specify the format to be used to display the
- current time inside the notification bar. You can see all of the possible
- formats by typing <code>man 3 strftime</code> inside a terminal.
-</p>
-</dd>
-<dt class="hdlist1">
-<code>notification.warning</code> (default: <strong>300</strong>)
-</dt>
-<dd>
-<p>
- When there is an appointment which is flagged as <code>important</code> within the next
- <code>notification.warning</code> seconds, the display of that appointment inside the
- notify-bar starts to blink. Moreover, the command defined by the
- <code>notification.command</code> option will be launched. That way, the user is warned
- and knows there will be soon an upcoming appointment.
-</p>
-</dd>
-<dt class="hdlist1">
-<code>notification.command</code> (default: <strong>printf <em>\a</em></strong>)
-</dt>
-<dd>
-<p>
- This option indicates which command is to be launched when there is an
- upcoming appointment flagged as <code>important</code>. This command will be passed to
- the user&#8217;s shell which will interpret it. To know what shell must be used,
- the content of the <code>$SHELL</code> environment variable is used. If this variable is
- not set, <code>/bin/sh</code> is used instead.
-</p>
-<div class="exampleblock">
-<div class="content">
-<div class="paragraph"><p>Say the <code>mail</code> command is available on the user&#8217;s system, one can use the
-following command to get notified by mail of an upcoming appointment (the
-appointment description will also be mentioned in the mail body):</p></div>
-<div class="listingblock">
-<div class="content">
-<pre><code>$ calcurse --next | mail -s "[calcurse] upcoming appointment!" user@host.com</code></pre>
-</div></div>
-</div></div>
-</dd>
-<dt class="hdlist1">
-<code>notification.notifyall</code> (default: <strong>no</strong>)
-</dt>
-<dd>
-<p>
- Invert the sense of flagging an appointment as <code>important</code>. If this is
- enabled, all appointments will be notified - except for flagged ones.
-</p>
-</dd>
-<dt class="hdlist1">
-<code>daemon.enable</code> (default: <strong>no</strong>)
-</dt>
-<dd>
-<p>
- If set to yes, daemon mode will be enabled, meaning <code>calcurse</code> will run into
- background when the user&#8217;s interface is exited. This will allow the
- notifications to be launched even when the interface is not running. More
- details can be found in section <a href="#basics_daemon">Background mode</a>.
-</p>
-</dd>
-<dt class="hdlist1">
-<code>daemon.log</code> (default: <strong>no</strong>)
-</dt>
-<dd>
-<p>
- If set to yes, <code>calcurse</code> daemon activity will be logged (see section
- <a href="#basics_files">files</a>).
-</p>
-</dd>
-</dl></div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_known_bugs">Known bugs</h2>
-<div class="sectionbody">
-<div class="paragraph"><p>Incorrect highlighting of items appear when using calcurse black and white
-theme together with a <code>$TERM</code> variable set to <strong>xterm-color</strong>. To fix this bug,
-and as advised by Thomas E. Dickey (<code>xterm</code> maintainer), <strong>xterm-xfree86</strong> should
-be used instead of <strong>xterm-color</strong> to set the <code>$TERM</code> variable:</p></div>
-<div class="quoteblock">
-<div class="content">
-<div class="paragraph"><p>"The xterm-color value for $TERM is a bad choice for XFree86 xterm because it
-is commonly used for a <code>terminfo</code> entry which happens to not support bce. Use
-the xterm-xfree86 entry which is distributed with XFree86 xterm (or the similar
-one distributed with ncurses)."</p></div>
-</div>
-<div class="attribution">
-</div></div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="bugs">Reporting bugs and feedback</h2>
-<div class="sectionbody">
-<div class="paragraph"><p>Please send bug reports and feedback to: <code>misc .at. calcurse .dot. org</code>.</p></div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="contribute">How to contribute?</h2>
-<div class="sectionbody">
-<div class="paragraph"><p>If you would like to contribute to the project, you can first send your
-feedback on what you like or dislike, and if there are features you miss in
-<code>calcurse</code>. For now on, possible contributions concern the translation of
-<code>calcurse</code> messages and documentation.</p></div>
-<div class="sect2">
-<h3 id="_translating_documentation">Translating documentation</h3>
-<div class="admonitionblock">
-<table><tr>
-<td class="icon">
-<div class="title">Note</div>
-</td>
-<td class="content">We recently dropped all translations of the manual files from the
- distribution tarball. There are plan to reintroduce them in form of a
- Wiki on the calcurse website. Please follow the mailing lists for
- up-to-date information.</td>
-</tr></table>
-</div>
-<div class="paragraph"><p>The <strong>doc/</strong> directory of the source package already contains translated version
-of <code>calcurse</code> manual. However, if the manual is not yet available into your
-native language, it would be appreciated if you could help translating it.</p></div>
-<div class="paragraph"><p>To do so, just copy one of the existing manual file to <code>manual_XX.html</code>, where
-<strong>XX</strong> identifies your language. Then translate this newly created file and send
-it to the author (see <a href="#bugs">Reporting bugs and feeback</a>), so that it can be
-included in the next <code>calcurse</code> release.</p></div>
-</div>
-<div class="sect2">
-<h3 id="_calcurse_i18n">calcurse i18n</h3>
-<div class="paragraph"><p>As already mentioned, <code>gettext</code> utilities are used by <code>calcurse</code> to produce
-multi-lingual messages. We are currently using
-<a href="http://www.transifex.net/">Transifex</a> to manage those translations.</p></div>
-<div class="paragraph"><p>This section provides informations about how to translate those messages into
-your native language. However, this howto is deliberately incomplete, focusing
-on working with <code>gettext</code> for <code>calcurse</code> specifically. For more comprehensive
-informations or to grasp the Big Picture of Native Language Support, you should
-refer to the <code>GNU gettext</code> manual at:
-<a href="http://www.gnu.org/software/gettext/manual/">http://www.gnu.org/software/gettext/manual/</a></p></div>
-<div class="admonitionblock">
-<table><tr>
-<td class="icon">
-<div class="title">Important</div>
-</td>
-<td class="content">Since we switched to Transifex, editing <strong>po</strong> files is not necessary
- anymore as Transifex provides a user-friendly, intuitive web
- interface for translators. Knowledge of <code>gettext</code> and the <strong>po</strong>
- format is still useful for those of you who prefer the command line
- and local editing. If you want to use the web UI to edit the
- translation strings, you can skip over to <a href="#transifex_webui">Using the Transifex web UI</a> tough.</td>
-</tr></table>
-</div>
-<div class="paragraph"><p>Basically, three different people get involved in the translation chain:
-coders, language coordinator, and translators. After a quick overview of how
-things work, the translator tasks will be described hereafter.</p></div>
-<div class="sect3">
-<h4 id="_overview_2">Overview</h4>
-<div class="paragraph"><p>To be able to display texts in the native language of the user, two steps are
-required: <strong>internationalization</strong> (i18n) and <strong>localization</strong> (l10n).</p></div>
-<div class="paragraph"><p>i18n is about making <code>calcurse</code> support multiple languages. It is performed by
-coders, who will mark translatable texts and provide a way to display them
-translated at runtime.</p></div>
-<div class="paragraph"><p>l10n is about making the i18n&#8217;ed <code>calcurse</code> adapt to the specific language of
-the user, ie translating the strings previously marked by the developers, and
-setting the environment correctly for <code>calcurse</code> to use the result of this
-translation.</p></div>
-<div class="paragraph"><p>So, translatable strings are first marked by the coders within the <code>C</code> source
-files, then gathered in a template file (<strong>calcurse.pot</strong> - the <strong>pot</strong> extension
-meaning <strong>portable object template</strong>). The content of this template file is then
-merged with the translation files for each language (<strong>fr.po</strong> for French, for
-instance - with <strong>po</strong> standing for <strong>portable object</strong>, ie meant to be read and
-edited by humans). A given translation team will take this file, translate its
-strings, and send it back to the developers. At compilation time, a binary
-version of this file (for efficiency reasons) will be produced (<strong>fr.mo</strong> - <strong>mo</strong>
-stands for <strong>machine object</strong>, i.e. meant to be read by programs), and then
-installed. Then <code>calcurse</code> will use this file at runtime, translating the
-strings according to the locale settings of the user.</p></div>
-</div>
-<div class="sect3">
-<h4 id="_translator_tasks">Translator tasks</h4>
-<div class="paragraph"><p>Suppose someone wants to initiate the translation of a new language. Here are
-the steps to follow:</p></div>
-<div class="ulist"><ul>
-<li>
-<p>
-First, find out what the locale name is. For instance, for french, it is
- <code>fr_FR</code>, or simply <code>fr</code>. This is the value the user will have to put in his
- <code>LC_ALL</code> environment variable for software to be translated (see
- <a href="#basics_invocation_variable">Environment variable for i18n</a>).
-</p>
-</li>
-<li>
-<p>
-Then, go into the <strong>po/</strong> directory, and create a new po-file
- from the template file using the following command: <code>msginit -i calcurse.pot
- -o fr.po -l fr --no-translator</code> If you do not have <code>msginit</code> installed on
- your system, simply copy the <strong>calcurse.pot</strong> file to <strong>fr.po</strong> and edit the
- header by hand.
-</p>
-</li>
-</ul></div>
-<div class="paragraph"><p>Now, having this <strong>fr.po</strong> file, the translator is ready to begin.</p></div>
-</div>
-<div class="sect3">
-<h4 id="_po_files">po-files</h4>
-<div class="paragraph"><p>The format of the po-files is quite simple. Indeed, po-files are made of four
-things:</p></div>
-<div class="olist arabic"><ol class="arabic">
-<li>
-<p>
-<strong>location lines:</strong> tells you where the strings can be seen (name of file and
- line number), in case you need to see a bit of context.
-</p>
-</li>
-<li>
-<p>
-<strong>msgid lines:</strong> the strings to translate.
-</p>
-</li>
-<li>
-<p>
-<strong>msgstr lines:</strong> the translated strings.
-</p>
-</li>
-<li>
-<p>
-<strong>lines prefixed with <code>#</code>:</strong> comments (some with a special meaning, as we will
- see below).
-</p>
-</li>
-</ol></div>
-<div class="paragraph"><p>Basically, all you have to do is fill the <strong>msgstr</strong> lines with the translation
-of the above <strong>msgid</strong> line.</p></div>
-<div class="paragraph"><p>A few notes:</p></div>
-<div class="dlist"><dl>
-<dt class="hdlist1">
-<strong>Fuzzy strings</strong>
-</dt>
-<dd>
-<p>
- You will meet strings marked with a <code>"#, fuzzy"</code> comment. <code>calcurse</code> won&#8217;t
- use the translations of such strings until you do something about them. A
- string being fuzzy means either that the string has already been translated
- but has since been changed in the sources of the program, or that this is a
- new string for which <code>gettext</code> made a <em>wild guess</em> for the translation, based
- on other strings in the file. It means you have to review the translation.
- Sometimes, the original string has changed just because a typo has been
- fixed. In this case, you won&#8217;t have to change anything. But sometimes, the
- translation will no longer be accurate and needs to be changed. Once you are
- done and happy with the translation, just remove the <code>"#, fuzzy"</code> line, and
- the translation will be used again in <code>calcurse</code>.
-</p>
-</dd>
-<dt class="hdlist1">
-<strong>c-format strings and special sequences</strong>
-</dt>
-<dd>
-<p>
- Some strings have the following comment: <code>"#, c-format"</code>. This tells that
- parts of the string to translate have a special meaning for the program, and
- that you should leave them alone. For instance, %-sequences, like <code>"%s"</code>.
- These means that <code>calcurse</code> will replace them with another string. So it is
- important it remains. There are also \-sequences, like <code>\n</code> or <code>\t</code>. Leave
- them, too. The former represents an end of line, the latter a tabulation.
-</p>
-</dd>
-<dt class="hdlist1">
-<strong>Translations can be wrapped</strong>
-</dt>
-<dd>
-<p>
- If lines are too long, you can just break them like this:
-</p>
-<div class="listingblock">
-<div class="content">
-<pre><code>msgid ""
-"some very long line"
-"another line"</code></pre>
-</div></div>
-</dd>
-<dt class="hdlist1">
-<strong>po-file header</strong>
-</dt>
-<dd>
-<p>
- At the very beginning of the po-file, the first string form a header, where
- various kind of information has to be filled in. Most important one is the
- charset. It should resemble
-</p>
-<div class="listingblock">
-<div class="content">
-<pre><code>"Content-Type: text/plain; charset=utf-8\n"</code></pre>
-</div></div>
-<div class="paragraph"><p>You should also fill in the Last-Translator field, so that potential
-contributors can contact you if they want to join you in the translation team,
-or have remarks/typo fixes to give about the translations. You can either just
-give your name/nick, or add an email address, for exemple:</p></div>
-<div class="listingblock">
-<div class="content">
-<pre><code>"Last-Translator: Frederic Culot &lt;frederic@culot.org&gt;\n"</code></pre>
-</div></div>
-</dd>
-<dt class="hdlist1">
-<strong>Comments</strong>
-</dt>
-<dd>
-<p>
- Adding comments (lines begining with the <code>#</code> character) can be a good way to
- point out problems or translation difficulties to proofreaders or other
- members of your team.
-</p>
-</dd>
-<dt class="hdlist1">
-<strong>Strings size</strong>
-</dt>
-<dd>
-<p>
- <code>calcurse</code> is a curses/console program, thus it can be heavily dependant on
- the terminal size (number of columns). You should think about this when
- translating. Often, a string must fit into a single line (standard length is
- 80 characters). Don&#8217;t translate blindly, try to look where your string will
- be displayed to adapt your translation.
-</p>
-</dd>
-<dt class="hdlist1">
-<strong>A few useful tools</strong>
-</dt>
-<dd>
-<p>
- The po-file format is very simple, and the file can be edited with a standard
- text editor. But if you prefer, there are few specialized tools you may find
- convenient for translating:
-</p>
-<div class="ulist"><ul>
-<li>
-<p>
-<code>poEdit</code> (<a href="http://www.poedit.org/">http://www.poedit.org/</a>)
-</p>
-</li>
-<li>
-<p>
-<code>KBabel</code> (<a href="http://i18n.kde.org/tools/kbabel/">http://i18n.kde.org/tools/kbabel/</a>)
-</p>
-</li>
-<li>
-<p>
-<code>GTranslator</code> (<a href="http://gtranslator.sourceforge.net/">http://gtranslator.sourceforge.net/</a>)
-</p>
-</li>
-<li>
-<p>
-<code>Emacs</code> po mode
-</p>
-</li>
-<li>
-<p>
-<code>Vim</code> po mode
-</p>
-</li>
-</ul></div>
-</dd>
-<dt class="hdlist1">
-<strong>And finally</strong>
-</dt>
-<dd>
-<p>
- I hope you&#8217;ll have fun contributing to a more internationalized world. :) If
- you have any more questions, don&#8217;t hesitate to contact us at <strong>misc .at.
- calcurse .dot. org</strong>.
-</p>
-</dd>
-</dl></div>
-</div>
-<div class="sect3">
-<h4 id="transifex_uploading">Uploading to Transifex</h4>
-<div class="paragraph"><p>There&#8217;s several different ways to upload a finished (or semi-finished)
-translation for a new language to Transifex. The easiest way is to browse to
-the <a href="http://www.transifex.net/projects/p/calcurse/teams/">Translation Teams</a> page
-and request the addition of a new team.</p></div>
-<div class="paragraph"><p>As soon as we accepted your request, you will be able to upload your <strong>po</strong> file
-on the
-<a href="http://www.transifex.net/projects/p/calcurse/resource/calcursepot/">calcurse
-resource page</a> by clicking the <strong>Add translation</strong> button at the bottom.</p></div>
-</div>
-<div class="sect3">
-<h4 id="_using_transifex_client">Using transifex-client</h4>
-<div class="paragraph"><p>You can also use a command line client to submit translations instead of having
-to use the web interface every time you want to submit an updated version. If
-you have a recent version of <code>setuptools</code> installed, you can get the CLI client
-by issuing the following command:</p></div>
-<div class="listingblock">
-<div class="content">
-<pre><code>$ easy_install -U transifex-client</code></pre>
-</div></div>
-<div class="paragraph"><p>Alternatively, you can get the source code of transifex-client at
-<a href="http://pypi.python.org/pypi/transifex-client">http://pypi.python.org/pypi/transifex-client</a>.</p></div>
-<div class="paragraph"><p>After you downloaded and installed the client, run the following commands in
-the calcurse source directory to checkout the translation resources of
-<strong>calcurse</strong>:</p></div>
-<div class="listingblock">
-<div class="content">
-<pre><code>$ tx pull -a</code></pre>
-</div></div>
-<div class="paragraph"><p>To submit changes back to the server, use:</p></div>
-<div class="listingblock">
-<div class="content">
-<pre><code>$ tx push -r calcurse.calcursepot -t -l &lt;locale&gt;</code></pre>
-</div></div>
-<div class="paragraph"><p>For more details, read up on <code>transifex-client</code> usage at the
-<a href="http://help.transifex.net/user-guide/client/">The Transifex Command-line Client
-v0.4</a> section of the <a href="http://help.transifex.net/">Transifex documentation</a>.</p></div>
-</div>
-<div class="sect3">
-<h4 id="transifex_webui">Using the Transifex web UI</h4>
-<div class="paragraph"><p>As an alternative to editing <strong>po</strong> files, there is a web-based interface that
-can be used to create and update translations. After having signed up and
-created a new translation team (see <a href="#transifex_uploading">Uploading to Transifex</a> on how to do that), click the <strong>Add translation</strong> button at the
-bottom on the
-<a href="http://www.transifex.net/projects/p/calcurse/resource/calcursepot/">calcurse
-resource page</a>, select the language you&#8217;d like to translate and choose
-<strong>Translate Online</strong>.</p></div>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_links">Links</h2>
-<div class="sectionbody">
-<div class="paragraph"><p>This section contains links and references that may be of interest to you.</p></div>
-<div class="sect2">
-<h3 id="_calcurse_homepage">calcurse homepage</h3>
-<div class="paragraph"><p>The <code>calcurse</code> homepage can be found at <a href="http://calcurse.org">http://calcurse.org</a></p></div>
-</div>
-<div class="sect2">
-<h3 id="_calcurse_announce_list">calcurse announce list</h3>
-<div class="paragraph"><p>If you are interested in the project and want to be warned when a new release
-comes out, you can subscribe to the <code>calcurse</code> announce list. In doing so, you
-will receive an email as soon as a new feature appears in <code>calcurse</code>.</p></div>
-<div class="paragraph"><p>To subscribe to this list, send a message to <strong>announce+subscribe .at. calcurse
-.dot. org</strong> with "subscribe" in the subject field.</p></div>
-</div>
-<div class="sect2">
-<h3 id="links_others">Other links</h3>
-<div class="paragraph"><p>You may want to look at the ical format specification (rfc2445) at:
-<a href="http://tools.ietf.org/html/rfc2445">http://tools.ietf.org/html/rfc2445</a></p></div>
-<div class="paragraph"><p>The pcal project page can be found at: <a href="http://pcal.sourceforge.net/">http://pcal.sourceforge.net/</a></p></div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_thanks">Thanks</h2>
-<div class="sectionbody">
-<div class="paragraph"><p>Its time now to thank other people without whom this program would not exist!
-So here is a list of contributing persons I would like to thank :</p></div>
-<div class="ulist"><ul>
-<li>
-<p>
-Alex for its patches, help and advices with <code>C</code> programming
-</p>
-</li>
-<li>
-<p>
-Gwen for testing and general discussions about how to improve <code>calcurse</code>
-</p>
-</li>
-<li>
-<p>
-Herbert for packaging <code>calcurse</code> for FreeBSD
-</p>
-</li>
-<li>
-<p>
-Zul for packaging <code>calcurse</code> for NetBSD
-</p>
-</li>
-<li>
-<p>
-Wain, Steffen and Ronald for packaging <code>calcurse</code> for Archlinux
-</p>
-</li>
-<li>
-<p>
-Kevin, Ryan, and fEnIo for packaging <code>calcurse</code> for Debian and Ubuntu
-</p>
-</li>
-<li>
-<p>
-Pascal for packaging <code>calcurse</code> for Slackware
-</p>
-</li>
-<li>
-<p>
-Alexandre and Markus for packaging <code>calcurse</code> for Mac OsX and Darwin
-</p>
-</li>
-<li>
-<p>
-Igor for packaging <code>calcurse</code> for ALT Linux
-</p>
-</li>
-<li>
-<p>
-Joel for its calendar script which inspired <code>calcurse</code> calendar view
-</p>
-</li>
-<li>
-<p>
-Jeremy Roon for the Dutch translation
-</p>
-</li>
-<li>
-<p>
-Frédéric Culot, Toucouch, Erik Saule, Stéphane Aulery
- and Baptiste Jonglez for the French translation
-</p>
-</li>
-<li>
-<p>
-Michael Schulz, Chris M., Benjamin Moeller and Lukas Fleischer for the German
- translation
-</p>
-</li>
-<li>
-<p>
-Rafael Ferreira for the Portuguese (Brazil) translation
-</p>
-</li>
-<li>
-<p>
-Aleksey Mechonoshin for the Russian translation
-</p>
-</li>
-<li>
-<p>
-Jose Lopez for the Spanish translation
-</p>
-</li>
-<li>
-<p>
-Tony for its patch which helped improving the recur_item_inday() function,
- and for implementing the date format configuration options
-</p>
-</li>
-<li>
-<p>
-Erik Saule for its patch implementing the <code>-N</code>, <code>-s</code>, <code>-S</code>, <code>-r</code> and <code>-D</code>
- flags
-</p>
-</li>
-<li>
-<p>
-people who write softwares I like and which inspired me, especially :
-</p>
-<div class="ulist"><ul>
-<li>
-<p>
-<code>vim</code> for the displacement keys
-</p>
-</li>
-<li>
-<p>
-<code>orpheus</code> and <code>abook</code> for documentation
-</p>
-</li>
-<li>
-<p>
-<code>pine</code> and <code>aptitude</code> for the text user interface
-</p>
-</li>
-<li>
-<p>
-<code>tmux</code> for coding style
-</p>
-</li>
-</ul></div>
-</li>
-</ul></div>
-<div class="paragraph"><p>And last, many many thanks to all of the <code>calcurse</code> users who sent me their
-feedback.</p></div>
-</div>
-</div>
-</div>
-<div id="footnotes"><hr /></div>
-<div id="footer">
-<div id="footer-text">
-Last updated 2014-07-09 00:42:12 CEST
-</div>
-</div>
-</body>
-</html>
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="UTF-8">
+<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta name="generator" content="Asciidoctor 1.5.8">
+<title>CALCURSE - text-based organizer</title>
+<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700">
+<style>
+/* Asciidoctor default stylesheet | MIT License | http://asciidoctor.org */
+/* Uncomment @import statement below to use as custom stylesheet */
+/*@import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700";*/
+article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}
+audio,canvas,video{display:inline-block}
+audio:not([controls]){display:none;height:0}
+script{display:none!important}
+html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}
+a{background:transparent}
+a:focus{outline:thin dotted}
+a:active,a:hover{outline:0}
+h1{font-size:2em;margin:.67em 0}
+abbr[title]{border-bottom:1px dotted}
+b,strong{font-weight:bold}
+dfn{font-style:italic}
+hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}
+mark{background:#ff0;color:#000}
+code,kbd,pre,samp{font-family:monospace;font-size:1em}
+pre{white-space:pre-wrap}
+q{quotes:"\201C" "\201D" "\2018" "\2019"}
+small{font-size:80%}
+sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
+sup{top:-.5em}
+sub{bottom:-.25em}
+img{border:0}
+svg:not(:root){overflow:hidden}
+figure{margin:0}
+fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
+legend{border:0;padding:0}
+button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
+button,input{line-height:normal}
+button,select{text-transform:none}
+button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}
+button[disabled],html input[disabled]{cursor:default}
+input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}
+button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
+textarea{overflow:auto;vertical-align:top}
+table{border-collapse:collapse;border-spacing:0}
+*,*::before,*::after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}
+html,body{font-size:100%}
+body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
+a:hover{cursor:pointer}
+img,object,embed{max-width:100%;height:auto}
+object,embed{height:100%}
+img{-ms-interpolation-mode:bicubic}
+.left{float:left!important}
+.right{float:right!important}
+.text-left{text-align:left!important}
+.text-right{text-align:right!important}
+.text-center{text-align:center!important}
+.text-justify{text-align:justify!important}
+.hide{display:none}
+img,object,svg{display:inline-block;vertical-align:middle}
+textarea{height:auto;min-height:50px}
+select{width:100%}
+.center{margin-left:auto;margin-right:auto}
+.stretch{width:100%}
+.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
+div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;direction:ltr}
+a{color:#2156a5;text-decoration:underline;line-height:inherit}
+a:hover,a:focus{color:#1d4b8f}
+a img{border:none}
+p{font-family:inherit;font-weight:400;font-size:1em;line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}
+p aside{font-size:.875em;line-height:1.35;font-style:italic}
+h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em}
+h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0}
+h1{font-size:2.125em}
+h2{font-size:1.6875em}
+h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em}
+h4,h5{font-size:1.125em}
+h6{font-size:1em}
+hr{border:solid #dddddf;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em;height:0}
+em,i{font-style:italic;line-height:inherit}
+strong,b{font-weight:bold;line-height:inherit}
+small{font-size:60%;line-height:inherit}
+code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)}
+ul,ol,dl{font-size:1em;line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}
+ul,ol{margin-left:1.5em}
+ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0;font-size:1em}
+ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit}
+ul.square{list-style-type:square}
+ul.circle{list-style-type:circle}
+ul.disc{list-style-type:disc}
+ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0}
+dl dt{margin-bottom:.3125em;font-weight:bold}
+dl dd{margin-bottom:1.25em}
+abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help}
+abbr{text-transform:none}
+blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
+blockquote cite{display:block;font-size:.9375em;color:rgba(0,0,0,.6)}
+blockquote cite::before{content:"\2014 \0020"}
+blockquote cite a,blockquote cite a:visited{color:rgba(0,0,0,.6)}
+blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
+@media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
+h1{font-size:2.75em}
+h2{font-size:2.3125em}
+h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
+h4{font-size:1.4375em}}
+table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede}
+table thead,table tfoot{background:#f7f8f7}
+table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
+table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
+table tr.even,table tr.alt,table tr:nth-of-type(even){background:#f8f8f7}
+table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6}
+h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
+h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
+.clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table}
+.clearfix::after,.float-group::after{clear:both}
+*:not(pre)>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background-color:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed;word-wrap:break-word}
+*:not(pre)>code.nobreak{word-wrap:normal}
+*:not(pre)>code.nowrap{white-space:nowrap}
+pre,pre>code{line-height:1.45;color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;text-rendering:optimizeSpeed}
+em em{font-style:normal}
+strong strong{font-weight:400}
+.keyseq{color:rgba(51,51,51,.8)}
+kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background-color:#f7f7f7;border:1px solid #ccc;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em white inset;box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em #fff inset;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap}
+.keyseq kbd:first-child{margin-left:0}
+.keyseq kbd:last-child{margin-right:0}
+.menuseq,.menuref{color:#000}
+.menuseq b:not(.caret),.menuref{font-weight:inherit}
+.menuseq{word-spacing:-.02em}
+.menuseq b.caret{font-size:1.25em;line-height:.8}
+.menuseq i.caret{font-weight:bold;text-align:center;width:.45em}
+b.button::before,b.button::after{position:relative;top:-1px;font-weight:400}
+b.button::before{content:"[";padding:0 3px 0 2px}
+b.button::after{content:"]";padding:0 2px 0 3px}
+p a>code:hover{color:rgba(0,0,0,.9)}
+#header,#content,#footnotes,#footer{width:100%;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em}
+#header::before,#header::after,#content::before,#content::after,#footnotes::before,#footnotes::after,#footer::before,#footer::after{content:" ";display:table}
+#header::after,#content::after,#footnotes::after,#footer::after{clear:both}
+#content{margin-top:1.25em}
+#content::before{content:none}
+#header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0}
+#header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #dddddf}
+#header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #dddddf;padding-bottom:8px}
+#header .details{border-bottom:1px solid #dddddf;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap}
+#header .details span:first-child{margin-left:-.125em}
+#header .details span.email a{color:rgba(0,0,0,.85)}
+#header .details br{display:none}
+#header .details br+span::before{content:"\00a0\2013\00a0"}
+#header .details br+span.author::before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)}
+#header .details br+span#revremark::before{content:"\00a0|\00a0"}
+#header #revnumber{text-transform:capitalize}
+#header #revnumber::after{content:"\00a0"}
+#content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #dddddf;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem}
+#toc{border-bottom:1px solid #e7e7e9;padding-bottom:.5em}
+#toc>ul{margin-left:.125em}
+#toc ul.sectlevel0>li>a{font-style:italic}
+#toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0}
+#toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none}
+#toc li{line-height:1.3334;margin-top:.3334em}
+#toc a{text-decoration:none}
+#toc a:active{text-decoration:underline}
+#toctitle{color:#7a2518;font-size:1.2em}
+@media screen and (min-width:768px){#toctitle{font-size:1.375em}
+body.toc2{padding-left:15em;padding-right:0}
+#toc.toc2{margin-top:0!important;background-color:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #e7e7e9;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto}
+#toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em}
+#toc.toc2>ul{font-size:.9em;margin-bottom:0}
+#toc.toc2 ul ul{margin-left:0;padding-left:1em}
+#toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em}
+body.toc2.toc-right{padding-left:0;padding-right:15em}
+body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #e7e7e9;left:auto;right:0}}
+@media screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0}
+#toc.toc2{width:20em}
+#toc.toc2 #toctitle{font-size:1.375em}
+#toc.toc2>ul{font-size:.95em}
+#toc.toc2 ul ul{padding-left:1.25em}
+body.toc2.toc-right{padding-left:0;padding-right:20em}}
+#content #toc{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
+#content #toc>:first-child{margin-top:0}
+#content #toc>:last-child{margin-bottom:0}
+#footer{max-width:100%;background-color:rgba(0,0,0,.8);padding:1.25em}
+#footer-text{color:rgba(255,255,255,.8);line-height:1.44}
+#content{margin-bottom:.625em}
+.sect1{padding-bottom:.625em}
+@media screen and (min-width:768px){#content{margin-bottom:1.25em}
+.sect1{padding-bottom:1.25em}}
+.sect1:last-child{padding-bottom:0}
+.sect1+.sect1{border-top:1px solid #e7e7e9}
+#content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400}
+#content h1>a.anchor::before,h2>a.anchor::before,h3>a.anchor::before,#toctitle>a.anchor::before,.sidebarblock>.content>.title>a.anchor::before,h4>a.anchor::before,h5>a.anchor::before,h6>a.anchor::before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em}
+#content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible}
+#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none}
+#content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221}
+.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em}
+.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic}
+table.tableblock.fit-content>caption.title{white-space:nowrap;width:0}
+.paragraph.lead>p,#preamble>.sectionbody>[class="paragraph"]:first-of-type p{font-size:1.21875em;line-height:1.6;color:rgba(0,0,0,.85)}
+table.tableblock #preamble>.sectionbody>[class="paragraph"]:first-of-type p{font-size:inherit}
+.admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%}
+.admonitionblock>table td.icon{text-align:center;width:80px}
+.admonitionblock>table td.icon img{max-width:none}
+.admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
+.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6)}
+.admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
+.exampleblock>.content{border-style:solid;border-width:1px;border-color:#e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;-webkit-border-radius:4px;border-radius:4px}
+.exampleblock>.content>:first-child{margin-top:0}
+.exampleblock>.content>:last-child{margin-bottom:0}
+.sidebarblock{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
+.sidebarblock>:first-child{margin-top:0}
+.sidebarblock>:last-child{margin-bottom:0}
+.sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
+.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
+.literalblock pre,.listingblock pre:not(.highlight),.listingblock pre[class="highlight"],.listingblock pre[class^="highlight "],.listingblock pre.CodeRay,.listingblock pre.prettyprint{background:#f7f7f8}
+.sidebarblock .literalblock pre,.sidebarblock .listingblock pre:not(.highlight),.sidebarblock .listingblock pre[class="highlight"],.sidebarblock .listingblock pre[class^="highlight "],.sidebarblock .listingblock pre.CodeRay,.sidebarblock .listingblock pre.prettyprint{background:#f2f1f1}
+.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{-webkit-border-radius:4px;border-radius:4px;word-wrap:break-word;overflow-x:auto;padding:1em;font-size:.8125em}
+@media screen and (min-width:768px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:.90625em}}
+@media screen and (min-width:1280px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:1em}}
+.literalblock pre.nowrap,.literalblock pre.nowrap pre,.listingblock pre.nowrap,.listingblock pre.nowrap pre{white-space:pre;word-wrap:normal}
+.literalblock.output pre{color:#f7f7f8;background-color:rgba(0,0,0,.9)}
+.listingblock pre.highlightjs{padding:0}
+.listingblock pre.highlightjs>code{padding:1em;-webkit-border-radius:4px;border-radius:4px}
+.listingblock pre.prettyprint{border-width:0}
+.listingblock>.content{position:relative}
+.listingblock code[data-lang]::before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:#999}
+.listingblock:hover code[data-lang]::before{display:block}
+.listingblock.terminal pre .command::before{content:attr(data-prompt);padding-right:.5em;color:#999}
+.listingblock.terminal pre .command:not([data-prompt])::before{content:"$"}
+table.pyhltable{border-collapse:separate;border:0;margin-bottom:0;background:none}
+table.pyhltable td{vertical-align:top;padding-top:0;padding-bottom:0;line-height:1.45}
+table.pyhltable td.code{padding-left:.75em;padding-right:0}
+pre.pygments .lineno,table.pyhltable td:not(.code){color:#999;padding-left:0;padding-right:.5em;border-right:1px solid #dddddf}
+pre.pygments .lineno{display:inline-block;margin-right:.25em}
+table.pyhltable .linenodiv{background:none!important;padding-right:0!important}
+.quoteblock{margin:0 1em 1.25em 1.5em;display:table}
+.quoteblock>.title{margin-left:-1.5em;margin-bottom:.75em}
+.quoteblock blockquote,.quoteblock p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify}
+.quoteblock blockquote{margin:0;padding:0;border:0}
+.quoteblock blockquote::before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)}
+.quoteblock blockquote>.paragraph:last-child p{margin-bottom:0}
+.quoteblock .attribution{margin-top:.75em;margin-right:.5ex;text-align:right}
+.verseblock{margin:0 1em 1.25em}
+.verseblock pre{font-family:"Open Sans","DejaVu Sans",sans;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility}
+.verseblock pre strong{font-weight:400}
+.verseblock .attribution{margin-top:1.25rem;margin-left:.5ex}
+.quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic}
+.quoteblock .attribution br,.verseblock .attribution br{display:none}
+.quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)}
+.quoteblock.abstract blockquote::before,.quoteblock.excerpt blockquote::before,.quoteblock .quoteblock blockquote::before{display:none}
+.quoteblock.abstract blockquote,.quoteblock.abstract p,.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{line-height:1.6;word-spacing:0}
+.quoteblock.abstract{margin:0 1em 1.25em;display:block}
+.quoteblock.abstract>.title{margin:0 0 .375em;font-size:1.15em;text-align:center}
+.quoteblock.excerpt,.quoteblock .quoteblock{margin:0 0 1.25em;padding:0 0 .25em 1em;border-left:.25em solid #dddddf}
+.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:1.0625rem}
+.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;text-align:left;margin-right:0}
+table.tableblock{max-width:100%;border-collapse:separate}
+p.tableblock:last-child{margin-bottom:0}
+td.tableblock>.content{margin-bottom:-1.25em}
+table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
+table.grid-all>thead>tr>.tableblock,table.grid-all>tbody>tr>.tableblock{border-width:0 1px 1px 0}
+table.grid-all>tfoot>tr>.tableblock{border-width:1px 1px 0 0}
+table.grid-cols>*>tr>.tableblock{border-width:0 1px 0 0}
+table.grid-rows>thead>tr>.tableblock,table.grid-rows>tbody>tr>.tableblock{border-width:0 0 1px}
+table.grid-rows>tfoot>tr>.tableblock{border-width:1px 0 0}
+table.grid-all>*>tr>.tableblock:last-child,table.grid-cols>*>tr>.tableblock:last-child{border-right-width:0}
+table.grid-all>tbody>tr:last-child>.tableblock,table.grid-all>thead:last-child>tr>.tableblock,table.grid-rows>tbody>tr:last-child>.tableblock,table.grid-rows>thead:last-child>tr>.tableblock{border-bottom-width:0}
+table.frame-all{border-width:1px}
+table.frame-sides{border-width:0 1px}
+table.frame-topbot,table.frame-ends{border-width:1px 0}
+table.stripes-all tr,table.stripes-odd tr:nth-of-type(odd){background:#f8f8f7}
+table.stripes-none tr,table.stripes-odd tr:nth-of-type(even){background:none}
+th.halign-left,td.halign-left{text-align:left}
+th.halign-right,td.halign-right{text-align:right}
+th.halign-center,td.halign-center{text-align:center}
+th.valign-top,td.valign-top{vertical-align:top}
+th.valign-bottom,td.valign-bottom{vertical-align:bottom}
+th.valign-middle,td.valign-middle{vertical-align:middle}
+table thead th,table tfoot th{font-weight:bold}
+tbody tr th{display:table-cell;line-height:1.6;background:#f7f8f7}
+tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
+p.tableblock>code:only-child{background:none;padding:0}
+p.tableblock{font-size:1em}
+td>div.verse{white-space:pre}
+ol{margin-left:1.75em}
+ul li ol{margin-left:1.5em}
+dl dd{margin-left:1.125em}
+dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0}
+ol>li p,ul>li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
+ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none}
+ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em}
+ul.unstyled,ol.unstyled{margin-left:0}
+ul.checklist{margin-left:.625em}
+ul.checklist li>p:first-child>.fa-square-o:first-child,ul.checklist li>p:first-child>.fa-check-square-o:first-child{width:1.25em;font-size:.8em;position:relative;bottom:.125em}
+ul.checklist li>p:first-child>input[type="checkbox"]:first-child{margin-right:.25em}
+ul.inline{display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap;list-style:none;margin:0 0 .625em -1.25em}
+ul.inline>li{margin-left:1.25em}
+.unstyled dl dt{font-weight:400;font-style:normal}
+ol.arabic{list-style-type:decimal}
+ol.decimal{list-style-type:decimal-leading-zero}
+ol.loweralpha{list-style-type:lower-alpha}
+ol.upperalpha{list-style-type:upper-alpha}
+ol.lowerroman{list-style-type:lower-roman}
+ol.upperroman{list-style-type:upper-roman}
+ol.lowergreek{list-style-type:lower-greek}
+.hdlist>table,.colist>table{border:0;background:none}
+.hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
+td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
+td.hdlist1{font-weight:bold;padding-bottom:1.25em}
+.literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
+.colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top}
+.colist td:not([class]):first-child img{max-width:none}
+.colist td:not([class]):last-child{padding:.25em 0}
+.thumb,.th{line-height:0;display:inline-block;border:solid 4px #fff;-webkit-box-shadow:0 0 0 1px #ddd;box-shadow:0 0 0 1px #ddd}
+.imageblock.left{margin:.25em .625em 1.25em 0}
+.imageblock.right{margin:.25em 0 1.25em .625em}
+.imageblock>.title{margin-bottom:0}
+.imageblock.thumb,.imageblock.th{border-width:6px}
+.imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em}
+.image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0}
+.image.left{margin-right:.625em}
+.image.right{margin-left:.625em}
+a.image{text-decoration:none;display:inline-block}
+a.image object{pointer-events:none}
+sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super}
+sup.footnote a,sup.footnoteref a{text-decoration:none}
+sup.footnote a:active,sup.footnoteref a:active{text-decoration:underline}
+#footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em}
+#footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em;border-width:1px 0 0}
+#footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;margin-bottom:.2em}
+#footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none;margin-left:-1.05em}
+#footnotes .footnote:last-of-type{margin-bottom:0}
+#content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0}
+.gist .file-data>table{border:0;background:#fff;width:100%;margin-bottom:0}
+.gist .file-data>table td.line-data{width:99%}
+div.unbreakable{page-break-inside:avoid}
+.big{font-size:larger}
+.small{font-size:smaller}
+.underline{text-decoration:underline}
+.overline{text-decoration:overline}
+.line-through{text-decoration:line-through}
+.aqua{color:#00bfbf}
+.aqua-background{background-color:#00fafa}
+.black{color:#000}
+.black-background{background-color:#000}
+.blue{color:#0000bf}
+.blue-background{background-color:#0000fa}
+.fuchsia{color:#bf00bf}
+.fuchsia-background{background-color:#fa00fa}
+.gray{color:#606060}
+.gray-background{background-color:#7d7d7d}
+.green{color:#006000}
+.green-background{background-color:#007d00}
+.lime{color:#00bf00}
+.lime-background{background-color:#00fa00}
+.maroon{color:#600000}
+.maroon-background{background-color:#7d0000}
+.navy{color:#000060}
+.navy-background{background-color:#00007d}
+.olive{color:#606000}
+.olive-background{background-color:#7d7d00}
+.purple{color:#600060}
+.purple-background{background-color:#7d007d}
+.red{color:#bf0000}
+.red-background{background-color:#fa0000}
+.silver{color:#909090}
+.silver-background{background-color:#bcbcbc}
+.teal{color:#006060}
+.teal-background{background-color:#007d7d}
+.white{color:#bfbfbf}
+.white-background{background-color:#fafafa}
+.yellow{color:#bfbf00}
+.yellow-background{background-color:#fafa00}
+span.icon>.fa{cursor:default}
+a span.icon>.fa{cursor:inherit}
+.admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}
+.admonitionblock td.icon .icon-note::before{content:"\f05a";color:#19407c}
+.admonitionblock td.icon .icon-tip::before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111}
+.admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900}
+.admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400}
+.admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000}
+.conum[data-value]{display:inline-block;color:#fff!important;background-color:rgba(0,0,0,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
+.conum[data-value] *{color:#fff!important}
+.conum[data-value]+b{display:none}
+.conum[data-value]::after{content:attr(data-value)}
+pre .conum[data-value]{position:relative;top:-.125em}
+b.conum *{color:inherit!important}
+.conum:not([data-value]):empty{display:none}
+dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility}
+h1,h2,p,td.content,span.alt{letter-spacing:-.01em}
+p strong,td.content strong,div.footnote strong{letter-spacing:-.005em}
+p,blockquote,dt,td.content,span.alt{font-size:1.0625rem}
+p{margin-bottom:1.25rem}
+.sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em}
+.exampleblock>.content{background-color:#fffef7;border-color:#e0e0dc;-webkit-box-shadow:0 1px 4px #e0e0dc;box-shadow:0 1px 4px #e0e0dc}
+.print-only{display:none!important}
+@page{margin:1.25cm .75cm}
+@media print{*{-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:none!important}
+html{font-size:80%}
+a{color:inherit!important;text-decoration:underline!important}
+a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important}
+a[href^="http:"]:not(.bare)::after,a[href^="https:"]:not(.bare)::after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em}
+abbr[title]::after{content:" (" attr(title) ")"}
+pre,blockquote,tr,img,object,svg{page-break-inside:avoid}
+thead{display:table-header-group}
+svg{max-width:100%}
+p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
+h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
+#toc,.sidebarblock,.exampleblock>.content{background:none!important}
+#toc{border-bottom:1px solid #dddddf!important;padding-bottom:0!important}
+body.book #header{text-align:center}
+body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em}
+body.book #header .details{border:0!important;display:block;padding:0!important}
+body.book #header .details span:first-child{margin-left:0!important}
+body.book #header .details br{display:block}
+body.book #header .details br+span::before{content:none!important}
+body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important}
+body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always}
+.listingblock code[data-lang]::before{display:block}
+#footer{padding:0 .9375em}
+.hide-on-print{display:none!important}
+.print-only{display:block!important}
+.hide-for-print{display:none!important}
+.show-for-print{display:inherit!important}}
+@media print,amzn-kf8{#header>h1:first-child{margin-top:1.25rem}
+.sect1{padding:0!important}
+.sect1+.sect1{border:0}
+#footer{background:none}
+#footer-text{color:rgba(0,0,0,.6);font-size:.9em}}
+@media amzn-kf8{#header,#content,#footnotes,#footer{padding:0}}
+</style>
+</head>
+<body class="article">
+<div id="header">
+<h1>CALCURSE - text-based organizer</h1>
+</div>
+<div id="content">
+<div class="sect1">
+<h2 id="_abstract">Abstract</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>This manual describes <code>calcurse</code> functionalities, and how to use them. The
+installation from source is first described, together with the available
+command line arguments. The user interface is then presented, with all of the
+customizable options that change <code>calcurse</code> behavior. Last, bug reporting
+procedure is explained, as well as the way one can contribute to <code>calcurse</code>
+development.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_introduction">Introduction</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p><code>calcurse</code> is a text-based calendar and scheduling application. It helps
+keeping track of events, appointments and everyday tasks. A configurable
+notification system reminds user of upcoming deadlines, and the curses based
+interface can be customized to suit user needs. All of the commands are
+documented within an online help system.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_overview">Overview</h2>
+<div class="sectionbody">
+<div class="sect2">
+<h3 id="_creation_history">Creation history</h3>
+<div class="paragraph">
+<p>Frederic started thinking about this project when he was finishing his Ph.D. in
+Astrophysics as it started to be a little hard to organize himself and he
+really needed a good tool for managing his appointments and todo list.
+Unfortunately, he finished his Ph.D. before finishing <code>calcurse</code> but he
+continued working on it, hoping it would be helpful to other people.</p>
+</div>
+<div class="paragraph">
+<p>In mid-2010, Lukas took over development of <code>calcurse</code> and is now the main
+contributor and reviewer of patches.</p>
+</div>
+<div class="paragraph">
+<p>But why <code>calcurse</code> anyway? Well, it is simply the concatenation of *cal*endar
+and *curse*s, the name of the library used to build the user interface.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_important_features">Important features</h3>
+<div class="paragraph">
+<p><code>Calcurse</code> is multi-platform and intended to be lightweight, fast and reliable.
+It is to be used inside a console or terminal, locally or on a distant machine
+within an ssh (or similar) connection.</p>
+</div>
+<div class="paragraph">
+<p><code>Calcurse</code> can be run in two different modes : interactive or non-interactive
+mode. The first mode allows oneself to view its own personal organizer almost
+everywhere, thanks to the text-based interface. The second mode permits to
+easily build reminders just by adding <code>calcurse</code> with appropriate command line
+arguments inside a cron tab or within a shell init script.</p>
+</div>
+<div class="paragraph">
+<p>Moreover, <code>calcurse</code> was created with the end-user in mind, and tends to be as
+friendly as possible. This means a complete on-line help system, together with
+having all of the possible actions displayed at any time inside a status bar.
+The user interface is configurable, and one can choose between several color
+and layout combinations. Key bindings are also configurable, to fit everyone&#8217;s
+needs. Last, a configurable notification system reminds user of upcoming
+appointments. The reminders are sent even if the user&#8217;s interface is not
+running, as calcurse is able to run in background.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_installation">Installation</h2>
+<div class="sectionbody">
+<div class="sect2">
+<h3 id="_requirements">Requirements</h3>
+<div class="sect3">
+<h4 id="_ncurses_library">ncurses library</h4>
+<div class="paragraph">
+<p><code>Calcurse</code> requires only a <code>C</code> compiler, such as <code>cc</code> or <code>gcc</code>, and the
+<code>ncurses</code> library. It would be very surprising not to have a valid <code>ncurses</code>
+library already installed on your computer, but if not, you can find it at the
+following url: <a href="http://ftp.gnu.org/pub/gnu/ncurses/" class="bare">http://ftp.gnu.org/pub/gnu/ncurses/</a></p>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+It is also possible to link <code>calcurse</code> against the <code>ncursesw</code> library
+ (ncurses with support for unicode).
+</td>
+</tr>
+</table>
+</div>
+</div>
+<div class="sect3">
+<h4 id="install_requirements_gettext">gettext library</h4>
+<div class="paragraph">
+<p><code>calcurse</code> supports internationalization (<strong>i18n</strong> hereafter) through the
+<code>gettext</code> utilities. This means <code>calcurse</code> can produce multi-lingual messages
+if compiled with native language support (i.e. <strong>NLS</strong>).</p>
+</div>
+<div class="paragraph">
+<p>However, <strong>NLS</strong> is optionnal and if you do not want to have support for
+multi-lingual messages, you can disable this feature. This is done by giving
+the <code>--disable-nls</code> option to <code>configure</code> (see section
+<a href="#install_process">Install process</a>). To check if the <code>gettext</code> utilities are
+installed on your system, you can search for the <code>libintl.h</code> header file for
+instance:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>$ locate libintl.h</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>If this header file is not found, then you can obtain the <code>gettext</code> sources at
+the following url : <a href="http://ftp.gnu.org/pub/gnu/gettext/" class="bare">http://ftp.gnu.org/pub/gnu/gettext/</a></p>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+Even if <code>libintl.h</code> is found on your system, it can be wise to specify
+ its location during the <a href="#install_process">install process</a>, by using the
+ <code>--with-libintl-prefix</code> option with <code>configure</code>. Indeed, the <code>configure</code>
+ could fail to locate this library if installed in an uncommon place.
+</td>
+</tr>
+</table>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="install_process">Install process</h3>
+<div class="paragraph">
+<p>First you need to gunzip and untar the source archive:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>$ tar zxvf calcurse-4.3.0.tar.gz</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Once you meet the requirements and have extracted the archive, the install
+process is quite simple, and follows the standard three steps process:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>$ ./configure
+$ make
+$ make install # (may require root privilege)</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Use <code>./configure --help</code> to obtain a list of possible options.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_calcurse_basics">calcurse basics</h2>
+<div class="sectionbody">
+<div class="sect2">
+<h3 id="_invocation">Invocation</h3>
+<div class="sect3">
+<h4 id="basics_invocation_commandline">Command line arguments</h4>
+<div class="paragraph">
+<p><code>calcurse</code> takes the following options from the command line (both short and
+long options are supported):</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>-a, --appointment</code></dt>
+<dd>
+<p>Print the appointments and events for the current day and exit. Equivalent to
+<code>-Q --filter-type cal</code>. The calendar from which to read the appointments can
+be specified using the <code>-c</code> flag.</p>
+</dd>
+<dt class="hdlist1"><code>-c &lt;file&gt;, --calendar &lt;file&gt;</code></dt>
+<dd>
+<p>Specify the calendar file to use. The default calendar is <code>~/.calcurse/apts</code>
+(see section <a href="#basics_files">calcurse files</a>). This option has precedence
+over <code>-D</code>.</p>
+</dd>
+<dt class="hdlist1"><code>-d &lt;date|num&gt;, --day &lt;date|num&gt;</code></dt>
+<dd>
+<p>Print the appointments for the given date or for the given number of
+upcoming days, depending on the argument format. Two possible formats are
+supported:</p>
+<div class="openblock">
+<div class="content">
+<div class="ulist">
+<ul>
+<li>
+<p>a date (possible formats described below).</p>
+</li>
+<li>
+<p>a number <code>n</code>.</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+<div class="paragraph">
+<p>In the first case, the appointment list for the specified date will be
+returned, while in the second case the appointment list for the <code>n</code> upcoming
+days will be returned. As an example, typing <code>calcurse -d 3</code> will display
+your appointments for today, tomorrow, and the day after tomorrow.
+The first form is equivalent to <code>-Q --filter-type cal --from &lt;date&gt;</code>, the
+second form is equivalent to <code>-Q --filter-type cal --days &lt;num&gt;</code>.</p>
+</div>
+<div class="paragraph">
+<p>Note: as for the <code>-a</code> flag, the calendar from which to read the appointments
+can be specified using the <code>-c</code> flag.</p>
+</div>
+</dd>
+<dt class="hdlist1"><code>--daemon</code></dt>
+<dd>
+<p>Start calcurse in background mode. Restart if the daemon was already running.
+See <a href="#basics_daemon">Background mode</a> for details.</p>
+</dd>
+<dt class="hdlist1"><code>--days &lt;num&gt;</code></dt>
+<dd>
+<p>Specify the length of the range (in days) when used with <code>-Q</code>. Cannot be
+combined with <code>--to</code>.</p>
+</dd>
+<dt class="hdlist1"><code>-D &lt;dir&gt;, --directory &lt;dir&gt;</code></dt>
+<dd>
+<p>Specify the data directory to use. If not specified, the default directory is
+<code>~/.calcurse/</code>.</p>
+</dd>
+<dt class="hdlist1"><code>--filter-type &lt;type&gt;</code></dt>
+<dd>
+<p>Ignore any items that do not match the type mask. See
+<a href="#basics_filters">Filters</a> for details.</p>
+</dd>
+<dt class="hdlist1"><code>--filter-pattern &lt;pattern&gt;</code></dt>
+<dd>
+<p>Ignore any items with a description that does not match the pattern. See
+<a href="#basics_filters">Filters</a> for details.</p>
+</dd>
+<dt class="hdlist1"><code>--filter-start-from &lt;date&gt;</code></dt>
+<dd>
+<p>Ignore any items that start before a given date. See
+<a href="#basics_filters">Filters</a> for details.</p>
+</dd>
+<dt class="hdlist1"><code>--filter-start-to &lt;date&gt;</code></dt>
+<dd>
+<p>Ignore any items that start after a given date. See
+<a href="#basics_filters">Filters</a> for details.</p>
+</dd>
+<dt class="hdlist1"><code>--filter-start-after &lt;date&gt;</code></dt>
+<dd>
+<p>Only include items that start after a given date. See
+<a href="#basics_filters">Filters</a> for details.</p>
+</dd>
+<dt class="hdlist1"><code>--filter-start-before &lt;date&gt;</code></dt>
+<dd>
+<p>Only include items that start before a given date. See
+<a href="#basics_filters">Filters</a> for details.</p>
+</dd>
+<dt class="hdlist1"><code>--filter-start-range &lt;range&gt;</code></dt>
+<dd>
+<p>Only include items within a given range. See <a href="#basics_filters">Filters</a> for
+details.</p>
+</dd>
+<dt class="hdlist1"><code>--filter-end-from &lt;date&gt;</code></dt>
+<dd>
+<p>Ignore any items that end before a given date. See <a href="#basics_filters">Filters</a>
+for details.</p>
+</dd>
+<dt class="hdlist1"><code>--filter-end-to &lt;date&gt;</code></dt>
+<dd>
+<p>Ignore any items that end after a given date. See <a href="#basics_filters">Filters</a>
+for details.</p>
+</dd>
+<dt class="hdlist1"><code>--filter-end-after &lt;date&gt;</code></dt>
+<dd>
+<p>Only include items that end after a given date. See
+<a href="#basics_filters">Filters</a> for details.</p>
+</dd>
+<dt class="hdlist1"><code>--filter-end-before &lt;date&gt;</code></dt>
+<dd>
+<p>Only include items that end before a given date. See
+<a href="#basics_filters">Filters</a> for details.</p>
+</dd>
+<dt class="hdlist1"><code>--filter-end-range &lt;range&gt;</code></dt>
+<dd>
+<p>Only include items within a given range. See <a href="#basics_filters">Filters</a> for
+details.</p>
+</dd>
+<dt class="hdlist1"><code>--filter-priority &lt;priority&gt;</code></dt>
+<dd>
+<p>Only include items with a given priority. See <a href="#basics_filters">Filters</a> for
+details.</p>
+</dd>
+<dt class="hdlist1"><code>--filter-completed</code></dt>
+<dd>
+<p>Only include completed TODO items. See <a href="#basics_filters">Filters</a> for
+details.</p>
+</dd>
+<dt class="hdlist1"><code>--filter-uncompleted</code></dt>
+<dd>
+<p>Only include uncompleted TODO items. See <a href="#basics_filters">Filters</a> for
+details.</p>
+</dd>
+<dt class="hdlist1"><code>--format-apt &lt;format&gt;</code></dt>
+<dd>
+<p>Specify a format to control the output of appointments in non-interactive
+mode. See the <a href="#basics_format_strings">Format strings</a> section for detailed
+information on format strings.</p>
+</dd>
+<dt class="hdlist1"><code>--format-recur-apt &lt;format&gt;</code></dt>
+<dd>
+<p>Specify a format to control the output of recurrent appointments in
+non-interactive mode. See the <a href="#basics_format_strings">Format strings</a>
+section for detailed information on format strings.</p>
+</dd>
+<dt class="hdlist1"><code>--format-event &lt;format&gt;</code></dt>
+<dd>
+<p>Specify a format to control the output of events in non-interactive mode. See
+the <a href="#basics_format_strings">Format strings</a> section for detailed information
+on format strings.</p>
+</dd>
+<dt class="hdlist1"><code>--format-recur-event &lt;format&gt;</code></dt>
+<dd>
+<p>Specify a format to control the output of recurrent events in non-interactive
+mode. See the <a href="#basics_format_strings">Format strings</a> section for detailed
+information on format strings.</p>
+</dd>
+<dt class="hdlist1"><code>--format-todo &lt;format&gt;</code></dt>
+<dd>
+<p>Specify a format to control the output of todo items in non-interactive mode.
+See the <a href="#basics_format_strings">Format strings</a> section for detailed
+information on format strings.</p>
+</dd>
+<dt class="hdlist1"><code>--export-uid</code></dt>
+<dd>
+<p>When exporting items, add the hash of each item to the exported object as an
+UID property.</p>
+</dd>
+<dt class="hdlist1"><code>-F</code>, <code>--filter</code></dt>
+<dd>
+<p>Read items from the data files and write them back. The filter interface can
+be used to drop specific items. Be careful with this option, specifying a
+wrong filter might result it data loss! It is highly recommended to test the
+effect of filters with -G first. See also: <a href="#basics_filters">Filters</a>.</p>
+</dd>
+<dt class="hdlist1"><code>--from &lt;date&gt;</code></dt>
+<dd>
+<p>Specify the start date of the range when used with <code>-Q</code>.</p>
+</dd>
+<dt class="hdlist1"><code>-g, --gc</code></dt>
+<dd>
+<p>Run the garbage collector for note files and exit.</p>
+</dd>
+<dt class="hdlist1"><code>-G, --grep</code></dt>
+<dd>
+<p>Print appointments and TODO items using the calcurse data file format. The
+filter interface can be used to further restrict the output. See also:
+<a href="#basics_filters">Filters</a>.</p>
+</dd>
+<dt class="hdlist1"><code>-h, --help</code></dt>
+<dd>
+<p>Print a short help text describing the supported command-line options,
+and exit.</p>
+</dd>
+<dt class="hdlist1"><code>-i &lt;file&gt;, --import &lt;file&gt;</code></dt>
+<dd>
+<p>Import the icalendar data contained in <code>file</code>.</p>
+</dd>
+<dt class="hdlist1"><code>-l &lt;num&gt;, --limit &lt;num&gt;</code></dt>
+<dd>
+<p>Limit the number of results printed to <em>num</em>.</p>
+</dd>
+<dt class="hdlist1"><code>--dump-imported</code></dt>
+<dd>
+<p>When importing items, print each newly created object to stdout. Format
+strings can be used to specify which details are printed. See also:
+<a href="#basics_format_strings">Format strings</a>.</p>
+</dd>
+<dt class="hdlist1"><code>-n, --next</code></dt>
+<dd>
+<p>Print the next appointment within upcoming 24 hours and exit. The indicated
+time is the number of hours and minutes left before this appointment.</p>
+<div class="paragraph">
+<p>Note: the calendar from which to read the appointments can be specified using
+the <code>-c</code> flag.</p>
+</div>
+</dd>
+<dt class="hdlist1"><code>-q</code>, <code>--quiet</code></dt>
+<dd>
+<p>Be quiet. Do not show system dialogs.</p>
+</dd>
+<dt class="hdlist1"><code>-Q, --query</code></dt>
+<dd>
+<p>Print all appointments inside a given query range, followed by all TODO
+items. The query range defaults to the current day and can be changed by
+using the <code>--from</code> and <code>--to</code> (or <code>--days</code>) parameters. The filter interface
+can be used to further restrict the output. See also:
+<a href="#basics_filters">Filters</a>.</p>
+</dd>
+<dt class="hdlist1"><code>-r[num], --range[=num]</code></dt>
+<dd>
+<p>Print events and appointments for the num number of days and exit. If no num
+is given, a range of 1 day is considered. Equivalent to <code>-Q --filter-type cal
+--days &lt;num&gt;</code>.</p>
+</dd>
+<dt class="hdlist1"><code>--read-only</code></dt>
+<dd>
+<p>Don&#8217;t save configuration nor appointments/todos.</p>
+<div class="admonitionblock warning">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Warning</div>
+</td>
+<td class="content">
+Use this this with care! If you run an interactive calcurse instance
+in read-only mode, all changes from this session will be lost without warning!
+</td>
+</tr>
+</table>
+</div>
+</dd>
+<dt class="hdlist1"><code>-s[date], --startday[=date]</code></dt>
+<dd>
+<p>Print events and appointments from date and exit. If no date is given, the
+current day is considered. Equivalent to <code>-Q --filter-type cal --from
+&lt;date&gt;</code>.</p>
+</dd>
+<dt class="hdlist1"><code>-S&lt;regex&gt;, --search=&lt;regex&gt;</code></dt>
+<dd>
+<p>When used with the <code>-a</code>, <code>-d</code>, <code>-r</code>, <code>-s</code>, or <code>-t</code> flag, print only the items
+having a description that matches the given regular expression. Equivalent to
+<code>-Q --filter-pattern &lt;regex&gt;</code>.</p>
+</dd>
+<dt class="hdlist1"><code>--status</code></dt>
+<dd>
+<p>Display the status of running instances of calcurse. If calcurse is
+running, this will tell if the interactive mode was launched or if
+calcurse is running in background. The process pid will also be indicated.</p>
+</dd>
+<dt class="hdlist1"><code>-t[num], --todo[=num]</code></dt>
+<dd>
+<p>Print the <code>todo</code> list and exit. If the optional number <code>num</code> is given, then
+only uncompleted todos having a priority equal to <code>num</code> will be returned. The
+priority number must be between 1 (highest) and 9 (lowest). It is also
+possible to specify <code>0</code> for the priority, in which case only completed tasks
+will be shown. Equivalent to <code>-Q --filter-type todo</code>, combined with
+<code>--filter-priority</code> and <code>--filter-completed</code> or <code>--filter-uncompleted</code>.</p>
+</dd>
+<dt class="hdlist1"><code>--to &lt;date&gt;</code></dt>
+<dd>
+<p>Specify the end date of the range when used with <code>-Q</code>. Cannot be combined
+with <code>--days</code>.</p>
+</dd>
+<dt class="hdlist1"><code>-v, --version</code></dt>
+<dd>
+<p>Display <code>calcurse</code> version and exit.</p>
+</dd>
+<dt class="hdlist1"><code>-x[format], --export[=format]</code></dt>
+<dd>
+<p>Export user data to specified format. Events, appointments and todos are
+converted and echoed to stdout. Two possible formats are available: ical and
+pcal (see section <a href="#links_others">Links</a> below). If the optional
+argument <code>format</code> is not given, ical format is selected by default.</p>
+<div class="paragraph">
+<p>Note: redirect standard output to export data to a file, by issuing a command
+such as:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>$ calcurse --export &gt; my_data.dat</pre>
+</div>
+</div>
+</dd>
+</dl>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+The <code>-N</code> option has been removed in calcurse 3.0.0. See the
+<a href="#basics_format_strings">Format strings</a> section on how to print note along
+with appointments and events.
+</td>
+</tr>
+</table>
+</div>
+</div>
+<div class="sect3">
+<h4 id="basics_filters">Filters</h4>
+<div class="paragraph">
+<p>Filters can be used to restrict the set of items which are loaded from the
+appointments file when using calcurse in non-interactive mode. The following
+filters are currently supported:</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>--filter-hash &lt;pattern&gt;</code></dt>
+<dd>
+<p>Only include items with a hash starting with the specified pattern. The
+pattern can be inverted by prepending an exclamation mark (<code>!</code>).</p>
+</dd>
+<dt class="hdlist1"><code>--filter-type &lt;type&gt;</code></dt>
+<dd>
+<p>Ignore any items that do not match the type mask. The type mask is a
+comma-separated list of valid type descriptions which include <code>event</code>, <code>apt</code>,
+<code>recur-event</code>, <code>recur-apt</code> and <code>todo</code>. You can also use <code>recur</code> as a
+shorthand for <code>recur-event,recur-apt</code> and <code>cal</code> as a shorthand for
+<code>event,apt,recur</code>.</p>
+</dd>
+<dt class="hdlist1"><code>--filter-pattern &lt;pattern&gt;</code></dt>
+<dd>
+<p>Ignore any items with a description that does not match the pattern. The
+pattern is interpreted as extended regular expression.</p>
+</dd>
+<dt class="hdlist1"><code>--filter-start-from &lt;date&gt;</code></dt>
+<dd>
+<p>Ignore any items that start before a given date.</p>
+</dd>
+<dt class="hdlist1"><code>--filter-start-to &lt;date&gt;</code></dt>
+<dd>
+<p>Ignore any items that start after a given date.</p>
+</dd>
+<dt class="hdlist1"><code>--filter-start-after &lt;date&gt;</code></dt>
+<dd>
+<p>Only include items that start after a given date.</p>
+</dd>
+<dt class="hdlist1"><code>--filter-start-before &lt;date&gt;</code></dt>
+<dd>
+<p>Only include items that start before a given date.</p>
+</dd>
+<dt class="hdlist1"><code>--filter-start-range &lt;range&gt;</code></dt>
+<dd>
+<p>Only include items with a start date that falls within a given range. A range
+consists of a start date and an end date, separated by a comma.</p>
+</dd>
+<dt class="hdlist1"><code>--filter-end-from &lt;date&gt;</code></dt>
+<dd>
+<p>Ignore any items that end before a given date.</p>
+</dd>
+<dt class="hdlist1"><code>--filter-end-to &lt;date&gt;</code></dt>
+<dd>
+<p>Ignore any items that end after a given date.</p>
+</dd>
+<dt class="hdlist1"><code>--filter-end-after &lt;date&gt;</code></dt>
+<dd>
+<p>Only include items that end after a given date.</p>
+</dd>
+<dt class="hdlist1"><code>--filter-end-before &lt;date&gt;</code></dt>
+<dd>
+<p>Only include items that end before a given date.</p>
+</dd>
+<dt class="hdlist1"><code>--filter-end-range &lt;range&gt;</code></dt>
+<dd>
+<p>Only include items with an end date that falls within a given range. A range
+consists of a start date and an end date, separated by a comma.</p>
+</dd>
+<dt class="hdlist1"><code>--filter-priority &lt;priority&gt;</code></dt>
+<dd>
+<p>Only include items with a given priority.</p>
+</dd>
+<dt class="hdlist1"><code>--filter-completed</code></dt>
+<dd>
+<p>Only include completed TODO items.</p>
+</dd>
+<dt class="hdlist1"><code>--filter-uncompleted</code></dt>
+<dd>
+<p>Only include uncompleted TODO items.</p>
+</dd>
+</dl>
+</div>
+</div>
+<div class="sect3">
+<h4 id="basics_format_strings">Format strings</h4>
+<div class="paragraph">
+<p>Format strings are composed of printf()-style format specifiers&#8201;&#8212;&#8201;ordinary
+characters are copied to stdout without modification. Each specifier is
+introduced by a <code>%</code> and is followed by a character which specifies the field to
+print. The set of available fields depends on the item type.</p>
+</div>
+<div class="sect4">
+<h5 id="_format_specifiers_for_appointments">Format specifiers for appointments</h5>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>s</code></dt>
+<dd>
+<p>Print the start time of the appointment as UNIX time stamp</p>
+</dd>
+<dt class="hdlist1"><code>S</code></dt>
+<dd>
+<p>Print the start time of the appointment using the <code>hh:mm</code> format</p>
+</dd>
+<dt class="hdlist1"><code>d</code></dt>
+<dd>
+<p>Print the duration of the appointment in seconds</p>
+</dd>
+<dt class="hdlist1"><code>e</code></dt>
+<dd>
+<p>Print the end time of the appointment as UNIX time stamp</p>
+</dd>
+<dt class="hdlist1"><code>E</code></dt>
+<dd>
+<p>Print the end time of the appointment using the <code>hh:mm</code> format</p>
+</dd>
+<dt class="hdlist1"><code>m</code></dt>
+<dd>
+<p>Print the description of the item</p>
+</dd>
+<dt class="hdlist1"><code>n</code></dt>
+<dd>
+<p>Print the name of the note file belonging to the item</p>
+</dd>
+<dt class="hdlist1"><code>N</code></dt>
+<dd>
+<p>Print the note belonging to the item</p>
+</dd>
+</dl>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_format_specifiers_for_events">Format specifiers for events</h5>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>m</code></dt>
+<dd>
+<p>Print the description of the item</p>
+</dd>
+<dt class="hdlist1"><code>n</code></dt>
+<dd>
+<p>Print the name of the note file belonging to the item</p>
+</dd>
+<dt class="hdlist1"><code>N</code></dt>
+<dd>
+<p>Print the note belonging to the item</p>
+</dd>
+</dl>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_format_specifiers_for_todo_items">Format specifiers for todo items</h5>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>p</code></dt>
+<dd>
+<p>Print the priority of the item</p>
+</dd>
+<dt class="hdlist1"><code>m</code></dt>
+<dd>
+<p>Print the description of the item</p>
+</dd>
+<dt class="hdlist1"><code>n</code></dt>
+<dd>
+<p>Print the name of the note file belonging to the item</p>
+</dd>
+<dt class="hdlist1"><code>N</code></dt>
+<dd>
+<p>Print the note belonging to the item</p>
+</dd>
+</dl>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_examples">Examples</h5>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>calcurse -r7 --format-apt='- %S -&gt; %E\n\t%m\n%N'</code></dt>
+<dd>
+<p>Print appointments and events for the next seven days. Also, print the notes
+attached to each regular appointment (simulates <code>-N</code> for appointments).</p>
+</dd>
+<dt class="hdlist1"><code>calcurse -r7 --format-apt=' - %m (%S to %E)\n' --format-recur-apt=' - %m (%S to %E)\n'</code></dt>
+<dd>
+<p>Print appointments and events for the next seven days and use a custom format
+for (recurrent) appointments: ` - Some appointment (18:30 to 21:30)`.</p>
+</dd>
+<dt class="hdlist1"><code>calcurse -t --format-todo '(%p) %m\n'</code></dt>
+<dd>
+<p>List all todo items and put parentheses around the priority specifiers.</p>
+</dd>
+</dl>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_extended_format_specifiers">Extended format specifiers</h5>
+<div class="paragraph">
+<p>Extended format specifiers can be used if you want to specify advanced
+formatting options. Extended specifiers are introduced by <code>%(</code> and are
+terminated by a closing parenthesis (<code>)</code>). The following list includes all
+short specifiers and corresponding long options:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><code>s</code>: <code>(start)</code></p>
+</li>
+<li>
+<p><code>S</code>: <code>(start:epoch)</code></p>
+</li>
+<li>
+<p><code>e</code>: <code>(end)</code></p>
+</li>
+<li>
+<p><code>E</code>: <code>(end:epoch)</code></p>
+</li>
+<li>
+<p><code>d</code>: <code>(duration)</code></p>
+</li>
+<li>
+<p><code>r</code>: <code>(remaining)</code></p>
+</li>
+<li>
+<p><code>m</code>: <code>(message)</code></p>
+</li>
+<li>
+<p><code>n</code>: <code>(noteid)</code></p>
+</li>
+<li>
+<p><code>N</code>: <code>(note)</code></p>
+</li>
+<li>
+<p><code>p</code>: <code>(priority)</code></p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>The <code>(start)</code> and <code>(end)</code> specifiers support strftime()-style extended
+formatting options that can be used for fine-grained formatting. Additionally,
+the special formats <code>epoch</code> (which is equivalent to <code>(start:%s)</code> or <code>(end:%s)</code>)
+and <code>default</code> (which is mostly equivalent to <code>(start:%H:%M)</code> or <code>(end:%H:%M)</code>
+but displays <code>..:..</code> if the item doesn&#8217;t start/end at the current day) are
+supported.</p>
+</div>
+<div class="paragraph">
+<p>The <code>(remaining)</code> and <code>(duration)</code> specifiers support a subset of the
+strftime()-style formatting options, along with two extra qualifiers.
+The supported options are <code>%d</code>, <code>%H</code>, <code>%M</code> and <code>%S</code>, and by default each
+of these is zero-padded to two decimal places. To avoid the
+zero-padding, add <code>-</code> before the formatting option (for example, <code>%-d</code>).
+Additionally, the <code>E</code> option will display the total number of time units
+until the appointment, rather than showing the remaining number of time
+units modulo the next larger time unit. For example, an appointment in
+50 hours will show as 02:00 with the formatting string <code>%H:%M</code>, but will
+show 50:00 with the formatting string <code>%EH:%M</code>. Note that if you are
+combining the <code>-</code> and <code>E</code> options, the <code>-</code> must come first. The default
+format for the <code>(remaining)</code> specifier is <code>%EH:%M</code>.</p>
+</div>
+<div class="paragraph">
+<p>There are two additional long format specifiers that do not have any
+corresponding short options. They can be used to print an item&#8217;s hash or its
+internal representation and were designed to be used for scripting:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><code>(hash)</code></p>
+</li>
+<li>
+<p><code>(raw)</code></p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="basics_invocation_variable">Environment variable for i18n</h4>
+<div class="paragraph">
+<p><code>calcurse</code> can be compiled with native language support (see
+<a href="#install_requirements_gettext">gettext library</a>). Thus, if you wish to have
+messages displayed into your native language, first make sure it is available
+by looking at the <code>po/LINGUAS</code> file. This file indicates the set of available
+languages by showing the two-letters corresponding code (for exemple, <strong>fr</strong>
+stands for french). If you do not find your language, it would be greatly
+appreciated if you could help translating <code>calcurse</code> (see the <a href="#contribute">How
+to contribute?</a> section).</p>
+</div>
+<div class="paragraph">
+<p>If your language is available, run <code>calcurse</code> with the following command:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>$ LC_ALL=fr_FR calcurse</pre>
+</div>
+</div>
+<div class="olist lowerroman">
+<ol class="lowerroman" type="i">
+<li>
+<p>where <strong>fr_FR</strong> is the locale name in this exemple, but should be replaced by
+the locale corresponding to the desired language.</p>
+</li>
+</ol>
+</div>
+<div class="paragraph">
+<p>You should also specify the charset to be used, because in some cases the
+accents and such are not displayed correctly. This charset is indicated at the
+beginning of the po file corresponding to the desired language. For instance,
+you can see in the fr.po file that it uses the iso-8859-1 charset, so you could
+run <code>calcurse</code> using the following command:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>$ LC_ALL=fr_FR.ISO8859-1 calcurse</pre>
+</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_other_environment_variables">Other environment variables</h4>
+<div class="paragraph">
+<p>The following environment variables affect the way <code>calcurse</code> operates:</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>VISUAL</code></dt>
+<dd>
+<p>Specifies the external editor to use for writing notes.</p>
+</dd>
+<dt class="hdlist1"><code>EDITOR</code></dt>
+<dd>
+<p>If the <code>VISUAL</code> environment variable is not set, then <code>EDITOR</code> will be used
+as the default external editor. If none of those variables are set, then
+<code>/usr/bin/vi</code> is used instead.</p>
+</dd>
+<dt class="hdlist1"><code>PAGER</code></dt>
+<dd>
+<p>Specifies the default viewer to be used for reading notes. If this variable
+is not set, then <code>/usr/bin/less</code> is used.</p>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_hooks">Hooks</h3>
+<div class="paragraph">
+<p>You can place scripts in <code>$HOME/.calcurse/hooks/</code> to trigger actions at certain
+events. To enable a hook, add a script with one of the following names to this
+directory. Also make sure the scripts are executable.</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><strong>pre-load</strong></dt>
+<dd>
+<p>Executed before the data files are loaded.</p>
+</dd>
+<dt class="hdlist1"><strong>post-load</strong></dt>
+<dd>
+<p>Executed after the data files are saved.</p>
+</dd>
+<dt class="hdlist1"><strong>pre-save</strong></dt>
+<dd>
+<p>Executed before the data files are loaded.</p>
+</dd>
+<dt class="hdlist1"><strong>post-save</strong></dt>
+<dd>
+<p>Executed after the data files are saved.</p>
+</dd>
+</dl>
+</div>
+<div class="paragraph">
+<p>Some examples can be found in the <code>contrib/hooks/</code> directory of the calcurse
+source tree.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_user_interface">User interface</h3>
+<div class="sect3">
+<h4 id="_non_interactive_mode">Non-interactive mode</h4>
+<div class="paragraph">
+<p>When called with at least one of the following arguments: <code>-a</code>, <code>-d</code>, <code>-h</code>,
+<code>-n</code>, <code>-t</code>, <code>-v</code>, <code>-x</code>, <code>calcurse</code> is started in non-interactive mode. This
+means the desired information will be displayed, and after that, <code>calcurse</code>
+simply quits and you are driven back to the shell prompt.</p>
+</div>
+<div class="paragraph">
+<p>That way, one can add a line such as <code>calcurse --todo --appointment</code> in its
+init config file to display at logon the list of tasks and appointments
+scheduled for the current day.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="basics_interface_interactive">Interactive mode</h4>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+Key bindings that are indicated in this manual correspond to the default
+ ones, defined when <code>calcurse</code> is launched for the first time. If those
+ key bindings do not suit user&#8217;s needs, it is possible to change them
+ within the keys configuration menu (see <a href="#options_keys">key bindings</a>).
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>When called without any argument or only with the <code>-c</code> option, <code>calcurse</code> is
+started in interactive mode. In this mode, you are shown an interface
+containing three different panels which you can browse using the <code>TAB</code> key,
+plus a notification bar and a status bar (see figure below).</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre> appointment panel---. .---calendar panel
+ | |
+ v v
+ +------------------------------------++----------------------------+
+ | Appointments || Calendar |
+ |------------------------------------||----------------------------|
+ | (|) April 6, 2006 || April 2006 |
+ | ||Mon Tue Wed Thu Fri Sat Sun |
+ | || 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 |
+ | || |
+ | |+----------------------------+
+ | |+----------------------------+
+ | || ToDo | todo
+ | ||----------------------------| panel
+ | || | |
+ | || | |
+ | || |&lt;--.
+ | || |
+ +------------------------------------++----------------------------+
+ |---[ Mon 2006-11-22 | 10:11:43 ]---(apts)----&gt; 01:20 :: lunch &lt;---|&lt;--.
+ +------------------------------------------------------------------+ notify-bar
+ | ? Help R Redraw H/L -/+1 Day G GoTo C Config |
+ | Q Quit S Save J/K -/+1 Week Tab Chg View |&lt;-.
+ +------------------------------------------------------------------+ |
+ |
+ status bar</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The first panel represents a calendar which allows to highlight a particular
+day, the second one contains the list of the events and appointments on that
+day, and the last one contains a list of tasks to do but which are not assigned
+to any specific day.</p>
+</div>
+<div class="paragraph">
+<p>Depending on the selected view, the calendar could either display a monthly
+(default as shown in previous figure) or weekly view. The weekly view would
+look like the following:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>+------------------------------------+
+| Calendar |
+|----------------------------(# 13)--|
+| Mon Tue Wed Thu Fri Sat Sun |
+| 29 30 31 01 02 03 04 |
+| &lt;----+-- slice 1: 00:00 to 04:00 AM
+| -- -- -- -- -- -- |
+| &lt;----+-- slice 2: 04:00 to 08:00 AM
+| -- -- -- -- -- -- |
+| &lt;----+-- slice 3: 08:00 to 12:00 AM
+| - -- -- -- -- -- -- - &lt;-+-- midday
+| &lt;----+-- slice 4: 12:00 to 04:00 PM
+| -- -- -- -- -- -- |
+| &lt;----+-- slice 5: 04:00 to 08:00 PM
+| -- -- -- -- -- -- |
+| &lt;----+-- slice 6: 08:00 to 12:00 PM
++------------------------------------+</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The current week number is displayed on the top-right side of the panel (<strong># 13</strong>
+meaning it is the 13th week of the year in the above example). The seven days
+of the current week are displayed in column. Each day is divided into slices of
+4 hours each (6 slices in total, see figure above). A slice will appear in a
+different color if an appointment falls into the corresponding time-slot.</p>
+</div>
+<div class="paragraph">
+<p>In the appointment panel, one can notice the <strong><code>(|)</code></strong> sign just in front of the
+date. This indicates the current phase of the moon. Depending on which is the
+current phase, the following signs can be seen:</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">` |) `</dt>
+<dd>
+<p>first quarter</p>
+</dd>
+<dt class="hdlist1">` (|) `</dt>
+<dd>
+<p>full moon</p>
+</dd>
+<dt class="hdlist1">` (| `</dt>
+<dd>
+<p>last quarter</p>
+</dd>
+<dt class="hdlist1">` | `</dt>
+<dd>
+<p>new moon</p>
+</dd>
+<dt class="hdlist1">no sign</dt>
+<dd>
+<p>Phase of the moon does not correspond to any of the above ones.</p>
+</dd>
+</dl>
+</div>
+<div class="paragraph">
+<p>At the very bottom of the screen there is a status bar, which indicates the
+possible actions and the corresponding keystrokes.</p>
+</div>
+<div class="paragraph">
+<p>Just above this status bar is the notify-bar, which indicates from left to
+right : the current date, the current time, the calendar file currently in use
+(apts on the above example, which is the default calendar file, see the
+following section), and the next appointment within the upcoming 24 hours. Here
+it says that it will be lunch time in one hour and twenty minutes.</p>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+Some actions, such as editing or adding an item, require to type in some
+ text. This is done with the help of the built-in input line editor.
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>Within this editor, if a line is longer than the screen width, a <code>&gt;</code>, <code>*</code>, or
+<code>&lt;</code> character is displayed in the last column indicating that there are more
+character after, before and after, or before the current position,
+respectively. The line is scrolled horizontally as necessary.</p>
+</div>
+<div class="paragraph">
+<p>Moreover, some editing commands are bound to particular control characters.
+Hereafter are indicated the available editing commands (<code>^</code> stands for the
+control key):</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>^a</code></dt>
+<dd>
+<p>moves the cursor to the beginning of the input line</p>
+</dd>
+<dt class="hdlist1"><code>^b</code></dt>
+<dd>
+<p>moves the cursor backward</p>
+</dd>
+<dt class="hdlist1"><code>^d</code></dt>
+<dd>
+<p>deletes one character forward</p>
+</dd>
+<dt class="hdlist1"><code>^e</code></dt>
+<dd>
+<p>moves the cursor to the end of the input line</p>
+</dd>
+<dt class="hdlist1"><code>^f</code></dt>
+<dd>
+<p>moves the cursor forward</p>
+</dd>
+<dt class="hdlist1"><code>^h</code></dt>
+<dd>
+<p>deletes one character backward</p>
+</dd>
+<dt class="hdlist1"><code>^k</code></dt>
+<dd>
+<p>deletes the input from the cursor to the end of the line</p>
+</dd>
+<dt class="hdlist1"><code>^w</code></dt>
+<dd>
+<p>deletes backward to the beginning of the current word</p>
+</dd>
+<dt class="hdlist1"><code>ESCAPE</code></dt>
+<dd>
+<p>cancels the editing</p>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="basics_daemon">Background mode</h3>
+<div class="paragraph">
+<p>When the daemon mode is enabled in the notification configuration menu (see
+<a href="#options_notify">Notify-bar settings</a>), <code>calcurse</code> will stay in background
+when the user interface is not running. In background mode, <code>calcurse</code> checks
+for upcoming appointments and runs the user-defined notification command when
+ necessary. When the user interface is started again, the daemon automatically
+ stops.</p>
+</div>
+<div class="paragraph">
+<p><code>calcurse</code> background activity can be logged (set the <code>daemon.log</code> variable in
+the notification configuration <a href="#options_notify">menu</a>), and in that case,
+information about the daemon start and stop time, reminders' command launch
+time, signals received&#8230;&#8203; will be written in the <code>daemon.log</code> file (see section
+<a href="#basics_files">files</a>).</p>
+</div>
+<div class="paragraph">
+<p>Using the <code>--status</code> command line option (see section
+<a href="#basics_invocation_commandline">Command line arguments</a>), one can know if
+<code>calcurse</code> is currently running in background or not. If the daemon is
+running, a message like the following one will be displayed (the pid of the
+daemon process will be shown):</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>calcurse is running in background (pid 14536)</pre>
+</div>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+To stop the daemon, just send the <code>TERM</code> signal to it, using a command
+ such as: <code>kill daemon_pid</code>, where <strong>daemon_pid</strong> is the process id of the
+ daemon (14536 in the above example).
+</td>
+</tr>
+</table>
+</div>
+</div>
+<div class="sect2">
+<h3 id="basics_files">calcurse files</h3>
+<div class="paragraph">
+<p>The following structure is created in your <code>$HOME</code> directory (or in the
+directory you specified with the -D option) the first time <code>calcurse</code> is run
+:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>$HOME/.calcurse/
+ |___notes/
+ |___conf
+ |___keys
+ |___apts
+ |___todo</pre>
+</div>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>notes/</code></dt>
+<dd>
+<p>this subdirectory contains descriptions of the notes which are attached to
+appointments, events or todos. Since the file name of each note file is a
+SHA1 hash of the note itself, multiple items can share the same note file.
+calcurse provides a garbage collector (see the <code>-g</code> command line parameter)
+that can be used to remove note files which are no longer linked to any item.</p>
+</dd>
+<dt class="hdlist1"><code>conf</code></dt>
+<dd>
+<p>this file contains the user configuration</p>
+</dd>
+<dt class="hdlist1"><code>keys</code></dt>
+<dd>
+<p>this file contains the user-defined key bindings</p>
+</dd>
+<dt class="hdlist1"><code>apts</code></dt>
+<dd>
+<p>this file contains all of the events and user&#8217;s appointments</p>
+</dd>
+<dt class="hdlist1"><code>todo</code></dt>
+<dd>
+<p>this file contains the todo list</p>
+</dd>
+</dl>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+If the logging of calcurse daemon activity was set in the notification
+ configuration menu, the extra file <code>daemon.log</code> will appear in calcurse
+ data directory. This file contains logs about calcurse activity when
+ running in background.
+</td>
+</tr>
+</table>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_importexport_capabilities">Import/Export capabilities</h3>
+<div class="paragraph">
+<p>The import and export capabilities offered by <code>calcurse</code> are described below.</p>
+</div>
+<div class="sect3">
+<h4 id="_import">Import</h4>
+<div class="paragraph">
+<p>Data in icalendar format as described in the rfc2445 specification (see
+<a href="#links_others">links</a> section below) can be imported into calcurse. Calcurse
+ical parser is based on version 2.0 of this specification, but for now on, only
+a subset of it is supported.</p>
+</div>
+<div class="paragraph">
+<p>The following icalendar properties are handled by calcurse:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><code>VTODO</code> items: "PRIORITY", "VALARM", "SUMMARY", "DESCRIPTION"</p>
+</li>
+<li>
+<p><code>VEVENT</code> items: "DTSTART", "DTEND", "DURATION", "RRULE", "EXDATE", "VALARM",
+"SUMMARY", "DESCRIPTION"</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>The icalendar <code>DESCRIPTION</code> property will be converted into calcurse format by
+adding a note to the item. If a "VALARM" property is found, the item will be
+flagged as important and the user will get a notification (this is only
+applicable to appointments).</p>
+</div>
+<div class="paragraph">
+<p>Here are the properties that are not implemented:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>negative time durations are not taken into account (item is skipped)</p>
+</li>
+<li>
+<p>some recurence frequences are not recognize: "SECONDLY" / "MINUTELY" /
+"HOURLY"</p>
+</li>
+<li>
+<p>some recurrence keywords are not recognized (all those starting with <code>BY</code>):
+"BYSECOND" / "BYMINUTE" / "BYHOUR" / "BYDAY" / "BYMONTHDAY" / "BYYEARDAY" /
+"BYWEEKNO" / "BYMONTH" / "BYSETPOS" plus "WKST"</p>
+</li>
+<li>
+<p>the recurrence exception keyword "EXRULE" is not recognized</p>
+</li>
+<li>
+<p>timezones are not taken into account</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_export">Export</h4>
+<div class="paragraph">
+<p>Two possible export formats are available: <code>ical</code> and <code>pcal</code> (see section
+<a href="#links_others">Links</a> below to find out about those formats).</p>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_online_help">Online help</h3>
+<div class="paragraph">
+<p>At any time, the built-in help system can be invoked by pressing the <code>?</code> key.
+By default, it shows an introduction to the help system in an external pager.
+You need to exit the pager in order to get back to calcurse (pressing <code>q</code>
+should almost always work). The default pager can be changed by setting the
+PAGER environment variable.</p>
+</div>
+<div class="paragraph">
+<p>If you want to display help on a specific feature or key binding, type <code>:help
+&lt;feature&gt;</code> (e.g. <code>:help add</code>) or <code>:help &lt;key&gt;</code> (e.g. <code>:help ^A</code>) on the main
+screen.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_options">Options</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>All of the <code>calcurse</code> parameters are configurable from the Configuration menu
+available when pressing <code>C</code>. You are then driven to a submenu with five
+possible choices : pressing <code>C</code> again will lead you to the Color scheme
+configuration, pressing <code>L</code> allows you to choose the layout of the main
+<code>calcurse</code> screen (in other words, where to put the three different panels on
+screen), pressing <code>G</code> permits you to choose between different general options,
+pressing <code>K</code> opens the key bindings configuration menu, and last you can modify
+the notify-bar settings by pressing <code>N</code>.</p>
+</div>
+<div class="sect2">
+<h3 id="options_general">General options</h3>
+<div class="paragraph">
+<p>These options control <code>calcurse</code> general behavior, as described below:</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>appearance.compactpanels</code> (default: <strong>no</strong>)</dt>
+<dd>
+<p>In compact panels mode, all captions are removed from panels.</p>
+</dd>
+<dt class="hdlist1"><code>appearance.defaultpanel</code> (default: <strong>calendar</strong>)</dt>
+<dd>
+<p>This can be used to specify the panel to be selected on startup.</p>
+</dd>
+<dt class="hdlist1"><code>general.autosave</code> (default: <strong>yes</strong>)</dt>
+<dd>
+<p>This option allows to automatically save the user&#8217;s data (if set to <strong>yes</strong>)
+when quitting. &lt;p class="rq"&gt;&lt;span class="valorise"&gt;warning:&lt;/span&gt; No data
+will be automatically saved if <code>general.autosave</code> is set to <strong>no</strong>. This means
+the user must press <code>S</code> (for saving) in order to retrieve its modifications.</p>
+</dd>
+<dt class="hdlist1"><code>general.autogc</code> (default: <strong>no</strong>)</dt>
+<dd>
+<p>Automatically run the garbage collector for note files when quitting.</p>
+</dd>
+<dt class="hdlist1"><code>general.periodicsave</code> (default: <strong>0</strong>)</dt>
+<dd>
+<p>If different from <code>0</code>, user&#8217;s data will be automatically saved every
+<strong>general.periodicsave</strong> minutes. When an automatic save is performed, two
+asterisks (i.e. <code>**</code>) will appear on the top right-hand side of the screen).</p>
+</dd>
+<dt class="hdlist1"><code>general.confirmquit</code> (default: <strong>yes</strong>)</dt>
+<dd>
+<p>If set to <strong>yes</strong>, confirmation is required before quitting, otherwise pressing
+<code>Q</code> will cause <code>calcurse</code> to quit without prompting for user confirmation.</p>
+</dd>
+<dt class="hdlist1"><code>general.confirmdelete</code> (default: <strong>yes</strong>)</dt>
+<dd>
+<p>If this option is set to <strong>yes</strong>, pressing <code>D</code> for deleting an item (either a
+<strong>todo</strong>, <strong>appointment</strong>, or <strong>event</strong>), will lead to a prompt asking for user
+confirmation before removing the selected item from the list. Otherwise, no
+confirmation will be needed before deleting the item.</p>
+</dd>
+<dt class="hdlist1"><code>general.systemdialogs</code> (default: <strong>yes</strong>)</dt>
+<dd>
+<p>Setting this option to <strong>no</strong> will result in skipping the system dialogs
+related to the saving and loading of data. This can be useful to speed up
+the input/output processes.</p>
+</dd>
+<dt class="hdlist1"><code>general.progressbar</code> (default: <strong>yes</strong>)</dt>
+<dd>
+<p>If set to <strong>no</strong>, this will cause the disappearing of the progress bar which is
+usually shown when saving data to file. If set to <strong>yes</strong>, this bar will be
+displayed, together with the name of the file being saved (see section
+<a href="#basics_files">calcurse files</a>).</p>
+</dd>
+<dt class="hdlist1"><code>appearance.calendarview</code> (default: <strong>0</strong>)</dt>
+<dd>
+<p>If set to <code>0</code>, the monthly calendar view will be displayed by default
+otherwise it is the weekly view that will be displayed.</p>
+</dd>
+<dt class="hdlist1"><code>general.firstdayofweek</code> (default: <strong>monday</strong>)</dt>
+<dd>
+<p>One can choose between Monday and Sunday as the first day of the week. If
+<code>general.firstdayofweek</code> is set to <strong>monday</strong>, Monday will be first in the
+calendar view. Otherwise, Sunday will be the first day of the week.</p>
+</dd>
+<dt class="hdlist1"><code>format.outputdate</code> (default: <strong>%D</strong>)</dt>
+<dd>
+<p>This option indicates the format to be used when displaying dates in
+non-interactive mode. Using the default values, dates are displayed the
+following way: <strong>mm/dd/aa</strong>. You can see all of the possible formats by typing
+<code>man 3 strftime</code> inside a terminal.</p>
+</dd>
+<dt class="hdlist1"><code>format.inputdate</code> (default: <strong>1</strong>)</dt>
+<dd>
+<p>This option indicates the format that will be used to enter dates in
+interactive mode. Four choices are available:</p>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>mm/dd/yyyy</p>
+</li>
+<li>
+<p>dd/mm/yyyy</p>
+</li>
+<li>
+<p>yyyy/mm/dd</p>
+</li>
+<li>
+<p>yyyy-mm-dd</p>
+</li>
+</ol>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="sect2">
+<h3 id="options_keys">Key bindings</h3>
+<div class="paragraph">
+<p>One can define ones own key bindings within the <code>Keys</code> configuration menu. The
+default keys look like the one used by the <code>vim</code> editor, especially the
+displacement keys. Anyway, within this configuration menu, users can redefine
+all of the keys available from within calcurse&#8217;s user interface.</p>
+</div>
+<div class="paragraph">
+<p>To define new key bindings, first highlight the action to which it will apply.
+Then, delete the actual key binding if necessary, and add a new one. You will
+then be asked to press the key corresponding to the new binding. It is possible
+to define more than one key binding for a single action.</p>
+</div>
+<div class="paragraph">
+<p>An automatic check is performed to see if the new key binding is not already
+set for another action. In that case, you will be asked to choose a different
+one. Another check is done when exiting from this menu, to make sure all
+possible actions have a key associated with it.</p>
+</div>
+<div class="paragraph">
+<p>The following keys can be used to define bindings:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>lower-case, upper-case letters and numbers, such as <code>a</code>, <code>Z</code>, <code>0</code></p>
+</li>
+<li>
+<p>CONTROL-key followed by one of the above letters</p>
+</li>
+<li>
+<p>escape, horizontal tab, and space keys</p>
+</li>
+<li>
+<p>arrow keys (up, down, left, and right)</p>
+</li>
+<li>
+<p><code>HOME</code> and <code>END</code> keys</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>While inside the key configuration menu, an online help is available for each
+one of the available actions. This help briefly describes what the highlighted
+action is used for.</p>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+As of calcurse 3.0.0, displacement commands can be preceded by an
+ optional number to repeat the command. For example, <code>10k</code> will move the
+ cursor ten weeks forwards if you use default key bindings.
+</td>
+</tr>
+</table>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_color_themes">Color themes</h3>
+<div class="paragraph">
+<p><code>calcurse</code> color theme can be customized to suit user&#8217;s needs. To change the
+default theme, the configuration page displays possible choices for foreground
+and background colors. Using arrows or calcurse displacement keys to move, and
+<code>X</code> or space to select a color, user can preview the theme which will be
+applied. It is possible to keep the terminal&#8217;s default colors by selecting the
+corresponding choice in the list.</p>
+</div>
+<div class="paragraph">
+<p>The chosen color theme will then be applied to the panel borders, to the
+titles, to the keystrokes, and to general informations displayed inside status
+bar. A black and white theme is also available, in order to support non-color
+terminals.</p>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+Depending on your terminal type and on the value of the <code>$TERM</code>
+ environment variable, color could or could not be supported. An error
+ message will appear if you try to change colors whereas your terminal
+ does not support this feature. If you do know your terminal supports
+ colors but could not get <code>calcurse</code> to display them, try to set your
+ <code>$TERM</code> variable to another value (such as <strong>xterm-xfree86</strong> for instance).
+</td>
+</tr>
+</table>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_layout_configuration">Layout configuration</h3>
+<div class="paragraph">
+<p>The layout corresponds to the position of the panels inside <code>calcurse</code> screen.
+The default layout makes the calendar panel to be displayed on the top-right
+corner of the terminal, the todo panel on the bottom-right corner, while the
+appointment panel is displayed on the left hand-side of the screen (see the
+figure in section <a href="#basics_interface_interactive">Interactive mode</a> for an
+example of the default layout). By choosing another layout in the
+configuration screen, user can customize <code>calcurse</code> appearance to best suit his
+needs by placing the different panels where needed.</p>
+</div>
+<div class="paragraph">
+<p>The following option is used to modify the layout configuration:</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>appearance.layout</code> (default: <strong>0</strong>)</dt>
+<dd>
+<p>Eight different layouts are to be chosen from (see layout configuration
+screen for the description of the available layouts).</p>
+</dd>
+</dl>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_sidebar_configuration">Sidebar configuration</h3>
+<div class="paragraph">
+<p>The sidebar is the part of the screen which contains two panels: the calendar
+and, depending on the chosen layout, either the todo list or the appointment
+list.</p>
+</div>
+<div class="paragraph">
+<p>The following option is used to change the width of the sidebar:</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>appearance.sidebarwidth</code> (default: <strong>0</strong>)</dt>
+<dd>
+<p>Width (in percentage, 0 being the minimum width) of the side bar.</p>
+</dd>
+</dl>
+</div>
+</div>
+<div class="sect2">
+<h3 id="options_notify">Notify-bar settings</h3>
+<div class="paragraph">
+<p>The following options are used to modify the notify-bar behavior:</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>appearance.notifybar</code> (default: <strong>yes</strong>)</dt>
+<dd>
+<p>This option indicates if you want the notify-bar to be displayed or not.</p>
+</dd>
+<dt class="hdlist1"><code>format.notifydate</code> (default: <strong>%a %F</strong>)</dt>
+<dd>
+<p>With this option, you can specify the format to be used to display the
+current date inside the notification bar. You can see all of the possible
+formats by typing <code>man 3 strftime</code> inside a terminal.</p>
+</dd>
+<dt class="hdlist1"><code>format.notifytime</code> (default: <strong>%T</strong>)</dt>
+<dd>
+<p>With this option, you can specify the format to be used to display the
+current time inside the notification bar. You can see all of the possible
+formats by typing <code>man 3 strftime</code> inside a terminal.</p>
+</dd>
+<dt class="hdlist1"><code>notification.warning</code> (default: <strong>300</strong>)</dt>
+<dd>
+<p>When there is an appointment which is flagged as <code>important</code> within the next
+<code>notification.warning</code> seconds, the display of that appointment inside the
+notify-bar starts to blink. Moreover, the command defined by the
+<code>notification.command</code> option will be launched. That way, the user is warned
+and knows there will be soon an upcoming appointment.</p>
+</dd>
+<dt class="hdlist1"><code>notification.command</code> (default: <strong>printf <em>\a</em></strong>)</dt>
+<dd>
+<p>This option indicates which command is to be launched when there is an
+upcoming appointment flagged as <code>important</code>. This command will be passed to
+the user&#8217;s shell which will interpret it. To know what shell must be used,
+the content of the <code>$SHELL</code> environment variable is used. If this variable is
+not set, <code>/bin/sh</code> is used instead.</p>
+<div class="exampleblock">
+<div class="content">
+<div class="paragraph">
+<p>Say the <code>mail</code> command is available on the user&#8217;s system, one can use the
+following command to get notified by mail of an upcoming appointment (the
+appointment description will also be mentioned in the mail body):</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>$ calcurse --next | mail -s "[calcurse] upcoming appointment!" user@host.com</pre>
+</div>
+</div>
+</div>
+</div>
+</dd>
+<dt class="hdlist1"><code>notification.notifyall</code> (default: <strong>flagged-only</strong>)</dt>
+<dd>
+<p>If set to flagged-only, you are only notified of flagged items. If set to
+unflagged-only, you are only notified of unflagged items. If set to all,
+notifications are always sent, independent of whether an item is flagged or
+not. For historical reasons, this option also accepts boolean values where
+yes equals flagged-only and no equals unflagged-only.</p>
+</dd>
+<dt class="hdlist1"><code>daemon.enable</code> (default: <strong>no</strong>)</dt>
+<dd>
+<p>If set to yes, daemon mode will be enabled, meaning <code>calcurse</code> will run into
+background when the user&#8217;s interface is exited. This will allow the
+notifications to be launched even when the interface is not running. More
+details can be found in section <a href="#basics_daemon">Background mode</a>.</p>
+</dd>
+<dt class="hdlist1"><code>daemon.log</code> (default: <strong>no</strong>)</dt>
+<dd>
+<p>If set to yes, <code>calcurse</code> daemon activity will be logged (see section
+<a href="#basics_files">files</a>).</p>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_known_bugs">Known bugs</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Incorrect highlighting of items appear when using calcurse black and white
+theme together with a <code>$TERM</code> variable set to <strong>xterm-color</strong>. To fix this bug,
+and as advised by Thomas E. Dickey (<code>xterm</code> maintainer), <strong>xterm-xfree86</strong> should
+be used instead of <strong>xterm-color</strong> to set the <code>$TERM</code> variable:</p>
+</div>
+<div class="quoteblock">
+<blockquote>
+<div class="paragraph">
+<p>"The xterm-color value for $TERM is a bad choice for XFree86 xterm because it
+is commonly used for a <code>terminfo</code> entry which happens to not support bce. Use
+the xterm-xfree86 entry which is distributed with XFree86 xterm (or the similar
+one distributed with ncurses)."</p>
+</div>
+</blockquote>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="bugs">Reporting bugs and feedback</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Please send bug reports and feedback to: <code>misc .at. calcurse .dot. org</code>.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="contribute">How to contribute?</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>If you would like to contribute to the project, you can first send your
+feedback on what you like or dislike, and if there are features you miss in
+<code>calcurse</code>. For now on, possible contributions concern the translation of
+<code>calcurse</code> messages and documentation.</p>
+</div>
+<div class="sect2">
+<h3 id="_translating_documentation">Translating documentation</h3>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+We recently dropped all translations of the manual files from the
+ distribution tarball. There are plan to reintroduce them in form of a
+ Wiki on the calcurse website. Please follow the mailing lists for
+ up-to-date information.
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>The <strong>doc/</strong> directory of the source package already contains translated version
+of <code>calcurse</code> manual. However, if the manual is not yet available into your
+native language, it would be appreciated if you could help translating it.</p>
+</div>
+<div class="paragraph">
+<p>To do so, just copy one of the existing manual file to <code>manual_XX.html</code>, where
+<strong>XX</strong> identifies your language. Then translate this newly created file and send
+it to the author (see <a href="#bugs">Reporting bugs and feeback</a>), so that it can be
+included in the next <code>calcurse</code> release.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_calcurse_i18n">calcurse i18n</h3>
+<div class="paragraph">
+<p>As already mentioned, <code>gettext</code> utilities are used by <code>calcurse</code> to produce
+multi-lingual messages. We are currently using
+<a href="http://www.transifex.net/">Transifex</a> to manage those translations.</p>
+</div>
+<div class="paragraph">
+<p>This section provides informations about how to translate those messages into
+your native language. However, this howto is deliberately incomplete, focusing
+on working with <code>gettext</code> for <code>calcurse</code> specifically. For more comprehensive
+informations or to grasp the Big Picture of Native Language Support, you should
+refer to the <code>GNU gettext</code> manual at:
+<a href="http://www.gnu.org/software/gettext/manual/" class="bare">http://www.gnu.org/software/gettext/manual/</a></p>
+</div>
+<div class="admonitionblock important">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Important</div>
+</td>
+<td class="content">
+Since we switched to Transifex, editing <strong>po</strong> files is not necessary
+ anymore as Transifex provides a user-friendly, intuitive web
+ interface for translators. Knowledge of <code>gettext</code> and the <strong>po</strong>
+ format is still useful for those of you who prefer the command line
+ and local editing. If you want to use the web UI to edit the
+ translation strings, you can skip over to <a href="#transifex_webui">Using
+ the Transifex web UI</a> tough.
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>Basically, three different people get involved in the translation chain:
+coders, language coordinator, and translators. After a quick overview of how
+things work, the translator tasks will be described hereafter.</p>
+</div>
+<div class="sect3">
+<h4 id="_overview_2">Overview</h4>
+<div class="paragraph">
+<p>To be able to display texts in the native language of the user, two steps are
+required: <strong>internationalization</strong> (i18n) and <strong>localization</strong> (l10n).</p>
+</div>
+<div class="paragraph">
+<p>i18n is about making <code>calcurse</code> support multiple languages. It is performed by
+coders, who will mark translatable texts and provide a way to display them
+translated at runtime.</p>
+</div>
+<div class="paragraph">
+<p>l10n is about making the i18n&#8217;ed <code>calcurse</code> adapt to the specific language of
+the user, ie translating the strings previously marked by the developers, and
+setting the environment correctly for <code>calcurse</code> to use the result of this
+translation.</p>
+</div>
+<div class="paragraph">
+<p>So, translatable strings are first marked by the coders within the <code>C</code> source
+files, then gathered in a template file (<strong>calcurse.pot</strong> - the <strong>pot</strong> extension
+meaning <strong>portable object template</strong>). The content of this template file is then
+merged with the translation files for each language (<strong>fr.po</strong> for French, for
+instance - with <strong>po</strong> standing for <strong>portable object</strong>, ie meant to be read and
+edited by humans). A given translation team will take this file, translate its
+strings, and send it back to the developers. At compilation time, a binary
+version of this file (for efficiency reasons) will be produced (<strong>fr.mo</strong> - <strong>mo</strong>
+stands for <strong>machine object</strong>, i.e. meant to be read by programs), and then
+installed. Then <code>calcurse</code> will use this file at runtime, translating the
+strings according to the locale settings of the user.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_translator_tasks">Translator tasks</h4>
+<div class="paragraph">
+<p>Suppose someone wants to initiate the translation of a new language. Here are
+the steps to follow:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>First, find out what the locale name is. For instance, for french, it is
+<code>fr_FR</code>, or simply <code>fr</code>. This is the value the user will have to put in his
+<code>LC_ALL</code> environment variable for software to be translated (see
+<a href="#basics_invocation_variable">Environment variable for i18n</a>).</p>
+</li>
+<li>
+<p>Then, go into the <strong>po/</strong> directory, and create a new po-file
+from the template file using the following command: <code>msginit -i calcurse.pot
+-o fr.po -l fr --no-translator</code> If you do not have <code>msginit</code> installed on
+your system, simply copy the <strong>calcurse.pot</strong> file to <strong>fr.po</strong> and edit the
+header by hand.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Now, having this <strong>fr.po</strong> file, the translator is ready to begin.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_po_files">po-files</h4>
+<div class="paragraph">
+<p>The format of the po-files is quite simple. Indeed, po-files are made of four
+things:</p>
+</div>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p><strong>location lines:</strong> tells you where the strings can be seen (name of file and
+line number), in case you need to see a bit of context.</p>
+</li>
+<li>
+<p><strong>msgid lines:</strong> the strings to translate.</p>
+</li>
+<li>
+<p><strong>msgstr lines:</strong> the translated strings.</p>
+</li>
+<li>
+<p><strong>lines prefixed with <code>#</code>:</strong> comments (some with a special meaning, as we will
+see below).</p>
+</li>
+</ol>
+</div>
+<div class="paragraph">
+<p>Basically, all you have to do is fill the <strong>msgstr</strong> lines with the translation
+of the above <strong>msgid</strong> line.</p>
+</div>
+<div class="paragraph">
+<p>A few notes:</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><strong>Fuzzy strings</strong></dt>
+<dd>
+<p>You will meet strings marked with a <code>"#, fuzzy"</code> comment. <code>calcurse</code> won&#8217;t
+use the translations of such strings until you do something about them. A
+string being fuzzy means either that the string has already been translated
+but has since been changed in the sources of the program, or that this is a
+new string for which <code>gettext</code> made a <em>wild guess</em> for the translation, based
+on other strings in the file. It means you have to review the translation.
+Sometimes, the original string has changed just because a typo has been
+fixed. In this case, you won&#8217;t have to change anything. But sometimes, the
+translation will no longer be accurate and needs to be changed. Once you are
+done and happy with the translation, just remove the <code>"#, fuzzy"</code> line, and
+the translation will be used again in <code>calcurse</code>.</p>
+</dd>
+<dt class="hdlist1"><strong>c-format strings and special sequences</strong></dt>
+<dd>
+<p>Some strings have the following comment: <code>"#, c-format"</code>. This tells that
+parts of the string to translate have a special meaning for the program, and
+that you should leave them alone. For instance, %-sequences, like <code>"%s"</code>.
+These means that <code>calcurse</code> will replace them with another string. So it is
+important it remains. There are also \-sequences, like <code>\n</code> or <code>\t</code>. Leave
+them, too. The former represents an end of line, the latter a tabulation.</p>
+</dd>
+<dt class="hdlist1"><strong>Translations can be wrapped</strong></dt>
+<dd>
+<p>If lines are too long, you can just break them like this:</p>
+<div class="listingblock">
+<div class="content">
+<pre>msgid ""
+"some very long line"
+"another line"</pre>
+</div>
+</div>
+</dd>
+<dt class="hdlist1"><strong>po-file header</strong></dt>
+<dd>
+<p>At the very beginning of the po-file, the first string form a header, where
+various kind of information has to be filled in. Most important one is the
+charset. It should resemble</p>
+<div class="listingblock">
+<div class="content">
+<pre>"Content-Type: text/plain; charset=utf-8\n"</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>You should also fill in the Last-Translator field, so that potential
+contributors can contact you if they want to join you in the translation team,
+or have remarks/typo fixes to give about the translations. You can either just
+give your name/nick, or add an email address, for exemple:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>"Last-Translator: Frederic Culot &lt;frederic@culot.org&gt;\n"</pre>
+</div>
+</div>
+</dd>
+<dt class="hdlist1"><strong>Comments</strong></dt>
+<dd>
+<p>Adding comments (lines begining with the <code>#</code> character) can be a good way to
+point out problems or translation difficulties to proofreaders or other
+members of your team.</p>
+</dd>
+<dt class="hdlist1"><strong>Strings size</strong></dt>
+<dd>
+<p><code>calcurse</code> is a curses/console program, thus it can be heavily dependant on
+the terminal size (number of columns). You should think about this when
+translating. Often, a string must fit into a single line (standard length is
+80 characters). Don&#8217;t translate blindly, try to look where your string will
+be displayed to adapt your translation.</p>
+</dd>
+<dt class="hdlist1"><strong>A few useful tools</strong></dt>
+<dd>
+<p>The po-file format is very simple, and the file can be edited with a standard
+text editor. But if you prefer, there are few specialized tools you may find
+convenient for translating:</p>
+<div class="ulist">
+<ul>
+<li>
+<p><code>poEdit</code> (<a href="http://www.poedit.org/" class="bare">http://www.poedit.org/</a>)</p>
+</li>
+<li>
+<p><code>KBabel</code> (<a href="http://i18n.kde.org/tools/kbabel/" class="bare">http://i18n.kde.org/tools/kbabel/</a>)</p>
+</li>
+<li>
+<p><code>GTranslator</code> (<a href="http://gtranslator.sourceforge.net/" class="bare">http://gtranslator.sourceforge.net/</a>)</p>
+</li>
+<li>
+<p><code>Emacs</code> po mode</p>
+</li>
+<li>
+<p><code>Vim</code> po mode</p>
+</li>
+</ul>
+</div>
+</dd>
+<dt class="hdlist1"><strong>And finally</strong></dt>
+<dd>
+<p>I hope you&#8217;ll have fun contributing to a more internationalized world. :) If
+you have any more questions, don&#8217;t hesitate to contact us at <strong>misc .at.
+calcurse .dot. org</strong>.</p>
+</dd>
+</dl>
+</div>
+</div>
+<div class="sect3">
+<h4 id="transifex_uploading">Uploading to Transifex</h4>
+<div class="paragraph">
+<p>There&#8217;s several different ways to upload a finished (or semi-finished)
+translation for a new language to Transifex. The easiest way is to browse to
+the <a href="http://www.transifex.net/projects/p/calcurse/teams/">Translation Teams</a> page
+and request the addition of a new team.</p>
+</div>
+<div class="paragraph">
+<p>As soon as we accepted your request, you will be able to upload your <strong>po</strong> file
+on the
+<a href="http://www.transifex.net/projects/p/calcurse/resource/calcursepot/">calcurse
+resource page</a> by clicking the <strong>Add translation</strong> button at the bottom.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_using_transifex_client">Using transifex-client</h4>
+<div class="paragraph">
+<p>You can also use a command line client to submit translations instead of having
+to use the web interface every time you want to submit an updated version. If
+you have a recent version of <code>setuptools</code> installed, you can get the CLI client
+by issuing the following command:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>$ easy_install -U transifex-client</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Alternatively, you can get the source code of transifex-client at
+<a href="http://pypi.python.org/pypi/transifex-client" class="bare">http://pypi.python.org/pypi/transifex-client</a>.</p>
+</div>
+<div class="paragraph">
+<p>After you downloaded and installed the client, run the following commands in
+the calcurse source directory to checkout the translation resources of
+<strong>calcurse</strong>:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>$ tx pull -a</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>To submit changes back to the server, use:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>$ tx push -r calcurse.calcursepot -t -l &lt;locale&gt;</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>For more details, read up on <code>transifex-client</code> usage at the
+<a href="http://help.transifex.net/user-guide/client/">The Transifex Command-line Client
+v0.4</a> section of the <a href="http://help.transifex.net/">Transifex documentation</a>.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="transifex_webui">Using the Transifex web UI</h4>
+<div class="paragraph">
+<p>As an alternative to editing <strong>po</strong> files, there is a web-based interface that
+can be used to create and update translations. After having signed up and
+created a new translation team (see <a href="#transifex_uploading">Uploading to
+Transifex</a> on how to do that), click the <strong>Add translation</strong> button at the
+bottom on the
+<a href="http://www.transifex.net/projects/p/calcurse/resource/calcursepot/">calcurse
+resource page</a>, select the language you&#8217;d like to translate and choose
+<strong>Translate Online</strong>.</p>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_links">Links</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>This section contains links and references that may be of interest to you.</p>
+</div>
+<div class="sect2">
+<h3 id="_calcurse_homepage">calcurse homepage</h3>
+<div class="paragraph">
+<p>The <code>calcurse</code> homepage can be found at <a href="http://calcurse.org" class="bare">http://calcurse.org</a></p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_calcurse_announce_list">calcurse announce list</h3>
+<div class="paragraph">
+<p>If you are interested in the project and want to be warned when a new release
+comes out, you can subscribe to the <code>calcurse</code> announce list. In doing so, you
+will receive an email as soon as a new feature appears in <code>calcurse</code>.</p>
+</div>
+<div class="paragraph">
+<p>To subscribe to this list, send a message to <strong>announce+subscribe .at. calcurse
+.dot. org</strong> with "subscribe" in the subject field.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="links_others">Other links</h3>
+<div class="paragraph">
+<p>You may want to look at the ical format specification (rfc2445) at:
+<a href="http://tools.ietf.org/html/rfc2445" class="bare">http://tools.ietf.org/html/rfc2445</a></p>
+</div>
+<div class="paragraph">
+<p>The pcal project page can be found at: <a href="http://pcal.sourceforge.net/" class="bare">http://pcal.sourceforge.net/</a></p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_thanks">Thanks</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Its time now to thank other people without whom this program would not exist!
+So here is a list of contributing persons I would like to thank:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Alex for its patches, help and advices with <code>C</code> programming</p>
+</li>
+<li>
+<p>Gwen for testing and general discussions about how to improve <code>calcurse</code></p>
+</li>
+<li>
+<p>Herbert for packaging <code>calcurse</code> for FreeBSD</p>
+</li>
+<li>
+<p>Zul for packaging <code>calcurse</code> for NetBSD</p>
+</li>
+<li>
+<p>Wain, Steffen and Ronald for packaging <code>calcurse</code> for Archlinux</p>
+</li>
+<li>
+<p>Kevin, Ryan, and fEnIo for packaging <code>calcurse</code> for Debian and Ubuntu</p>
+</li>
+<li>
+<p>Pascal for packaging <code>calcurse</code> for Slackware</p>
+</li>
+<li>
+<p>Alexandre and Markus for packaging <code>calcurse</code> for Mac OsX and Darwin</p>
+</li>
+<li>
+<p>Igor for packaging <code>calcurse</code> for ALT Linux</p>
+</li>
+<li>
+<p>Joel for its calendar script which inspired <code>calcurse</code> calendar view</p>
+</li>
+<li>
+<p>Jeremy Roon for the Dutch translation</p>
+</li>
+<li>
+<p>Frédéric Culot, Toucouch, Erik Saule, Stéphane Aulery and Baptiste Jonglez
+for the French translation</p>
+</li>
+<li>
+<p>Michael Schulz, Chris M., Benjamin Moeller and Lukas Fleischer for the German
+translation</p>
+</li>
+<li>
+<p>Rafael Ferreira for the Portuguese (Brazil) translation</p>
+</li>
+<li>
+<p>Aleksey Mechonoshin for the Russian translation</p>
+</li>
+<li>
+<p>Jose Lopez for the Spanish translation</p>
+</li>
+<li>
+<p>Tony for its patch which helped improving the recur_item_inday() function,
+and for implementing the date format configuration options</p>
+</li>
+<li>
+<p>Erik Saule for its patch implementing the <code>-N</code>, <code>-s</code>, <code>-S</code>, <code>-r</code> and <code>-D</code>
+flags as well as support for regular expressions!</p>
+</li>
+<li>
+<p>Baptiste Jonglez and Lars Henriksen for their awesome work on many important
+features of calcurse!</p>
+</li>
+<li>
+<p>Randy Ramos for his improvements to the calcurse-caldav synchronization
+script.</p>
+</li>
+<li>
+<p>people who write software I like and which inspired me, especially:</p>
+<div class="ulist">
+<ul>
+<li>
+<p><code>vim</code> for the displacement keys</p>
+</li>
+<li>
+<p><code>orpheus</code> and <code>abook</code> for documentation</p>
+</li>
+<li>
+<p><code>pine</code> and <code>aptitude</code> for the text user interface</p>
+</li>
+<li>
+<p><code>tmux</code> for coding style</p>
+</li>
+</ul>
+</div>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>And last, many many thanks to all of the <code>calcurse</code> users who sent me their
+feedback.</p>
+</div>
+</div>
+</div>
+</div>
+<div id="footer">
+<div id="footer-text">
+Last updated 2019-01-07 01:48:13 +0100
+</div>
+</div>
+</body>
+</html> \ No newline at end of file
diff --git a/files/submitting-patches.html b/files/submitting-patches.html
index 57e1736..eef10d2 100644
--- a/files/submitting-patches.html
+++ b/files/submitting-patches.html
@@ -1,902 +1,653 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
- "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-<head>
-<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
-<meta name="generator" content="AsciiDoc 8.6.8" />
-<meta name="viewport" content="width=device-width, initial-scale=1">
-<title>CALCURSE - Submitting Patches</title>
-<style type="text/css">
-/* Shared CSS for AsciiDoc xhtml11 and html5 backends */
-
-/* Default font. */
-body {
- font-family: Georgia,serif;
-}
-
-/* Title font. */
-h1, h2, h3, h4, h5, h6,
-div.title, caption.title,
-thead, p.table.header,
-#toctitle,
-#author, #revnumber, #revdate, #revremark,
-#footer {
- font-family: Arial,Helvetica,sans-serif;
-}
-
-body {
- margin: 1em 5% 1em 5%;
-}
-
-a {
- color: blue;
- text-decoration: underline;
-}
-a:visited {
- color: fuchsia;
-}
-
-em {
- font-style: italic;
- color: navy;
-}
-
-strong {
- font-weight: bold;
- color: #083194;
-}
-
-h1, h2, h3, h4, h5, h6 {
- color: #527bbd;
- margin-top: 1.2em;
- margin-bottom: 0.5em;
- line-height: 1.3;
-}
-
-h1, h2, h3 {
- border-bottom: 2px solid silver;
-}
-h2 {
- padding-top: 0.5em;
-}
-h3 {
- float: left;
-}
-h3 + * {
- clear: left;
-}
-h5 {
- font-size: 1.0em;
-}
-
-div.sectionbody {
- margin-left: 0;
-}
-
-hr {
- border: 1px solid silver;
-}
-
-p {
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-
-ul, ol, li > p {
- margin-top: 0;
-}
-ul > li { color: #aaa; }
-ul > li > * { color: black; }
-
-.monospaced, code, pre {
- font-family: "Courier New", Courier, monospace;
- font-size: inherit;
- color: navy;
- padding: 0;
- margin: 0;
-}
-
-
-#author {
- color: #527bbd;
- font-weight: bold;
- font-size: 1.1em;
-}
-#email {
-}
-#revnumber, #revdate, #revremark {
-}
-
-#footer {
- font-size: small;
- border-top: 2px solid silver;
- padding-top: 0.5em;
- margin-top: 4.0em;
-}
-#footer-text {
- float: left;
- padding-bottom: 0.5em;
-}
-#footer-badges {
- float: right;
- padding-bottom: 0.5em;
-}
-
-#preamble {
- margin-top: 1.5em;
- margin-bottom: 1.5em;
-}
-div.imageblock, div.exampleblock, div.verseblock,
-div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
-div.admonitionblock {
- margin-top: 1.0em;
- margin-bottom: 1.5em;
-}
-div.admonitionblock {
- margin-top: 2.0em;
- margin-bottom: 2.0em;
- margin-right: 10%;
- color: #606060;
-}
-
-div.content { /* Block element content. */
- padding: 0;
-}
-
-/* Block element titles. */
-div.title, caption.title {
- color: #527bbd;
- font-weight: bold;
- text-align: left;
- margin-top: 1.0em;
- margin-bottom: 0.5em;
-}
-div.title + * {
- margin-top: 0;
-}
-
-td div.title:first-child {
- margin-top: 0.0em;
-}
-div.content div.title:first-child {
- margin-top: 0.0em;
-}
-div.content + div.title {
- margin-top: 0.0em;
-}
-
-div.sidebarblock > div.content {
- background: #ffffee;
- border: 1px solid #dddddd;
- border-left: 4px solid #f0f0f0;
- padding: 0.5em;
-}
-
-div.listingblock > div.content {
- border: 1px solid #dddddd;
- border-left: 5px solid #f0f0f0;
- background: #f8f8f8;
- padding: 0.5em;
-}
-
-div.quoteblock, div.verseblock {
- padding-left: 1.0em;
- margin-left: 1.0em;
- margin-right: 10%;
- border-left: 5px solid #f0f0f0;
- color: #888;
-}
-
-div.quoteblock > div.attribution {
- padding-top: 0.5em;
- text-align: right;
-}
-
-div.verseblock > pre.content {
- font-family: inherit;
- font-size: inherit;
-}
-div.verseblock > div.attribution {
- padding-top: 0.75em;
- text-align: left;
-}
-/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
-div.verseblock + div.attribution {
- text-align: left;
-}
-
-div.admonitionblock .icon {
- vertical-align: top;
- font-size: 1.1em;
- font-weight: bold;
- text-decoration: underline;
- color: #527bbd;
- padding-right: 0.5em;
-}
-div.admonitionblock td.content {
- padding-left: 0.5em;
- border-left: 3px solid #dddddd;
-}
-
-div.exampleblock > div.content {
- border-left: 3px solid #dddddd;
- padding-left: 0.5em;
-}
-
-div.imageblock div.content { padding-left: 0; }
-span.image img { border-style: none; }
-a.image:visited { color: white; }
-
-dl {
- margin-top: 0.8em;
- margin-bottom: 0.8em;
-}
-dt {
- margin-top: 0.5em;
- margin-bottom: 0;
- font-style: normal;
- color: navy;
-}
-dd > *:first-child {
- margin-top: 0.1em;
-}
-
-ul, ol {
- list-style-position: outside;
-}
-ol.arabic {
- list-style-type: decimal;
-}
-ol.loweralpha {
- list-style-type: lower-alpha;
-}
-ol.upperalpha {
- list-style-type: upper-alpha;
-}
-ol.lowerroman {
- list-style-type: lower-roman;
-}
-ol.upperroman {
- list-style-type: upper-roman;
-}
-
-div.compact ul, div.compact ol,
-div.compact p, div.compact p,
-div.compact div, div.compact div {
- margin-top: 0.1em;
- margin-bottom: 0.1em;
-}
-
-tfoot {
- font-weight: bold;
-}
-td > div.verse {
- white-space: pre;
-}
-
-div.hdlist {
- margin-top: 0.8em;
- margin-bottom: 0.8em;
-}
-div.hdlist tr {
- padding-bottom: 15px;
-}
-dt.hdlist1.strong, td.hdlist1.strong {
- font-weight: bold;
-}
-td.hdlist1 {
- vertical-align: top;
- font-style: normal;
- padding-right: 0.8em;
- color: navy;
-}
-td.hdlist2 {
- vertical-align: top;
-}
-div.hdlist.compact tr {
- margin: 0;
- padding-bottom: 0;
-}
-
-.comment {
- background: yellow;
-}
-
-.footnote, .footnoteref {
- font-size: 0.8em;
-}
-
-span.footnote, span.footnoteref {
- vertical-align: super;
-}
-
-#footnotes {
- margin: 20px 0 20px 0;
- padding: 7px 0 0 0;
-}
-
-#footnotes div.footnote {
- margin: 0 0 5px 0;
-}
-
-#footnotes hr {
- border: none;
- border-top: 1px solid silver;
- height: 1px;
- text-align: left;
- margin-left: 0;
- width: 20%;
- min-width: 100px;
-}
-
-div.colist td {
- padding-right: 0.5em;
- padding-bottom: 0.3em;
- vertical-align: top;
-}
-div.colist td img {
- margin-top: 0.3em;
-}
-
-@media print {
- #footer-badges { display: none; }
-}
-
-#toc {
- margin-bottom: 2.5em;
-}
-
-#toctitle {
- color: #527bbd;
- font-size: 1.1em;
- font-weight: bold;
- margin-top: 1.0em;
- margin-bottom: 0.1em;
-}
-
-div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
- margin-top: 0;
- margin-bottom: 0;
-}
-div.toclevel2 {
- margin-left: 2em;
- font-size: 0.9em;
-}
-div.toclevel3 {
- margin-left: 4em;
- font-size: 0.9em;
-}
-div.toclevel4 {
- margin-left: 6em;
- font-size: 0.9em;
-}
-
-span.aqua { color: aqua; }
-span.black { color: black; }
-span.blue { color: blue; }
-span.fuchsia { color: fuchsia; }
-span.gray { color: gray; }
-span.green { color: green; }
-span.lime { color: lime; }
-span.maroon { color: maroon; }
-span.navy { color: navy; }
-span.olive { color: olive; }
-span.purple { color: purple; }
-span.red { color: red; }
-span.silver { color: silver; }
-span.teal { color: teal; }
-span.white { color: white; }
-span.yellow { color: yellow; }
-
-span.aqua-background { background: aqua; }
-span.black-background { background: black; }
-span.blue-background { background: blue; }
-span.fuchsia-background { background: fuchsia; }
-span.gray-background { background: gray; }
-span.green-background { background: green; }
-span.lime-background { background: lime; }
-span.maroon-background { background: maroon; }
-span.navy-background { background: navy; }
-span.olive-background { background: olive; }
-span.purple-background { background: purple; }
-span.red-background { background: red; }
-span.silver-background { background: silver; }
-span.teal-background { background: teal; }
-span.white-background { background: white; }
-span.yellow-background { background: yellow; }
-
-span.big { font-size: 2em; }
-span.small { font-size: 0.6em; }
-
-span.underline { text-decoration: underline; }
-span.overline { text-decoration: overline; }
-span.line-through { text-decoration: line-through; }
-
-div.unbreakable { page-break-inside: avoid; }
-
-
-/*
- * xhtml11 specific
- *
- * */
-
-div.tableblock {
- margin-top: 1.0em;
- margin-bottom: 1.5em;
-}
-div.tableblock > table {
- border: 3px solid #527bbd;
-}
-thead, p.table.header {
- font-weight: bold;
- color: #527bbd;
-}
-p.table {
- margin-top: 0;
-}
-/* Because the table frame attribute is overriden by CSS in most browsers. */
-div.tableblock > table[frame="void"] {
- border-style: none;
-}
-div.tableblock > table[frame="hsides"] {
- border-left-style: none;
- border-right-style: none;
-}
-div.tableblock > table[frame="vsides"] {
- border-top-style: none;
- border-bottom-style: none;
-}
-
-
-/*
- * html5 specific
- *
- * */
-
-table.tableblock {
- margin-top: 1.0em;
- margin-bottom: 1.5em;
-}
-thead, p.tableblock.header {
- font-weight: bold;
- color: #527bbd;
-}
-p.tableblock {
- margin-top: 0;
-}
-table.tableblock {
- border-width: 3px;
- border-spacing: 0px;
- border-style: solid;
- border-color: #527bbd;
- border-collapse: collapse;
-}
-th.tableblock, td.tableblock {
- border-width: 1px;
- padding: 4px;
- border-style: solid;
- border-color: #527bbd;
-}
-
-table.tableblock.frame-topbot {
- border-left-style: hidden;
- border-right-style: hidden;
-}
-table.tableblock.frame-sides {
- border-top-style: hidden;
- border-bottom-style: hidden;
-}
-table.tableblock.frame-none {
- border-style: hidden;
-}
-
-th.tableblock.halign-left, td.tableblock.halign-left {
- text-align: left;
-}
-th.tableblock.halign-center, td.tableblock.halign-center {
- text-align: center;
-}
-th.tableblock.halign-right, td.tableblock.halign-right {
- text-align: right;
-}
-
-th.tableblock.valign-top, td.tableblock.valign-top {
- vertical-align: top;
-}
-th.tableblock.valign-middle, td.tableblock.valign-middle {
- vertical-align: middle;
-}
-th.tableblock.valign-bottom, td.tableblock.valign-bottom {
- vertical-align: bottom;
-}
-
-
-/*
- * manpage specific
- *
- * */
-
-body.manpage h1 {
- padding-top: 0.5em;
- padding-bottom: 0.5em;
- border-top: 2px solid silver;
- border-bottom: 2px solid silver;
-}
-body.manpage h2 {
- border-style: none;
-}
-body.manpage div.sectionbody {
- margin-left: 3em;
-}
-
-@media print {
- body.manpage div#toc { display: none; }
-}
-
-
-</style>
-<script type="text/javascript">
-/*<![CDATA[*/
-var asciidoc = { // Namespace.
-
-/////////////////////////////////////////////////////////////////////
-// Table Of Contents generator
-/////////////////////////////////////////////////////////////////////
-
-/* Author: Mihai Bazon, September 2002
- * http://students.infoiasi.ro/~mishoo
- *
- * Table Of Content generator
- * Version: 0.4
- *
- * Feel free to use this script under the terms of the GNU General Public
- * License, as long as you do not remove or alter this notice.
- */
-
- /* modified by Troy D. Hanson, September 2006. License: GPL */
- /* modified by Stuart Rackham, 2006, 2009. License: GPL */
-
-// toclevels = 1..4.
-toc: function (toclevels) {
-
- function getText(el) {
- var text = "";
- for (var i = el.firstChild; i != null; i = i.nextSibling) {
- if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
- text += i.data;
- else if (i.firstChild != null)
- text += getText(i);
- }
- return text;
- }
-
- function TocEntry(el, text, toclevel) {
- this.element = el;
- this.text = text;
- this.toclevel = toclevel;
- }
-
- function tocEntries(el, toclevels) {
- var result = new Array;
- var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
- // Function that scans the DOM tree for header elements (the DOM2
- // nodeIterator API would be a better technique but not supported by all
- // browsers).
- var iterate = function (el) {
- for (var i = el.firstChild; i != null; i = i.nextSibling) {
- if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
- var mo = re.exec(i.tagName);
- if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
- result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
- }
- iterate(i);
- }
- }
- }
- iterate(el);
- return result;
- }
-
- var toc = document.getElementById("toc");
- if (!toc) {
- return;
- }
-
- // Delete existing TOC entries in case we're reloading the TOC.
- var tocEntriesToRemove = [];
- var i;
- for (i = 0; i < toc.childNodes.length; i++) {
- var entry = toc.childNodes[i];
- if (entry.nodeName.toLowerCase() == 'div'
- && entry.getAttribute("class")
- && entry.getAttribute("class").match(/^toclevel/))
- tocEntriesToRemove.push(entry);
- }
- for (i = 0; i < tocEntriesToRemove.length; i++) {
- toc.removeChild(tocEntriesToRemove[i]);
- }
-
- // Rebuild TOC entries.
- var entries = tocEntries(document.getElementById("content"), toclevels);
- for (var i = 0; i < entries.length; ++i) {
- var entry = entries[i];
- if (entry.element.id == "")
- entry.element.id = "_toc_" + i;
- var a = document.createElement("a");
- a.href = "#" + entry.element.id;
- a.appendChild(document.createTextNode(entry.text));
- var div = document.createElement("div");
- div.appendChild(a);
- div.className = "toclevel" + entry.toclevel;
- toc.appendChild(div);
- }
- if (entries.length == 0)
- toc.parentNode.removeChild(toc);
-},
-
-
-/////////////////////////////////////////////////////////////////////
-// Footnotes generator
-/////////////////////////////////////////////////////////////////////
-
-/* Based on footnote generation code from:
- * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
- */
-
-footnotes: function () {
- // Delete existing footnote entries in case we're reloading the footnodes.
- var i;
- var noteholder = document.getElementById("footnotes");
- if (!noteholder) {
- return;
- }
- var entriesToRemove = [];
- for (i = 0; i < noteholder.childNodes.length; i++) {
- var entry = noteholder.childNodes[i];
- if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
- entriesToRemove.push(entry);
- }
- for (i = 0; i < entriesToRemove.length; i++) {
- noteholder.removeChild(entriesToRemove[i]);
- }
-
- // Rebuild footnote entries.
- var cont = document.getElementById("content");
- var spans = cont.getElementsByTagName("span");
- var refs = {};
- var n = 0;
- for (i=0; i<spans.length; i++) {
- if (spans[i].className == "footnote") {
- n++;
- var note = spans[i].getAttribute("data-note");
- if (!note) {
- // Use [\s\S] in place of . so multi-line matches work.
- // Because JavaScript has no s (dotall) regex flag.
- note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
- spans[i].innerHTML =
- "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
- "' title='View footnote' class='footnote'>" + n + "</a>]";
- spans[i].setAttribute("data-note", note);
- }
- noteholder.innerHTML +=
- "<div class='footnote' id='_footnote_" + n + "'>" +
- "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
- n + "</a>. " + note + "</div>";
- var id =spans[i].getAttribute("id");
- if (id != null) refs["#"+id] = n;
- }
- }
- if (n == 0)
- noteholder.parentNode.removeChild(noteholder);
- else {
- // Process footnoterefs.
- for (i=0; i<spans.length; i++) {
- if (spans[i].className == "footnoteref") {
- var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
- href = href.match(/#.*/)[0]; // Because IE return full URL.
- n = refs[href];
- spans[i].innerHTML =
- "[<a href='#_footnote_" + n +
- "' title='View footnote' class='footnote'>" + n + "</a>]";
- }
- }
- }
-},
-
-install: function(toclevels) {
- var timerId;
-
- function reinstall() {
- asciidoc.footnotes();
- if (toclevels) {
- asciidoc.toc(toclevels);
- }
- }
-
- function reinstallAndRemoveTimer() {
- clearInterval(timerId);
- reinstall();
- }
-
- timerId = setInterval(reinstall, 500);
- if (document.addEventListener)
- document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
- else
- window.onload = reinstallAndRemoveTimer;
-}
-
-}
-asciidoc.install(2);
-/*]]>*/
-</script>
-</head>
-<body class="article">
-<div id="header">
-<h1>CALCURSE - Submitting Patches</h1>
-<div id="toc">
- <div id="toctitle">Table of Contents</div>
- <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
-</div>
-</div>
-<div id="content">
-<div id="preamble">
-<div class="sectionbody">
-<div class="paragraph"><p>This is a short summary of guidelines you should try to follow when submitting
-patches to calcurse.</p></div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_fetching_the_most_recent_source">1. Fetching the most recent source</h2>
-<div class="sectionbody">
-<div class="paragraph"><p>The whole source code currently is under version control using Git as VCS. You
-can retrieve a local copy of the development tree using:</p></div>
-<div class="listingblock">
-<div class="content">
-<pre><code>$ git clone git://git.calcurse.org/calcurse.git</code></pre>
-</div></div>
-<div class="paragraph"><p>This will create a new directory <code>calcurse</code> that contains the cloned
-repository.</p></div>
-<div class="paragraph"><p>If you want to follow the maintenance branch (<code>maint</code>) as well (e.g. to create
-a bug fix), setting up a tracking branch is recommended:</p></div>
-<div class="listingblock">
-<div class="content">
-<pre><code>$ git branch -t maint origin/maint</code></pre>
-</div></div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_creating_a_working_branch">2. Creating a working branch</h2>
-<div class="sectionbody">
-<div class="paragraph"><p>Whenever you want to work on a new feature, do it in a separate branch. Having
-diverging commits in the <code>master</code> branch might cause conflicts when pulling in
-new changes. Thus, creating a new development branch <strong>before</strong> doing any changes
-is good practice. And even before doing that, you should update the master
-branch of your working copy:</p></div>
-<div class="listingblock">
-<div class="content">
-<pre><code>$ git checkout master
-$ git pull origin master
-$ git checkout -b wip</code></pre>
-</div></div>
-<div class="paragraph"><p>You can replace <code>wip</code> by any name you like.</p></div>
-<div class="paragraph"><p>Maintenance patches such as bug fixes and stability improvements should be
-based on the <code>maint</code> branch instead:</p></div>
-<div class="listingblock">
-<div class="content">
-<pre><code>$ git checkout maint
-$ git pull origin maint
-$ git checkout -b wip-maint</code></pre>
-</div></div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_committing_the_changes">3. Committing the changes</h2>
-<div class="sectionbody">
-<div class="paragraph"><p>Edit files in the source tree and test your changes. When everything seems to
-be fine, you&#8217;re ready to commit to your local working tree:</p></div>
-<div class="listingblock">
-<div class="content">
-<pre><code>$ git commit -as</code></pre>
-</div></div>
-<div class="paragraph"><p>If you added or removed files, you probably need to run <code>git add</code> or <code>git rm</code>
-before committing so that Git is aware of them.</p></div>
-<div class="paragraph"><p>If you work on more than a small bug fix, you should split your work into
-several commits. Try to keep your commits small and focused. Smaller patches
-are way easier to review and have a better chance of being included in mainline
-development.</p></div>
-<div class="paragraph"><p>Also try to make your commit messages brief and descriptive. The first line of
-the commit message should be a short description (not more than 50 characters)
-and should use imperative, present tense. If there are details that cannot be
-expressed in these size constraints, put them in separate text paragraphs
-separated by blank lines and wrapped to 72 columns. If you use Vim,
-<code>gitcommit.vim</code> will do most of the job for you.</p></div>
-<div class="paragraph"><p>Here&#8217;s a sample commit message:</p></div>
-<div class="listingblock">
-<div class="content">
-<pre><code>Invoke vars_init() before importing data with "-i"
-
-We forgot to call vars_init() when importing an item using the "-i"
-command line argument, which led to the pager configuration variable
-being unset and hence the pager invocation (triggered to show the log in
-case there are any errors during import) failing.
-
-Fix this by calling vars_init() before io_import_data().
-
-Reported-by: Andraž 'ruskie' Levstik &lt;ruskie@codemages.net&gt;
-Signed-off-by: Lukas Fleischer &lt;calcurse@cryptocrack.de&gt;</code></pre>
-</div></div>
-<div class="paragraph"><p>The <code>-s</code> in the <code>git commit</code> invocation makes Git add a "Signed-off-by" line to
-credit yourself and to confirm that your contribution was created in whole or
-in part by you and you have the right to submit it under the BSD license.
-Please do not remove that line when editing the commit message.</p></div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_creating_a_patch_series">4. Creating a patch series</h2>
-<div class="sectionbody">
-<div class="paragraph"><p>As soon as you finished all your work, test everything again and create a patch
-series:</p></div>
-<div class="listingblock">
-<div class="content">
-<pre><code>$ git format-patch master</code></pre>
-</div></div>
-<div class="paragraph"><p>Replace <code>master</code> by <code>maint</code> if your development branch is based on the
-maintenance branch:</p></div>
-<div class="listingblock">
-<div class="content">
-<pre><code>$ git format-patch maint</code></pre>
-</div></div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_submitting_patches">5. Submitting patches</h2>
-<div class="sectionbody">
-<div class="paragraph"><p>Send your patch series to one of the mailing lists:</p></div>
-<div class="listingblock">
-<div class="content">
-<pre><code>$ git send-email *.patch</code></pre>
-</div></div>
-<div class="paragraph"><p>The <code>bugs</code> mailing list should be used for bug fixes, <code>misc</code> should be used for
-everything else.</p></div>
-<div class="paragraph"><p>You can also add a cover letter and/or add annotations to patches:</p></div>
-<div class="listingblock">
-<div class="content">
-<pre><code>$ git send-email --cover-letter --annotate *.patch</code></pre>
-</div></div>
-<div class="paragraph"><p>Additional information on the particular patches, which shouldn&#8217;t appear in the
-commit message itself, can be added immediately after the <code>---</code>.</p></div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_importing_patches">6. Importing patches</h2>
-<div class="sectionbody">
-<div class="paragraph"><p>Git also provides a tool for importing a patch series submitted via <code>git
-send-email</code>. Just save all mails that contain patches into mbox files and use
-<code>git am</code> to apply them to your working branch:</p></div>
-<div class="listingblock">
-<div class="content">
-<pre><code>$ git am &lt;mbox&gt;...</code></pre>
-</div></div>
-<div class="paragraph"><p>If you use mutt, you can also add following macro to apply the patch contained
-in the current mail to your local Git repository by pressing <code>A</code>:</p></div>
-<div class="listingblock">
-<div class="content">
-<pre><code>set mbox_type=mbox
-set my_git_repo_path=$HOME/src/calcurse
-
-macro index,pager A "&lt;pipe-message&gt;(cd $my_git_repo_path &amp;&amp; git am)&lt;enter&gt;"</code></pre>
-</div></div>
-<div class="paragraph"><p>To setup different Git repositories per mailing list (in case you follow several
-different development lists), simply bind the macro to a <code>folder-hook</code> or to a
-<code>message-hook</code> and use different repository paths per hook.</p></div>
-</div>
-</div>
-</div>
-<div id="footnotes"><hr /></div>
-<div id="footer">
-<div id="footer-text">
-Last updated 2013-04-14 00:54:29 CEST
-</div>
-</div>
-</body>
-</html>
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="UTF-8">
+<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta name="generator" content="Asciidoctor 1.5.8">
+<title>CALCURSE - Submitting Patches</title>
+<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700">
+<style>
+/* Asciidoctor default stylesheet | MIT License | http://asciidoctor.org */
+/* Uncomment @import statement below to use as custom stylesheet */
+/*@import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700";*/
+article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}
+audio,canvas,video{display:inline-block}
+audio:not([controls]){display:none;height:0}
+script{display:none!important}
+html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}
+a{background:transparent}
+a:focus{outline:thin dotted}
+a:active,a:hover{outline:0}
+h1{font-size:2em;margin:.67em 0}
+abbr[title]{border-bottom:1px dotted}
+b,strong{font-weight:bold}
+dfn{font-style:italic}
+hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}
+mark{background:#ff0;color:#000}
+code,kbd,pre,samp{font-family:monospace;font-size:1em}
+pre{white-space:pre-wrap}
+q{quotes:"\201C" "\201D" "\2018" "\2019"}
+small{font-size:80%}
+sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
+sup{top:-.5em}
+sub{bottom:-.25em}
+img{border:0}
+svg:not(:root){overflow:hidden}
+figure{margin:0}
+fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
+legend{border:0;padding:0}
+button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
+button,input{line-height:normal}
+button,select{text-transform:none}
+button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}
+button[disabled],html input[disabled]{cursor:default}
+input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}
+button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
+textarea{overflow:auto;vertical-align:top}
+table{border-collapse:collapse;border-spacing:0}
+*,*::before,*::after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}
+html,body{font-size:100%}
+body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
+a:hover{cursor:pointer}
+img,object,embed{max-width:100%;height:auto}
+object,embed{height:100%}
+img{-ms-interpolation-mode:bicubic}
+.left{float:left!important}
+.right{float:right!important}
+.text-left{text-align:left!important}
+.text-right{text-align:right!important}
+.text-center{text-align:center!important}
+.text-justify{text-align:justify!important}
+.hide{display:none}
+img,object,svg{display:inline-block;vertical-align:middle}
+textarea{height:auto;min-height:50px}
+select{width:100%}
+.center{margin-left:auto;margin-right:auto}
+.stretch{width:100%}
+.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
+div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;direction:ltr}
+a{color:#2156a5;text-decoration:underline;line-height:inherit}
+a:hover,a:focus{color:#1d4b8f}
+a img{border:none}
+p{font-family:inherit;font-weight:400;font-size:1em;line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}
+p aside{font-size:.875em;line-height:1.35;font-style:italic}
+h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em}
+h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0}
+h1{font-size:2.125em}
+h2{font-size:1.6875em}
+h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em}
+h4,h5{font-size:1.125em}
+h6{font-size:1em}
+hr{border:solid #dddddf;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em;height:0}
+em,i{font-style:italic;line-height:inherit}
+strong,b{font-weight:bold;line-height:inherit}
+small{font-size:60%;line-height:inherit}
+code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)}
+ul,ol,dl{font-size:1em;line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}
+ul,ol{margin-left:1.5em}
+ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0;font-size:1em}
+ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit}
+ul.square{list-style-type:square}
+ul.circle{list-style-type:circle}
+ul.disc{list-style-type:disc}
+ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0}
+dl dt{margin-bottom:.3125em;font-weight:bold}
+dl dd{margin-bottom:1.25em}
+abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help}
+abbr{text-transform:none}
+blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
+blockquote cite{display:block;font-size:.9375em;color:rgba(0,0,0,.6)}
+blockquote cite::before{content:"\2014 \0020"}
+blockquote cite a,blockquote cite a:visited{color:rgba(0,0,0,.6)}
+blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
+@media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
+h1{font-size:2.75em}
+h2{font-size:2.3125em}
+h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
+h4{font-size:1.4375em}}
+table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede}
+table thead,table tfoot{background:#f7f8f7}
+table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
+table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
+table tr.even,table tr.alt,table tr:nth-of-type(even){background:#f8f8f7}
+table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6}
+h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
+h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
+.clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table}
+.clearfix::after,.float-group::after{clear:both}
+*:not(pre)>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background-color:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed;word-wrap:break-word}
+*:not(pre)>code.nobreak{word-wrap:normal}
+*:not(pre)>code.nowrap{white-space:nowrap}
+pre,pre>code{line-height:1.45;color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;text-rendering:optimizeSpeed}
+em em{font-style:normal}
+strong strong{font-weight:400}
+.keyseq{color:rgba(51,51,51,.8)}
+kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background-color:#f7f7f7;border:1px solid #ccc;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em white inset;box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em #fff inset;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap}
+.keyseq kbd:first-child{margin-left:0}
+.keyseq kbd:last-child{margin-right:0}
+.menuseq,.menuref{color:#000}
+.menuseq b:not(.caret),.menuref{font-weight:inherit}
+.menuseq{word-spacing:-.02em}
+.menuseq b.caret{font-size:1.25em;line-height:.8}
+.menuseq i.caret{font-weight:bold;text-align:center;width:.45em}
+b.button::before,b.button::after{position:relative;top:-1px;font-weight:400}
+b.button::before{content:"[";padding:0 3px 0 2px}
+b.button::after{content:"]";padding:0 2px 0 3px}
+p a>code:hover{color:rgba(0,0,0,.9)}
+#header,#content,#footnotes,#footer{width:100%;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em}
+#header::before,#header::after,#content::before,#content::after,#footnotes::before,#footnotes::after,#footer::before,#footer::after{content:" ";display:table}
+#header::after,#content::after,#footnotes::after,#footer::after{clear:both}
+#content{margin-top:1.25em}
+#content::before{content:none}
+#header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0}
+#header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #dddddf}
+#header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #dddddf;padding-bottom:8px}
+#header .details{border-bottom:1px solid #dddddf;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap}
+#header .details span:first-child{margin-left:-.125em}
+#header .details span.email a{color:rgba(0,0,0,.85)}
+#header .details br{display:none}
+#header .details br+span::before{content:"\00a0\2013\00a0"}
+#header .details br+span.author::before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)}
+#header .details br+span#revremark::before{content:"\00a0|\00a0"}
+#header #revnumber{text-transform:capitalize}
+#header #revnumber::after{content:"\00a0"}
+#content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #dddddf;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem}
+#toc{border-bottom:1px solid #e7e7e9;padding-bottom:.5em}
+#toc>ul{margin-left:.125em}
+#toc ul.sectlevel0>li>a{font-style:italic}
+#toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0}
+#toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none}
+#toc li{line-height:1.3334;margin-top:.3334em}
+#toc a{text-decoration:none}
+#toc a:active{text-decoration:underline}
+#toctitle{color:#7a2518;font-size:1.2em}
+@media screen and (min-width:768px){#toctitle{font-size:1.375em}
+body.toc2{padding-left:15em;padding-right:0}
+#toc.toc2{margin-top:0!important;background-color:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #e7e7e9;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto}
+#toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em}
+#toc.toc2>ul{font-size:.9em;margin-bottom:0}
+#toc.toc2 ul ul{margin-left:0;padding-left:1em}
+#toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em}
+body.toc2.toc-right{padding-left:0;padding-right:15em}
+body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #e7e7e9;left:auto;right:0}}
+@media screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0}
+#toc.toc2{width:20em}
+#toc.toc2 #toctitle{font-size:1.375em}
+#toc.toc2>ul{font-size:.95em}
+#toc.toc2 ul ul{padding-left:1.25em}
+body.toc2.toc-right{padding-left:0;padding-right:20em}}
+#content #toc{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
+#content #toc>:first-child{margin-top:0}
+#content #toc>:last-child{margin-bottom:0}
+#footer{max-width:100%;background-color:rgba(0,0,0,.8);padding:1.25em}
+#footer-text{color:rgba(255,255,255,.8);line-height:1.44}
+#content{margin-bottom:.625em}
+.sect1{padding-bottom:.625em}
+@media screen and (min-width:768px){#content{margin-bottom:1.25em}
+.sect1{padding-bottom:1.25em}}
+.sect1:last-child{padding-bottom:0}
+.sect1+.sect1{border-top:1px solid #e7e7e9}
+#content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400}
+#content h1>a.anchor::before,h2>a.anchor::before,h3>a.anchor::before,#toctitle>a.anchor::before,.sidebarblock>.content>.title>a.anchor::before,h4>a.anchor::before,h5>a.anchor::before,h6>a.anchor::before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em}
+#content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible}
+#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none}
+#content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221}
+.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em}
+.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic}
+table.tableblock.fit-content>caption.title{white-space:nowrap;width:0}
+.paragraph.lead>p,#preamble>.sectionbody>[class="paragraph"]:first-of-type p{font-size:1.21875em;line-height:1.6;color:rgba(0,0,0,.85)}
+table.tableblock #preamble>.sectionbody>[class="paragraph"]:first-of-type p{font-size:inherit}
+.admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%}
+.admonitionblock>table td.icon{text-align:center;width:80px}
+.admonitionblock>table td.icon img{max-width:none}
+.admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
+.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6)}
+.admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
+.exampleblock>.content{border-style:solid;border-width:1px;border-color:#e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;-webkit-border-radius:4px;border-radius:4px}
+.exampleblock>.content>:first-child{margin-top:0}
+.exampleblock>.content>:last-child{margin-bottom:0}
+.sidebarblock{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
+.sidebarblock>:first-child{margin-top:0}
+.sidebarblock>:last-child{margin-bottom:0}
+.sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
+.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
+.literalblock pre,.listingblock pre:not(.highlight),.listingblock pre[class="highlight"],.listingblock pre[class^="highlight "],.listingblock pre.CodeRay,.listingblock pre.prettyprint{background:#f7f7f8}
+.sidebarblock .literalblock pre,.sidebarblock .listingblock pre:not(.highlight),.sidebarblock .listingblock pre[class="highlight"],.sidebarblock .listingblock pre[class^="highlight "],.sidebarblock .listingblock pre.CodeRay,.sidebarblock .listingblock pre.prettyprint{background:#f2f1f1}
+.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{-webkit-border-radius:4px;border-radius:4px;word-wrap:break-word;overflow-x:auto;padding:1em;font-size:.8125em}
+@media screen and (min-width:768px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:.90625em}}
+@media screen and (min-width:1280px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:1em}}
+.literalblock pre.nowrap,.literalblock pre.nowrap pre,.listingblock pre.nowrap,.listingblock pre.nowrap pre{white-space:pre;word-wrap:normal}
+.literalblock.output pre{color:#f7f7f8;background-color:rgba(0,0,0,.9)}
+.listingblock pre.highlightjs{padding:0}
+.listingblock pre.highlightjs>code{padding:1em;-webkit-border-radius:4px;border-radius:4px}
+.listingblock pre.prettyprint{border-width:0}
+.listingblock>.content{position:relative}
+.listingblock code[data-lang]::before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:#999}
+.listingblock:hover code[data-lang]::before{display:block}
+.listingblock.terminal pre .command::before{content:attr(data-prompt);padding-right:.5em;color:#999}
+.listingblock.terminal pre .command:not([data-prompt])::before{content:"$"}
+table.pyhltable{border-collapse:separate;border:0;margin-bottom:0;background:none}
+table.pyhltable td{vertical-align:top;padding-top:0;padding-bottom:0;line-height:1.45}
+table.pyhltable td.code{padding-left:.75em;padding-right:0}
+pre.pygments .lineno,table.pyhltable td:not(.code){color:#999;padding-left:0;padding-right:.5em;border-right:1px solid #dddddf}
+pre.pygments .lineno{display:inline-block;margin-right:.25em}
+table.pyhltable .linenodiv{background:none!important;padding-right:0!important}
+.quoteblock{margin:0 1em 1.25em 1.5em;display:table}
+.quoteblock>.title{margin-left:-1.5em;margin-bottom:.75em}
+.quoteblock blockquote,.quoteblock p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify}
+.quoteblock blockquote{margin:0;padding:0;border:0}
+.quoteblock blockquote::before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)}
+.quoteblock blockquote>.paragraph:last-child p{margin-bottom:0}
+.quoteblock .attribution{margin-top:.75em;margin-right:.5ex;text-align:right}
+.verseblock{margin:0 1em 1.25em}
+.verseblock pre{font-family:"Open Sans","DejaVu Sans",sans;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility}
+.verseblock pre strong{font-weight:400}
+.verseblock .attribution{margin-top:1.25rem;margin-left:.5ex}
+.quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic}
+.quoteblock .attribution br,.verseblock .attribution br{display:none}
+.quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)}
+.quoteblock.abstract blockquote::before,.quoteblock.excerpt blockquote::before,.quoteblock .quoteblock blockquote::before{display:none}
+.quoteblock.abstract blockquote,.quoteblock.abstract p,.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{line-height:1.6;word-spacing:0}
+.quoteblock.abstract{margin:0 1em 1.25em;display:block}
+.quoteblock.abstract>.title{margin:0 0 .375em;font-size:1.15em;text-align:center}
+.quoteblock.excerpt,.quoteblock .quoteblock{margin:0 0 1.25em;padding:0 0 .25em 1em;border-left:.25em solid #dddddf}
+.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:1.0625rem}
+.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;text-align:left;margin-right:0}
+table.tableblock{max-width:100%;border-collapse:separate}
+p.tableblock:last-child{margin-bottom:0}
+td.tableblock>.content{margin-bottom:-1.25em}
+table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
+table.grid-all>thead>tr>.tableblock,table.grid-all>tbody>tr>.tableblock{border-width:0 1px 1px 0}
+table.grid-all>tfoot>tr>.tableblock{border-width:1px 1px 0 0}
+table.grid-cols>*>tr>.tableblock{border-width:0 1px 0 0}
+table.grid-rows>thead>tr>.tableblock,table.grid-rows>tbody>tr>.tableblock{border-width:0 0 1px}
+table.grid-rows>tfoot>tr>.tableblock{border-width:1px 0 0}
+table.grid-all>*>tr>.tableblock:last-child,table.grid-cols>*>tr>.tableblock:last-child{border-right-width:0}
+table.grid-all>tbody>tr:last-child>.tableblock,table.grid-all>thead:last-child>tr>.tableblock,table.grid-rows>tbody>tr:last-child>.tableblock,table.grid-rows>thead:last-child>tr>.tableblock{border-bottom-width:0}
+table.frame-all{border-width:1px}
+table.frame-sides{border-width:0 1px}
+table.frame-topbot,table.frame-ends{border-width:1px 0}
+table.stripes-all tr,table.stripes-odd tr:nth-of-type(odd){background:#f8f8f7}
+table.stripes-none tr,table.stripes-odd tr:nth-of-type(even){background:none}
+th.halign-left,td.halign-left{text-align:left}
+th.halign-right,td.halign-right{text-align:right}
+th.halign-center,td.halign-center{text-align:center}
+th.valign-top,td.valign-top{vertical-align:top}
+th.valign-bottom,td.valign-bottom{vertical-align:bottom}
+th.valign-middle,td.valign-middle{vertical-align:middle}
+table thead th,table tfoot th{font-weight:bold}
+tbody tr th{display:table-cell;line-height:1.6;background:#f7f8f7}
+tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
+p.tableblock>code:only-child{background:none;padding:0}
+p.tableblock{font-size:1em}
+td>div.verse{white-space:pre}
+ol{margin-left:1.75em}
+ul li ol{margin-left:1.5em}
+dl dd{margin-left:1.125em}
+dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0}
+ol>li p,ul>li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
+ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none}
+ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em}
+ul.unstyled,ol.unstyled{margin-left:0}
+ul.checklist{margin-left:.625em}
+ul.checklist li>p:first-child>.fa-square-o:first-child,ul.checklist li>p:first-child>.fa-check-square-o:first-child{width:1.25em;font-size:.8em;position:relative;bottom:.125em}
+ul.checklist li>p:first-child>input[type="checkbox"]:first-child{margin-right:.25em}
+ul.inline{display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap;list-style:none;margin:0 0 .625em -1.25em}
+ul.inline>li{margin-left:1.25em}
+.unstyled dl dt{font-weight:400;font-style:normal}
+ol.arabic{list-style-type:decimal}
+ol.decimal{list-style-type:decimal-leading-zero}
+ol.loweralpha{list-style-type:lower-alpha}
+ol.upperalpha{list-style-type:upper-alpha}
+ol.lowerroman{list-style-type:lower-roman}
+ol.upperroman{list-style-type:upper-roman}
+ol.lowergreek{list-style-type:lower-greek}
+.hdlist>table,.colist>table{border:0;background:none}
+.hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
+td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
+td.hdlist1{font-weight:bold;padding-bottom:1.25em}
+.literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
+.colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top}
+.colist td:not([class]):first-child img{max-width:none}
+.colist td:not([class]):last-child{padding:.25em 0}
+.thumb,.th{line-height:0;display:inline-block;border:solid 4px #fff;-webkit-box-shadow:0 0 0 1px #ddd;box-shadow:0 0 0 1px #ddd}
+.imageblock.left{margin:.25em .625em 1.25em 0}
+.imageblock.right{margin:.25em 0 1.25em .625em}
+.imageblock>.title{margin-bottom:0}
+.imageblock.thumb,.imageblock.th{border-width:6px}
+.imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em}
+.image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0}
+.image.left{margin-right:.625em}
+.image.right{margin-left:.625em}
+a.image{text-decoration:none;display:inline-block}
+a.image object{pointer-events:none}
+sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super}
+sup.footnote a,sup.footnoteref a{text-decoration:none}
+sup.footnote a:active,sup.footnoteref a:active{text-decoration:underline}
+#footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em}
+#footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em;border-width:1px 0 0}
+#footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;margin-bottom:.2em}
+#footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none;margin-left:-1.05em}
+#footnotes .footnote:last-of-type{margin-bottom:0}
+#content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0}
+.gist .file-data>table{border:0;background:#fff;width:100%;margin-bottom:0}
+.gist .file-data>table td.line-data{width:99%}
+div.unbreakable{page-break-inside:avoid}
+.big{font-size:larger}
+.small{font-size:smaller}
+.underline{text-decoration:underline}
+.overline{text-decoration:overline}
+.line-through{text-decoration:line-through}
+.aqua{color:#00bfbf}
+.aqua-background{background-color:#00fafa}
+.black{color:#000}
+.black-background{background-color:#000}
+.blue{color:#0000bf}
+.blue-background{background-color:#0000fa}
+.fuchsia{color:#bf00bf}
+.fuchsia-background{background-color:#fa00fa}
+.gray{color:#606060}
+.gray-background{background-color:#7d7d7d}
+.green{color:#006000}
+.green-background{background-color:#007d00}
+.lime{color:#00bf00}
+.lime-background{background-color:#00fa00}
+.maroon{color:#600000}
+.maroon-background{background-color:#7d0000}
+.navy{color:#000060}
+.navy-background{background-color:#00007d}
+.olive{color:#606000}
+.olive-background{background-color:#7d7d00}
+.purple{color:#600060}
+.purple-background{background-color:#7d007d}
+.red{color:#bf0000}
+.red-background{background-color:#fa0000}
+.silver{color:#909090}
+.silver-background{background-color:#bcbcbc}
+.teal{color:#006060}
+.teal-background{background-color:#007d7d}
+.white{color:#bfbfbf}
+.white-background{background-color:#fafafa}
+.yellow{color:#bfbf00}
+.yellow-background{background-color:#fafa00}
+span.icon>.fa{cursor:default}
+a span.icon>.fa{cursor:inherit}
+.admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}
+.admonitionblock td.icon .icon-note::before{content:"\f05a";color:#19407c}
+.admonitionblock td.icon .icon-tip::before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111}
+.admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900}
+.admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400}
+.admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000}
+.conum[data-value]{display:inline-block;color:#fff!important;background-color:rgba(0,0,0,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
+.conum[data-value] *{color:#fff!important}
+.conum[data-value]+b{display:none}
+.conum[data-value]::after{content:attr(data-value)}
+pre .conum[data-value]{position:relative;top:-.125em}
+b.conum *{color:inherit!important}
+.conum:not([data-value]):empty{display:none}
+dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility}
+h1,h2,p,td.content,span.alt{letter-spacing:-.01em}
+p strong,td.content strong,div.footnote strong{letter-spacing:-.005em}
+p,blockquote,dt,td.content,span.alt{font-size:1.0625rem}
+p{margin-bottom:1.25rem}
+.sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em}
+.exampleblock>.content{background-color:#fffef7;border-color:#e0e0dc;-webkit-box-shadow:0 1px 4px #e0e0dc;box-shadow:0 1px 4px #e0e0dc}
+.print-only{display:none!important}
+@page{margin:1.25cm .75cm}
+@media print{*{-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:none!important}
+html{font-size:80%}
+a{color:inherit!important;text-decoration:underline!important}
+a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important}
+a[href^="http:"]:not(.bare)::after,a[href^="https:"]:not(.bare)::after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em}
+abbr[title]::after{content:" (" attr(title) ")"}
+pre,blockquote,tr,img,object,svg{page-break-inside:avoid}
+thead{display:table-header-group}
+svg{max-width:100%}
+p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
+h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
+#toc,.sidebarblock,.exampleblock>.content{background:none!important}
+#toc{border-bottom:1px solid #dddddf!important;padding-bottom:0!important}
+body.book #header{text-align:center}
+body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em}
+body.book #header .details{border:0!important;display:block;padding:0!important}
+body.book #header .details span:first-child{margin-left:0!important}
+body.book #header .details br{display:block}
+body.book #header .details br+span::before{content:none!important}
+body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important}
+body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always}
+.listingblock code[data-lang]::before{display:block}
+#footer{padding:0 .9375em}
+.hide-on-print{display:none!important}
+.print-only{display:block!important}
+.hide-for-print{display:none!important}
+.show-for-print{display:inherit!important}}
+@media print,amzn-kf8{#header>h1:first-child{margin-top:1.25rem}
+.sect1{padding:0!important}
+.sect1+.sect1{border:0}
+#footer{background:none}
+#footer-text{color:rgba(0,0,0,.6);font-size:.9em}}
+@media amzn-kf8{#header,#content,#footnotes,#footer{padding:0}}
+</style>
+</head>
+<body class="article">
+<div id="header">
+<h1>CALCURSE - Submitting Patches</h1>
+</div>
+<div id="content">
+<div id="preamble">
+<div class="sectionbody">
+<div class="paragraph">
+<p>This is a short summary of guidelines you should try to follow when submitting
+patches to calcurse.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_fetching_the_most_recent_source">Fetching the most recent source</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The whole source code currently is under version control using Git as VCS. You
+can retrieve a local copy of the development tree using:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>$ git clone git://git.calcurse.org/calcurse.git</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>This will create a new directory <code>calcurse</code> that contains the cloned
+repository.</p>
+</div>
+<div class="paragraph">
+<p>If you want to follow the maintenance branch (<code>maint</code>) as well (e.g. to create
+a bug fix), setting up a tracking branch is recommended:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>$ git branch -t maint origin/maint</pre>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_creating_a_working_branch">Creating a working branch</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Whenever you want to work on a new feature, do it in a separate branch. Having
+diverging commits in the <code>master</code> branch might cause conflicts when pulling in
+new changes. Thus, creating a new development branch <strong>before</strong> doing any changes
+is good practice. And even before doing that, you should update the master
+branch of your working copy:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>$ git checkout master
+$ git pull origin master
+$ git checkout -b wip</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>You can replace <code>wip</code> by any name you like.</p>
+</div>
+<div class="paragraph">
+<p>Maintenance patches such as bug fixes and stability improvements should be
+based on the <code>maint</code> branch instead:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>$ git checkout maint
+$ git pull origin maint
+$ git checkout -b wip-maint</pre>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_committing_the_changes">Committing the changes</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Edit files in the source tree and test your changes. When everything seems to
+be fine, you&#8217;re ready to commit to your local working tree:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>$ git commit -as</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>If you added or removed files, you probably need to run <code>git add</code> or <code>git rm</code>
+before committing so that Git is aware of them.</p>
+</div>
+<div class="paragraph">
+<p>If you work on more than a small bug fix, you should split your work into
+several commits. Try to keep your commits small and focused. Smaller patches
+are way easier to review and have a better chance of being included in mainline
+development.</p>
+</div>
+<div class="paragraph">
+<p>Also try to make your commit messages brief and descriptive. The first line of
+the commit message should be a short description (not more than 50 characters)
+and should use imperative, present tense. If there are details that cannot be
+expressed in these size constraints, put them in separate text paragraphs
+separated by blank lines and wrapped to 72 columns. If you use Vim,
+<code>gitcommit.vim</code> will do most of the job for you.</p>
+</div>
+<div class="paragraph">
+<p>Here&#8217;s a sample commit message:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>Invoke vars_init() before importing data with "-i"
+
+We forgot to call vars_init() when importing an item using the "-i"
+command line argument, which led to the pager configuration variable
+being unset and hence the pager invocation (triggered to show the log in
+case there are any errors during import) failing.
+
+Fix this by calling vars_init() before io_import_data().
+
+Reported-by: Andraž 'ruskie' Levstik &lt;ruskie@codemages.net&gt;
+Signed-off-by: Lukas Fleischer &lt;lfleischer@calcurse.org&gt;</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The <code>-s</code> in the <code>git commit</code> invocation makes Git add a "Signed-off-by" line to
+credit yourself and to confirm that your contribution was created in whole or
+in part by you and you have the right to submit it under the BSD license.
+Please do not remove that line when editing the commit message.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_creating_a_patch_series">Creating a patch series</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>As soon as you finished all your work, test everything again and create a patch
+series:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>$ git format-patch master</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Replace <code>master</code> by <code>maint</code> if your development branch is based on the
+maintenance branch:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>$ git format-patch maint</pre>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_submitting_patches">Submitting patches</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Send your patch series to one of the mailing lists:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>$ git send-email *.patch</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The <code>bugs</code> mailing list should be used for bug fixes, <code>misc</code> should be used for
+everything else.</p>
+</div>
+<div class="paragraph">
+<p>You can also add a cover letter and/or add annotations to patches:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>$ git send-email --cover-letter --annotate *.patch</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Additional information on the particular patches, which shouldn&#8217;t appear in the
+commit message itself, can be added immediately after the <code>---</code>.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_importing_patches">Importing patches</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Git also provides a tool for importing a patch series submitted via <code>git
+send-email</code>. Just save all mails that contain patches into mbox files and use
+<code>git am</code> to apply them to your working branch:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>$ git am &lt;mbox&gt;...</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>If you use mutt, you can also add following macro to apply the patch contained
+in the current mail to your local Git repository by pressing <code>A</code>:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>set mbox_type=mbox
+set my_git_repo_path=$HOME/src/calcurse
+
+macro index,pager A "&lt;pipe-message&gt;(cd $my_git_repo_path &amp;&amp; git am)&lt;enter&gt;"</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>To setup different Git repositories per mailing list (in case you follow several
+different development lists), simply bind the macro to a <code>folder-hook</code> or to a
+<code>message-hook</code> and use different repository paths per hook.</p>
+</div>
+</div>
+</div>
+</div>
+<div id="footer">
+<div id="footer-text">
+Last updated 2019-01-05 17:00:44 +0100
+</div>
+</div>
+</body>
+</html> \ No newline at end of file
diff --git a/support/index.html b/support/index.html
index 1bad52f..84dc1cc 100644
--- a/support/index.html
+++ b/support/index.html
@@ -57,16 +57,11 @@
</p>
<ul>
<li>
- <a href="/files/manual.html">HTML</a> &ndash;
- entirely on one web page (83kB)
- </li>
- <li>
- <a href="/files/manual.chunked/">HTML</a> &ndash;
- one web page per section (136kB)
+ <a href="/files/manual.html">HTML</a> (111kB)
</li>
<li><a href="/files/manual.pdf">PDF</a> (171kB)</li>
- <li><a href="/files/calcurse.1.html">calcurse(1) Manual Page</a> (28kB)</li>
- <li><a href="/files/calcurse-caldav.html">calcurse-caldav documentation</a> (9kB)</li>
+ <li><a href="/files/calcurse.1.html">calcurse(1) Manual Page</a> (71kB)</li>
+ <li><a href="/files/calcurse-caldav.html">calcurse-caldav documentation</a> (40kB)</li>
</ul>
</p>