<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">

  <title>Gott Code Blog</title>
  <link href="https://gottcode.org/blog/"/>
  <link href="https://gottcode.org/blog/atom.xml" rel="self" type="application/atom+xml"/>
  <updated>2026-02-12T11:51:37Z</updated>
  <author>
    <name>Graeme Gott</name>
  </author>
  <icon>https://gottcode.org/icon48.png</icon>
  <id>https://gottcode.org/blog/</id>

  <entry>
    <title>No AI; not now, not ever</title>
    <link href="https://gottcode.org/blog/no-ai-not-now-not-ever/" rel="alternate" type="text/html"/>
    <id>tag:gottcode.org,2026-02-12:/blog/1770897097</id>
    <updated>2026-02-12T11:51:37Z</updated>
    <category term="focuswriter" label="FocusWriter"/>
    <category term="programming" label="Programming"/>
    <content type="html"><![CDATA[<p>I just realized I had not made my stance on the current “AI” nonsense public, so this is a small post to remedy that oversight!</p>
<p>I am fundamentally opposed to LLMs for ethical, environmental, and sociological reasons. I am not going to waste time going over why LLMs are problematic. I will never use an LLM, and I will never merge any code or documentation that has been tainted by one.</p>
<p>I will never add an AI assistant to FocusWriter: your words are your own, and are safe. I obviously can’t protect what happens to them outside of my work, but I can promise that I will never add that garbage to FocusWriter.</p>]]></content>
  </entry>

  <entry>
    <title>Delayed releases</title>
    <link href="https://gottcode.org/blog/delayed-releases/" rel="alternate" type="text/html"/>
    <id>tag:gottcode.org,2026-02-10:/blog/1770752789</id>
    <updated>2026-02-10T19:46:29Z</updated>
    <category term="connectagram" label="Connectagram"/>
    <category term="cutemaze" label="CuteMaze"/>
    <category term="focuswriter" label="FocusWriter"/>
    <category term="gottet" label="Gottet"/>
    <category term="hexalate" label="Hexalate"/>
    <category term="kapow-punch-clock" label="Kapow Punch Clock"/>
    <category term="novprog" label="NovProg"/>
    <category term="peg-e" label="Peg-E"/>
    <category term="simsu" label="Simsu"/>
    <category term="tanglet" label="Tanglet"/>
    <category term="tetzle" label="Tetzle"/>
    <content type="html"><![CDATA[<p>I was busier than I expected to be in January, so the annual maintenance releases I make for my programs slipped into February. And along with the bugfixes, I actually made two minor feature releases! They are not <em>huge</em> releases, but I did add some features to FocusWriter and Kapow. Enjoy!</p>]]></content>
  </entry>

  <entry>
    <title>Whisker Menu 2.10.0 released</title>
    <link href="https://gottcode.org/blog/whisker-menu-2-10-0-released/" rel="alternate" type="text/html"/>
    <id>tag:gottcode.org,2025-05-21:/blog/1747846869</id>
    <updated>2025-05-21T17:01:09Z</updated>
    <category term="whisker-menu" label="Whisker Menu"/>
    <content type="html"><![CDATA[<p>I made a new release of Whisker Menu today, but users won’t be able to tell. 😛 That is because this release is just for switching to the <a class="external" href="https://mesonbuild.com/">Meson build system</a> to match the rest of Xfce. There were a few minor source fixes related to that, but no functionality changes. I will be removing support for CMake in the next feature release, but it will hang around for the rest of the 2.10 releases.</p>]]></content>
  </entry>

  <entry>
    <title>Tetzle 3.0.3 released</title>
    <link href="https://gottcode.org/blog/tetzle-3-0-3-released/" rel="alternate" type="text/html"/>
    <id>tag:gottcode.org,2025-03-07:/blog/1741351980</id>
    <updated>2025-03-07T12:53:00Z</updated>
    <category term="tetzle" label="Tetzle"/>
    <content type="html"><![CDATA[<p>I was recently made aware of a bug in Tetzle that has apparently been there from the beginning: alt-tabbing to a different program would break interaction with the game board. I hadn’t noticed because I almost never use alt-tab to switch between programs. 😉</p>
<p>While fixing that bug, I discovered that several other keyboard interactions with the game board were also glitchy. It even did not automatically snap pieces when moving them by they keyboard! That was added to mouse-only play back in <em>2008</em>, so these are some longstanding bugs. I guess not many people play Tetzle with the keyboard?</p>
<p>I am much happier with the code now, and I think I have sorted out all of the bugs with the keyboard play. Enjoy!</p>]]></content>
  </entry>

  <entry>
    <title>Releases, releases, always more releases</title>
    <link href="https://gottcode.org/blog/releases-releases-always-more-releases/" rel="alternate" type="text/html"/>
    <id>tag:gottcode.org,2025-02-19:/blog/1739969953</id>
    <updated>2025-02-19T12:59:13Z</updated>
    <category term="connectagram" label="Connectagram"/>
    <category term="tanglet" label="Tanglet"/>
    <category term="whisker-menu" label="Whisker Menu"/>
    <content type="html"><![CDATA[<p>I guess I wasn’t quite done making releases. 🤷 Tanglet would not let you choose a language other than English for the game board, which is a pretty serious bug! It also listed an empty language as a choice for the board language, which is just silly. I fixed that in Connectagram as well. And I made a further fix for the multiple monitor support for Whisker Menu. Whew. <em>Now</em> I think I am done for a while!</p>]]></content>
  </entry>

  <entry>
    <title>Maintenance releases… again</title>
    <link href="https://gottcode.org/blog/maintenance-releases-again/" rel="alternate" type="text/html"/>
    <id>tag:gottcode.org,2025-02-14:/blog/1739556281</id>
    <updated>2025-02-14T18:04:41Z</updated>
    <category term="connectagram" label="Connectagram"/>
    <category term="cutemaze" label="CuteMaze"/>
    <category term="focuswriter" label="FocusWriter"/>
    <category term="gottet" label="Gottet"/>
    <category term="hexalate" label="Hexalate"/>
    <category term="kapow-punch-clock" label="Kapow Punch Clock"/>
    <category term="novprog" label="NovProg"/>
    <category term="peg-e" label="Peg-E"/>
    <category term="simsu" label="Simsu"/>
    <category term="tanglet" label="Tanglet"/>
    <category term="tetzle" label="Tetzle"/>
    <category term="whisker-menu" label="Whisker Menu"/>
    <content type="html"><![CDATA[<p>I really did not expect to be making releases of my programs anytime soon, but things come up. First somebody reported a crash in Tetzle when attaching multiple pieces, then somebody else reported that player names were messed up in the high scores dialogs of my games under Windows, and finally the tool I used to update the Linux desktop integration files is unmaintained and broken so I needed to replace my use of that. Oh, and Whisker Menu did not show up in the right location when using multiple monitors under Wayland. Whew. I think that covers everything! I doubt most users will notice a difference—although packagers will need to add <code>gettext</code> as build dependency—but enjoy the new updates! And now I am going to take a break for a while… I hope. 😉</p>]]></content>
  </entry>

  <entry>
    <title>Whisker Menu 2.9.0 released</title>
    <link href="https://gottcode.org/blog/whisker-menu-2-9-0-released/" rel="alternate" type="text/html"/>
    <id>tag:gottcode.org,2025-01-30:/blog/1738247269</id>
    <updated>2025-01-30T14:27:49Z</updated>
    <category term="whisker-menu" label="Whisker Menu"/>
    <content type="html"><![CDATA[<p>I am always surprised when I make a feature release of Whisker Menu. The menu has been in a state I would consider done for many years, and yet somehow I eventually add features. Amusingly, I don’t know if I have used a single feature added to Whisker Menu. 😉</p>
<h2>What’s New?</h2>
<p>To the relief of many, I found a way to bring back edge resizing! 🎉 I had to come up with a hack to force the resizing, so it is a little choppy for me on X11. Nevertheless, it works again! And since I am using the same code for Wayland, it allows you to resize there as well. As the resize code doesn’t know where the window is in relation to the panel button, resizing works from all edges and will snap the window back to where it belongs when you are finished.</p>
<p>I don’t know if the other features are quite as exciting, but here are the highlights:</p>
<p>I added the ability to autostart applications. You can already do that in Xfce, but it isn’t quite as convenient as just right-clicking a launcher in Whisker Menu. This request was from many years ago, and I never could settle some issues. So I decided to just ignore them. 😉</p>
<p>I also added a fallback to the search page. If no applications are found when searching, it will show you all of your search actions and allow you to pass what you have searched to them. Obviously, this doesn’t work with regular expression search actions, but it does for the rest!</p>
<p>And I found a solution to another annoyance people had: Whisker Menu will now only select items when you move the mouse, not when the menu is shown. That way you don’t have to care where the mouse is when you open the menu from a keyboard shortcut. I did consider making it always select the first item when the menu is shown, but I wasn’t sure that would have been a popular solution.</p>
<p>Enjoy!</p>
<h2>Downloads</h2>
<p><a class="external" href="https://archive.xfce.org/src/panel-plugins/xfce4-whiskermenu-plugin/2.9/xfce4-whiskermenu-plugin-2.9.0.tar.bz2">Source tarball</a></p>
<p><b>SHA-256:</b><br/><samp>8892bb9cc6bbaa402288ad7e5ee76a1990cb8476fe35964a41ec8a9794f6f322</samp></p>
<p><b>SHA-1:</b><br/><samp>bc78dfced5630cc0c1ef2de78737732cb8505207</samp></p>]]></content>
  </entry>

  <entry>
    <title>Improvements to autostart</title>
    <link href="https://gottcode.org/blog/improvements-to-autostart/" rel="alternate" type="text/html"/>
    <id>tag:gottcode.org,2025-01-19:/blog/1737318785</id>
    <updated>2025-01-19T20:33:05Z</updated>
    <category term="whisker-menu" label="Whisker Menu"/>
    <content type="html"><![CDATA[<p>When I added support for autostarting applications to Whisker Menu, I did not feel like handling the cases where the autostarted application had been disabled or there was a system-wide autostarted application.</p>
<p>But…</p>
<p>It just kept niggling at me. I had expected it would make the code brittle and extremely complicated, so I hadn’t given it too much thought. However, it always bothers me to write incomplete code that doesn’t handle reasonable edge cases. And it turns out I was wrong! The new code is quite clean and simple, really.</p>
<h2>Handling disabled autostart</h2>
<p>The way I had before checked if there was an autostarted application was to simply look to see if the launcher existed in <code>$XDG_CONFIG_HOME/autostart/</code>. If I found it, I assumed that it was a valid launcher file, and therefore the application was autostarted.</p>
<p>However! You can disable autostarted applications by adding <code>Hidden=true</code> to the file, which means it <i>shouldn’t</i> show up as autostarted in Whisker Menu. How often will people do this? I don’t know, but as Xfce makes it easy to disable an autostarted application, it isn’t out of the question.</p>
<h2>Handling global autostart</h2>
<p>And you can have system-wide autostarted applications. It would be silly for Whisker Menu to allow you to add the same application twice, but since it only checked the user’s autostart directory, it was a valid possibility. Probably a lot smaller possibility than disabling the launcher, but in fixing one I fixed both.</p>
<p>To prevent conflicts with autostarted filenames before I had added an extra <code>whiskermenu-</code> to the start of the autostarted launcher filename. Now that it properly supports everything, it no longer does that. Which means I did break compatibility, but only for the people who have tried the git version of Whisker Menu in the past week. Sorry!</p>
<h2>Ignoring other issues</h2>
<p>Of course, there is <i>one</i> obvious situation this code doesn’t handle, and it was my issue with adding support for autostarted applications in the first place: it can’t tell if you have already added the same autostarted application before but with a different file name. Short of reading every single autostarted application launcher and checking for the same executable, there is no way to prevent that. Plus, that doesn’t even account for using symlinks as targets in launchers. So… the current code is as far as I am willing to go. 😉</p>
<p>But now I can finally breathe a sigh of relief and forget about the autostart code. 🙂</p>]]></content>
  </entry>

  <entry>
    <title>Maintenance releases</title>
    <link href="https://gottcode.org/blog/maintenance-releases/" rel="alternate" type="text/html"/>
    <id>tag:gottcode.org,2025-01-06:/blog/1736188653</id>
    <updated>2025-01-06T18:37:33Z</updated>
    <category term="connectagram" label="Connectagram"/>
    <category term="cutemaze" label="CuteMaze"/>
    <category term="gottet" label="Gottet"/>
    <category term="hexalate" label="Hexalate"/>
    <category term="kapow-punch-clock" label="Kapow Punch Clock"/>
    <category term="novprog" label="NovProg"/>
    <category term="peg-e" label="Peg-E"/>
    <category term="simsu" label="Simsu"/>
    <category term="tanglet" label="Tanglet"/>
    <category term="tetzle" label="Tetzle"/>
    <category term="whisker-menu" label="Whisker Menu"/>
    <content type="html"><![CDATA[<p>As has become my habit for January, I made a maintenance release of my programs. For the most part there aren’t any user-visible changes, but I did fix a bug in Simsu (the game was really wide when first launched) and I updated the translations. A few days ago I also made a Whisker Menu release, and that had some bug fixes in it. Enjoy!</p>]]></content>
  </entry>

  <entry>
    <title>FocusWriter 1.8.9 released</title>
    <link href="https://gottcode.org/blog/focuswriter-1-8-9-released/" rel="alternate" type="text/html"/>
    <id>tag:gottcode.org,2024-10-11:/blog/1728675917</id>
    <updated>2024-10-11T19:45:17Z</updated>
    <category term="focuswriter" label="FocusWriter"/>
    <content type="html"><![CDATA[<p>I accidentally let this bugfix version of FocusWriter slip through the cracks. I did all of the work on it back in June, and then I got distracted with Tetzle and I never ended up making a release. 😲 I think at the time there were a few other bugs I thought I was going to look into, but I never made a note of which ones. 🤦 Oh, well, better late than never.</p>]]></content>
  </entry>

</feed>
