<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Emacs on </title>
    <link>/tags/emacs/</link>
    <description>Recent content in Emacs on </description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Thu, 02 Apr 2026 23:00:00 +0200</lastBuildDate><atom:link href="/tags/emacs/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Timezones and org-caldav</title>
      <link>/posts/timezones-org-caldav/</link>
      <pubDate>Thu, 02 Apr 2026 23:00:00 +0200</pubDate>
      
      <guid>/posts/timezones-org-caldav/</guid>
      <description>&lt;p&gt;If you, like me &amp;hellip;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;hellip; use the Nextcloud &lt;a href=&#34;https://apps.nextcloud.com/apps/calendar&#34;&gt;calendar app&lt;/a&gt; to syncronize your calendar across devices,&lt;/li&gt;
&lt;li&gt;&amp;hellip; like to manage your calendar within Emacs,&lt;/li&gt;
&lt;li&gt;&amp;hellip; spend considerable part of the year in different timezones &amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;hellip; I have great news for you: after years of trial and error, I think I have finally found a workable set-up.&lt;/p&gt;
&lt;p&gt;To begin with, this set-up builds upon &lt;a href=&#34;https://github.com/dengste/org-caldav/blob/master/doc/org-caldav.org&#34;&gt;org-caldav&lt;/a&gt;, and the &lt;a href=&#34;https://orgmode.org/manual/Agenda-Views.html&#34;&gt;org-agenda&lt;/a&gt;. As it turns out, this combo works great in combination with Nextcloud, but there are a couple of tricks that are not mentioned in the documentation.&lt;/p&gt;</description>
      <content>&lt;p&gt;If you, like me &amp;hellip;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;hellip; use the Nextcloud &lt;a href=&#34;https://apps.nextcloud.com/apps/calendar&#34;&gt;calendar app&lt;/a&gt; to syncronize your calendar across devices,&lt;/li&gt;
&lt;li&gt;&amp;hellip; like to manage your calendar within Emacs,&lt;/li&gt;
&lt;li&gt;&amp;hellip; spend considerable part of the year in different timezones &amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;hellip; I have great news for you: after years of trial and error, I think I have finally found a workable set-up.&lt;/p&gt;
&lt;p&gt;To begin with, this set-up builds upon &lt;a href=&#34;https://github.com/dengste/org-caldav/blob/master/doc/org-caldav.org&#34;&gt;org-caldav&lt;/a&gt;, and the &lt;a href=&#34;https://orgmode.org/manual/Agenda-Views.html&#34;&gt;org-agenda&lt;/a&gt;. As it turns out, this combo works great in combination with Nextcloud, but there are a couple of tricks that are not mentioned in the documentation.&lt;/p&gt;
&lt;p&gt;&lt;u&gt;Trick 1:&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;When adding a new event to the org-calendar, you can add the timezone of the event as a property to the org header of your event. If you sync this event to the Nextcloud server, the calendar app will faithfully recognize this timezone.&lt;/p&gt;
&lt;figure style=&#34;width:850px; margin: 0 auto;&#34;&gt;
    &lt;img src=&#34;/images/example_org-calendar.png&#34; style=&#34;width:100%;&#34;&gt;
  &lt;figcaption style=&#34;text-align: center;&#34;&gt;This is what happiness looks like.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;u&gt;Trick 2:&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;Although org-caldav has no issue informing the Nextcloud server of the timezone org property of any pushed event (org-calendar &amp;ndash;&amp;gt; Nextcloud), it does not recognize any timezone data from any event that is pulled from the Nextcloud server to the org-calendar (Nextcloud &amp;ndash;&amp;gt; org-calendar).&lt;/p&gt;
&lt;p&gt;Also, org-calendar (and org in general) does not have proper timezone support.&lt;/p&gt;
&lt;p&gt;For several years I thought that this simply means that I cannot manage my calendar in Emacs/ org-mode. But today I decided to &amp;ldquo;re-open the case&amp;rdquo;. And I think I solved it.&lt;/p&gt;
&lt;p&gt;As it turns out, when pulling new events from the Nextcloud server with org-caldav, it adjusts the time to the timezone of the device.&lt;/p&gt;
&lt;p&gt;So let&amp;rsquo;s say I have an event saved in the Nextcloud server at 10:00h Colombian time. If I pull this event with org-caldav to my laptop, and my laptop is set to the Amsterdam timezone (summer time), it will pull the time as 17:00h. If I would do the same while my laptop is set to Colombian timezone, it will pull the time as 10:00h.&lt;/p&gt;
&lt;p&gt;This means that two simple rules will make this set-up workable:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Whenever I switch timezones, I need to &amp;ldquo;re-sync from scratch&amp;rdquo; all events from the Nextcloud server to my laptop.&lt;/li&gt;
&lt;li&gt;When adding new events with org-calendar, always use the active/ current timezone of the device.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Following these two simple rules should be enough to have a timezone consistent org-agenda, properly synced across devices by Nextcloud.&lt;/p&gt;
&lt;p&gt;True happiness.&lt;/p&gt;
</content>
    </item>
    
  </channel>
</rss>
