<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>android on foosel.net</title><link>https://foosel.net/tags/android/</link><description>Recent content in android on foosel.net</description><generator>Hugo</generator><language>en-us</language><copyright>Gina Häußge (foosel)</copyright><lastBuildDate>Fri, 19 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://foosel.net/tags/android/feed.xml" rel="self" type="application/rss+xml"/><item><title>TIL: How to manage this Hugo based page from my Android phone in 2026</title><link>https://foosel.net/til/2026-06-19-how-to-manage-this-page-from-my-phone-in-2026/</link><pubDate>Fri, 19 Jun 2026 00:00:00 +0000</pubDate><guid>https://foosel.net/til/2026-06-19-how-to-manage-this-page-from-my-phone-in-2026/</guid><description>&lt;p&gt;This TIL post is basically an update to my three year old post &lt;a href="https://foosel.net/blog/2023-01-21-hugo-meet-android/"&gt;&amp;ldquo;Hugo, meet Android&amp;rdquo;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I recently got a new phone and thus had to re-do the setup of my mobile blogging pipeline. So, basically, allow me to checkout, modify, test, commit and push the sources of this &lt;a href="https://gohugo.io/"&gt;Hugo based&lt;/a&gt; static page under Android. While doing so I noticed some necessary changes and improvements, and also wanted to make use of my &lt;a href="https://github.com/foosel/foosel.github.io/blob/master/Taskfile.yml"&gt;Taskfile&lt;/a&gt; which does most of the heavy lifting now, so here are my updated steps.&lt;/p&gt;</description><content:encoded><![CDATA[<p>This TIL post is basically an update to my three year old post <a href="https://foosel.net/blog/2023-01-21-hugo-meet-android/">&ldquo;Hugo, meet Android&rdquo;</a>.</p>
<p>I recently got a new phone and thus had to re-do the setup of my mobile blogging pipeline. So, basically, allow me to checkout, modify, test, commit and push the sources of this <a href="https://gohugo.io/">Hugo based</a> static page under Android. While doing so I noticed some necessary changes and improvements, and also wanted to make use of my <a href="https://github.com/foosel/foosel.github.io/blob/master/Taskfile.yml">Taskfile</a> which does most of the heavy lifting now, so here are my updated steps.</p>
<h2 id="apps--permissions">Apps &amp; permissions</h2>
<ol>
<li>Install Tasker</li>
<li>From <strong>F-Droid</strong> install
<ul>
<li>Termux</li>
<li>Termux:Tasker</li>
<li>Markor</li>
</ul>
</li>
<li>Grant permissions
<ul>
<li>Tasker: Run commands via Termux</li>
<li>Termux: Draw over apps</li>
</ul>
</li>
</ol>
<h2 id="termux-setup">Termux setup</h2>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#75715e"># setup access to storage</span>
</span></span><span style="display:flex;"><span>termux-setup-storage
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># install packages</span>
</span></span><span style="display:flex;"><span>pkg upgrade
</span></span><span style="display:flex;"><span>pkg install git gh hugo iconv vim
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># log into github</span>
</span></span><span style="display:flex;"><span>gh auth login
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># navigate to Markor&#39;s document folder &amp; checkout sources</span>
</span></span><span style="display:flex;"><span>cd storage/shared/Documents/markor
</span></span><span style="display:flex;"><span>git clone --recurse-submodules https://github.com/foosel/foosel.github.io
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># create symlink in home</span>
</span></span><span style="display:flex;"><span>ln -s foosel.github.io ~/foosel.net
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># mark checkout as safe</span>
</span></span><span style="display:flex;"><span>git config --global --add safe.directory /storage/emulated/0/Documents/markor/foosel.github.io
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># set git user metadata</span>
</span></span><span style="display:flex;"><span>git config --global user.email <span style="color:#e6db74">&#34;you@example.com&#34;</span>
</span></span><span style="display:flex;"><span>git config --global user.name <span style="color:#e6db74">&#34;Your Name&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># we want to use our Taskfile...</span>
</span></span><span style="display:flex;"><span>pkg install golang
</span></span><span style="display:flex;"><span>go install github.com/go-task/task/v3/cmd/task@latest
</span></span></code></pre></div><p>As Tasker will stay the <em>only</em> app on my system allowed to send commands to Termux, and I write all my tasks myself, I also added <code>allow-external-apps=true</code>  to <code>.termux/termux.properties</code> as described <a href="https://github.com/termux/termux-tasker#allow-external-apps-property-optional">here</a>. That allows me to directly execute stuff from Tasker by absolute path vs having to add a bunch of wrapper scripts to <code>~/.termux/shortcuts</code></p>
<p>To quickly test if everything works so far:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>cd ~/foosel.net
</span></span><span style="display:flex;"><span>task serve
</span></span></code></pre></div><p>This should build the page and serve it on <code>http://127.0.0.1:1313</code> (with auto reload).</p>
<h2 id="tasker-setup">Tasker setup</h2>
<p>I created a bunch of tasks, gave all of them an icon and added them to my launcher.</p>
<h3 id="serve-fooselnet">Serve foosel.net</h3>
<pre tabindex="0"><code>    Task: Serve foosel.net
    
    A1: Termux [
         Configuration: ~/go/bin/task serve
         
         Working Directory ✓
         Terminal Session ✓
         Wait For Result ✕
         Timeout (Seconds): 10
         Structure Output (JSON, etc): On ]
    
</code></pre><h3 id="pull-fooselnet">Pull foosel.net</h3>
<pre tabindex="0"><code>    Task: Pull foosel.net
    
    A1: Termux [
         Configuration: /data/data/com.termux/files/usr/bin/git pull
         
         Working Directory ✓
         Stdin ✕
         Custom Log Level null
         Terminal Session ✕
         Wait 
         Timeout (Seconds): 10
         Structure Output (JSON, etc): On ]
    
    A2: Flash [
         Text: Pulled foosel.net sources
         Continue Task Immediately: On
         Dismiss On Click: On ]
    
</code></pre><h3 id="push-fooselnet">Push foosel.net</h3>
<pre tabindex="0"><code>    Task: Push foosel.net
    
    A1: Termux [
         Configuration: /data/data/com.termux/files/usr/bin/git push
         
         Working Directory ✓
         Stdin ✕
         Custom Log Level null
         Terminal Session ✕
         Wait 
         Timeout (Seconds): 10
         Structure Output (JSON, etc): On ]
    
    A2: Flash [
         Text: Pushed foosel.net sources
         Continue Task Immediately: On
         Dismiss On Click: On ]
    
</code></pre><h3 id="new-blog-post">New Blog Post</h3>
<pre tabindex="0"><code>    Task: New Blog Post
    
    A1: Input Dialog [
         Title: New post
         Text: Enter title
         Close After (Seconds): 120
         Input Type: 540673 ]
    
    A2: Termux [
         Configuration: ~/.local/bin/task new-blog -- &#34;%input&#34;
         
         Working Directory ✓
         Stdin ✕
         Custom Log Level null
         Terminal Session ✕
         Wait For Re
         Timeout (Seconds): 10
         Structure Output (JSON, etc): On ]
    
    A3: JavaScriptlet [
         Code: var uri = &#34;content://net.dinglisch.android.taskerm.fileprovider/storage/emulated/0/Documents/markor/foosel.github.io/&#34; + stdout.trim();
         Auto Exit: On
         Timeout (Seconds): 45 ]
    
    A4: Send Intent [
         Cat: None
         Mime Type: text/markdown
         Data: %uri
         Package: net.gsantner.markor
         Class: net.gsantner.markor.activity.DocumentActivity
         Target: Activity ]
</code></pre><h3 id="new-til-post">New TIL Post</h3>
<pre tabindex="0"><code>    Task: New TIL Post
    
    A1: Input Dialog [
         Title: New TIL
         Text: Enter title
         Close After (Seconds): 120
         Input Type: 540673 ]
    
    A2: Termux [
         Configuration: ~/.local/bin/task new-til -- &#34;%input&#34;
         
         Working Directory ✓
         Stdin ✕
         Custom Log Level null
         Terminal Session ✕
         Wait For Res
         Timeout (Seconds): 10
         Structure Output (JSON, etc): On ]
    
    A3: JavaScriptlet [
         Code: var uri = &#34;content://net.dinglisch.android.taskerm.fileprovider/storage/emulated/0/Documents/markor/foosel.github.io/&#34; + stdout.trim();
         Auto Exit: On
         Timeout (Seconds): 45 ]
    
    A4: Send Intent [
         Cat: None
         Mime Type: text/markdown
         Data: %uri
         Package: net.gsantner.markor
         Class: net.gsantner.markor.activity.DocumentActivity
         Target: Activity ]
</code></pre><h3 id="result">Result</h3>
<p>I now have all these tasks available under a tag in my launcher (<a href="https://kvaesitso.mm20.de/">Kvaesitso</a>) and can easily work on posts from my phone once more. In fact, this post was entirely written on it.</p>
<p><img src="https://foosel.net/til/2026-06-19-how-to-manage-this-page-from-my-phone-in-2026/shortcuts.png" alt="My launcher showing all created Tasker tasks as shortcuts, as well as a Firefox shortcut to the local page, plus Markor and Termux" loading="lazy">
</p>
<p>The whole pipeline is a bit slimmer than last time as well and required less bash wrappers, which I like a lot better 👍</p>
<p>I also decided to go a bit more commandline-centric in this iteration - <code>git add</code> and <code>git commit</code> I&rsquo;ll actually run manually in Termux this time around (I rarely used the corresponding shortcuts I created last time).</p>
<p>Once I&rsquo;m satisfied with the local preview and have committed, a <code>git push</code> is all that I need for publishing - the CI does the rest.</p>
]]></content:encoded></item><item><title>TIL: How to view the page source on Firefox and Chrome mobile</title><link>https://foosel.net/til/2023-01-28-how-to-view-the-page-source-on-firefox-and-chrome-mobile/</link><pubDate>Sat, 28 Jan 2023 00:00:00 +0000</pubDate><guid>https://foosel.net/til/2023-01-28-how-to-view-the-page-source-on-firefox-and-chrome-mobile/</guid><description>&lt;p&gt;Viewing the page source on Firefox and Chrome mobile is as easy as prepending &lt;code&gt;view-source:&lt;/code&gt; to the URL.&lt;/p&gt;
&lt;p&gt;Example: &lt;code&gt;https://foosel.net&lt;/code&gt; becomes &lt;code&gt;view-source:https://foosel.net&lt;/code&gt;.&lt;/p&gt;</description><content:encoded><![CDATA[<p>Viewing the page source on Firefox and Chrome mobile is as easy as prepending <code>view-source:</code> to the URL.</p>
<p>Example: <code>https://foosel.net</code> becomes <code>view-source:https://foosel.net</code>.</p>
]]></content:encoded></item><item><title>Review: Onyx Boox Nova 3 Color</title><link>https://foosel.net/blog/2023-01-27-review-onyx-boox-nova-3-color/</link><pubDate>Fri, 27 Jan 2023 00:00:00 +0000</pubDate><guid>https://foosel.net/blog/2023-01-27-review-onyx-boox-nova-3-color/</guid><description>A long overdue e-reader review, after 1.5 years of use</description><content:encoded><![CDATA[<p><img src="https://foosel.net/blog/2023-01-27-review-onyx-boox-nova-3-color/cover.jpg" alt="A picture of the Onyx Boox Nova 3 Color e-reader lying on a table. It's sleeping and its display is showing a fake book cover in the style of the O'Reilly programming books." loading="lazy"></p><p>I&rsquo;ve always been a bookworm. As a child, my favourite past time was reading. I usually dragged my current book with me <em>everywhere</em> and would read at any opportunity<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>. So, when e-readers became a thing, I was very excited to save on a ton of shelf space in the future and got myself an Amazon Kindle at the first chance I got. Back then in 2010 I actually had to import my Kindle 3 Keyboard from the US since it wasn&rsquo;t available in Germany yet. And since then I&rsquo;ve gone through a couple of e-readers, all of them Kindles. But all the time I was a bit annoyed at two things:</p>
<ol>
<li>Vendor lock-in. Yes, you <em>can</em> send books from other sources than Amazon itself to your Kindle, can convert PDF and EPUB and whatnot, but in my experience it was always a bit of a hassle and especially in the case of PDFs a mess. Even with <a href="https://calibre-ebook.com/">Calibre</a> in my toolbelt I didn&rsquo;t feel all too happy and most of the books I got through <a href="https://www.humblebundle.com/">Humble Bundle</a> and the like - which tend to be EPUB or PDF - stayed unread in my collection while I kept throwing money at Amazon.</li>
<li>Black and white only. That&rsquo;s still an issue with pretty much all e-readers out there, as color displays are only now slowly becoming a thing. But the lack of color means that things that very much profit from color, like coding related books (syntax highlighting),  comics, RPG source books, etc. so far were something I had to read on my phone or tablet.</li>
</ol>
<p>Then I came across <a href="https://www.hanselman.com/blog/the-quiet-rise-of-e-ink-tablets-and-infinite-paper-note-takers-remarkable-2-vs-onyx-boox-note-air">Scott Hanselman&rsquo;s post &ldquo;The quiet rise of E Ink Tablets and Infinite Paper Note Takers - reMarkable 2 vs Onyx Boox Note Air
&ldquo;</a> back in June of 2021, and immediately was intrigued. I had heard of the Remarkable 2 before,
but decided against it due to yet another case of vendor lock-in. But through Scott&rsquo;s post I learned about Onyx&rsquo; e-reader line-up. The fact that they run Android, have Google Play store integration and you can just install your own stuff on them out of the box was very much intriguing, and the Wacom digitizer was an additional point for that model range<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup>. And after perusing the Onyx website for a while, I decided to pull the trigger on a
<a href="https://onyxboox.com/boox_nova3color">Nova 3 Color</a> - the color e-ink intrigued me and the 7.8&rdquo; size was right on the sweet spot. I ordered it on June 14th 2021 directly from the Boox EU store, and it arrived on June 16th<sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup>. All in all I paid 399€ for a bundle of the e-reader itself, a case, some screen protectors (that I don&rsquo;t use) and of course a stylus. Not too shabby.</p>
<p>So now, 1.5 years later, how do I like it? Let&rsquo;s find out!</p>
<h2 id="visuals">Visuals</h2>
<p>To just address the elephant in the room right away: How does the color screen perform? Well, it&rsquo;s obviously not something you can compare to a tablet OLED. The colors are way more muted and the contrast is not as high. If you&rsquo;ve ever seen a comic printed on newspaper paper, that&rsquo;s pretty much the same kind of color reproduction you can expect here. But for what I got it for, it&rsquo;s absolutely fine.</p>
<p>Syntax highlighting in code snippets is now visible beyond grayscale, and for comics and similar it also works. Given, if I want to really enjoy the colors, I&rsquo;m still getting a hold of my tablet, but for the use case of actually reading long form books with the occasional code snippet, illustration, map or even short comic strip, it&rsquo;s absolutely fine. And for highlighting text, it&rsquo;s also a great feature to have.</p>
<p>To give you an idea here are a couple of pictures of the screen, each with a shot of how the same thing looks like on a regular screen added to the right<sup id="fnref:4"><a href="#fn:4" class="footnote-ref" role="doc-noteref">4</a></sup>. First we have a code snippet in the PDF version of &ldquo;Fluent Python 2nd edition&rdquo;:</p>
<p><img src="https://foosel.net/blog/2023-01-27-review-onyx-boox-nova-3-color/code_comparison.jpg" alt="Side by side comparison of a page from a coding book on the Nova and a screenshot of the PDF." loading="lazy">
</p>
<p><img src="https://foosel.net/blog/2023-01-27-review-onyx-boox-nova-3-color/code_detail.jpg" alt="Detail view of the coding book on the Nova." loading="lazy">
</p>
<p>Then a page from the &ldquo;Attack on Titan Anthology&rdquo;:</p>
<p><img src="https://foosel.net/blog/2023-01-27-review-onyx-boox-nova-3-color/comic_comparison.jpg" alt="Side by side comparison of a page from a comic on the Nova and a screenshot of the CBZ." loading="lazy">
</p>
<p><img src="https://foosel.net/blog/2023-01-27-review-onyx-boox-nova-3-color/comic_detail.jpg" alt="Detail view of the comic on the Nova." loading="lazy">
</p>
<p>The third one is a page from the &ldquo;Tales from the Loop&rdquo; RPG source book:</p>
<p><img src="https://foosel.net/blog/2023-01-27-review-onyx-boox-nova-3-color/rpg_comparison.jpg" alt="Side by side comparison of a page from an RPG book on the Nova and a screenshot of the PDF." loading="lazy">
</p>
<p><img src="https://foosel.net/blog/2023-01-27-review-onyx-boox-nova-3-color/rpg_detail.jpg" alt="Detail view of the RPG book on the Nova." loading="lazy">
</p>
<p>And the final one shows a page from the rules PDF of the boardgame &ldquo;Nemesis&rdquo;:</p>
<p><img src="https://foosel.net/blog/2023-01-27-review-onyx-boox-nova-3-color/boardgame_comparison.jpg" alt="Side by side comparison of a page from boardgame rules on the Nova and a screenshot of the PDF." loading="lazy">
</p>
<p><img src="https://foosel.net/blog/2023-01-27-review-onyx-boox-nova-3-color/boardgame_detail.jpg" alt="Detail view of the boardgame rules on the Nova." loading="lazy">
</p>
<p>So, if you expect vibrant colors like on OLED from a color e-ink, I have to disappoint you. At least with the current technology we aren&rsquo;t there yet. But it does add a needed touch of color to books like the above examples that I sorely missed before, and I think I wouldn&rsquo;t want to go back to a black-and-white only e-ink display at this point anymore.</p>
<p>Now, what makes the display a bit more hit and miss when it comes to things like the shown boardgame rules is its size. If this was a 10&rdquo; screen, the rules PDF would be far easier on the eyes. As things are, the pixels wash a bit into each other. But truth be told, that particular PDF is something that even on my 10&quot; tablet I only view zoomed in, and I have some other examples like this - mostly A4 sized RPG books - that simply become too small on the 7.8&quot; display here.</p>
<p>When reading e-reader optimized formats like EPUB or MOBI, or in the Amazon Kindle app, and also with PDFs that are more suited for the form factor, the text is great to read. No eye strain, no blurry text. There is however always a bit of a grainy texture to the screen, and that is due to the lower resolution color layer that&rsquo;s on top of the grayscale one. It&rsquo;s not something I notice while reading however. Overall, I&rsquo;m totally happy with the text quality!</p>
<p><strong>Update:</strong> <a href="https://mastodon.social/@Mihir/109761667962680477">Mihir Joshi asked me on Mastodon how fast  screen refreshes perform on the Nova</a>, and I made a quick video to demonstrate:</p>
<video controls preload="auto" width="100%"  playsinline class="html-video">
    <source src="/blog/2023-01-27-review-onyx-boox-nova-3-color/page_change_video.mp4" type="video/mp4">
  <span></span>
</video>
<p>Imho, the performance is on par with a classic e-ink reader, it certainly doesn&rsquo;t feel slower than my Kindle did.</p>
<h2 id="touch--feel">Touch &amp; feel</h2>
<p>So, we&rsquo;ve covered how it looks, but how does it feel?</p>
<p>The reader&rsquo;s shell is all plastic, but it feels solid. No sharp edges, all just nice to the touch. It certainly feels cheaper than my tablet or phone, but honestly about the same as my various Kindles. The case that came with it snaps to it and has a magnetic cover, and the reader wakes up when I open it - just like I&rsquo;m used to from my Kindles and the tablet. The stylus fits into a small loop on the cover flap; it feels a bit on the cheap side, but it works just fine and is pressure sentitive as expected.</p>
<p>The reader only has two hardware buttons, a power button on the top edge and a button centered beneath the display that acts as back button and backlight toggle (on long press). Everything else is done through configurable gestures and a little hover menu. The top edge has two drag zones, left opens the Android notification area, right the reader&rsquo;s quick settings menu.</p>
<p>The left and right side can be configured as touch sliders, and I&rsquo;ve set mine to have brightness control on the left and nothing on the right.</p>
<p>The bottom edge supports three zones for dragging upwards from as gestures, and I had them mapped to the standard Android buttons back, home, recent.</p>
<p><img src="https://foosel.net/blog/2023-01-27-review-onyx-boox-nova-3-color/gesture_config.png" alt="Configuration menu for the gestures. Upper half shows config for the gestures that swipe up from the bottom, left, center and right of the screen. Lower half shows config for the side scroll areas." loading="lazy">
</p>
<p>However, while writing this post and verifying some things, I noticed the latest firmware update added an optional dedicated navigation bar at the bottom, so I&rsquo;m going to test this out now for a while 😁</p>
<p>What about page turning? Well, there&rsquo;s nothing predefined here - it&rsquo;s app specific. But I&rsquo;ve found that everything I&rsquo;ve thrown at it in terms of reader software either supported &ldquo;tap to turn&rdquo; out of the box, or could be configured this way. You probably won&rsquo;t get happy with an app that demands &ldquo;drag to turn&rdquo; - with the refresh rate of an e-ink screen that is just too laggy.</p>
<h2 id="software">Software</h2>
<p>The fact that the Nova 3 Color runs Android is a huge plus for me. I&rsquo;ve been using Android for years now (funnily enough as long as I&rsquo;ve been an e-reader owner: 2010), and therefore I felt right at home when it came to customizing my Nova.</p>
<p><img src="https://foosel.net/blog/2023-01-27-review-onyx-boox-nova-3-color/apps.png" alt="Homescreen with installed apps. From left to right and top to bottom: A folder called &ldquo;Stock&rdquo; with 14 items, Audible, Drive, DriveSync, Ebook Reader, Firefox, Gumroad, Kindle, NetGuard, Play Store, Raindrop, ReadEra Premium and Solid Explorer." loading="lazy">
</p>
<p>Now, the first thing I actually installed after <a href="https://help.boox.com/hc/en-us/articles/8569260963732-Google-Play-Store">enabling the Play Store</a> was <a href="https://play.google.com/store/apps/details?id=eu.faircode.netguard">NetGuard</a>. I had read online that Onyx devices tend to phone home to China a lot, and that is not something I like very much. So, I threw NetGuard on there, denied everything by default, and from then on only allowed the additional stuff I put on there through to the internet (and occasionally the whole device when I let it check for updates). Rooting it would probably have been even better, but frankly after some network traffic sniffing it looked like NetGuard was enough.</p>
<p>The second thing I installed was the official Kindle app, as that is where I have most of my fiction and also the one or other non fiction books. It&rsquo;s probably what I&rsquo;ve used the most on the device, and it works great. Until a recent update it sometimes crashed and I had to restart it (sometimes twice or thrice before it worked) and scroll to the last page I was on, but with the last OS update I installed, 2022-11-24, this has so far not happened again. In any case it wasn&rsquo;t something that happened on a daily basis, more like once or twice per month, and while definitely annoying never became bad enough to make me start debugging this.</p>
<p>The third app was <a href="https://play.google.com/store/apps/details?id=org.readera.premium">ReadEra Premium</a>. I tested many PDF/EPUB readers throughout the years, and currently that is the one that works best for me. On top of PDF and EPUB it also supports CBR/CBZ, which is commonly used for comics, and a whole bunch of other formats. On the Nova, I had to fiddle around a bit with the settings to enable page switch by tap, optimize the display and such, but I sadly cannot remember what exactly I did. In any case, it works well with almost anything I throw at it now (large format PDFs being hit and miss).</p>
<p>I have my book collection stored in my Google Drive, and so I installed DriveSync to be able to keep it in sync with that and mirrored on the device. So far, every time that I&rsquo;ve opened up the Nova to check out a new book I had just pushed into Drive earlier, it was usually already there, so that&rsquo;s a nice workflow.</p>
<p>In theory there&rsquo;s also a full featured e-reader app integrated and I briefly played around with it, but I was already used to ReadEra from my tablet and so stuck with it.</p>
<p>So far, pretty much everything that I threw at it worked, albeit with some visual glitches here and there (most apps really don&rsquo;t expect to be run on an e-ink display).</p>
<p>There are also a bunch of stock apps installed on the reader, apart from stock options for e-reading and note taking that have their own buttons in the navbar on the left.</p>
<p><img src="https://foosel.net/blog/2023-01-27-review-onyx-boox-nova-3-color/stock_apps.png" alt="View of the Stock folder, 14 items. From left to right and top to bottom: App Store, Calculator, Calendar Memo, Clock, Dictionary, Email, Gallery, Music, Navigation Ball, NeoBrowser, PushRead, Recorder, Screensaver, BooxDrop and a button to add more." loading="lazy">
</p>
<p>Everything else is just pretty much the usual suspects, with two exceptions. The navball app that allows you to configure the menu behind the little button always hovering on your display (I have things in there like taking a screenshot, triggering a manual refresh and similar), and the screensaver app that allows you to configure the cover displayed whole the reader is sleeping. I&rsquo;ve put a little fake book cover on there that always makes me laugh 😅</p>
<p>But apart from these two, the only stock app I actually <em>did</em> use for a while was the app for note taking.</p>
<h2 id="note-taking">Note taking</h2>
<p>The original idea when I got this device to use it as both my e-reader and my notebook. And that&rsquo;s what I tried for the first week or so. But there were two reasons why I stopped doing that and went back to first paper and now my tablet again.</p>
<p>One was that I could only use the stock app for note taking. While every other app did in fact get the stylus input, anything but the (probably heavily optimized) stock note taking app lagged severely, to the point of being not only frustrating but actually impossible to use. And I didn&rsquo;t find any way to sync my notes with any standardized format without Onyx&rsquo; own cloud (and I&rsquo;m unclear what would have been possible there) - I simply don&rsquo;t want to require yet another account on someone else&rsquo;s server farm for that, I have enough of these already. Also, the app felt very basic functionality wise.</p>
<p>The other issue was the display size - perfect for reading, definitely too small for my handwriting in combination with a Wacom digitiser. I had thought that it would be fine for me since I also used to be quite happy with A5 sized Moleskine notebooks, but I seem to write slightly bigger with a stylus than with the Uniball Signo 307 that is my usual go to pen, and so closer to A4 like 10&quot; as found on my tablet definitely works way better.</p>
<p><img src="https://foosel.net/blog/2023-01-27-review-onyx-boox-nova-3-color/note_comparison.jpg" alt="Comparison of a full page note on the Nova and a full page note on the Galaxy Tab S4. There is way more space for notetaking on the larger device." loading="lazy">
</p>
<p><img src="https://foosel.net/blog/2023-01-27-review-onyx-boox-nova-3-color/note_detail.jpg" alt="Detail view of the note on the Nova." loading="lazy">
</p>
<p>So, I guess if note taking is your goal, go with something bigger than the Nova.</p>
<h2 id="conclusion">Conclusion</h2>
<p>Would I buy it again? Yes, as an e-reader, but not as a note taking device.</p>
<p>For reading, it has the right size, with even most PDFs working just fine. The color display adds just the right dusting of color to make some things previously quite annoying to read on grayscale e-ink fine, and having it run stock unlocked Android means I can use whatever app I want to do the reading in. It has fully replaced the Kindle Paperwhite I used before - I frankly don&rsquo;t even know where that is at the moment 😅 - and I&rsquo;ve read many a book on it now.</p>
<p>For note taking however I found 7.8&quot; to be just too small to be useful. And the fact that only the stock app works well and doesn&rsquo;t seem to have some well supported way to get the notes out of it makes it a bit of a suboptimal experience as well.</p>
<p>If note taking was my focus, I&rsquo;d look at something larger, 10&quot;, and pay close attention to the sync options of the notebooks. Something like OCR enabled PDFs synced into the file system would already be nice (then DriveSync or Syncthing could take care of the rest). From what I&rsquo;ve read online however, something like that doesn&rsquo;t seem to really be available yet.</p>
<p>For either though I think I&rsquo;ll really want color 🌈 from now on 😁</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>Just not in the car thanks to this day suffering from severe motion
sickness <em>sigh</em>. I very much envy people who can read in the car.&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p>My tablet - a Samsung Galaxy Tab S4 that I use for handwritten note taking - has a Wacom digitizer, as does my Wacom Intuous S writing tablet. I&rsquo;ve found the
range of third party stylus options quite amazing, and as a Lamy AL-star fan am the proud owner of both a
<a href="https://www.lamy.com/en/lamy-al-star/">Lamy AL-star EMR stylus</a> and a <a href="https://www.staedtler.com/intl/en/discover/noris-digital/">Staedtler Noris Digital Jumbo</a>.&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:3">
<p>This even includes a short delay due to a mail exchange on June 15th - it turns out they couldn&rsquo;t handle the umlauts in my name and needed something ASCII only for the shipping label 😬&#160;<a href="#fnref:3" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:4">
<p>I adjusted the contrast slightly on the photos of the Nova&rsquo;s screen to better reflect how it looks in real life.&#160;<a href="#fnref:4" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded></item><item><title>TIL: How to detect Termux in a script</title><link>https://foosel.net/til/2023-01-23-how-to-detect-termux-in-a-script/</link><pubDate>Mon, 23 Jan 2023 00:00:00 +0000</pubDate><guid>https://foosel.net/til/2023-01-23-how-to-detect-termux-in-a-script/</guid><description>&lt;p&gt;If you need to detect whether you are running in Termux from a bash script, check if &lt;code&gt;$PREFIX&lt;/code&gt; contains the string &lt;code&gt;com.termux&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo $PREFIX | grep -o &lt;span style="color:#e6db74"&gt;&amp;#34;com.termux&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This can also be used to set a variable in a &lt;a href="https://taskfile.dev"&gt;Taskfile&lt;/a&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;vars&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;TERMUX&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#39;{{and .PREFIX (contains &amp;#34;com.termux&amp;#34; .PREFIX)}}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="https://www.reddit.com/r/termux/comments/co46qw/how_to_detect_in_a_bash_script_that_im_in_termux/"&gt;Source&lt;/a&gt;&lt;/p&gt;</description><content:encoded><![CDATA[<p>If you need to detect whether you are running in Termux from a bash script, check if <code>$PREFIX</code> contains the string <code>com.termux</code>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>echo $PREFIX | grep -o <span style="color:#e6db74">&#34;com.termux&#34;</span>
</span></span></code></pre></div><p>This can also be used to set a variable in a <a href="https://taskfile.dev">Taskfile</a>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">vars</span>:
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">TERMUX</span>: <span style="color:#e6db74">&#39;{{and .PREFIX (contains &#34;com.termux&#34; .PREFIX)}}&#39;</span>
</span></span></code></pre></div><p><a href="https://www.reddit.com/r/termux/comments/co46qw/how_to_detect_in_a_bash_script_that_im_in_termux/">Source</a></p>
]]></content:encoded></item><item><title>TIL: How to open a file from Tasker in Markor</title><link>https://foosel.net/til/2023-01-21-how-to-open-a-file-from-tasker-in-markor/</link><pubDate>Sat, 21 Jan 2023 00:00:00 +0000</pubDate><guid>https://foosel.net/til/2023-01-21-how-to-open-a-file-from-tasker-in-markor/</guid><description>&lt;p&gt;In order to open a file from Tasker in Markor (e.g. to edit a &lt;a href="https://foosel.net/blog/2023-01-21-hugo-meet-android/"&gt;newly created blog post&lt;/a&gt;), create a &amp;ldquo;Send Intent&amp;rdquo; step with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Action: &lt;code&gt;android.intent.action.SEND&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Cat: &lt;code&gt;None&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Mime Type: &lt;code&gt;text/plain&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Data: &lt;code&gt;content://net.dinglisch.android.taskerm.fileprovider/external_files/path/to/the/file&lt;/code&gt; (be sure to replace &lt;code&gt;/path/to/the/file&lt;/code&gt; with the absolute path to the file you want to open)&lt;/li&gt;
&lt;li&gt;Package: &lt;code&gt;net.gsantner.markor&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Class: &lt;code&gt;net.gsantner.markor.activity.DocumentActivity&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="https://www.reddit.com/r/tasker/comments/xbspjr/send_intent_to_markor/"&gt;Source&lt;/a&gt;&lt;/p&gt;</description><content:encoded><![CDATA[<p>In order to open a file from Tasker in Markor (e.g. to edit a <a href="https://foosel.net/blog/2023-01-21-hugo-meet-android/">newly created blog post</a>), create a &ldquo;Send Intent&rdquo; step with:</p>
<ul>
<li>Action: <code>android.intent.action.SEND</code></li>
<li>Cat: <code>None</code></li>
<li>Mime Type: <code>text/plain</code></li>
<li>Data: <code>content://net.dinglisch.android.taskerm.fileprovider/external_files/path/to/the/file</code> (be sure to replace <code>/path/to/the/file</code> with the absolute path to the file you want to open)</li>
<li>Package: <code>net.gsantner.markor</code></li>
<li>Class: <code>net.gsantner.markor.activity.DocumentActivity</code></li>
</ul>
<p><a href="https://www.reddit.com/r/tasker/comments/xbspjr/send_intent_to_markor/">Source</a></p>
]]></content:encoded></item><item><title>Hugo, meet Android</title><link>https://foosel.net/blog/2023-01-21-hugo-meet-android/</link><pubDate>Sat, 21 Jan 2023 00:00:00 +0000</pubDate><guid>https://foosel.net/blog/2023-01-21-hugo-meet-android/</guid><description>Setting up a mobile blogging workflow</description><content:encoded><![CDATA[<p><img src="https://foosel.net/blog/2023-01-21-hugo-meet-android/cover.jpg" alt="A smartphone lying on a table, showing Markor in editing mode on the Markdown of this blog post." loading="lazy"></p><p><em><strong>Update from 2026-06-19</strong>: I went through these steps again after getting a new phone and had to change some things here and there while also improving other bits. You can find an update <a href="https://foosel.net/til/how-to-manage-this-page-from-my-phone-in-2026/">here</a>.</em></p>
<p>One thing that kept me from blogging more so far was the difficulty in working on posts on my phone. So after switching this blog over to Hugo I decided to see if I couldn&rsquo;t improve on this situation.</p>
<p>I needed a solution that would allow me to</p>
<ol>
<li>Checkout my page&rsquo;s git repository from GitHub</li>
<li>Quickly create a new post, consisting of a new folder inside <code>content/blog</code> matching my chosen <code>&lt;year&gt;-&lt;month&gt;-&lt;day&gt;-&lt;title slug&gt;/index.md</code> folder structure, based on just a title</li>
<li>Allow me to edit the post, preferably in a text editor focused on Markdown (and ideally allow me to preview the post as well)</li>
<li>Optional: Run the Hugo build on my phone as well for final checks</li>
<li>Finally, commit the new post and push it so that my GitHub Action workflow can take care of the rest</li>
</ol>
<p>I started hunting for options, and I&rsquo;m happy to report that for now I seem to have found a - quite geeky - solution that involves the use of <a href="https://termux.dev/en">Termux</a> (Linux terminal environment for Android), <a href="https://gsantner.net/project/markor.html">Markor</a> (Markdown editor) and <a href="https://tasker.joaoapps.com/">Tasker</a> (Automation tool)<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>.</p>
<p>I installed Termux, Termux:Tasker, Termux:Widget and Markor via <a href="https://f-droid.org/">F-Droid</a> - the versions available on Google Play are outdated and no longer supported. I already had Tasker installed, but I made sure to give it the additional permission to send commands to Termux. For Termux, I also made sure to allow it to draw over other apps.</p>
<p>I then fired up Termux and took care of storage access and some packages first:</p>
<pre tabindex="0"><code>termux-setup-storage
pkg upgrade
pkg install git gh hugo iconv vim
</code></pre><p>Markor&rsquo;s default folder is located at <code>Documents/markor</code> and so this is where I decided to checkout my page&rsquo;s repository to. I also made sure to set some config settings needed for stuff to work<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup>:</p>
<pre tabindex="0"><code>gh auth login
cd storage/shared/Documents/markor
git clone https://github.com/foosel/foosel.github.io
git config --global --add safe.directory /storage/emulated/0/Documents/markor/foosel.github.io
git config --global user.email &#34;you@example.com&#34;
git config --global user.name &#34;Your Name&#34;
</code></pre><p>Next I took care of some helper scripts for Termux:Widget and Tasker. I first created some folders:</p>
<pre tabindex="0"><code>mkdir -p ~/.shortcuts
chmod 700 -R ~/.shortcuts
mkdir -p ~/.termux/tasker
chmod 700 -R ~/.termux/tasker
</code></pre><p>Then I added some helper scripts to them:</p>
<p><code>~/.shortcuts/pull_blog</code></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#75715e">#!/bin/sh
</span></span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>cd ~/storage/shared/Documents/markor/foosel.github.io
</span></span><span style="display:flex;"><span>git pull
</span></span></code></pre></div><p><code>~/.shortcuts/push_blog</code></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#75715e">#!/bin/sh
</span></span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>cd ~/storage/shared/Documents/markor/foosel.github.io
</span></span><span style="display:flex;"><span>git push
</span></span></code></pre></div><p><code>~/.termux/tasker/serve_blog</code></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#75715e">#!/bin/sh
</span></span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>cd ~/storage/shared/Documents/markor/foosel.github.io
</span></span><span style="display:flex;"><span>hugo server -D -F --noBuildLock
</span></span></code></pre></div><p><code>~/.termux/tasker/new_blog_post</code></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#75715e">#!/bin/bash
</span></span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>checkout<span style="color:#f92672">=</span>~/storage/shared/Documents/markor/foosel.github.io
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>slugify <span style="color:#f92672">()</span> <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>     echo <span style="color:#e6db74">&#34;</span>$1<span style="color:#e6db74">&#34;</span> | iconv -t ascii//TRANSLIT | sed -r s/<span style="color:#f92672">[</span>~<span style="color:#ae81ff">\^</span><span style="color:#f92672">]</span>+//g | sed -r s/<span style="color:#f92672">[</span>^a-zA-Z0-9<span style="color:#f92672">]</span>+/-/g | sed -r s/^-+<span style="color:#ae81ff">\|</span>-+$//g | tr A-Z a-z
</span></span><span style="display:flex;"><span><span style="color:#f92672">}</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>title<span style="color:#f92672">=</span>$1
</span></span><span style="display:flex;"><span>date<span style="color:#f92672">=</span><span style="color:#66d9ef">$(</span>date +%Y-%m-%d<span style="color:#66d9ef">)</span>
</span></span><span style="display:flex;"><span>slug<span style="color:#f92672">=</span><span style="color:#66d9ef">$(</span>slugify <span style="color:#e6db74">&#34;</span>$title<span style="color:#e6db74">&#34;</span><span style="color:#66d9ef">)</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>cd $checkout
</span></span><span style="display:flex;"><span>mkdir -p content/blog/$date-$slug
</span></span><span style="display:flex;"><span>cat &gt; content/blog/$date-$slug/index.md <span style="color:#e6db74">&lt;&lt;EOF
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">---
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">title: &#34;$title&#34;
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">date: $date
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">draft: true
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">---
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">EOF</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>echo $date-$slug/index.md
</span></span></code></pre></div><p><code>~/.termux/tasker/commit_blog</code></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#75715e">#!/bin/sh
</span></span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>message<span style="color:#f92672">=</span>$1
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>cd ~/storage/shared/Documents/markor/foosel.github.io
</span></span><span style="display:flex;"><span>git add .
</span></span><span style="display:flex;"><span>git commit -m <span style="color:#e6db74">&#34;</span>$message<span style="color:#e6db74">&#34;</span>
</span></span></code></pre></div><p><code>pull_blog</code> and <code>push_blog</code> take care of git synchronization.</p>
<p><code>serve_blog</code> runs Hugo with draft and future posts visible. The page can be viewed in the browser on the phone at <code>http://localhost:1313</code>.</p>
<p><code>new_blog_post</code> takes a post title as its first argument and from that creates the aforementioned folder structure within the <code>content/blog</code> folder, including a prefilled <code>index.md</code>.<sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup></p>
<p>And finally <code>commit_blog</code> takes a commit message as its first argument, stages all changes in the checkout and commits them with the supplied message.</p>
<p>Next, I created Termux:Widget widgets on my desktop for <code>pull_blog</code>, <code>push_blog</code> and <code>run_hugo</code>.</p>
<p>Then I opened Tasker and created two new tasks:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-plain" data-lang="plain"><span style="display:flex;"><span>    Task: New Post
</span></span><span style="display:flex;"><span>    
</span></span><span style="display:flex;"><span>    A1: Input Dialog [
</span></span><span style="display:flex;"><span>         Title: New post
</span></span><span style="display:flex;"><span>         Text: Enter title
</span></span><span style="display:flex;"><span>         Close After (Seconds): 30
</span></span><span style="display:flex;"><span>         Input Type: 540673 ]
</span></span><span style="display:flex;"><span>    
</span></span><span style="display:flex;"><span>    A2: Termux [
</span></span><span style="display:flex;"><span>         Configuration: new_blog_post &#34;%input&#34;
</span></span><span style="display:flex;"><span>         
</span></span><span style="display:flex;"><span>         Working Directory ✕
</span></span><span style="display:flex;"><span>         Stdin ✕
</span></span><span style="display:flex;"><span>         Custom Log Level null
</span></span><span style="display:flex;"><span>         Terminal Session ✕
</span></span><span style="display:flex;"><span>         Wait For Result ✓
</span></span><span style="display:flex;"><span>         Timeout (Seconds): 10
</span></span><span style="display:flex;"><span>         Structure Output (JSON, etc): On ]
</span></span><span style="display:flex;"><span>    
</span></span><span style="display:flex;"><span>    A3: JavaScriptlet [
</span></span><span style="display:flex;"><span>         Code: var uri = &#34;content://net.dinglisch.android.taskerm.fileprovider/external_files/storage/emulated/0/Documents/markor/foosel.github.io/content/blog/&#34; + stdout.trim();
</span></span><span style="display:flex;"><span>         Auto Exit: On
</span></span><span style="display:flex;"><span>         Timeout (Seconds): 45 ]
</span></span><span style="display:flex;"><span>    
</span></span><span style="display:flex;"><span>    A4: Send Intent [
</span></span><span style="display:flex;"><span>         Action: android.intent.action.SEND
</span></span><span style="display:flex;"><span>         Cat: None
</span></span><span style="display:flex;"><span>         Mime Type: text/markdown
</span></span><span style="display:flex;"><span>         Data: %uri
</span></span><span style="display:flex;"><span>         Package: net.gsantner.markor
</span></span><span style="display:flex;"><span>         Class: net.gsantner.markor.activity.DocumentActivity
</span></span><span style="display:flex;"><span>         Target: Activity ]
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-plain" data-lang="plain"><span style="display:flex;"><span>    Task: Commit Blog
</span></span><span style="display:flex;"><span>    
</span></span><span style="display:flex;"><span>    A1: Input Dialog [
</span></span><span style="display:flex;"><span>         Title: Commit Blog
</span></span><span style="display:flex;"><span>         Text: Enter commit message
</span></span><span style="display:flex;"><span>         Close After (Seconds): 30 ]
</span></span><span style="display:flex;"><span>    
</span></span><span style="display:flex;"><span>    A2: Termux [
</span></span><span style="display:flex;"><span>         Configuration: commit_blog &#34;%input&#34;
</span></span><span style="display:flex;"><span>         
</span></span><span style="display:flex;"><span>         Working Directory ✕
</span></span><span style="display:flex;"><span>         Stdin ✕
</span></span><span style="display:flex;"><span>         Custom Log Level null
</span></span><span style="display:flex;"><span>         Terminal Session ✕
</span></span><span style="display:flex;"><span>         Wait For Result ✓
</span></span><span style="display:flex;"><span>         Timeout (Seconds): 10
</span></span><span style="display:flex;"><span>         Structure Output (JSON, etc): On ]
</span></span></code></pre></div><p>&ldquo;New Post&rdquo; queries a post title from the user, calls <code>new_post</code> with that and then opens the new post in Markor.</p>
<p>&ldquo;Commit Blog&rdquo; queries a commit message from the user and calls <code>commit_blog</code> with that.</p>
<p>I created desktop shortcuts for these too and placed all of them, together with Markor, Termux and a browser shortcut, in a new folder &ldquo;Blog&rdquo;.</p>
<p><img src="https://foosel.net/blog/2023-01-21-hugo-meet-android/shortcuts.jpg" alt="Screenshot of the shortcut folder dedicated to my blog." loading="lazy">
</p>
<p>So, my workflow now consists of pulling, creating a new post, editing it, optionally firing up Hugo to check on the whole thing locally, committing and pushing, all at least without <em>needing</em> to touch the terminal, but always <em>able</em> to if so desired.</p>
<p>It&rsquo;s not perfect, and some app that takes care of all of this from a nice UI would certainly be better (<em>hint hint</em>). But - as this post created entirely from my phone proves - it works for now 😁</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>Quick shoutout to <a href="https://pipe.how/write-androidblog/">this post by Emanuel Palm</a> who found himself in a similar situation (prior to boarding a plane to boot) and showed me the path on which I was then able to set up a neat workflow.&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p>You&rsquo;ll obviously have to adjust that and the following bits with your own repo, name and email.&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:3">
<p>Note that I&rsquo;m aware of the existence of <code>hugo new</code>, however it insisted on prefilling the title with the date included and otherwise also felt a bit too inflexible, hence I decided to implement what I wanted directly in bash.&#160;<a href="#fnref:3" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded></item></channel></rss>