事件和任务管理器
etm-dgraham的Python项目详细描述
ETM
etm提供了管理事件、任务和其他提醒的简单方法。使用简单的基于文本的格式,而不是填写表单中的字段来创建或编辑提醒。这是2009年开始的第四代项目。
etm中的每个提醒都以类型字符"开头,然后是项目的简要摘要"",然后可能是一对或多对"键值"来指定提醒的其他属性。助记符用于使键易于记住,例如,@s表示开始日期时间,@l表示位置,@d表示描述等等。
有4种类型的提醒和关联的类型字符::任务(-)、事件(*)、记录(%)和收件箱(!< /强>。有关四种项目类型的详细信息,请参见项目类型;有关可能属性的详细信息,请参见选项。下面是一些例子。
简单提醒
任务(-):取牛奶。
- pick up milk
活动(*):下周二中午12点开始与Burk共进午餐,持续90分钟,即从中午12点持续到下午1:30。
* Lunch with Burk @s tue 12p @e 90m
a record(%):您今天下午2点听到的最喜欢的丘吉尔语录,该语录本身就是[d]的描述。
% Give me a pig - Churchill @s 2p @d Dogs look up at you. Cats look down at you. Give me a pig - they look you in the eye and treat you as an equal.
任务(-):用组件[j]obs.建造一个狗屋
- Build dog house @j pick up materials @j cut pieces @j assemble @j sand @j paint
收件箱(!):星期五见亚历克斯喝咖啡。当通过替换确认时间时,可以将其更改为事件!带有*
! Coffee with Alex @s fri ? @e 1h
重复性
预约(活动)于2月5日下午2点进行牙科检查和清洁,然后于9月3日上午9点再次预约(活动)。
* dental exam and cleaning @s 2p feb 5 2019 @e 45m @+ 9am Sep 3 2019
圣诞节(全天活动)[r]epating(y)12月25日早。
* Christmas @s 2015/12/25 @r y
在本月24日理发(一项任务),然后在(14)天的每日[i]间隔处重复[r]并[o]n完成,(r)从上一个完成日期开始:
- haircut @s 24 @r d &i 14 @o r
星期一(在任务时)倒垃圾,但如果任务变为[o]verdue,(s)跳过过期提醒。
- Take out trash @s mon @r w @o s
一个销售会议(一个活动)[r]epeating m),每个星期[w]天,也就是一个月的第一个或第三个星期二。
- pick up milk
0
更复杂的重复
从星期一上午12点开始每天服用处方药,星期五上午10点、下午2点、下午6点和晚上10点一直服用处方药。
- pick up milk
1
从4月到9月的星期日(星期日)下午2点到下午4点30分(星期日14点、15点、16点),每隔30分钟(@R N&I 30)移动一次洒水器。
- pick up milk
2
总统选举日每四年一次,在11月的一个星期一之后的第一个星期二(一个星期二,其月日介于2和8之间)。
- pick up milk
3
每年的耶稣受难日在星期日前两天。
- pick up milk
4
11月、12月、1月和2月的星期五上午9:30和其他月份的上午8:00打网球:
- pick up milk
5
每月最后一个星期的发薪日。条目的&s&1部分提取最后一个(-1)日期,该日期既是一个工作日,又在一个月的最后三天之内:
- pick up milk
6
编辑
预约(活动)于2月5日下午2点进行牙科检查和清洁,然后于9月3日上午9点再次预约(活动)。
* dental exam and cleaning @s 2p feb 5 2019 @e 45m @+ 9am Sep 3 2019
圣诞节(全天活动)[r]epating(y)12月25日早。
* Christmas @s 2015/12/25 @r y
在本月24日理发(一项任务),然后在(14)天的每日[i]间隔处重复[r]并[o]n完成,(r)从上一个完成日期开始:
- haircut @s 24 @r d &i 14 @o r
星期一(在任务时)倒垃圾,但如果任务变为[o]verdue,(s)跳过过期提醒。
- Take out trash @s mon @r w @o s
一个销售会议(一个活动)[r]epeating m),每个星期[w]天,也就是一个月的第一个或第三个星期二。
- pick up milk
0
从星期一上午12点开始每天服用处方药,星期五上午10点、下午2点、下午6点和晚上10点一直服用处方药。
- pick up milk
1
从4月到9月的星期日(星期日)下午2点到下午4点30分(星期日14点、15点、16点),每隔30分钟(@R N&I 30)移动一次洒水器。
- pick up milk
2
总统选举日每四年一次,在11月的一个星期一之后的第一个星期二(一个星期二,其月日介于2和8之间)。
- pick up milk
3
每年的耶稣受难日在星期日前两天。
- pick up milk
4
11月、12月、1月和2月的星期五上午9:30和其他月份的上午8:00打网球:
- pick up milk
5
每月最后一个星期的发薪日。条目的&s&1部分提取最后一个(-1)日期,该日期既是一个工作日,又在一个月的最后三天之内:
- pick up milk
6
ETM在创建或修改时提供了一些便利正在处理项目。
- 日期和日期时间的模糊解析。假设现在是2019年2月13日星期三:
@s 2
将被解释为2019年2月2日。@s 2p
将被解释为本地时区2月13日星期三下午2点的日期时间。@s 2p fri
将被解释为本地时区2月15日星期五下午2点的日期时间。@s 2p fri@z us/pacific
将被解释为太平洋时区2月15日星期五下午2点的日期时间,但将显示为本地时区中的相应时间。@s 2p fri@z float
将被解释为2月15日星期五下午2点的原始日期时间,并以这种方式显示在任何碰巧是本地时区的地方。
- 自动完成以前使用过的元素,包括@z(时区)、@c(日历)、@t(标记)、@i(索引)、@l(位置)、@n(与会者)和@x(扩展)。例如,当输入@z时,您可以从以前使用过的任何时区中进行选择。
详细信息
安装/卸载
安装
建议为ETM设置虚拟环境。OS/X或Linux的步骤如下所示。有关详细信息,请参见python-virtual-environments-a-primer
打开一个终端,首先在主目录中创建一个新的目录/文件夹,例如etm pypi
,用于虚拟环境:
- pick up milk
7
现在继续创建虚拟环境(需要python3):
- pick up milk
8
几秒钟后,您将有一个/env
目录。现在激活虚拟环境:
- pick up milk
9
提示现在将更改为包含(env)
的内容,以指示虚拟环境处于活动状态。现在建议更新PIP:
* Lunch with Burk @s tue 12p @e 90m
0
注意,这将调用/env/bin/pip
。完成后,使用pip安装etm:
* Lunch with Burk @s tue 12p @e 90m
1
这将在/env/lib/python3.x/sitepackages
中安装etm及其所有要求,并在/env/bin
中安装名为etm
的可执行文件。
顺便说一下,etm的建议终端大小是60(列)乘以32或更多(行)。默认的配色方案最好使用深色的终端背景。可以在cfg.yaml
在启动etm之前,请考虑您希望将个人数据和配置文件保存在哪里。默认情况下,使用~/etm pypi
或为虚拟环境创建的任何目录作为etmhome目录。如果这不是您想要的,您只需给出启动etm时要使用的任何目录的路径,例如
* Lunch with Burk @s tue 12p @e 90m
2
注意事项:
- 如果多个人将在同一台计算机上使用ETM,则可能需要为每个用户提供不同的home目录。
- 如果要在多台计算机上使用ETM并使用Dropbox,则可能需要使用
~/Dropbox/ETM
在每台计算机上都有访问权限。
无论您选择什么home目录,第一次运行etm都会将以下内容添加到该文件夹中。
* Lunch with Burk @s tue 12p @e 90m
3
这里cfg.yaml
是您的用户配置文件,并且db.json
包含所有ETM提醒。文件夹backups/
和logs/
分别包含您的db.json
和cfg.yaml
文件的5个最新每日备份。文件夹logs
包含当前的etm.log
文件和5个最新的每日备份。
文件cfg.yaml
可以编辑ited和选项记录在文件中。
卸载
如果您需要卸载ETM,请首先停用虚拟环境(如果需要),方法是切换到虚拟环境目录并输入
* Lunch with Burk @s tue 12p @e 90m
4
现在,您只需删除虚拟环境目录,如果您有其他home目录,则可以删除其中的每个目录。虚拟环境的许多优点之一是,所有安装都是该环境的本地安装,删除目录后,将删除所有跟踪。
项目类型
事件
键入字符:*
事件是在特定日期或日期时间发生而不需要用户执行任何操作的事件。例如,圣诞节是一个无论用户是否对此做任何事情都会发生的事件。
@s
条目是必需的,可以指定为日期或日期时间。它被解释为事件的开始日期或日期时间。- 如果
@s
是日期,则该事件被视为全天的场合或事件。此类场合将在相关日期首先显示。 - 如果
@s
是日期时间,则允许输入@e
并将其解释为事件的范围或持续时间-然后通过开始日期时间加上范围隐式地给出事件的结束时间,此期间被视为忙时。
对应于vCalendar规范中的vevent。
任务
键入字符:-
任务是需要用户执行的操作,可以说,它将持续到任务完成并标记为已完成为止。例如,提交纳税申报表是一项任务。
@s
项是可选的,如果给定,则解释为任务到期的日期或日期时间。- 带有
@s
日期时间项的任务被视为日期时间之后的过期任务,并根据开始时间在相关日期的议程视图中显示。 - 具有
@s
日期项的任务被视为到期日之后的过期任务,并在所有具有日期时间的项目之前的到期日在议程视图中显示。 - 过期的任务也会显示在当前日期的议程视图中,使用类型字符
<;
并指示任务过期的天数。
- 带有
没有
@s
项的任务将在可能的情况下完成,有时称为todos。它们被视为"完成任务"术语中的"下一个"项目,并显示在按@l(位置/上下文)分组的"下一个"视图中。Jase
无论是否有@s条目,任务都可以使用@j条目进行组件作业。
对于带有@s项的任务,作业可以有一个&s项来设置作业的截止日期/日期时间。它作为相对于任务的开始日期时间(+之前或之后)的时间段输入。未输入&s时,默认为零分钟。
对于带有@s条目的任务,jobs还可以有&a、alert和&b(很快开始)通知。&A的条目是相对于&S的一个时间段(+之前或之后),而&B的条目是开始显示"即将开始"通知的开始日期/时间之前的正整数天数。任务中@s的条目将成为每个作业中&s;的默认条目。例如,使用
5* Lunch with Burk @s tue 12p @e 90m
即将开始工作通知将于1月15日开始(1月25日到期),1月25日开始(1月30日到期)。
先决条件
自动分配。默认设置是假设作业必须在它们的排列顺序。例如,使用
6* Lunch with Burk @s tue 12p @e 90m
作业a
没有先决条件,但它是作业b
的先决条件,而后者又是作业c
的先决条件,最后是作业d
的先决条件手动分配。也可以使用
&i
(id)和&p
的条目(用逗号分隔的即时请求的id列表)手动分配作业请求。例如,使用
7* Lunch with Burk @s tue 12p @e 90m
作业A
没有前提条件,但同时也是作业B
和作业C
的先决条件,这两个条件都是作业D
的先决条件。在这种情况下,列出作业的顺序无关紧要。
包含作业的任务将使用任务和作业摘要的组合(带有指示作业状态的类型字符)按作业显示。例如,
8* Lunch with Burk @s tue 12p @e 90m
表示作业a已完成,
作业b
和作业c
可用(没有未完成的前提条件),作业d已等待(有一个或多个未完成的前提条件)。方括号中的状态指示器分别表示任务中可用、等待和完成的作业数。
输入
@e
时,可以输入或不输入@s
并解释为完成任务所需的估计时间。作业完成后,"完成"日期时间将记录在作业的
&f
条目中。当任务中的最后一个作业完成或没有作业的任务完成时,使用@f done
在任务本身中输入类似的条目。如果有作业,则会从作业中删除&f
条目。另一个步骤是在将来重复尚未完成的任务。当当前重复中的任务或最后一个作业完成时,将使用
@o
的设置更新@s
条目以显示下一个到期日期时间,并删除@f
条目并将其附加到@h
中的完成列表中。用户配置设置确定为重复任务保留的最新完成记录数,默认值为3。当重复任务的最后一个实例完成时,
@f
将包含最后一个完成的日期时间和先前完成的列表。无论任务是否重复,只要任务已完成,就会有一个
@f
条目。
对应于vCalendar规范中的vTodo。
日志
键入字符:%
用户想要记住的东西的记录。网站的用户名和密码就是一个例子。另一个例子是假期的日记账分录。
@s
是可选的,如果给定,则被解释为记录适用的日期时间。- 不带@s项的记录可用于记录个人信息,如帐号、收件人或其他与特定日期时间无关的此类信息。它们显示在日志视图中
- 带有@s条目的记录将记录与@s给出的日期时间关联。例如,假期日志条目可能会记录@s给出的一天的亮点。它们显示在议程视图和日志视图中。
对应于vCalendar规范中的vJournal。
收件箱
键入字符:!
收件箱项目可以视为始终在当前日期到期的任务。例如,您创建了一个事件来提醒您午餐会议,但需要确认时间。只需使用录制!改为of*并且条目将在当前日期的议程视图中突出显示,直到您确认开始时间。
对应于vCalendar规范中的vTodo。
内部类型
这些由etm自动生成。
即将开始
键入字符:>;
对于包含@b
条目的未完成任务和其他项目,当@s
给出的开始日期在当前日期的@b
天内时,将在当前日期显示该项目即将开始的警告以及项目摘要和剩余天数。
过期
键入字符:<;
当任务过期时,当前日期将显示任务过期的警告以及项目摘要和过期天数。
等待
键入字符:+
当任务作业有一个或多个未完成的先决条件时,它将使用+而不是-来显示。
完成
键入字符:--
当任务或作业完成时,它将在完成日期使用--而不是-显示。
项目选项
@键
@后跟下表中的字符和与键对应的值用于将属性应用于项。例如,
* Lunch with Burk @s tue 12p @e 90m
9
将指定项目的开始日期时间为当前日期之后的星期一上午9点。
- @+:include:要包含的日期时间列表
- @-:exclude:要排除的日期时间列表
- @A:警报(前+(前)或-(后)时段列表:命令列表)
- @b:beginby:integer(前几天)
- @C:日历:字符串
- @D:描述:字符串
- @E:范围:周期
- @F:已完成:日期时间
- @g:goto:string(url或filepath)
- @H:history:(对于重复任务,是最近完成日期的列表)
- @I:索引:冒号分隔的字符串
- @J:作业摘要:字符串,可以选择后跟作业和关键项
- @L:位置/上下文:字符串
- @m:mask:string以模糊形式存储
- @n:attendee:'name<;emailaddress>;'字符串
- @O:过期:字符从(R)重新启动,(S)跳过或(K)保持
- @P:优先级:0(无)、1(低)、2(正常)、3(高)、4(紧急)之间的整数
- @r:重复频率:字符从(y)早,(m)月,(w)周,
(d)aily,(h)ourly或mi(n)utely,可选后跟重复键条目 - @S:开始:日期或日期时间
- @t:tag:string
- @u:usedTime:period:dateTime
- @X:扩展键:字符串
- @Z:时区:字符串
&keys
&;后跟下面列表中的一个字符。这些键仅用于@j(作业)和@r(重复)条目。
与@j一起使用
- &;s:start/due:period相对@s entry(默认0米)
- &;A:警报:相对于用户配置文件中的命令行名称列表,列出+(前)或-(后)期间
- &;b:beginby:integer&s之前的天数
- &;d:描述:字符串
- &;E:范围:句点
- &;f:完成:日期时间
- &;L:位置/上下文:字符串
- &;m:mask:以模糊格式存储的字符串
- &;I:作业唯一ID(字符串)
- &;p:先决条件(以逗号分隔的即时prereq的id列表)
- &;u:usedTime:period:dateTime
与@r一起使用
- &;C:计数:整数重复
- &;E:复活节:复活节前(-)、复活节当天(0)或之后(+)的天数
- &;h:hour:0中整数的列表…23
- &;i:interval:应用于频率的正整数,例如,对于@r m&i 3,每3个月重复一次
- &;m:monthday:整数列表1…31
- &;M:月号:1中整数的列表…12 < < > >
- &;n:minute:0中整数的列表…59
- &;s:设置位置:整数
- &;u:until:datetime
- &;w:weekday:su、mo、…、sa中的list可能前面有一个正整数或负整数
- &;W:周数:整数列表(1,…,53)
选项注释
@a警报和@b beginbys
- 通过电子邮件提醒,项目摘要将用作主题,电子邮件将发送到@n条目中列出的每个与会者。电子邮件正文的内容是一个可在用户配置文件中设置的选项。
- 对于重复项,只有未完成的任务才会触发警报和BeginBy,而当任务重复时,只有第一个未完成的实例才会触发警报和BeginBy。类似地,重复任务的过期通知仅在第一个未完成的实例中触发。
重复
使用@s、@r和@+(可选)。从@+开始的日期时间(如果有)将添加到从@r条目生成的日期时间中,该条目位于@s datetime或之后。请注意,@s中的datetime只在与@r项或@+中包含的datetime匹配时才被包含。
% Give me a pig - Churchill @s 2p @d Dogs look up at you. Cats look
down at you. Give me a pig - they look you in the eye and treat you
as an equal.
0
从2月15日起每天下午6点和3月2日下午4点重复,但2月15日下午3点不重复。
使用@s和@+(可选)(但不使用@r)。"@+"中的日期时间(如果有)将添加到@s。例如,
% Give me a pig - Churchill @s 2p @d Dogs look up at you. Cats look
down at you. Give me a pig - they look you in the eye and treat you
as an equal.
1
将在3月2日下午4点和2月15日下午3点重复此操作。
在@r中使用&c和&u。在dateutil中同时指定&c(count)和&u(until)是一个错误,因为提供两者最多是多余的。使用@c和@u之间的区别值得注意,可以用一个例子来说明。假设一个项目从周一上午10点开始,每天重复使用count、c 5或直到周五10点。这两种方法都会在周一到周五的每个工作日重复上午10点。如果您稍后决定删除其中一个实例,比如星期三使用@-,则会出现这种区别。使用count,您将在星期一、星期二、星期四、星期五和星期六有实例下降,以满足五个实例计数的要求。在到之间,只有星期一、星期二、星期四和星期五的四个实例才能满足最后一个实例出现在星期五上午10点或之前的要求。
@我蒙面进入。这些条目在数据库中以模糊或掩码格式编码,但在ETM中显示时解码。用户配置文件中指定的密钥secret用于编码/解码。
@X扩展。@x
,扩展键项用于指定要从ETM配置设置中提取的选项的键。例如,假设您的配置设置具有以下扩展项::
% Give me a pig - Churchill @s 2p @d Dogs look up at you. Cats look
down at you. Give me a pig - they look you in the eye and treat you
as an equal.
2
然后在下面的项目中输入@x tensing
% Give me a pig - Churchill @s 2p @d Dogs look up at you. Cats look
down at you. Give me a pig - they look you in the eye and treat you
as an equal.
3
ETM将提供用相应的扩展条目替换@x class,@e 1h30m@a 30m,15m:d@i personal:tensing
- &;C:计数:整数重复
- &;E:复活节:复活节前(-)、复活节当天(0)或之后(+)的天数
- &;h:hour:0中整数的列表…23
- &;i:interval:应用于频率的正整数,例如,对于@r m&i 3,每3个月重复一次
- &;m:monthday:整数列表1…31
- &;M:月号:1中整数的列表…12 < < > >
- &;n:minute:0中整数的列表…59
- &;s:设置位置:整数
- &;u:until:datetime
- &;w:weekday:su、mo、…、sa中的list可能前面有一个正整数或负整数
- &;W:周数:整数列表(1,…,53)
选项注释
@a警报和@b beginbys
- 通过电子邮件提醒,项目摘要将用作主题,电子邮件将发送到@n条目中列出的每个与会者。电子邮件正文的内容是一个可在用户配置文件中设置的选项。
- 对于重复项,只有未完成的任务才会触发警报和BeginBy,而当任务重复时,只有第一个未完成的实例才会触发警报和BeginBy。类似地,重复任务的过期通知仅在第一个未完成的实例中触发。
重复
使用@s、@r和@+(可选)。从@+开始的日期时间(如果有)将添加到从@r条目生成的日期时间中,该条目位于@s datetime或之后。请注意,@s中的datetime只在与@r项或@+中包含的datetime匹配时才被包含。
0% Give me a pig - Churchill @s 2p @d Dogs look up at you. Cats look down at you. Give me a pig - they look you in the eye and treat you as an equal.
从2月15日起每天下午6点和3月2日下午4点重复,但2月15日下午3点不重复。
使用@s和@+(可选)(但不使用@r)。"@+"中的日期时间(如果有)将添加到@s。例如,
1% Give me a pig - Churchill @s 2p @d Dogs look up at you. Cats look down at you. Give me a pig - they look you in the eye and treat you as an equal.
将在3月2日下午4点和2月15日下午3点重复此操作。
在@r中使用&c和&u。在dateutil中同时指定&c(count)和&u(until)是一个错误,因为提供两者最多是多余的。使用@c和@u之间的区别值得注意,可以用一个例子来说明。假设一个项目从周一上午10点开始,每天重复使用count、c 5或直到周五10点。这两种方法都会在周一到周五的每个工作日重复上午10点。如果您稍后决定删除其中一个实例,比如星期三使用@-,则会出现这种区别。使用count,您将在星期一、星期二、星期四、星期五和星期六有实例下降,以满足五个实例计数的要求。在到之间,只有星期一、星期二、星期四和星期五的四个实例才能满足最后一个实例出现在星期五上午10点或之前的要求。
@我蒙面进入。这些条目在数据库中以模糊或掩码格式编码,但在ETM中显示时解码。用户配置文件中指定的密钥secret用于编码/解码。
@X扩展。
@x
,扩展键项用于指定要从ETM配置设置中提取的选项的键。例如,假设您的配置设置具有以下扩展项::
2% Give me a pig - Churchill @s 2p @d Dogs look up at you. Cats look down at you. Give me a pig - they look you in the eye and treat you as an equal.
然后在下面的项目中输入
@x tensing
3% Give me a pig - Churchill @s 2p @d Dogs look up at you. Cats look down at you. Give me a pig - they look you in the eye and treat you as an equal.
ETM将提供用相应的扩展条目替换@x class,@e 1h30m@a 30m,15m:d@i personal:tensing