Skip to content

Commit

Permalink
M .zk/notebook.db
Browse files Browse the repository at this point in the history
M  2021-08-20_010631.md
M  build/2021-08-20_010631.html
M  build/feed.xml
  • Loading branch information
DhruvaSambrani committed May 31, 2024
1 parent d5cf12c commit b99fa68
Show file tree
Hide file tree
Showing 4 changed files with 4 additions and 4 deletions.
Binary file modified .zk/notebook.db
Binary file not shown.
4 changes: 2 additions & 2 deletions 2021-08-20_010631.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ tags: [mysetup, tui, sync, git]

# My calendar setup

> Edit: No longer true, I now use `vdirsyncer`, `khal` and `khard`. Just read [hund's blog](https://hund.tty1.se/2020/08/12/how-to-sync-and-manage-your-caldav-and-carddav-via-the-terminal.html). The calcurse syncing was such a big pain, and I started to selfhost radicale and so everything was pretty easy.
> Edit: No longer true, I now use `vdirsyncer`, `khal` and `khard`. Just read [hund's blog](https://hunden.linuxkompis.se/2020/08/12/how-to-sync-and-manage-your-caldav-and-carddav-via-the-terminal.html). The calcurse syncing was such a big pain, and I started to selfhost radicale and so everything was pretty easy.
## The Problem

Expand All @@ -20,7 +20,7 @@ I first tried [`remind`](https://linux.die.net/man/1/remind) with [`wyrd`](https

Then I tried [`calcurse`](https://www.calcurse.org/). With a pretty light UI and sensible (read vim-like) key bindings, it's super easy to get a hang of. Creating, editing and other stuff is pretty easy. Also, the notes feature is pretty awesome as it allows me to add pesky zoom links which have a tendency to get mixed up. Zoom should just give a random name to their meetings, like yellow-monkey-poop or something. It might even bring some joy into a dreary life of pointless Zoom meetings. Anywho, I pretty much stuck to calcurse.

But then I read about khal in [hund's blog](https://hund.tty1.se/2020/08/12/how-to-sync-and-manage-your-caldav-and-carddav-via-the-terminal.html) and decided to try it. The interface is a bit different, with way too many months shown at once, and the key bindings are weird too. It seemed like there were 3 layers to the UI- the month layer, the day layer and the event layer. Calcurse on the other hand uses a single layer with 3 parallel sections, the to-do, appointments and the month. Calcurse just looked better, but khal isn't far behind.
But then I read about khal in [hund's blog](https://hunden.linuxkompis.se/2020/08/12/how-to-sync-and-manage-your-caldav-and-carddav-via-the-terminal.html) and decided to try it. The interface is a bit different, with way too many months shown at once, and the key bindings are weird too. It seemed like there were 3 layers to the UI- the month layer, the day layer and the event layer. Calcurse on the other hand uses a single layer with 3 parallel sections, the to-do, appointments and the month. Calcurse just looked better, but khal isn't far behind.

## Syncing with other laptops

Expand Down
2 changes: 1 addition & 1 deletion build/2021-08-20_010631.html
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
<!doctype html><html xmlns=http://www.w3.org/1999/xhtml lang xml:lang><meta charset=utf-8><meta name=generator content="pandoc"><meta name=viewport content="width=device-width,initial-scale=1,user-scalable=yes"><meta name=author content="Dhruva Sambrani"><meta name=keywords content="mysetup,tui,sync,git"><title>My Calendar Setup | Dhruva's Blog</title><link rel=stylesheet href=/blog/assets/css/pandoc-styles.css><link rel=stylesheet href=/blog/assets/css/styles.css><div class=markdown-body><h1 id=my-calendar-setup>My calendar setup</h1><blockquote><p>Edit: No longer true, I now use <code>vdirsyncer</code>, <code>khal</code> and <code>khard</code>. Just read <a href=https://hund.tty1.se/2020/08/12/how-to-sync-and-manage-your-caldav-and-carddav-via-the-terminal.html>hund’s blog</a>. The calcurse syncing was such a big pain, and I started to selfhost radicale and so everything was pretty easy.</blockquote><h2 id=the-problem>The Problem</h2><p>I love TUIs. Being able to use just keys to do a lot of things without touching your mouse is pretty awesome. But I can’t constantly be on my laptop. I mean sure, with the pandemic, that’s all I’ve done, but <del>if</del> when it gets over, I’ll be on the move. I can’t turn on my laptop for every damn thing. I <em>need</em> to have the things I am working with on my phone too, especially things like the calendar. Now you get to read about the things I’ve tried to set up a TUI calendar which also syncs to my phone.<h2 id=on-my-laptop>On my laptop</h2><p>Conclusion: Calcurse. Beautiful.<p>I first tried <a href=https://linux.die.net/man/1/remind><code>remind</code></a> with <a href=https://github.com/haguenau/wyrd><code>wyrd</code></a>, but it just seemed too… much. It’s pretty cool, but it seems to have a very condensed UI, and I prefer more open UIs<p>Then I tried <a href=https://www.calcurse.org/><code>calcurse</code></a>. With a pretty light UI and sensible (read vim-like) key bindings, it’s super easy to get a hang of. Creating, editing and other stuff is pretty easy. Also, the notes feature is pretty awesome as it allows me to add pesky zoom links which have a tendency to get mixed up. Zoom should just give a random name to their meetings, like yellow-monkey-poop or something. It might even bring some joy into a dreary life of pointless Zoom meetings. Anywho, I pretty much stuck to calcurse.<p>But then I read about khal in <a href=https://hund.tty1.se/2020/08/12/how-to-sync-and-manage-your-caldav-and-carddav-via-the-terminal.html>hund’s blog</a> and decided to try it. The interface is a bit different, with way too many months shown at once, and the key bindings are weird too. It seemed like there were 3 layers to the UI- the month layer, the day layer and the event layer. Calcurse on the other hand uses a single layer with 3 parallel sections, the to-do, appointments and the month. Calcurse just looked better, but khal isn’t far behind.<h2 id=syncing-with-other-laptops>Syncing with other laptops</h2><p>Now comes the real issue. Syncing. Sure I could set up a CalDav server, but I don’t have a static IP, and if I go back to my institute, I will not be able to access my laptop. Also, my laptop has to always be up, which is not the case. Plus, implementing my own set up would be a pretty painful task.<p>I could use some online server, but I couldn’t find any services which were not self-hosting. Also, I wouldn’t be able to store the calcurse format, instead store an ical which I convert on opening calcurse, which seems dumb.<p>My solution was git. Git is device and OS-agnostic, and I already know how to use it. Plus I get a change history for free, though I assume that at some point the history will get too large, and I’ll have to squash previous commits, but that’s like a once in a year thing. Putting it on a remote server also ensures that it is backed up, so even if my beauty of a laptop dies, I’d still have my calendar.<p>You can make the calcurse directory a git repo and add <a href=https://calcurse.org/files/manual.html#_hooks>hooks</a> to commit and push in post-save and pull in pre-load. I used GitHub as the remote repo, but you could use anything of your choice. Now in another device, all I had to do was clone the calcurse directory, and I’d be done. Since literally everything from settings to hooks was in the same place, it would work exactly the same in all devices.<h2 id=calcurse-on-android>Calcurse on Android</h2><p>The final issue. Phone syncing.<p>My first attempt was to simply try to extend the same set up to android via <a href=https://termux.com/>termux</a>. While that worked, calcurse was pretty hopeless on such a tiny screen with a soft keyboard. TUIs are not made for touch screens. I tried wyrd and khal too, but they weren’t easy to use either.<p>I knew I could get the calcurse data onto the phone, it was the UI that was a problem. I briefly thought about making an app which could parse and display calcurse data, but then remembered the painful thing that is Android development. Plus I would basically have to rewrite the calcurse parser which itself is in constant development, which would mean my thing would have to be in constant development. No, thanks.<p>I then dabbled with exporting an ical file from calcurse on exit, which worked fine, and I was able to import it into my calendar(<a href=https://www.simplemobiletools.com/calendar/>Simple Calendar</a>) too. At first, it would import the data multiple times, but then I found out that adding <code>--export-uid</code> while exporting from calcurse prevented that from happening, so that was fine. But the major issue was that I would have to run the git pull myself and then open the ics file with the calendar. Then too, events which were deleted from calcurse wouldn’t be deleted from the calendar, as events would be imported and merged to the default calendar.<p>I needed a calendar app which would basically only display the ics file, that’s all. Not knowing any apps, I just typed <code>ics</code> into Aurora Droid and I found <a href=https://icsx5.bitfire.at/>ICSx⁵</a>. This was perfect. I could sync a CalDav server, and it would work perfectly.<p>But this cycled back to the first issue. I don’t want to set up CalDav. Then I thought of just trying to “sync” a URL which was just the link to an ics file. I used the <code>raw</code> link of the exported ics in my calcurse repo, and it worked!<p>Now, any time I edit the calendar on my laptop, it exports the calendar to an ics, commits it the repo, pushes to GitHub. From there, ICSx⁵ syncs the changes to my calendar when I refresh in the app.<p>Success!<h2 id=still-not-the-best>Still not the best</h2><p>This set up is still not perfect. I cannot make changes on my calendar app which propagate to the laptop. I have to fall back to the calcurse CLI or TUI to add an event via termux. It’s not a dealbreaker, especially since I don’t have too many updates anyway, but a person can dream.</div><div class="markdown-body tags"><a href=/blog/tags.html#mysetup>#mysetup<a>, <a href=/blog/tags.html#tui>#tui<a>, <a href=/blog/tags.html#sync>#sync<a>, <a href=/blog/tags.html#git>#git<a></div><footer><a id=home href=/blog/>Home</a>
<!doctype html><html xmlns=http://www.w3.org/1999/xhtml lang xml:lang><meta charset=utf-8><meta name=generator content="pandoc"><meta name=viewport content="width=device-width,initial-scale=1,user-scalable=yes"><meta name=author content="Dhruva Sambrani"><meta name=keywords content="mysetup,tui,sync,git"><title>My Calendar Setup | Dhruva's Blog</title><link rel=stylesheet href=/blog/assets/css/pandoc-styles.css><link rel=stylesheet href=/blog/assets/css/styles.css><div class=markdown-body><h1 id=my-calendar-setup>My calendar setup</h1><blockquote><p>Edit: No longer true, I now use <code>vdirsyncer</code>, <code>khal</code> and <code>khard</code>. Just read <a href=https://hunden.linuxkompis.se/2020/08/12/how-to-sync-and-manage-your-caldav-and-carddav-via-the-terminal.html>hund’s blog</a>. The calcurse syncing was such a big pain, and I started to selfhost radicale and so everything was pretty easy.</blockquote><h2 id=the-problem>The Problem</h2><p>I love TUIs. Being able to use just keys to do a lot of things without touching your mouse is pretty awesome. But I can’t constantly be on my laptop. I mean sure, with the pandemic, that’s all I’ve done, but <del>if</del> when it gets over, I’ll be on the move. I can’t turn on my laptop for every damn thing. I <em>need</em> to have the things I am working with on my phone too, especially things like the calendar. Now you get to read about the things I’ve tried to set up a TUI calendar which also syncs to my phone.<h2 id=on-my-laptop>On my laptop</h2><p>Conclusion: Calcurse. Beautiful.<p>I first tried <a href=https://linux.die.net/man/1/remind><code>remind</code></a> with <a href=https://github.com/haguenau/wyrd><code>wyrd</code></a>, but it just seemed too… much. It’s pretty cool, but it seems to have a very condensed UI, and I prefer more open UIs<p>Then I tried <a href=https://www.calcurse.org/><code>calcurse</code></a>. With a pretty light UI and sensible (read vim-like) key bindings, it’s super easy to get a hang of. Creating, editing and other stuff is pretty easy. Also, the notes feature is pretty awesome as it allows me to add pesky zoom links which have a tendency to get mixed up. Zoom should just give a random name to their meetings, like yellow-monkey-poop or something. It might even bring some joy into a dreary life of pointless Zoom meetings. Anywho, I pretty much stuck to calcurse.<p>But then I read about khal in <a href=https://hunden.linuxkompis.se/2020/08/12/how-to-sync-and-manage-your-caldav-and-carddav-via-the-terminal.html>hund’s blog</a> and decided to try it. The interface is a bit different, with way too many months shown at once, and the key bindings are weird too. It seemed like there were 3 layers to the UI- the month layer, the day layer and the event layer. Calcurse on the other hand uses a single layer with 3 parallel sections, the to-do, appointments and the month. Calcurse just looked better, but khal isn’t far behind.<h2 id=syncing-with-other-laptops>Syncing with other laptops</h2><p>Now comes the real issue. Syncing. Sure I could set up a CalDav server, but I don’t have a static IP, and if I go back to my institute, I will not be able to access my laptop. Also, my laptop has to always be up, which is not the case. Plus, implementing my own set up would be a pretty painful task.<p>I could use some online server, but I couldn’t find any services which were not self-hosting. Also, I wouldn’t be able to store the calcurse format, instead store an ical which I convert on opening calcurse, which seems dumb.<p>My solution was git. Git is device and OS-agnostic, and I already know how to use it. Plus I get a change history for free, though I assume that at some point the history will get too large, and I’ll have to squash previous commits, but that’s like a once in a year thing. Putting it on a remote server also ensures that it is backed up, so even if my beauty of a laptop dies, I’d still have my calendar.<p>You can make the calcurse directory a git repo and add <a href=https://calcurse.org/files/manual.html#_hooks>hooks</a> to commit and push in post-save and pull in pre-load. I used GitHub as the remote repo, but you could use anything of your choice. Now in another device, all I had to do was clone the calcurse directory, and I’d be done. Since literally everything from settings to hooks was in the same place, it would work exactly the same in all devices.<h2 id=calcurse-on-android>Calcurse on Android</h2><p>The final issue. Phone syncing.<p>My first attempt was to simply try to extend the same set up to android via <a href=https://termux.com/>termux</a>. While that worked, calcurse was pretty hopeless on such a tiny screen with a soft keyboard. TUIs are not made for touch screens. I tried wyrd and khal too, but they weren’t easy to use either.<p>I knew I could get the calcurse data onto the phone, it was the UI that was a problem. I briefly thought about making an app which could parse and display calcurse data, but then remembered the painful thing that is Android development. Plus I would basically have to rewrite the calcurse parser which itself is in constant development, which would mean my thing would have to be in constant development. No, thanks.<p>I then dabbled with exporting an ical file from calcurse on exit, which worked fine, and I was able to import it into my calendar(<a href=https://www.simplemobiletools.com/calendar/>Simple Calendar</a>) too. At first, it would import the data multiple times, but then I found out that adding <code>--export-uid</code> while exporting from calcurse prevented that from happening, so that was fine. But the major issue was that I would have to run the git pull myself and then open the ics file with the calendar. Then too, events which were deleted from calcurse wouldn’t be deleted from the calendar, as events would be imported and merged to the default calendar.<p>I needed a calendar app which would basically only display the ics file, that’s all. Not knowing any apps, I just typed <code>ics</code> into Aurora Droid and I found <a href=https://icsx5.bitfire.at/>ICSx⁵</a>. This was perfect. I could sync a CalDav server, and it would work perfectly.<p>But this cycled back to the first issue. I don’t want to set up CalDav. Then I thought of just trying to “sync” a URL which was just the link to an ics file. I used the <code>raw</code> link of the exported ics in my calcurse repo, and it worked!<p>Now, any time I edit the calendar on my laptop, it exports the calendar to an ics, commits it the repo, pushes to GitHub. From there, ICSx⁵ syncs the changes to my calendar when I refresh in the app.<p>Success!<h2 id=still-not-the-best>Still not the best</h2><p>This set up is still not perfect. I cannot make changes on my calendar app which propagate to the laptop. I have to fall back to the calcurse CLI or TUI to add an event via termux. It’s not a dealbreaker, especially since I don’t have too many updates anyway, but a person can dream.</div><div class="markdown-body tags"><a href=/blog/tags.html#mysetup>#mysetup<a>, <a href=/blog/tags.html#tui>#tui<a>, <a href=/blog/tags.html#sync>#sync<a>, <a href=/blog/tags.html#git>#git<a></div><footer><a id=home href=/blog/>Home</a>
<img alt="Creative Commons License" style=border-width:0 src=https://i.creativecommons.org/l/by-nc/4.0/88x31.png>
<a id=contents href=/blog/contents.html>Contents</a></footer>
Loading

0 comments on commit b99fa68

Please sign in to comment.