{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreigp5fknjnurzjeeiepxwfs3ddygtcwe3ymo6fbrx2ewcb5dg3igl4",
    "uri": "at://did:plc:ircis5cmp6zyi7m3h45h6rfq/app.bsky.feed.post/3mljzelhokle2"
  },
  "coverImage": {
    "$type": "blob",
    "ref": {
      "$link": "bafkreib5oacqvlgy6pn44np4y2t4ydv4lj2inky4fcpe3zekncdtakocc4"
    },
    "mimeType": "image/png",
    "size": 126735
  },
  "path": "/2026/05/11/plain-text-calendar-todo-txt",
  "publishedAt": "2026-05-11T00:00:00.000Z",
  "site": "https://ellanew.com",
  "tags": [
    "tasks",
    "like this pocket-sized one",
    "calendar.txt",
    "todo.txt",
    "Templater",
    "Mastodon",
    "Bluesky",
    "https://ellanew.com/feed.rss",
    "sign up",
    "@phone",
    "@EW",
    "@RW",
    "@WK",
    "@HM"
  ],
  "textContent": "## With Obsidian instructions for seeing today’s schedule in your daily note\n\nI can still scarcely believe that what was supposed to be a 2-week experiment turned into a sustainable, calm-inducing way to keep up with all the time-specific events that make up my life.\n\nMy aim in writing about it is not to have you do the same — unless, of course, you really want to — but to see that because this is possible, there might be other areas of your own life that will do just fine (or even be better off) without complicated apps.\n\nBy the end of this article you will know how to create your own text-based calendar, and view today’s events in your daily note in Obsidian. Even if you are happy with your current digital calendar set up, I hope you will come away from this with at least one good idea for improving your system.\n\n## The experiment that became a way of life\n\nWhen it comes to tracking time, tasks, and things, there’s a decision-paralysis inducing supply of apps and plugins to choose from.\n\nEven though I’d rejected almost all of that, with its attending shiny object overwhelm, choosing instead to organise my life in a series of plain text files1, I still used a digital calendar to record upcoming events.\n\nAnd then last September I started what felt like a radical experiment: replacing my digital calendar with a vanilla text file for two whole weeks. Eight months later, the experiment has become a way of life. I did not expect this to stick, yet somehow, it did.\n\nWhy?\n\n  * Because I trust it! When I see something in the system, I know it has earned its place.\n  * Because it’s low tech. No distracting colours, shapes, reminders, or concerns about who really owns my info.\n  * Because I LOVE seeing plain text do for free what other people pay for with time, money, and attention\n\n\n\n### Trust issues can be so distracting\n\nOver the past (nearly) four decades I’ve seen files corrupt, information scramble, and apps disappear, but I’ve rarely if ever had a problem with good old plain text. That Christmas menu I typed into TextEdit 10 years ago is just as readable now as it was then — and will be in another 10 years.\n\nMy brain is not good at getting on with what I know needs doing, when I can’t be sure my data is as safe as it reasonably can be.\n\nI don’t know what attracts you to the idea of a calendar in plain text (well, you _are_ still reading), but for me it is the data safety issue plus the sense of ownership I get; the feeling that _I_ am in charge, and accountable.\n\n### Low-tech, please!\n\nRather than attempt to get over my trust issues, I’ve chosen to work with them. The underlying principle is this: If it doesn’t work in a plain text file _with no added wizardry_ , it doesn’t work.\n\nBecause my lists _do_ work, I can relax into using some of the unique features of my favourite notes app, Obsidian. A carefully curated set of non-essential plugins make life easier and more fun without compromising the plain text foundation.\n\nMy time management and productivity system rests on the backs of two text files: one for calendar items, the other for tasks. Both have one task or event per line, following the todo.txt protocol.\n\n_A third, planner file, is in the Markdown format. It is for convenient viewing of dates and tasks in one place, and for time blocking. It could easily be replaced by a paper planner or notebook, like this pocket-sized one._\n\nWhat follows is a plain text calendar inspired by calendar.txt, but with key differences. Calendar.txt has one day per line with multiple events on the same line. My plain text calendar has strictly one event per line, and follows the todo.txt format more closely.\n\n## Getting familiar with todo.txt\n\nAs its name suggests, todo.txt was designed for task management. All you need to know to get started is that each task must sit on its own line.\n\nThis is a valid task in the todo.txt format:\n\n`Call Mum`\n\nAdding metadata is where you need to learn some simple conventions, like —\n\nProject `Call Mum +party`\n\nContext `Call Mum @phone`\n\nDue date `Call Mum due:2026-05-07`\n\nCompleted\n`x Call Mum`\n\nCombined `Call Mum +party @phone due:2026-05-07`\n\nThere are a few more to learn if you are using todo.txt to organise tasks, but those aren’t needed to run a calendar.\n\n## Applying todo.txt to a hand-rolled calendar\n\nTo create a plain text calendar, you will need to create a new text file and name it something like `calendar` or `events`, whatever makes sense to you.\n\nIn this file you will type the things that you want your future self to do (or see) at a specific time, one item per line. The date must be written in YYYY-MM-DD format, and I strongly recommend using 24 hour time.\n\nEg.\n\n\n    Visit Jane (bring gift) due:2026-05-04 10:30\n    Put out the bins due:2026-05-04 17:00\n    Physiotherapy due:2026-05-05 12:00\n    Call Mum due:2026-05-05 14:45\n    Basketball practice due:2026-05-05 17:30\n    Put out the bins due:2026-05-11 17:00\n    Physiotherapy due:2026-05-05 12:00\n\nBefore you get too far with your own list, it’s worth considering the order of the metadata. The list above shows the right information, but changing things up slightly will make it easier to read:\n\n\n    due:2026-05-04 10:30 Visit Jane (bring gift)\n    due:2026-05-04 17:00 Put out the bins\n    due:2026-05-05 12:00 Physiotherapy\n    due:2026-05-06 14:45 Call Mum\n    due:2026-05-06 17:30 Basketball practice\n    due:2026-05-11 17:00 Put out the bins\n    due:2026-05-12 12:00 Physiotherapy\n\nI use a monospaced font and place all information that takes up a predictable amount of space at the beginning of the line.\n\n### Calendar types (contexts)\n\nYou can add a calendar type, using contexts. In my digital calendar, I have four separate calendars for me (@EW), my husband (@RW), work events (@WK), and home-related events (@HM).\n\nEach of those contexts takes up a predictable amount of space, so they go at the front of the line, after the date / time:\n\n\n    due:2026-05-04 10:30 @EW Visit Jane (bring gift)\n    due:2026-05-04 17:00 @HM Put out the bins\n    due:2026-05-05 12:00 @RW Physiotherapy\n    due:2026-05-06 14:45 @EW Call Mum\n    due:2026-05-06 17:30 @RW Basketball practice\n    due:2026-05-11 17:00 @HM Put out the bins\n    due:2026-05-12 12:00 @RW Physiotherapy\n\n### Visual cue (projects)\n\nThe last piece of metadata I add to my events, especially those that repeat on a regular basis, is an emoji to represent the type of event. These aren’t necessary, but they do add a useful visual cue. I like being able to glance down the left hand side of the list to get an idea what’s on my plate in the next few days.\n\nPutting them at the beginning of the line makes it easy to identify event types at a glance:\n\n\n    +🎁 due:2026-05-04 10:30 @EW Visit Jane (bring gift)\n    +🏠 due:2026-05-04 17:00 @HM Put out the bins\n    +💪 due:2026-05-05 12:00 @RW Physiotherapy\n    +💬 due:2026-05-06 14:45 @EW Call Mum\n    +🏀 due:2026-05-06 17:30 @RW Basketball practice\n    +🏠 due:2026-05-11 17:00 @HM Put out the bins\n    +💪 due:2026-05-12 12:00 @RW Physiotherapy\n\nThe _Todo.txt Mode_ plugin in Obsidian adds styles to projects, due dates, and contexts, making the list even easier to refer to:\n\n_Note: This kind of styling can be done in apps like VS Code, too. This screenshot was taken when my machine was in dark mode, which in my opinion makes it look especially nice._\n\nMy favourite feature of the _Todo-txt Mode_ plugin is its ability to sort the list by project, due date, or context. This means you can add weeks or months worth of repeating events in one block, then sort them by due date so that they appear in the stream of already entered events.\n\nYou can also use sorting to show a chronological list of events for any of the calendar type contexts. Eg. Just my events (those with the @EW context).\n\nTip for using the Todo.txt Mode plugin in Obsidian: When adding the name of the file you want to have the styling applied to, remember to add the file extension!\n\n### All-day events\n\nAll day events work the same way, minus the time. I like to differentiate these events further by writing them in capitals.\n\n\n    +📆 due:2026-05-04 MAY THE FOURTH BE WITH YOU (Star Wars day)\n    +🎁 due:2026-05-04 10:30 @EW Visit Jane (bring gift)\n    +🏠 due:2026-05-04 17:00 @HM Put out the bins\n    +💪 due:2026-05-05 12:00 @RW Physiotherapy\n    +🎁 due:2026-05-06 J'S BIRTHDAY\n    +💬 due:2026-05-06 14:45 @EW Call Mum\n    +🏀 due:2026-05-06 17:30 @RW Basketball practice\n    +🏠 due:2026-05-11 17:00 @HM Put out the bins\n    +💪 due:2026-05-12 12:00 @RW Physiotherapy\n    +🏠 due:2026-05-22 SCHEDULED POWER OUTAGE\n\n## Seeing your schedule, with help from Obsidian\n\nWhen previewing upcoming events, you need only to open your events file and see what’s at the top of the list. I love the app and platform-independent simplicity of that!\n\nTo take it a little further and enjoy the convenience of viewing today’s events in your daily note, you can use Obsidian’s own query language.\n\nThis query is looking for that due date pattern in every file inside your vault:\n\n\n    ```query\n    \"due:2026-05-08\"\n    ```\n\nIt doesn’t take long to change the date by hand, though Templater users can automate this in their daily notes template.\n\nThere are a couple of events that repeat annually in the event example in the previous section, but in my system these live in a separate file. This is because due dates for annual events look a little different, and therefore would not sort correctly if thrown in with everything else.\n\n\n    due:05-04 MAY THE FOURTH BE WITH YOU\n    due:05-06 J's BIRTHDAY\n    due:04-25 ANZAC DAY\n\nThe Obsidian query has to change a little in order to pick these up too:\n\n\n    ```query\n    (\"due:2026-05-08\" OR \"due:05-08\")\n    ```\n\nThat works, but I like to specify the path of the folder I keep my events files in, to make sure the results aren’t muddied by stray dates from other files (like the `done-txt.md` archive, where completed events and tasks go):\n\n\n    ```query\n    path:Events\n    line:(\"due:2026-05-08\" OR \"due:05-08\")\n    ```\n\n## So, is a plain text calendar for you?\n\nLet’s face it, most people will be best suited to a digital calendar. Writing it all out in text isn’t going to work if it distracts you from getting on with doing the kind of things a calendar is supposed to help you remember. It also isn’t an option when you need to share events with someone else who lives and breathes by the calendar on their phone.\n\nA plain text calendar works for me because a) my brain likes it, and b) my family events are coordinated via a paper calendar on the kitchen wall.\n\nBefore you leave, please take a moment to appreciate the grass-roots beauty of living life away from reliance on apps.\n\nSome people keep calendars on paper because that’s what they’ve always done, and others have adopted paper planning for many of the same reasons I use plain text files.\n\nWe’re saying no to unnecessary complications and to subscriptions that don’t feed us in one way or another. And we are saying yes to focus and freedom and simplicity.\n\nWhat is one thing you could simplify this week? What difference might it make?\n\n* * *\n\n* * *\n\n_💬 I love to hear from readers! email hello at ellanew dot com or message me on Mastodon or Bluesky. Follow my RSS feed (https://ellanew.com/feed.rss), or sign up to receive a weekly plain text themed email._\n\nIf you’ve found value here, I invite you to share this post with someone you think will appreciate it or make a contribution to my support jar.\n\n* * *\n\n  1. Imagine that! A foundation of text; just ordinary text. Yes, I know how powerful Emacs is. This is not that.↩︎\n\n\n",
  "title": "PTPL 206 · How to Create a Plain Text Calendar With the todo.txt Format"
}