This commit is contained in:
SqrtMinusOne 2024-07-10 18:40:04 +00:00
parent 9d4d92a3cb
commit b8fc918369
8 changed files with 76 additions and 41 deletions

View file

@ -3255,9 +3255,13 @@ Emacs is also particularly great at writing Lisp code, e.g. Clojure, Common Lisp
<p>A package that checks for the metadata in Emacs Lisp packages.</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#008000">use-package</span> <span style="color:#19177c">flycheck-package</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">:straight</span> <span style="color:#800">t</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">:after</span> <span style="color:#19177c">flycheck</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">:config</span>
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">flycheck-package-setup</span>))
</span></span><span style="display:flex;"><span> <span style="color:#008000">:defer</span> <span style="color:#800">t</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">:init</span>
</span></span><span style="display:flex;"><span> (<span style="color:#008000">defun</span> <span style="color:#19177c">my/flycheck-package-setup</span> ()
</span></span><span style="display:flex;"><span> (<span style="color:#008000">require</span> <span style="color:#19177c">&#39;flycheck-package</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">flycheck-package-setup</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">remove-hook</span> <span style="color:#19177c">&#39;emacs-lisp-mode-hook</span> <span style="color:#00f">#&#39;</span><span style="color:#19177c">my/flycheck-package-setup</span>))
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">add-hook</span> <span style="color:#19177c">&#39;emacs-lisp-mode-hook</span> <span style="color:#00f">#&#39;</span><span style="color:#19177c">my/flycheck-package-setup</span>))
</span></span></code></pre></div><h5 id="general-settings-2">General settings</h5>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#19177c">add-hook</span> <span style="color:#19177c">&#39;emacs-lisp-mode-hook</span> <span style="color:#00f">#&#39;</span><span style="color:#19177c">aggressive-indent-mode</span>)
</span></span><span style="display:flex;"><span><span style="color:#408080;font-style:italic">;; (add-hook &#39;emacs-lisp-mode-hook #&#39;smartparens-strict-mode)</span>
@ -9198,6 +9202,14 @@ Didn&rsquo;t work out as I expected, so I&rsquo;ve made <code>org-journal-tags</
<p>There is a package called <code>devdocs</code> that does more or less the same, but I like <code>devdocs-browser</code> more because it uses <code>eww</code>.</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#008000">use-package</span> <span style="color:#19177c">devdocs-browser</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">:straight</span> <span style="color:#800">t</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">:commands</span> (<span style="color:#19177c">devdocs-browser-open</span>
</span></span><span style="display:flex;"><span> <span style="color:#19177c">devdocs-browser-open-in</span>
</span></span><span style="display:flex;"><span> <span style="color:#19177c">devdocs-browser-install-doc</span>
</span></span><span style="display:flex;"><span> <span style="color:#19177c">devdocs-browser-uninstall-doc</span>
</span></span><span style="display:flex;"><span> <span style="color:#19177c">devdocs-browser-download-offline-data</span>
</span></span><span style="display:flex;"><span> <span style="color:#19177c">devdocs-browser-remove-offline-data</span>
</span></span><span style="display:flex;"><span> <span style="color:#19177c">devdocs-browser-upgrade-all-docs</span>
</span></span><span style="display:flex;"><span> <span style="color:#19177c">devdocs-browser-update-docs</span>)
</span></span><span style="display:flex;"><span> <span style="color:#008000">:init</span>
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">my-leader-def</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">:infix</span> <span style="color:#ba2121">&#34;hd&#34;</span>

View file

@ -467,11 +467,8 @@ Remove <code>TAG</code> from emails which are outside the matching <code>PATH</c
</span></span><span style="display:flex;"><span> (<span style="color:#008000">when</span> (<span style="color:#00f">file-directory-p</span> <span style="color:#19177c">dir</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let</span> ((<span style="color:#19177c">default-directory</span> <span style="color:#19177c">dir</span>))
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">normal-top-level-add-subdirs-to-load-path</span>))))
</span></span></code></pre></div><p>On termux the above doesn&rsquo;t work so&hellip;</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#008000">use-package</span> <span style="color:#19177c">notmuch</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">:straight</span> <span style="color:#800">t</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">:if</span> <span style="color:#19177c">my/is-termux</span>)
</span></span></code></pre></div><p>Some functions to toggle tags:</p>
</span></span></code></pre></div><p>On termux the above doesn&rsquo;t work, and I don&rsquo;t need it here anyway.</p>
<p>Some functions to toggle tags:</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#008000">defun</span> <span style="color:#19177c">my/notmuch-toggle-trash</span> ()
</span></span><span style="display:flex;"><span> (<span style="color:#008000">interactive</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">evil-collection-notmuch-toggle-tag</span> <span style="color:#ba2121">&#34;trash&#34;</span> <span style="color:#ba2121">&#34;search&#34;</span> <span style="color:#00f">#&#39;</span><span style="color:#19177c">ignore</span>))
@ -485,6 +482,7 @@ Remove <code>TAG</code> from emails which are outside the matching <code>PATH</c
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">evil-collection-notmuch-toggle-tag</span> <span style="color:#ba2121">&#34;unread&#34;</span> <span style="color:#ba2121">&#34;search&#34;</span> <span style="color:#00f">#&#39;</span><span style="color:#19177c">ignore</span>))
</span></span></code></pre></div><p>And notmuch settings:</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#008000">use-package</span> <span style="color:#19177c">notmuch</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">:if</span> (<span style="color:#19177c">not</span> <span style="color:#19177c">my/is-termux</span>)
</span></span><span style="display:flex;"><span> <span style="color:#408080;font-style:italic">;; :ensure nil</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">:commands</span> (<span style="color:#19177c">notmuch</span> <span style="color:#19177c">notmuch-search</span>)
</span></span><span style="display:flex;"><span> <span style="color:#008000">:init</span>

View file

@ -4455,24 +4455,24 @@ History of the timer can be stored in a CSV file. Eventually, I want to join thi
&lt;h2 id=&#34;usage&#34;&gt;Usage&lt;/h2&gt;
&lt;h3 id=&#34;pomodoro&#34;&gt;Pomodoro&lt;/h3&gt;
&lt;p&gt;Run &lt;code&gt;M-x pomm&lt;/code&gt; to open the transient buffer.&lt;/p&gt;
&lt;p&gt;The listed commands are rather self-descriptive and match the Pomodoro ideology.&lt;/p&gt;
&lt;p&gt;The listed commands are self-descriptive and match the Pomodoro ideology.&lt;/p&gt;
&lt;p&gt;The timer can have 3 states:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Stopped&lt;/strong&gt;. Can be started with &amp;ldquo;s&amp;rdquo; or &lt;code&gt;M-x pomm-start&lt;/code&gt;. A new iteration of the timer will be started.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Paused&lt;/strong&gt;. Can be continuted with &amp;ldquo;s&amp;rdquo; / &lt;code&gt;M-x pomm-start&lt;/code&gt; or stopped competely with &amp;ldquo;S&amp;rdquo; / &lt;code&gt;M-x pomm-stop&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Paused&lt;/strong&gt;. Can be continued with &amp;ldquo;s&amp;rdquo; / &lt;code&gt;M-x pomm-start&lt;/code&gt; or stopped completely with &amp;ldquo;S&amp;rdquo; / &lt;code&gt;M-x pomm-stop&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Running&lt;/strong&gt;. Can be paused with &amp;ldquo;p&amp;rdquo; / &lt;code&gt;M-x pomm-pause&lt;/code&gt; or stopped with &amp;ldquo;S&amp;rdquo; / &lt;code&gt;M-x pomm-stop&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The state of the timer can be reset with &amp;ldquo;R&amp;rdquo; or &lt;code&gt;M-x pomm-reset&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;u&amp;rdquo; updates the transient buffer. The update is manual because I didn&amp;rsquo;t figure out how to automate this, and I think this is not &lt;em&gt;really&lt;/em&gt; necessary.&lt;/p&gt;
&lt;p&gt;With &amp;ldquo;r&amp;rdquo; or &lt;code&gt;M-x pomm-set-context&lt;/code&gt; you can set the current &amp;ldquo;context&amp;rdquo;, that is some description of the task you are currently working on. This description will show up in history and in the csv file. Also, &lt;code&gt;M-x pomm-start-with-context&lt;/code&gt; will prompt for the context and then start the timer.&lt;/p&gt;
&lt;p&gt;With &amp;ldquo;r&amp;rdquo; or &lt;code&gt;M-x pomm-set-context&lt;/code&gt; you can set the current &amp;ldquo;context&amp;rdquo;, that is some description of the task you are currently working on. This description will show up in history and in the CSV file. Also, &lt;code&gt;M-x pomm-start-with-context&lt;/code&gt; will prompt for the context and then start the timer.&lt;/p&gt;
&lt;h3 id=&#34;third-time&#34;&gt;Third Time&lt;/h3&gt;
&lt;p&gt;Run &lt;code&gt;M-x pomm-third-time&lt;/code&gt; to open the transient buffer for the Third Time technique.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://sqrtminusone.xyz/pomm-img/screenshot-tt.png&#34;&gt;
&lt;/figure&gt;
&lt;p&gt;Essentially, the techique is designed aroud the formula:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Time of break = 1/3 x Time of work.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I.e. you work as long as you want or need, and then take a break with the maximum duration &lt;code&gt;1/3&lt;/code&gt; of the time worked. If you take a shorter break, the remaining break time is saved and added to the next break within the same session. &lt;a href=&#34;https://www.lesswrong.com/posts/RWu8eZqbwgB9zaerh/third-time-a-better-way-to-work&#34;&gt;Here is a more detailed explanation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Essentially, the technique is designed around the formula:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Time of break = 1/3 x Time of work.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I.e., you work as long as you want or need, and then take a break with the maximum duration of &lt;code&gt;1/3&lt;/code&gt; of the time worked. If you take a shorter break, the remaining break time is saved and added to the next break within the same session. &lt;a href=&#34;https://www.lesswrong.com/posts/RWu8eZqbwgB9zaerh/third-time-a-better-way-to-work&#34;&gt;Here is a more detailed explanation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The Third Time timer can have 2 states:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Stopped&lt;/strong&gt;. Can be started with &amp;ldquo;s&amp;rdquo; or &lt;code&gt;M-x pomm-third-time-start&lt;/code&gt;.&lt;/li&gt;
@ -4485,7 +4485,7 @@ History of the timer can be stored in a CSV file. Eventually, I want to join thi
&lt;p&gt;The package sends alerts via &lt;code&gt;alert.el&lt;/code&gt;. The default style of alert is a plain &lt;code&gt;message&lt;/code&gt;, but if you want an actual notification, set &lt;code&gt;alert-default-style&lt;/code&gt; accordingly:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-emacs-lisp&#34; data-lang=&#34;emacs-lisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#008000&#34;&gt;setq&lt;/span&gt; &lt;span style=&#34;color:#19177c&#34;&gt;alert-default-style&lt;/span&gt; &lt;span style=&#34;color:#19177c&#34;&gt;&amp;#39;libnotify&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;sounds&#34;&gt;Sounds&lt;/h3&gt;
&lt;p&gt;By default sounds are disabled. Set &lt;code&gt;pomm-audio-enabled&lt;/code&gt; to &lt;code&gt;t&lt;/code&gt; to toggle them. Set &lt;code&gt;pomm-audio-tick-enabled&lt;/code&gt; to &lt;code&gt;t&lt;/code&gt; if you want the ticking sound.&lt;/p&gt;
&lt;p&gt;By default, sounds are disabled. Set &lt;code&gt;pomm-audio-enabled&lt;/code&gt; to &lt;code&gt;t&lt;/code&gt; to toggle them. Set &lt;code&gt;pomm-audio-tick-enabled&lt;/code&gt; to &lt;code&gt;t&lt;/code&gt; if you want the ticking sound.&lt;/p&gt;
&lt;p&gt;This functionality needs &lt;code&gt;pomm-audio-player-executable&lt;/code&gt; to be set so that the program could be invoked like: &lt;code&gt;&amp;lt;executable&amp;gt; /path/to/sound.wav&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The package ships with some built-it sounds, which you can replace by customizing the &lt;code&gt;pomm-audio-files&lt;/code&gt; variable.&lt;/p&gt;
&lt;h3 id=&#34;modeline&#34;&gt;Modeline&lt;/h3&gt;
@ -4504,7 +4504,7 @@ type = custom/script
exec = /home/pavel/bin/polybar/pomm.sh
interval = 1
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;state-file-location&#34;&gt;State file location&lt;/h3&gt;
&lt;p&gt;To implement pesistence between Emacs sessions, the package stores its state in the following files:&lt;/p&gt;
&lt;p&gt;To implement persistence between Emacs sessions, the package stores its state in the following files:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;pomm-state-file-location&lt;/code&gt;, &lt;code&gt;.emacs.d/pomm&lt;/code&gt; by default&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pomm-third-time-state-file-location&lt;/code&gt;, &lt;code&gt;/.emacs.d/pomm-third-time&lt;/code&gt; by default&lt;/li&gt;
@ -4520,11 +4520,19 @@ interval = 1
&lt;li&gt;&lt;code&gt;iteration&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;context&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;One for the Third Time technique has an extra column called &lt;code&gt;break-time-remaining&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The one for the Third Time technique has an extra column called &lt;code&gt;break-time-remaining&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;A new entry is written after a particular state of the timer comes into being.&lt;/p&gt;
&lt;p&gt;To customize timestamp, set the &lt;code&gt;pomm-csv-history-file-timestamp-format&lt;/code&gt; variable. For example, for traditional &lt;code&gt;YYYY-MM-DD HH:mm:ss&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-emacs-lisp&#34; data-lang=&#34;emacs-lisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#008000&#34;&gt;setq&lt;/span&gt; &lt;span style=&#34;color:#19177c&#34;&gt;pomm-csv-history-file-timestamp-format&lt;/span&gt; &lt;span style=&#34;color:#ba2121&#34;&gt;&amp;#34;%F %T&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The format is the same as in &lt;code&gt;format-time-string&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;usage-with-org-clock&#34;&gt;Usage with &lt;code&gt;org-clock&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;The package can be used with &lt;a href=&#34;https://orgmode.org/manual/Clocking-commands.html&#34;&gt;org-clock&lt;/a&gt; in the following way. Set up these two hooks:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-emacs-lisp&#34; data-lang=&#34;emacs-lisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#19177c&#34;&gt;add-hook&lt;/span&gt; &lt;span style=&#34;color:#19177c&#34;&gt;&amp;#39;pomm-on-status-changed-hook&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;#&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#19177c&#34;&gt;pomm--sync-org-clock&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#19177c&#34;&gt;add-hook&lt;/span&gt; &lt;span style=&#34;color:#19177c&#34;&gt;&amp;#39;pomm-third-time-on-status-changed-hook&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#00f&#34;&gt;#&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#19177c&#34;&gt;pomm-third-time--sync-org-clock&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then, start the timer (either &lt;code&gt;pomm&lt;/code&gt; or &lt;code&gt;pomm-third-time&lt;/code&gt;) and &lt;code&gt;org-clock-in&lt;/code&gt;, in whichever order. The package will call &lt;code&gt;org-clock-out&lt;/code&gt; when a break starts and &lt;code&gt;org-clock-in-last&lt;/code&gt; when it ends.&lt;/p&gt;
&lt;p&gt;Setting &lt;code&gt;pomm-org-clock-in-immediately&lt;/code&gt; to &lt;code&gt;nil&lt;/code&gt; &amp;ldquo;defers&amp;rdquo; calling &lt;code&gt;org-clock-in-last&lt;/code&gt; until after any command from the user (via &lt;code&gt;post-command-hook&lt;/code&gt;). I&amp;rsquo;ve added this because I occasionally return to my PC a few minutes after the break ends, so I don&amp;rsquo;t want these minutes to show up in &lt;code&gt;org-clock&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Also see &lt;a href=&#34;https://github.com/SqrtMinusOne/pomm.el/issues/13#issuecomment-2216868331&#34;&gt;this comment&lt;/a&gt; (&lt;a href=&#34;https://github.com/SqrtMinusOne/pomm.el/issues/13&#34;&gt;#13&lt;/a&gt;) for an alternative approach.&lt;/p&gt;
&lt;h2 id=&#34;alternatives&#34;&gt;Alternatives&lt;/h2&gt;
&lt;p&gt;There is a number of packages with a similar purpose, here is a rough comparison of features:&lt;/p&gt;
&lt;table&gt;
@ -4592,13 +4600,13 @@ interval = 1
&lt;td&gt;GTK panel&lt;/td&gt;
&lt;td&gt;CLI&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;-, but the program is independent from Emacs&lt;/td&gt;
&lt;td&gt;-, but the program is independent of Emacs&lt;/td&gt;
&lt;td&gt;GTK notifications&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Be sure to check those out if this one doesn&amp;rsquo;t quite fit your workflow!&lt;/p&gt;
&lt;p&gt;(1) Means of timer control with exception of Emacs interactive commands&lt;/p&gt;
&lt;p&gt;(1) Means of timer control with exception to Emacs interactive commands&lt;/p&gt;
&lt;p&gt;Also take a look at &lt;a href=&#34;https://github.com/telotortium/org-pomodoro-third-time&#34;&gt;org-pomodoro-third-time&lt;/a&gt;, which adapts &lt;code&gt;org-pomodoro&lt;/code&gt; for the Third Time technique.&lt;/p&gt;
&lt;h2 id=&#34;p-dot-s-dot&#34;&gt;P.S.&lt;/h2&gt;
&lt;p&gt;The package name is not an abbreviation. I just hope it doesn&amp;rsquo;t mean something horrible in some language I don&amp;rsquo;t know.&lt;/p&gt;

View file

@ -1569,24 +1569,24 @@ History of the timer can be stored in a CSV file. Eventually, I want to join thi
&lt;h2 id=&#34;usage&#34;&gt;Usage&lt;/h2&gt;
&lt;h3 id=&#34;pomodoro&#34;&gt;Pomodoro&lt;/h3&gt;
&lt;p&gt;Run &lt;code&gt;M-x pomm&lt;/code&gt; to open the transient buffer.&lt;/p&gt;
&lt;p&gt;The listed commands are rather self-descriptive and match the Pomodoro ideology.&lt;/p&gt;
&lt;p&gt;The listed commands are self-descriptive and match the Pomodoro ideology.&lt;/p&gt;
&lt;p&gt;The timer can have 3 states:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Stopped&lt;/strong&gt;. Can be started with &amp;ldquo;s&amp;rdquo; or &lt;code&gt;M-x pomm-start&lt;/code&gt;. A new iteration of the timer will be started.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Paused&lt;/strong&gt;. Can be continuted with &amp;ldquo;s&amp;rdquo; / &lt;code&gt;M-x pomm-start&lt;/code&gt; or stopped competely with &amp;ldquo;S&amp;rdquo; / &lt;code&gt;M-x pomm-stop&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Paused&lt;/strong&gt;. Can be continued with &amp;ldquo;s&amp;rdquo; / &lt;code&gt;M-x pomm-start&lt;/code&gt; or stopped completely with &amp;ldquo;S&amp;rdquo; / &lt;code&gt;M-x pomm-stop&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Running&lt;/strong&gt;. Can be paused with &amp;ldquo;p&amp;rdquo; / &lt;code&gt;M-x pomm-pause&lt;/code&gt; or stopped with &amp;ldquo;S&amp;rdquo; / &lt;code&gt;M-x pomm-stop&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The state of the timer can be reset with &amp;ldquo;R&amp;rdquo; or &lt;code&gt;M-x pomm-reset&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;u&amp;rdquo; updates the transient buffer. The update is manual because I didn&amp;rsquo;t figure out how to automate this, and I think this is not &lt;em&gt;really&lt;/em&gt; necessary.&lt;/p&gt;
&lt;p&gt;With &amp;ldquo;r&amp;rdquo; or &lt;code&gt;M-x pomm-set-context&lt;/code&gt; you can set the current &amp;ldquo;context&amp;rdquo;, that is some description of the task you are currently working on. This description will show up in history and in the csv file. Also, &lt;code&gt;M-x pomm-start-with-context&lt;/code&gt; will prompt for the context and then start the timer.&lt;/p&gt;
&lt;p&gt;With &amp;ldquo;r&amp;rdquo; or &lt;code&gt;M-x pomm-set-context&lt;/code&gt; you can set the current &amp;ldquo;context&amp;rdquo;, that is some description of the task you are currently working on. This description will show up in history and in the CSV file. Also, &lt;code&gt;M-x pomm-start-with-context&lt;/code&gt; will prompt for the context and then start the timer.&lt;/p&gt;
&lt;h3 id=&#34;third-time&#34;&gt;Third Time&lt;/h3&gt;
&lt;p&gt;Run &lt;code&gt;M-x pomm-third-time&lt;/code&gt; to open the transient buffer for the Third Time technique.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://sqrtminusone.xyz/pomm-img/screenshot-tt.png&#34;&gt;
&lt;/figure&gt;
&lt;p&gt;Essentially, the techique is designed aroud the formula:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Time of break = 1/3 x Time of work.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I.e. you work as long as you want or need, and then take a break with the maximum duration &lt;code&gt;1/3&lt;/code&gt; of the time worked. If you take a shorter break, the remaining break time is saved and added to the next break within the same session. &lt;a href=&#34;https://www.lesswrong.com/posts/RWu8eZqbwgB9zaerh/third-time-a-better-way-to-work&#34;&gt;Here is a more detailed explanation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Essentially, the technique is designed around the formula:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Time of break = 1/3 x Time of work.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I.e., you work as long as you want or need, and then take a break with the maximum duration of &lt;code&gt;1/3&lt;/code&gt; of the time worked. If you take a shorter break, the remaining break time is saved and added to the next break within the same session. &lt;a href=&#34;https://www.lesswrong.com/posts/RWu8eZqbwgB9zaerh/third-time-a-better-way-to-work&#34;&gt;Here is a more detailed explanation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The Third Time timer can have 2 states:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Stopped&lt;/strong&gt;. Can be started with &amp;ldquo;s&amp;rdquo; or &lt;code&gt;M-x pomm-third-time-start&lt;/code&gt;.&lt;/li&gt;
@ -1599,7 +1599,7 @@ History of the timer can be stored in a CSV file. Eventually, I want to join thi
&lt;p&gt;The package sends alerts via &lt;code&gt;alert.el&lt;/code&gt;. The default style of alert is a plain &lt;code&gt;message&lt;/code&gt;, but if you want an actual notification, set &lt;code&gt;alert-default-style&lt;/code&gt; accordingly:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-emacs-lisp&#34; data-lang=&#34;emacs-lisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#008000&#34;&gt;setq&lt;/span&gt; &lt;span style=&#34;color:#19177c&#34;&gt;alert-default-style&lt;/span&gt; &lt;span style=&#34;color:#19177c&#34;&gt;&amp;#39;libnotify&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;sounds&#34;&gt;Sounds&lt;/h3&gt;
&lt;p&gt;By default sounds are disabled. Set &lt;code&gt;pomm-audio-enabled&lt;/code&gt; to &lt;code&gt;t&lt;/code&gt; to toggle them. Set &lt;code&gt;pomm-audio-tick-enabled&lt;/code&gt; to &lt;code&gt;t&lt;/code&gt; if you want the ticking sound.&lt;/p&gt;
&lt;p&gt;By default, sounds are disabled. Set &lt;code&gt;pomm-audio-enabled&lt;/code&gt; to &lt;code&gt;t&lt;/code&gt; to toggle them. Set &lt;code&gt;pomm-audio-tick-enabled&lt;/code&gt; to &lt;code&gt;t&lt;/code&gt; if you want the ticking sound.&lt;/p&gt;
&lt;p&gt;This functionality needs &lt;code&gt;pomm-audio-player-executable&lt;/code&gt; to be set so that the program could be invoked like: &lt;code&gt;&amp;lt;executable&amp;gt; /path/to/sound.wav&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The package ships with some built-it sounds, which you can replace by customizing the &lt;code&gt;pomm-audio-files&lt;/code&gt; variable.&lt;/p&gt;
&lt;h3 id=&#34;modeline&#34;&gt;Modeline&lt;/h3&gt;
@ -1618,7 +1618,7 @@ type = custom/script
exec = /home/pavel/bin/polybar/pomm.sh
interval = 1
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;state-file-location&#34;&gt;State file location&lt;/h3&gt;
&lt;p&gt;To implement pesistence between Emacs sessions, the package stores its state in the following files:&lt;/p&gt;
&lt;p&gt;To implement persistence between Emacs sessions, the package stores its state in the following files:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;pomm-state-file-location&lt;/code&gt;, &lt;code&gt;.emacs.d/pomm&lt;/code&gt; by default&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pomm-third-time-state-file-location&lt;/code&gt;, &lt;code&gt;/.emacs.d/pomm-third-time&lt;/code&gt; by default&lt;/li&gt;
@ -1634,11 +1634,19 @@ interval = 1
&lt;li&gt;&lt;code&gt;iteration&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;context&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;One for the Third Time technique has an extra column called &lt;code&gt;break-time-remaining&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The one for the Third Time technique has an extra column called &lt;code&gt;break-time-remaining&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;A new entry is written after a particular state of the timer comes into being.&lt;/p&gt;
&lt;p&gt;To customize timestamp, set the &lt;code&gt;pomm-csv-history-file-timestamp-format&lt;/code&gt; variable. For example, for traditional &lt;code&gt;YYYY-MM-DD HH:mm:ss&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-emacs-lisp&#34; data-lang=&#34;emacs-lisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#008000&#34;&gt;setq&lt;/span&gt; &lt;span style=&#34;color:#19177c&#34;&gt;pomm-csv-history-file-timestamp-format&lt;/span&gt; &lt;span style=&#34;color:#ba2121&#34;&gt;&amp;#34;%F %T&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The format is the same as in &lt;code&gt;format-time-string&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;usage-with-org-clock&#34;&gt;Usage with &lt;code&gt;org-clock&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;The package can be used with &lt;a href=&#34;https://orgmode.org/manual/Clocking-commands.html&#34;&gt;org-clock&lt;/a&gt; in the following way. Set up these two hooks:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-emacs-lisp&#34; data-lang=&#34;emacs-lisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#19177c&#34;&gt;add-hook&lt;/span&gt; &lt;span style=&#34;color:#19177c&#34;&gt;&amp;#39;pomm-on-status-changed-hook&lt;/span&gt; &lt;span style=&#34;color:#00f&#34;&gt;#&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#19177c&#34;&gt;pomm--sync-org-clock&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#19177c&#34;&gt;add-hook&lt;/span&gt; &lt;span style=&#34;color:#19177c&#34;&gt;&amp;#39;pomm-third-time-on-status-changed-hook&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#00f&#34;&gt;#&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#19177c&#34;&gt;pomm-third-time--sync-org-clock&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then, start the timer (either &lt;code&gt;pomm&lt;/code&gt; or &lt;code&gt;pomm-third-time&lt;/code&gt;) and &lt;code&gt;org-clock-in&lt;/code&gt;, in whichever order. The package will call &lt;code&gt;org-clock-out&lt;/code&gt; when a break starts and &lt;code&gt;org-clock-in-last&lt;/code&gt; when it ends.&lt;/p&gt;
&lt;p&gt;Setting &lt;code&gt;pomm-org-clock-in-immediately&lt;/code&gt; to &lt;code&gt;nil&lt;/code&gt; &amp;ldquo;defers&amp;rdquo; calling &lt;code&gt;org-clock-in-last&lt;/code&gt; until after any command from the user (via &lt;code&gt;post-command-hook&lt;/code&gt;). I&amp;rsquo;ve added this because I occasionally return to my PC a few minutes after the break ends, so I don&amp;rsquo;t want these minutes to show up in &lt;code&gt;org-clock&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Also see &lt;a href=&#34;https://github.com/SqrtMinusOne/pomm.el/issues/13#issuecomment-2216868331&#34;&gt;this comment&lt;/a&gt; (&lt;a href=&#34;https://github.com/SqrtMinusOne/pomm.el/issues/13&#34;&gt;#13&lt;/a&gt;) for an alternative approach.&lt;/p&gt;
&lt;h2 id=&#34;alternatives&#34;&gt;Alternatives&lt;/h2&gt;
&lt;p&gt;There is a number of packages with a similar purpose, here is a rough comparison of features:&lt;/p&gt;
&lt;table&gt;
@ -1706,13 +1714,13 @@ interval = 1
&lt;td&gt;GTK panel&lt;/td&gt;
&lt;td&gt;CLI&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;-, but the program is independent from Emacs&lt;/td&gt;
&lt;td&gt;-, but the program is independent of Emacs&lt;/td&gt;
&lt;td&gt;GTK notifications&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Be sure to check those out if this one doesn&amp;rsquo;t quite fit your workflow!&lt;/p&gt;
&lt;p&gt;(1) Means of timer control with exception of Emacs interactive commands&lt;/p&gt;
&lt;p&gt;(1) Means of timer control with exception to Emacs interactive commands&lt;/p&gt;
&lt;p&gt;Also take a look at &lt;a href=&#34;https://github.com/telotortium/org-pomodoro-third-time&#34;&gt;org-pomodoro-third-time&lt;/a&gt;, which adapts &lt;code&gt;org-pomodoro&lt;/code&gt; for the Third Time technique.&lt;/p&gt;
&lt;h2 id=&#34;p-dot-s-dot&#34;&gt;P.S.&lt;/h2&gt;
&lt;p&gt;The package name is not an abbreviation. I just hope it doesn&amp;rsquo;t mean something horrible in some language I don&amp;rsquo;t know.&lt;/p&gt;

View file

@ -114,24 +114,24 @@ History of the timer can be stored in a CSV file. Eventually, I want to join thi
<h2 id="usage">Usage</h2>
<h3 id="pomodoro">Pomodoro</h3>
<p>Run <code>M-x pomm</code> to open the transient buffer.</p>
<p>The listed commands are rather self-descriptive and match the Pomodoro ideology.</p>
<p>The listed commands are self-descriptive and match the Pomodoro ideology.</p>
<p>The timer can have 3 states:</p>
<ul>
<li><strong>Stopped</strong>. Can be started with &ldquo;s&rdquo; or <code>M-x pomm-start</code>. A new iteration of the timer will be started.</li>
<li><strong>Paused</strong>. Can be continuted with &ldquo;s&rdquo; / <code>M-x pomm-start</code> or stopped competely with &ldquo;S&rdquo; / <code>M-x pomm-stop</code>.</li>
<li><strong>Paused</strong>. Can be continued with &ldquo;s&rdquo; / <code>M-x pomm-start</code> or stopped completely with &ldquo;S&rdquo; / <code>M-x pomm-stop</code>.</li>
<li><strong>Running</strong>. Can be paused with &ldquo;p&rdquo; / <code>M-x pomm-pause</code> or stopped with &ldquo;S&rdquo; / <code>M-x pomm-stop</code>.</li>
</ul>
<p>The state of the timer can be reset with &ldquo;R&rdquo; or <code>M-x pomm-reset</code>.</p>
<p>&ldquo;u&rdquo; updates the transient buffer. The update is manual because I didn&rsquo;t figure out how to automate this, and I think this is not <em>really</em> necessary.</p>
<p>With &ldquo;r&rdquo; or <code>M-x pomm-set-context</code> you can set the current &ldquo;context&rdquo;, that is some description of the task you are currently working on. This description will show up in history and in the csv file. Also, <code>M-x pomm-start-with-context</code> will prompt for the context and then start the timer.</p>
<p>With &ldquo;r&rdquo; or <code>M-x pomm-set-context</code> you can set the current &ldquo;context&rdquo;, that is some description of the task you are currently working on. This description will show up in history and in the CSV file. Also, <code>M-x pomm-start-with-context</code> will prompt for the context and then start the timer.</p>
<h3 id="third-time">Third Time</h3>
<p>Run <code>M-x pomm-third-time</code> to open the transient buffer for the Third Time technique.</p>
<figure><img src="/pomm-img/screenshot-tt.png">
</figure>
<p>Essentially, the techique is designed aroud the formula:</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>Time of break = 1/3 x Time of work.
</span></span></code></pre></div><p>I.e. you work as long as you want or need, and then take a break with the maximum duration <code>1/3</code> of the time worked. If you take a shorter break, the remaining break time is saved and added to the next break within the same session. <a href="https://www.lesswrong.com/posts/RWu8eZqbwgB9zaerh/third-time-a-better-way-to-work">Here is a more detailed explanation</a>.</p>
<p>Essentially, the technique is designed around the formula:</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>Time of break = 1/3 x Time of work.
</span></span></code></pre></div><p>I.e., you work as long as you want or need, and then take a break with the maximum duration of <code>1/3</code> of the time worked. If you take a shorter break, the remaining break time is saved and added to the next break within the same session. <a href="https://www.lesswrong.com/posts/RWu8eZqbwgB9zaerh/third-time-a-better-way-to-work">Here is a more detailed explanation</a>.</p>
<p>The Third Time timer can have 2 states:</p>
<ul>
<li><strong>Stopped</strong>. Can be started with &ldquo;s&rdquo; or <code>M-x pomm-third-time-start</code>.</li>
@ -144,7 +144,7 @@ History of the timer can be stored in a CSV file. Eventually, I want to join thi
<p>The package sends alerts via <code>alert.el</code>. The default style of alert is a plain <code>message</code>, but if you want an actual notification, set <code>alert-default-style</code> accordingly:</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#008000">setq</span> <span style="color:#19177c">alert-default-style</span> <span style="color:#19177c">&#39;libnotify</span>)
</span></span></code></pre></div><h3 id="sounds">Sounds</h3>
<p>By default sounds are disabled. Set <code>pomm-audio-enabled</code> to <code>t</code> to toggle them. Set <code>pomm-audio-tick-enabled</code> to <code>t</code> if you want the ticking sound.</p>
<p>By default, sounds are disabled. Set <code>pomm-audio-enabled</code> to <code>t</code> to toggle them. Set <code>pomm-audio-tick-enabled</code> to <code>t</code> if you want the ticking sound.</p>
<p>This functionality needs <code>pomm-audio-player-executable</code> to be set so that the program could be invoked like: <code>&lt;executable&gt; /path/to/sound.wav</code>.</p>
<p>The package ships with some built-it sounds, which you can replace by customizing the <code>pomm-audio-files</code> variable.</p>
<h3 id="modeline">Modeline</h3>
@ -163,7 +163,7 @@ type = custom/script
exec = /home/pavel/bin/polybar/pomm.sh
interval = 1
</code></pre><h3 id="state-file-location">State file location</h3>
<p>To implement pesistence between Emacs sessions, the package stores its state in the following files:</p>
<p>To implement persistence between Emacs sessions, the package stores its state in the following files:</p>
<ul>
<li><code>pomm-state-file-location</code>, <code>.emacs.d/pomm</code> by default</li>
<li><code>pomm-third-time-state-file-location</code>, <code>/.emacs.d/pomm-third-time</code> by default</li>
@ -179,11 +179,19 @@ interval = 1
<li><code>iteration</code></li>
<li><code>context</code></li>
</ul>
<p>One for the Third Time technique has an extra column called <code>break-time-remaining</code>.</p>
<p>The one for the Third Time technique has an extra column called <code>break-time-remaining</code>.</p>
<p>A new entry is written after a particular state of the timer comes into being.</p>
<p>To customize timestamp, set the <code>pomm-csv-history-file-timestamp-format</code> variable. For example, for traditional <code>YYYY-MM-DD HH:mm:ss</code>:</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#008000">setq</span> <span style="color:#19177c">pomm-csv-history-file-timestamp-format</span> <span style="color:#ba2121">&#34;%F %T&#34;</span>)
</span></span></code></pre></div><p>The format is the same as in <code>format-time-string</code>.</p>
<h3 id="usage-with-org-clock">Usage with <code>org-clock</code></h3>
<p>The package can be used with <a href="https://orgmode.org/manual/Clocking-commands.html">org-clock</a> in the following way. Set up these two hooks:</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#19177c">add-hook</span> <span style="color:#19177c">&#39;pomm-on-status-changed-hook</span> <span style="color:#00f">#&#39;</span><span style="color:#19177c">pomm--sync-org-clock</span>)
</span></span><span style="display:flex;"><span>(<span style="color:#19177c">add-hook</span> <span style="color:#19177c">&#39;pomm-third-time-on-status-changed-hook</span>
</span></span><span style="display:flex;"><span> <span style="color:#00f">#&#39;</span><span style="color:#19177c">pomm-third-time--sync-org-clock</span>
</span></span></code></pre></div><p>Then, start the timer (either <code>pomm</code> or <code>pomm-third-time</code>) and <code>org-clock-in</code>, in whichever order. The package will call <code>org-clock-out</code> when a break starts and <code>org-clock-in-last</code> when it ends.</p>
<p>Setting <code>pomm-org-clock-in-immediately</code> to <code>nil</code> &ldquo;defers&rdquo; calling <code>org-clock-in-last</code> until after any command from the user (via <code>post-command-hook</code>). I&rsquo;ve added this because I occasionally return to my PC a few minutes after the break ends, so I don&rsquo;t want these minutes to show up in <code>org-clock</code>.</p>
<p>Also see <a href="https://github.com/SqrtMinusOne/pomm.el/issues/13#issuecomment-2216868331">this comment</a> (<a href="https://github.com/SqrtMinusOne/pomm.el/issues/13">#13</a>) for an alternative approach.</p>
<h2 id="alternatives">Alternatives</h2>
<p>There is a number of packages with a similar purpose, here is a rough comparison of features:</p>
<table>
@ -251,13 +259,13 @@ interval = 1
<td>GTK panel</td>
<td>CLI</td>
<td>-</td>
<td>-, but the program is independent from Emacs</td>
<td>-, but the program is independent of Emacs</td>
<td>GTK notifications</td>
</tr>
</tbody>
</table>
<p>Be sure to check those out if this one doesn&rsquo;t quite fit your workflow!</p>
<p>(1) Means of timer control with exception of Emacs interactive commands</p>
<p>(1) Means of timer control with exception to Emacs interactive commands</p>
<p>Also take a look at <a href="https://github.com/telotortium/org-pomodoro-third-time">org-pomodoro-third-time</a>, which adapts <code>org-pomodoro</code> for the Third Time technique.</p>
<h2 id="p-dot-s-dot">P.S.</h2>
<p>The package name is not an abbreviation. I just hope it doesn&rsquo;t mean something horrible in some language I don&rsquo;t know.</p>
@ -284,6 +292,7 @@ interval = 1
<li><a href="#polybar-module">Polybar module</a></li>
<li><a href="#state-file-location">State file location</a></li>
<li><a href="#history">History</a></li>
<li><a href="#usage-with-org-clock">Usage with <code>org-clock</code></a></li>
</ul>
</li>
<li><a href="#alternatives">Alternatives</a></li>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 121 KiB

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

After

Width:  |  Height:  |  Size: 67 KiB