<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><generator uri="https://gohugo.io/" version="0.150.0">Hugo -- gohugo.io</generator><title>Planet KDE | English</title><link href="https://planet.kde.org/" rel="alternate" type="text/html" title="html"/><link href="https://planet.kde.org/index.xml" rel="alternate" type="application/rss+xml" title="rss"/><link href="https://planet.kde.org/atom.xml" rel="self" type="application/atom+xml" title="atom"/><link href="https://planet.kde.org/index.jsn" rel="alternate" type="application/json" title="json"/><link href="https://planet.kde.org/es/" rel="alternate" type="text/html" hreflang="es" title="[Español] html"/><link href="https://planet.kde.org/es/index.xml" rel="alternate" type="application/rss+xml" hreflang="es" title="[Español] rss"/><link href="https://planet.kde.org/es/atom.xml" rel="alternate" type="application/atom+xml" hreflang="es" title="[Español] atom"/><link href="https://planet.kde.org/es/index.jsn" rel="alternate" type="application/json" hreflang="es" title="[Español] json"/><link href="https://planet.kde.org/tr/" rel="alternate" type="text/html" hreflang="tr" title="[Türkçe] html"/><link href="https://planet.kde.org/tr/index.xml" rel="alternate" type="application/rss+xml" hreflang="tr" title="[Türkçe] rss"/><link href="https://planet.kde.org/tr/atom.xml" rel="alternate" type="application/atom+xml" hreflang="tr" title="[Türkçe] atom"/><link href="https://planet.kde.org/tr/index.jsn" rel="alternate" type="application/json" hreflang="tr" title="[Türkçe] json"/><link href="https://planet.kde.org/ca/" rel="alternate" type="text/html" hreflang="ca" title="[Català] html"/><link href="https://planet.kde.org/ca/index.xml" rel="alternate" type="application/rss+xml" hreflang="ca" title="[Català] rss"/><link href="https://planet.kde.org/ca/atom.xml" rel="alternate" type="application/atom+xml" hreflang="ca" title="[Català] atom"/><link href="https://planet.kde.org/ca/index.jsn" rel="alternate" type="application/json" hreflang="ca" title="[Català] json"/><link href="https://planet.kde.org/fr/" rel="alternate" type="text/html" hreflang="fr" title="[Français] html"/><link href="https://planet.kde.org/fr/index.xml" rel="alternate" type="application/rss+xml" hreflang="fr" title="[Français] rss"/><link href="https://planet.kde.org/fr/atom.xml" rel="alternate" type="application/atom+xml" hreflang="fr" title="[Français] atom"/><link href="https://planet.kde.org/fr/index.jsn" rel="alternate" type="application/json" hreflang="fr" title="[Français] json"/><link href="https://planet.kde.org/nl/" rel="alternate" type="text/html" hreflang="nl" title="[Nederlands] html"/><link href="https://planet.kde.org/nl/index.xml" rel="alternate" type="application/rss+xml" hreflang="nl" title="[Nederlands] rss"/><link href="https://planet.kde.org/nl/atom.xml" rel="alternate" type="application/atom+xml" hreflang="nl" title="[Nederlands] atom"/><link href="https://planet.kde.org/nl/index.jsn" rel="alternate" type="application/json" hreflang="nl" title="[Nederlands] json"/><link href="https://planet.kde.org/uk/" rel="alternate" type="text/html" hreflang="uk" title="[Українська] html"/><link href="https://planet.kde.org/uk/index.xml" rel="alternate" type="application/rss+xml" hreflang="uk" title="[Українська] rss"/><link href="https://planet.kde.org/uk/atom.xml" rel="alternate" type="application/atom+xml" hreflang="uk" title="[Українська] atom"/><link href="https://planet.kde.org/uk/index.jsn" rel="alternate" type="application/json" hreflang="uk" title="[Українська] json"/><link href="https://planet.kde.org/de/" rel="alternate" type="text/html" hreflang="de" title="[Deutsch] html"/><link href="https://planet.kde.org/de/index.xml" rel="alternate" type="application/rss+xml" hreflang="de" title="[Deutsch] rss"/><link href="https://planet.kde.org/de/atom.xml" rel="alternate" type="application/atom+xml" hreflang="de" title="[Deutsch] atom"/><link href="https://planet.kde.org/de/index.jsn" rel="alternate" type="application/json" hreflang="de" title="[Deutsch] json"/><link href="https://planet.kde.org/eu/" rel="alternate" type="text/html" hreflang="eu" title="[Euskara] html"/><link href="https://planet.kde.org/eu/index.xml" rel="alternate" type="application/rss+xml" hreflang="eu" title="[Euskara] rss"/><link href="https://planet.kde.org/eu/atom.xml" rel="alternate" type="application/atom+xml" hreflang="eu" title="[Euskara] atom"/><link href="https://planet.kde.org/eu/index.jsn" rel="alternate" type="application/json" hreflang="eu" title="[Euskara] json"/><link href="https://planet.kde.org/it/" rel="alternate" type="text/html" hreflang="it" title="[Italiano] html"/><link href="https://planet.kde.org/it/index.xml" rel="alternate" type="application/rss+xml" hreflang="it" title="[Italiano] rss"/><link href="https://planet.kde.org/it/atom.xml" rel="alternate" type="application/atom+xml" hreflang="it" title="[Italiano] atom"/><link href="https://planet.kde.org/it/index.jsn" rel="alternate" type="application/json" hreflang="it" title="[Italiano] json"/><link href="https://planet.kde.org/sk/" rel="alternate" type="text/html" hreflang="sk" title="[Slovenčina] html"/><link href="https://planet.kde.org/sk/index.xml" rel="alternate" type="application/rss+xml" hreflang="sk" title="[Slovenčina] rss"/><link href="https://planet.kde.org/sk/atom.xml" rel="alternate" type="application/atom+xml" hreflang="sk" title="[Slovenčina] atom"/><link href="https://planet.kde.org/sk/index.jsn" rel="alternate" type="application/json" hreflang="sk" title="[Slovenčina] json"/><link href="https://planet.kde.org/pt-pt/" rel="alternate" type="text/html" hreflang="pt-pt" title="[Português] html"/><link href="https://planet.kde.org/pt-pt/index.xml" rel="alternate" type="application/rss+xml" hreflang="pt-pt" title="[Português] rss"/><link href="https://planet.kde.org/pt-pt/atom.xml" rel="alternate" type="application/atom+xml" hreflang="pt-pt" title="[Português] atom"/><link href="https://planet.kde.org/pt-pt/index.jsn" rel="alternate" type="application/json" hreflang="pt-pt" title="[Português] json"/><link href="https://planet.kde.org/sv/" rel="alternate" type="text/html" hreflang="sv" title="[Svenska] html"/><link href="https://planet.kde.org/sv/index.xml" rel="alternate" type="application/rss+xml" hreflang="sv" title="[Svenska] rss"/><link href="https://planet.kde.org/sv/atom.xml" rel="alternate" type="application/atom+xml" hreflang="sv" title="[Svenska] atom"/><link href="https://planet.kde.org/sv/index.jsn" rel="alternate" type="application/json" hreflang="sv" title="[Svenska] json"/><link href="https://planet.kde.org/ru/" rel="alternate" type="text/html" hreflang="ru" title="[Русский] html"/><link href="https://planet.kde.org/ru/index.xml" rel="alternate" type="application/rss+xml" hreflang="ru" title="[Русский] rss"/><link href="https://planet.kde.org/ru/atom.xml" rel="alternate" type="application/atom+xml" hreflang="ru" title="[Русский] atom"/><link href="https://planet.kde.org/ru/index.jsn" rel="alternate" type="application/json" hreflang="ru" title="[Русский] json"/><link href="https://planet.kde.org/ja/" rel="alternate" type="text/html" hreflang="ja" title="[日本語] html"/><link href="https://planet.kde.org/ja/index.xml" rel="alternate" type="application/rss+xml" hreflang="ja" title="[日本語] rss"/><link href="https://planet.kde.org/ja/atom.xml" rel="alternate" type="application/atom+xml" hreflang="ja" title="[日本語] atom"/><link href="https://planet.kde.org/ja/index.jsn" rel="alternate" type="application/json" hreflang="ja" title="[日本語] json"/><updated>2026-06-05T16:39:33+00:00</updated><icon>https://planet.kde.org/img/planet.png</icon><logo>https://planet.kde.org/img/planet.png</logo><id>https://planet.kde.org/</id><entry><title type="html">Web Review, Week 2026-23</title><link href="https://ervin.ipsquad.net/blog/2026/06/05/web-review-week-2026-23/?utm_source=atom_feed" rel="alternate" type="text/html"/><id>https://ervin.ipsquad.net/blog/2026/06/05/web-review-week-2026-23/</id><author><name>Kevin Ottens</name><uri>https://ervin.ipsquad.net/</uri></author><published>2026-06-05T16:39:33+00:00</published><updated>2026-06-05T16:39:33+00:00</updated><content type="html"><![CDATA[<p>Let&rsquo;s go for my web review for the week 2026-23.</p>
<hr>
<h4 id="but-it-happened">&ldquo;But it happened.&rdquo;</h4>
<p><em>Tags: tech, google, attention-economy, business</em></p>
<p>Good point, the booing on Eric Schimidt&rsquo;s commencement speech is likely not just about him talking about AI at some point. You see, the man has very heavy baggage&hellip; He&rsquo;s one of the architects of the current dystopia but won&rsquo;t acknowledge it.</p>
<p><a target="_blank" href="https://www.youtube.com/watch?v=tlQ7EoJDTQY">https://www.youtube.com/watch?v=tlQ7EoJDTQY</a></p>
<br/>
<h4 id="ai-didnt-break-the-web-the-dotcons-did--ai-just-turned-up-the-volume">AI didn’t break the web. The dotcons did – AI just turned up the volume</h4>
<p><em>Tags: tech, copyright, commons, web, ai, machine-learning, gpt, enclosure</em></p>
<p>Indeed the trend wasn&rsquo;t new. It&rsquo;s &ldquo;just&rdquo; the icing on the cake from the enclosure point of view.</p>
<p><a target="_blank" href="https://hamishcampbell.com/ai-didnt-break-the-web-the-dotcons-did-ai-just-turned-up-the-volume/">https://hamishcampbell.com/ai-didnt-break-the-web-the-dotcons-did-ai-just-turned-up-the-volume/</a></p>
<br/>
<h4 id="unlawful-by-design-exposing-the-human-rights-costs-of-generative-ai">Unlawful by design: Exposing the human rights costs of generative AI</h4>
<p><em>Tags: tech, ai, machine-learning, gpt, ethics, law</em></p>
<p>When Amnesty International feels like it has to publish a 44 pages briefing pointing out what&rsquo;s wrong with your approach and business&hellip; it&rsquo;d be nice to pay attention.</p>
<p><a target="_blank" href="https://www.amnesty.org/en/documents/pol40/0996/2026/en/">https://www.amnesty.org/en/documents/pol40/0996/2026/en/</a></p>
<br/>
<h4 id="about-rsync-slopocalypse">About rsync slopocalypse</h4>
<p><em>Tags: tech, ai, machine-learning, copilot, quality</em></p>
<p>Indeed, if the rsync maintainer can&rsquo;t handle a coding assistant properly&hellip; who can?</p>
<p><a target="_blank" href="https://teh.entar.net/@spacehobo/116659545246426837">https://teh.entar.net/@spacehobo/116659545246426837</a></p>
<br/>
<h4 id="when-other-games-chased-polygons-blade-runner-chased-atmosphere">When Other Games Chased Polygons, Blade Runner Chased Atmosphere</h4>
<p><em>Tags: tech, game, graphics, 2d, 3d</em></p>
<p>There was an era of hybrid techniques in video games before it mostly went full real-time 3D. It gave interesting results, here is an example.</p>
<p><a target="_blank" href="https://gardinerbryant.com/when-other-games-chased-polygons/">https://gardinerbryant.com/when-other-games-chased-polygons/</a></p>
<br/>
<h4 id="avoid-using-cdata---in-rss">Avoid using <code>&quot;&lt;![CDATA[ ... ]]&gt;&quot;</code> in RSS</h4>
<p><em>Tags: tech, blog, rss</em></p>
<p>Good point indeed, need to review my own feed next time I get the chance.</p>
<p><a target="_blank" href="https://waspdev.com/articles/2026-05-11/avoid-using-cdata-in-rss">https://waspdev.com/articles/2026-05-11/avoid-using-cdata-in-rss</a></p>
<br/>
<h4 id="you-dont-love-systemd-timers-enough">You Don&rsquo;t Love systemd Timers Enough</h4>
<p><em>Tags: tech, linux, systemd, time</em></p>
<p>Good primer on systemd timers. Indeed it&rsquo;s really one of the nice systemd features.</p>
<p><a target="_blank" href="https://blog.tjll.net/you-dont-love-systemd-timers-enough/">https://blog.tjll.net/you-dont-love-systemd-timers-enough/</a></p>
<br/>
<h4 id="5-postgresql-locking-behaviors-that-trip-people-up">5 PostgreSQL locking behaviors that trip people up</h4>
<p><em>Tags: tech, postgresql, databases, distributed</em></p>
<p>Mind those traps when dealing with such a database. There are locks you don&rsquo;t necessarily expect.</p>
<p><a target="_blank" href="https://dev.to/shinyakato_/5-postgresql-locking-behaviors-that-trip-people-up-4k7n">https://dev.to/shinyakato_/5-postgresql-locking-behaviors-that-trip-people-up-4k7n</a></p>
<br/>
<h4 id="you-probably-dont-need-yocto-and-thats-fine">You probably don&rsquo;t need Yocto, and that&rsquo;s fine</h4>
<p><em>Tags: tech, linux, embedded, yocto, debian</em></p>
<p>Indeed, teams reach out to Yocto by default a bit too much. It&rsquo;s good to have an idea on when you really needed and when you can go for simpler options.</p>
<p><a target="_blank" href="https://sigma-star.at/blog/2026/05/you-probably-dont-need-yocto-and-thats-fine/">https://sigma-star.at/blog/2026/05/you-probably-dont-need-yocto-and-thats-fine/</a></p>
<br/>
<h4 id="nine-ways-to-do-inheritance-in-rust-a-language-without-inheritance">Nine Ways to Do Inheritance in Rust, a Language Without Inheritance</h4>
<p><em>Tags: tech, rust, type-systems, object-oriented</em></p>
<p>Some of the examples lean on macro trickery. Still this gives a good example of the flexibility you get with the trait system.</p>
<p><a target="_blank" href="https://medium.com/@carlmkadie/nine-ways-to-do-inheritance-in-rust-a-language-without-inheritance-14825bf1e215">https://medium.com/@carlmkadie/nine-ways-to-do-inheritance-in-rust-a-language-without-inheritance-14825bf1e215</a></p>
<br/>
<h4 id="the-c-standard-library-has-been-walking-itself-back-for-fifteen-years-and-the-receipts-are-public">The C++ Standard Library Has Been Walking Itself Back for Fifteen Years, and the Receipts Are Public</h4>
<p><em>Tags: tech, c++, standard, culture</em></p>
<p>Cold and harsh look at how the C++ standard library evolves. There&rsquo;s indeed a problem in the fact that nothing gets removed ever.</p>
<p><a target="_blank" href="https://hftuniversity.com/post/the-c-standard-library-has-been-walking-itself-back-for-fifteen-years-and-the-receipts-are-public">https://hftuniversity.com/post/the-c-standard-library-has-been-walking-itself-back-for-fifteen-years-and-the-receipts-are-public</a></p>
<br/>
<h4 id="you-must-fix-your-asserts">You Must Fix Your Asserts</h4>
<p><em>Tags: tech, reliability, failure, debugging</em></p>
<p>Good point, disabling asserts in production is not the best default position to have.</p>
<p><a target="_blank" href="https://kristoff.it/blog/fix-your-asserts/">https://kristoff.it/blog/fix-your-asserts/</a></p>
<br/>
<h4 id="what-almost-everyone-gets-wrong-about-tdd--bdd">What (almost) Everyone Gets Wrong About TDD &amp; BDD</h4>
<p><em>Tags: tech, tdd, atdd, history</em></p>
<p>Good summary of how the terms evolved. They are more tied to each other than most people think.</p>
<p><a target="_blank" href="https://antonymarcano.substack.com/p/what-almost-everyone-gets-wrong-about-c05">https://antonymarcano.substack.com/p/what-almost-everyone-gets-wrong-about-c05</a></p>
<br/>
<h4 id="normalize-patience">normalize patience</h4>
<p><em>Tags: tech, culture, patience, time, productivity, attention-economy</em></p>
<p>Things which matter take time. The calls to productivity and technology pushing us toward faster response on everything is killing what makes our humanity.</p>
<p><a target="_blank" href="https://rnotte.art/normalize-patience/">https://rnotte.art/normalize-patience/</a></p>
<br/>
<hr>
<p>Bye for now!</p>]]></content></entry><entry><title type="html">Week 2 — Porting KeepSecret to the Kirigami ActionCollection API</title><link href="https://roshani-gsoc.bearblog.dev/week-2-porting-keepsecret-to-the-kirigami-actioncollection-api/?utm_source=atom_feed" rel="alternate" type="text/html"/><id>https://roshani-gsoc.bearblog.dev/week-2-porting-keepsecret-to-the-kirigami-actioncollection-api/</id><author><name>Roshani Kumari</name><uri>https://roshani-gsoc.bearblog.dev</uri></author><published>2026-06-04T19:54:00+00:00</published><updated>2026-06-04T20:00:03+00:00</updated><content type="html"><![CDATA[<p>This week, I completed the port of KeepSecret's actions to the new <code>org.kde.kirigami.actioncollection</code> API from <a target="_blank" href='https://invent.kde.org/libraries/kirigami-app-components'>kirigami-app-components</a>, a recently introduced library developed by <a target="_blank" href='https://notmart.org/blog/2026/05/kirigami-app-components/'>Marco Martin (notmart)</a>.</p>
<p>Before working on this task, actions were defined separately throughout the UI. With ActionCollection, I could define each action once in a central place and then reuse it wherever it was needed. This makes the code easier to maintain and also integrates KeepSecret with KDE's standard shortcut system, allowing users to configure shortcuts through the usual KDE interface.</p>
<p>The main change was creating a dedicated <a target="_blank" href='https://invent.kde.org/utilities/keepsecret/-/blob/master/src/qml/Actions.qml'><code>Actions.qml</code></a> file with <code>AC.ActionCollectionManager</code> as the root element. Inside it, actions are now centrally defined across three collections — one for the wallet list, one for wallet contents, and one for item details. These include actions such as New Wallet, New Entry, Search, Lock, Unlock, Copy Password, Save, Revert, and Delete.</p>
<p>During review, additional actions were added, dependencies were simplified, and Flatpak build issues were addressed. Since <a target="_blank" href='https://invent.kde.org/libraries/kirigami-app-components'>kirigami-app-components</a> is still very new, some CI and packaging adjustments were needed before everything built correctly.</p>
<p>The <a target="_blank" href='https://invent.kde.org/utilities/keepsecret/-/merge_requests/29'>merge request !29</a> has now been reviewed, approved, and merged into KeepSecret.</p>
<p>Next up is the Import/Export feature — I'll be studying KeepSecret's wallet data structures and designing the file format this week.</p>]]></content></entry><entry><title type="html">Community Bonding + Week 1 Status Update | GSoC '26</title><link href="https://ojasmaheshwari.github.io/b/2026/community-bonding-week-1-status-update-gsoc-26?utm_source=atom_feed" rel="alternate" type="text/html"/><id>https://ojasmaheshwari.github.io/b/2026/community-bonding-week-1-status-update-gsoc-26</id><author><name>Ojas Maheshwari</name><uri>https://ojasmaheshwari.github.io</uri></author><published>2026-06-04T17:39:41+00:00</published><updated>2026-06-04T17:39:41+00:00</updated><content type="html"><![CDATA[<p>Hello Reader!</p>
<p>In case you don't know me (quite likely 😆), I am Ojas Maheshwari (@the_epicman:matrix.org) and I am currently working in the <a target="_blank" href="https://summerofcode.withgoogle.com/">Google Summer of Code</a> program for the KDE community on a project about Font Subsetting in <a target="_blank" href="https://gitlab.freedesktop.org/poppler/poppler">Poppler</a> under my mentor Albert Astals Cid.</p>
<h2>Community Bonding</h2>
<p>If I am being honest, I had already bonded with the Poppler community before GSoC started 😅</p>
<p>I had a lot of conversations with Albert, Sune, lbaudin and ats, and they already helped me a lot with my technical problems with my contributions prior to GSoC :D</p>
<p>However, I also managed to bond with other fellow GSoC contributors this summer so it's a win in my book :D</p>
<h2>Week 1</h2>
<p>I learnt a lot about how PDF files work this week.</p>
<p>Technical terms like Indirect Objects, Default Appearance, Appearance Streams which used to sound confusing to me before finally clicked.</p>
<p>I got more comfortable with traversing and using PDF data structures such as Objects, Arrays, Dicts, Streams etc.</p>
<p>The Happy News is that I got the Font Subsetting to work for FreeText Annotations.</p>
<p>I have raised a <a target="_blank" href="https://gitlab.freedesktop.org/poppler/poppler/-/merge_requests/2220">Draft MR</a> which should be ready-to-review by end of this week and my plan is to get it fully correct and merged first and then move on to doing the same thing for forms.</p>
<p><img src="https://ojasmaheshwari.github.io/assets/blog_week1_ss.png" width="1200" height="auto" alt="A picture of my IDE containing my work"><br>
<i>Code screenshot to make the blog look cooler</i></p>
<h2>How it works</h2>
<p>If you are interested to know what my current approach is:</p>
<ul>
<li>
<p>The whole subsetting runs only when the user saves the document.</p>
</li>
<li>
<p>We go over all resources (for now, just FreeText annotations) that were modified, and call a <code>subsetFonts</code> method on them.</p>
</li>
<li>
<p>This is a method implemented by every class that needs subsetting, and inside this method we pass the data on what &quot;font&quot; renders what part of the &quot;text&quot; to our <code>FontSubsetter::getSubsetFonts</code>.</p>
</li>
</ul>
<pre><code>std::map&lt;Ref, Ref&gt; FontSubsetter::getSubsetFonts(const std::map&lt;std::shared_ptr&lt;const GfxFont&gt;, std::string&gt; &amp;fontMappings) const
</code></pre>
<ul>
<li>
<p>The function generates the subset font objects and adds them to the PDF and returns mappings of old font refs and newer font refs. The subsetting happens using a library called &quot;Harfbuzz&quot;.</p>
</li>
<li>
<p>Then the <code>subsetFonts</code> function simply replaces the older refs with the newer ones inside the font subdictionary of the appearance stream of the annotation.</p>
</li>
</ul>
<h2>Thanks for reading</h2>
<p>Although this blog might look small, it took me more than 1.5 hours to write this because I kept writing and deleting things. I am hoping I get better at writing blogs in the future.</p>
<p>But anyways, thanks for reading!<br>
And have a great day !<br>
Byee 😃!</p>]]></content></entry><entry><title type="html">Lessons Learnt from Our BI Journey: From Open Source to SDV Products Development</title><link href="https://toscalix.com/2026/06/04/lessons-learnt-from-our-bi-journey-from-open-source-to-sdv-products-development/?utm_source=atom_feed" rel="alternate" type="text/html"/><id>http://toscalix.com/?p=3297</id><author><name>Agustín Benito Bethencourt</name><uri>https://toscalix.com</uri></author><published>2026-06-04T17:15:13+00:00</published><updated>2026-06-04T17:15:13+00:00</updated><content type="html">Luis Cañas Díaz and I shared lessons from our BI journey at the Eclipse Foundation SDV webinar — from open source to automotive. Methodology, real use cases, and hard-won lessons on data, metrics, and insights.</content></entry><entry><title type="html">How long does it take for an Item to become visible?</title><link href="https://www.kdab.com/how-long-does-it-take-for-an-item-to-become-visible/?utm_source=atom_feed" rel="alternate" type="text/html"/><id>https://www.kdab.com/how-long-does-it-take-for-an-item-to-become-visible/</id><author><name>KDAB on Qt</name><uri>https://www.kdab.com/</uri></author><published>2026-06-04T14:18:00+00:00</published><updated>2026-06-04T14:18:00+00:00</updated><content type="html"><![CDATA[<h1>How long does it take for an Item to become visible?</h1>


<div class="image-variable-size-block">
    <div class="image-variable-positioning-block right-margin-auto left-margin-auto width-50 " >
            <div class="image-variable-size-image">
                
                
                
                <img id="Frames skipped counter in application_QML_Blog_Javier" src="https://eu-central-1.linodeobjects.com/wagtail-production/images/Frames_skipped_counter_in_application.original.png" class="Frames skipped counter in application_QML_Blog_Javier" alt="Frames skipped counter in application_QML_Blog_Javier">
                
                
        </div>
        <div class="image-variable-size-caption text-center"><div class="rich-text"><p data-block-key="aw0i2">Frames skipped counter in application</p></div></div>
    </div>
</div>

<div class="rich-text"><p data-block-key="z6f7p">How long does it take for an <code>Item</code> that you’ve just loaded to become visible? Answering this question allows for a way to detect what some users would perceive as "frame drops". I write that in quotes because Qt Quick only draws frames when needed, meaning it doesn't drop frames; but it can show them later than one would expect. That is what we would like to identify: When components are drawn late, and by how many milliseconds or frames are they late?</p><p data-block-key="akl5c">I've come up with a simple solution - code below the article - on how to measure this. Items being measured must inherit a class based of <code>QQuickItem</code> that has a connection on <a target="_blank" href="https://doc.qt.io/qt-6/qquickitem.html#visible-prop" rel="noopener noreferrer" target="_blank"><code>QQuickItem::visibleChanged</code></a>. Its visible property should be false by default. When <code>visible</code> becomes true, a slot will start measuring elapsed time and create a direct connection to <a target="_blank" href="https://doc.qt.io/qt-6/qquickwindow.html#afterFrameEnd" rel="noopener noreferrer" target="_blank"><code>QQuickWindow::afterFrameEnd</code></a>. Once the scene graph has submitted a frame, the slot will take the measurement and disconnect the connection that triggered it to prevent further frames from triggering this event.</p><p data-block-key="29tg9">That alone isn't enough, however. If there were other elements on the scene being animated (say from the render thread via an <a target="_blank" href="https://doc.qt.io/qt-6/qml-qtquick-animator.html" rel="noopener noreferrer" target="_blank">Animator</a>), those would trigger a frame swap before our item would have had a chance to be drawn, causing our measurement to be taken prematurely.<br/>We need a way of knowing when the frame that draws our component is the one that got swapped into view. Enter <a target="_blank" href="https://doc.qt.io/qt-6/qquickitem.html#ensurePolished" rel="noopener noreferrer" target="_blank"><code>QQuickItem::ensurePolished</code></a>. Calling this function ensures that <a target="_blank" href="https://doc.qt.io/qt-6/qquickitem.html#updatePolish" rel="noopener noreferrer" target="_blank"><code>QQuickItem::updatePolish</code></a> will be called when the scene graph is ready to render our item. We override <code>QQuickItem::updatePolish</code> and use it to set a flag that’ll tell us that the next frame to come be displayed will correspond to the component we’re measuring. Lastly, we read this flag during the next call to <i>QQuickWindow::afterFrameEnd</i>, effectively using it to trigger the elapsed time measurement only when our item is swapped onto the screen.</p><p data-block-key="evsge">There is a variable amount of time between the last user interaction and the moment a frame can be rendered; because of that, a measurement in milliseconds is only accurate to the average time that it takes for one frame to be rendered immediately after the previous frame. That turns out to be 1 second divided by the display's refresh rate. We can use <a target="_blank" href="https://doc.qt.io/qt-6/qscreen.html#refreshRate-prop" rel="noopener noreferrer" target="_blank"><code>Qscreen::refreshRate</code></a>, which gives us this value in hertz. For a 60hz display, a frame's time (T) would be 1000 ms / 60 hz ≃ 16 ms. Any time measured that is between zero and T (16 ms) would mean an instant frame swap. If we divide the measured time by T, and apply a floor function to the result, we get the number of frames dropped while making the component visible, which is a more consistent measurement than the number of milliseconds passed. For a well optimized program the output would be zero, one, or a positive integer very close to that. For more information about the rendering process, you can read <a target="_blank" href="https://doc.qt.io/qt-6/qtquick-visualcanvas-scenegraph.html#scene-graph-and-rendering" rel="noopener noreferrer" target="_blank">scene graph and rendering</a> from Qt's documentation.</p><p data-block-key="55thg">Make C++ items visible during their instantiation, or they won’t show up on screen. This <code>QQuickItem</code> subclass is different from its parent in that the <code>Item</code> is not visible by default. We set visible to false from the C++ constructor because the order in which initial properties are evaluated and assigned in QML differs depending on the approach used to instantiate the <code>Item</code> and assign its initial properties. You may set the initial visible property of an item in QML to false, then make it true during its instantiation as a delegate somewhere, only for the QML Engine to optimally evaluate its initial value solely to true, causing the <code>visibleChanged</code> signal to never be emitted because there was, effectively, no change to the visible property. Setting the visibility to false from the constructor in C++ is a simple way to guarantee that visibleChanged will be triggered upon any initialization of the visible property in QML.</p><p data-block-key="384fn">The code for the <code>QQuickItem</code> subclass described in this article is documented below. Hope you find it useful. Reach out to us if you need help profiling software, would like to receive our training courses, or need help developing tools such as this.</p><p data-block-key="db7k7">Best regards, Javier</p></div>

<div class="rich-text"><h2 id="code" data-block-key="78le0">Code</h2></div>


<div class="formatted-code">
    <pre><code class="language-cpp  line-numbers ">#include &lt;QQuickItem&gt;
#include &lt;QQuickWindow&gt;

class TimedItem : public QQuickItem
&#123;
    Q_OBJECT
    QML_ELEMENT

    Q_PROPERTY(qint64 timeToDisplay READ timeToDisplay NOTIFY timeToDisplayChanged FINAL)

public:
    TimedItem(QQuickItem* parent = nullptr) : QQuickItem(parent),
              m_elapsedTimer(new QElapsedTimer())
&#123;
    setVisible(false);
    // When made visible, measure time to display
    QObject::connect(this, &amp;QQuickItem::visibleChanged, this, &amp;TimedItem::startMeasuringTimeToDisplay, Qt::DirectConnection);
};

qint64 timeToDisplay() &#123;
    return m_timeToDisplay;
};

signals:
    void timeToDisplayChanged();

private:
    void startMeasuringTimeToDisplay()
    &#123;
        if (isVisible())
        &#123;
            // Reset
            m_frameReady = false;
            // Attempt to take measurement after frame swaps
            QObject::connect(window(), &amp;QQuickWindow::afterFrameEnd, this, &amp;TimedItem::measure,
            static_cast&lt;Qt::ConnectionType&gt;(Qt::DirectConnection | Qt::UniqueConnection));
            // Force polish, ensuring elapsed measurement is taken on the right frame
            ensurePolished();
            // Take initial measurement
            m_elapsedTimer-&gt;start();
        }
    }

    void updatePolish()
    &#123;
        // The frame for this component will be rendered after this
        m_frameReady = true;
    }

    void measure()
    &#123;
        // This will be called for every frame until the right frame has been rendered
        if (m_frameReady)
        &#123;
            // Measure elapsed time
            m_timeToDisplay = m_elapsedTimer-&gt;elapsed();
            // Prevent measuring further frame
            QObject::disconnect(window(), &amp;QQuickWindow::afterFrameEnd, this, &amp;TimedItem::measure);
            // Propagate measured time
            emit timeToDisplayChanged();
        }
    }

private:
    qint64 m_timeToDisplay = 0;
    QElapsedTimer *m_elapsedTimer;
    bool m_frameReady = false;
};</code></pre>
 </div>

<p>The post <a target="_blank" href="https://www.kdab.com/how-long-does-it-take-for-an-item-to-become-visible/">How long does it take for an Item to become visible?</a> appeared first on <a target="_blank" href="https://www.kdab.com">KDAB</a>.</p>]]></content></entry><entry><title type="html">Qt Creator 20 RC released</title><link href="https://www.qt.io/blog/qt-creator-20-rc-released?utm_source=atom_feed" rel="alternate" type="text/html"/><id>https://www.qt.io/blog/qt-creator-20-rc-released</id><author><name>Qt Dev Loop</name><uri>https://www.qt.io/blog/tag/loop/</uri></author><published>2026-06-04T09:41:10+00:00</published><updated>2026-06-04T09:41:10+00:00</updated><content type="html"><![CDATA[<p>We are happy to announce the release of Qt Creator 20 RC!</p>  
<img src="https://track-eu1.hubspot.com/__ptq.gif?a=149513&amp;k=14&amp;r=https%3A%2F%2Fwww.qt.io%2Fblog%2Fqt-creator-20-rc-released&amp;bu=https%253A%252F%252Fwww.qt.io%252Fblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; ">]]></content></entry><entry><title type="html">KDE Gear 26.04.2</title><link href="https://kde.org/announcements/gear/26.04.2/?utm_source=atom_feed" rel="alternate" type="text/html"/><id>https://kde.org/announcements/gear/26.04.2/</id><author><name>KDE Community</name><uri>https://kde.org/</uri></author><published>2026-06-04T00:00:00+00:00</published><updated>2026-06-04T00:00:00+00:00</updated><content type="html"><![CDATA[<p>Over 180 individual programs plus dozens of programmer libraries and feature plugins are released simultaneously as part of KDE Gear.</p>
<p>Today they all get new bugfix source releases with updated translations, including:</p>
<ul>
<li>akregator: Fix a hang on launch on arm64 (<a target="_blank" href="https://commits.kde.org/akregator/625b53821554b261526263eb58ce44fa249c9518">Commit</a>)</li>
<li>ksanecore: Fix crash on skanlite startup (<a target="_blank" href="https://commits.kde.org/ksanecore/fcaa98840d61270293a1f076e39c8dd4a2430de0">Commit</a>, fixes bug <a target="_blank" href="https://bugs.kde.org/517465">#517465</a>)</li>
<li>koko: Fix move to trash action overriding image editor delete actions (<a target="_blank" href="https://commits.kde.org/koko/94145c0ec43759e12991d809092c1ccfc091f6f0">Commit</a>, fixes bug <a target="_blank" href="https://bugs.kde.org/519784">#519784</a>)</li>
</ul>
<p>Distro and app store packagers should update their application packages.</p>
<ul>
<li><a target="_blank" href="https://community.kde.org/KDE_Gear/26.04_Release_notes">26.04 release notes</a> for information on tarballs and known issues.</li>
<li><a target="_blank" href="https://community.kde.org/Get_KDE_Software_on_Your_Linux_Distro">Package download wiki page</a></li>
<li><a target="_blank" href="https://kde.org/info/releases-26.04.2/">26.04.2 source info page</a></li>
<li><a target="_blank" href="https://kde.org/announcements/changelogs/gear/26.04.2/">26.04.2 full changelog</a></li>
</ul>]]></content></entry><entry><title type="html">EX-11: Prepping for Plasma’s Last X11-Supported Release</title><link href="http://blog.davidedmundson.co.uk/blog/596/?utm_source=atom_feed" rel="alternate" type="text/html"/><id>https://blog.davidedmundson.co.uk/?p=596</id><author><name>David Edmundson</name><uri>http://blog.davidedmundson.co.uk</uri></author><published>2026-06-02T12:38:03+00:00</published><updated>2026-06-02T12:38:03+00:00</updated><content type="html"><![CDATA[<p>When we first announced the transition to Plasma Wayland, one of <a target="_blank" href="https://desktopsummit.org/sites/www.desktopsummit.org/files/KWin_Wayland.pdf">Martin's slides</a> from  stated, &quot;It's done when it's done!&quot;</p>
<p>That talk was 15 years ago! </p>
<p>Nothing in software is never truly &quot;done&quot;, but <a target="_blank" href="https://blogs.kde.org/2025/11/26/going-all-in-on-a-wayland-future/">as announced previously</a> we are finally at a point where we're ready to retire the X11 and put all our focus on the future.</p>
<p>As of today, the Plasma X11 session you can log into has been officially removed, and we will start a mass cleanup of X11-specific code soon.</p>
<h2>When does it take effect?</h2>
<p>This change will be included in Plasma 6.8, which will be released in around five months.</p>
<h2>What's Changed?</h2>
<p>In Plasma 6.8, there will be no X11 session in the login screen. There will only be a Wayland session available to log into.</p>
<p>In 6.8, all X11-specific code paths in Plasma for Plasma Shell, System Settings, and device configuration will be gone.</p>
<h2>What's stayed the same?</h2>
<p>XWayland support remains present. You can keep using your X11 applications, and our XWayland application support is second-to-none.</p>
<p>If you use KDE applications on another desktop environment, this change will have no effect. KDE applications will continue to work in X11 for the foreseeable future.</p>
<p>Plasma Login Manager will continue to be able to log you into X11 sessions of other desktop environments.</p>
<h2>What's Next?</h2>
<p>The possibilities this opens up are very exciting. Until now, on the desktop side, we've had to target the lowest common denominator or be stuck trying to maintain two conflicting code paths. It was absolutely the right choice to do a gradual transition and approach things this way, but that approach has its limits.</p>
<p>Moving forward with a single code path going through Wayland is going to allow us to bring new performance improvements, memory optimisations, and brand new exciting features throughout Plasma.</p>
<h2>How Ready Are We?</h2>
<p>Our internal metrics within KDE show that over 95% of users of Plasma 6.6 are on Wayland, with a gradual increase every release. The metrics also show that basically no one is testing or developing Plasma on X11 anymore. The platform was already, for all intents and purposes, abandoned by KDE contributors.</p>
<p><img decoding="async" src="https://blog.davidedmundson.co.uk/wp-content/uploads/2026/06/graph-1024x683.png" alt="" /></p>
<p>We have every reason to trust this metric data, as it is exactly in-line with what Sentry (our automatic crash reporting tool) reports for newly-encountered crashes shows.</p>
<p>For transparency, the one caveat in all of the above is that I've deliberately always focused on people using the latest Plasma release. We do still have a sizable chunk of users on X11 still using Plasma 5.27. Including them, the total Wayland adoption rate is about 76%. But back then, Wayland wasn't the default session type, so it's hardly a surprise those users are still on X11. Things have come a massively long way in the three years since Plasma 5.27 was released.</p>
<p>Anyone still using Plasma 5.27 — or any release older than Plasma 6.8 — won't be affected by what we do in Plasma 6.8, and nothing will be applied retroactively.</p>
<h2>Still Have Issues with Wayland on 6.7?</h2>
<p>Whilst we have had full confidence since Plasma 6.0 that our Wayland session provides the better overall experience, we are aware that things don't behave exactly the same. Not everything works the same especially in specialised areas.</p>
<p>We are not expecting a completely seamless transition for everyone. Custom scripts, tools used and even workflows might have to change. But we are aiming to offer a transition where there is still a way to accomplish all your day-to-day tasks. </p>
<p>Plasma 6.7 is the last release that will include an X11 session, and it's coming out in just a few days. If you still have issues that force you back to X11 we would love to hear from you.</p>
<p>We can't promise to get everything fixed in time for 6.8, but we can promise to listen and be aware. People's remaining pain point are and will be on our radar, so please take this time to communicate them.</p>]]></content></entry><entry><title type="html">Krita 5.3.2.1 Released!</title><link href="https://krita.org/en/posts/2026/krita-5.3.2.1-released/?utm_source=atom_feed" rel="alternate" type="text/html"/><id>https://krita.org/en/posts/2026/krita-5.3.2.1-released/</id><author><name>Krita News</name><uri>https://krita.org/en</uri></author><published>2026-06-02T00:00:00+00:00</published><updated>2026-06-02T00:00:00+00:00</updated><content type="html"><![CDATA[<p>Hot on the heels of Krita 5.3.2, we're releasing Krita 5.3.2.1. 5.3.2 had a bug with the layer docker that was very pervasive, and could cause anything from unsynced layers to crashes to groups not behaving as they should. 5.3.2.1 fixes this. Furthermore, we also had some issues where the Windows packages weren't signed. This too should now be fixed.</p>
<blockquote>
<p>[!WARNING]
We consider Krita 5.3.2.1 suitable for productive work; 6.0.2.1 is, because of the many changes from Qt5 to Qt6 more experimental.</p></blockquote>
<h2 id="download-5321">Download 5.3.2.1</h2>
<h3 id="windows">Windows</h3>
<p>If you're using the <em>portable zip files</em>, just open the zip file in Explorer and drag the folder somewhere convenient, then double-click on the Krita icon in the folder. This will not impact an installed version of Krita, though it will share your settings and custom resources with your regular installed version of Krita. For reporting crashes, also get the debug symbols folder.</p>
<blockquote>
<p>[!NOTE]
We are no longer making 32-bit Windows builds.</p></blockquote>
<ul>
<li>
<p>64 bits Windows Installer: <a target="_blank" href="https://download.kde.org/stable/krita/5.3.2.1/krita-x64-5.3.2.1-setup.exe">krita-x64-5.3.2.1-setup.exe</a></p>
</li>
<li>
<p>Portable 64 bits Windows: <a target="_blank" href="https://download.kde.org/stable/krita/5.3.2.1/krita-x64-5.3.2.1.zip">krita-x64-5.3.2.1.zip</a></p>
</li>
<li>
<p><a target="_blank" href="https://download.kde.org/stable/krita/5.3.2.1/krita-x64-5.3.2.1-dbg.zip">Debug symbols. (Unpack in the Krita installation folder)</a></p>
</li>
</ul>
<h3 id="linux">Linux</h3>
<p>Note: starting with recent releases, the minimum supported distro versions may change.</p>
<blockquote>
<p>[!WARNING]
Starting with recent AppImage runtime updates, some AppImageLauncher versions may be incompatible. See AppImage runtime docs for troubleshooting.</p></blockquote>
<ul>
<li>64 bits Linux: <a target="_blank" href="https://download.kde.org/stable/krita/5.3.2.1/krita-5.3.2.1-x86_64.AppImage">krita-5.3.2.1-x86_64.AppImage</a></li>
</ul>
<h3 id="macos">MacOS</h3>
<p>Note: minimum supported MacOS may change between releases.</p>
<ul>
<li>MacOS disk image: <a target="_blank" href="https://download.kde.org/stable/krita/5.3.2.1/krita-5.3.2.1-signed.dmg">krita-5.3.2.1-signed.dmg</a></li>
</ul>
<h3 id="android">Android</h3>
<p>Krita on Android is still <strong><em>beta</em></strong>; tablets only.</p>
<ul>
<li>
<p><a target="_blank" href="https://download.kde.org/stable/krita/5.3.2.1/krita-x86_64-5.3.2.1-release-signed.apk">64 bits Intel CPU APK</a></p>
</li>
<li>
<p><a target="_blank" href="https://download.kde.org/stable/krita/5.3.2.1/krita-arm64-v8a-5.3.2.1-release-signed.apk">64 bits Arm CPU APK</a></p>
</li>
<li>
<p><a target="_blank" href="https://download.kde.org/stable/krita/5.3.2.1/krita-armeabi-v7a-5.3.2.1-release-signed.apk">32 bits Arm CPU APK</a></p>
</li>
</ul>
<h3 id="source-code">Source code</h3>
<p>Sources are the same as 6.0.2.1</p>
<h3 id="md5sum">md5sum</h3>
<p>For all downloads, visit <a target="_blank" href="https://download.kde.org/stable/krita/5.3.2.1/">https://download.kde.org/stable/krita/5.3.2.1/</a> and click on &quot;Details&quot; to get the hashes.</p>
<h3 id="key">Key</h3>
<p>See the 6.0.2.1 key section.</p>
<h2 id="download-6021">Download 6.0.2.1</h2>
<h3 id="windows-1">Windows</h3>
<p>If you're using the <em>portable zip files</em>, just open the zip file in Explorer and drag the folder somewhere convenient, then double-click on the Krita icon in the folder. This will not impact an installed version of Krita, though it will share your settings and custom resources with your regular installed version of Krita. For reporting crashes, also get the debug symbols folder.</p>
<blockquote>
<p>[!NOTE]
We are no longer making 32-bit Windows builds.</p></blockquote>
<ul>
<li>
<p>64 bits Windows Installer: <a target="_blank" href="https://download.kde.org/stable/krita/6.0.2.1/krita-x64-6.0.2.1-setup.exe">krita-x64-6.0.2.1-setup.exe</a></p>
</li>
<li>
<p>Portable 64 bits Windows: <a target="_blank" href="https://download.kde.org/stable/krita/6.0.2.1/krita-x64-6.0.2.1.zip">krita-x64-6.0.2.1.zip</a></p>
</li>
<li>
<p><a target="_blank" href="https://download.kde.org/stable/krita/6.0.2.1/krita-x64-6.0.2.1-dbg.zip">Debug symbols. (Unpack in the Krita installation folder)</a></p>
</li>
</ul>
<h3 id="linux-1">Linux</h3>
<p>Note: starting with recent releases, the minimum supported distro versions may change.</p>
<blockquote>
<p>[!WARNING]
Starting with recent AppImage runtime updates, some AppImageLauncher versions may be incompatible. See AppImage runtime docs for troubleshooting.</p></blockquote>
<ul>
<li>64 bits Linux: <a target="_blank" href="https://download.kde.org/stable/krita/6.0.2.1/krita-6.0.2.1-x86_64.AppImage">krita-6.0.2.1-x86_64.AppImage</a></li>
</ul>
<h3 id="macos-1">MacOS</h3>
<p>Note: minimum supported MacOS may change between releases.</p>
<ul>
<li>MacOS disk image: <a target="_blank" href="https://download.kde.org/stable/krita/6.0.2.1/krita-6.0.2.1-signed.dmg">krita-6.0.2.1-signed.dmg</a></li>
</ul>
<h3 id="android-1">Android</h3>
<p>Krita 6.0.2 is not yet functional on Android, so we are not making APK's available for sideloading.</p>
<h3 id="source-code-1">Source code</h3>
<ul>
<li>
<p><a target="_blank" href="https://download.kde.org/stable/krita/6.0.2.1/krita-6.0.2.1.tar.gz">krita-6.0.2.1.tar.gz</a></p>
</li>
<li>
<p><a target="_blank" href="https://download.kde.org/stable/krita/6.0.2.1/krita-6.0.2.1.tar.xz">krita-6.0.2.1.tar.xz</a></p>
</li>
</ul>
<h3 id="md5sum-1">md5sum</h3>
<p>For all downloads, visit <a target="_blank" href="https://download.kde.org/stable/krita/6.0.2.1/">https://download.kde.org/stable/krita/6.0.2.1/</a> and click on &quot;Details&quot; to get the hashes.</p>
<h3 id="key-1">Key</h3>
<p>The Linux AppImage and the source tarballs are signed. You can retrieve the public key <a target="_blank" href="https://files.kde.org/krita/dmitry_kazakov.gpg">here</a>. The signatures are <a target="_blank" href="https://download.kde.org/stable/krita/6.0.2.1/">here</a> (filenames ending in .sig).</p>]]></content></entry><entry><title type="html">KStars 3.8.3 Released</title><link href="http://knro.blogspot.com/2026/06/kstars-383-released.html?utm_source=atom_feed" rel="alternate" type="text/html"/><id>tag:blogger.com,1999:blog-719809040809975458.post-8876635772735696347</id><author><name>Jasem Mutlaq</name><uri>http://knro.blogspot.com/search/label/KDE</uri></author><published>2026-06-01T10:36:47+00:00</published><updated>2026-06-01T10:36:47+00:00</updated><content type="html"><![CDATA[<p>KStars v3.8.3 is released on 2026.06.01 for <a target="_blank" href="https://edu.kde.org/kstars/#download">Windows, Linux, and MacOS</a>.</p>

<p>For Linux users, it's highly recommended to use the official <a target="_blank" href="https://flathub.org/apps/org.kde.kstars">KStars Flatpak</a> hosted at Flathub.</p>

<p>This release brings major improvements to the Mount Modeler with artificial horizon filtering and uniform point distribution, significant connection speed optimizations, better guide streaming integration, and enhanced rotator handling. We've also fixed several scheduler and stability issues reported by the community. Here are the highlights:</p>

<h2>Alignment &amp; Mount Modeler</h2>

<div class="separator" style="clear: both;"><a target="_blank" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhf7KdQe1Ljwk3SGltd7i6pltVakd3nYVibOYJqQd-SxEy-P94B-kJO400Ym5KGEJ6Ajx2ATjkJlQzsewOlC7wvmBNhgLqYTIcXbEnK-WsY8rKS-otACO3-zS1Kc5QmUxna4XfBGqf_SdnR2ALSmNTEOwisPaPrrvXRSQyU27mMk4b1AiAZA4yrPZqjDuA/s622/Screenshot_20260601_095219.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" height="320" data-original-height="622" data-original-width="555" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhf7KdQe1Ljwk3SGltd7i6pltVakd3nYVibOYJqQd-SxEy-P94B-kJO400Ym5KGEJ6Ajx2ATjkJlQzsewOlC7wvmBNhgLqYTIcXbEnK-WsY8rKS-otACO3-zS1Kc5QmUxna4XfBGqf_SdnR2ALSmNTEOwisPaPrrvXRSQyU27mMk4b1AiAZA4yrPZqjDuA/s320/Screenshot_20260601_095219.png"/></a></div>
<ul>
<li><b>Christian Kemper</b> added Artificial Horizon filtering to the Mount Modeler wizard, allowing generated alignment points below the active horizon to be automatically filtered out. Candidate coordinate points (both generated AltAz coordinates and snapped catalog objects) are now checked and rejected if they fall into active artificial horizon regions.</li>
<li>New <b>Uniform Distribution</b> mode generates points spread evenly across the visible sky using a Halton sequence, sampling in AltAz space to guarantee every point is above the configured minimum altitude. Points whose declination exceeds +/-80 degrees after conversion are rejected. The Any Stars, Named Stars, and Any Object modes now adopt this distribution internally and snap each generated position to the nearest qualifying object.</li>
<li><b>Auto-sorted wizard output</b>: points added by the wizard are automatically sorted in nearest-neighbour slew order, minimizing total slew distance. Users no longer need to click Sort after running the wizard. Clicking Sort during a run reorders only the remaining unvisited points, leaving completed rows undisturbed.</li>
<li>The wizard now automatically configures the solver for each alignment point. <b>Blind solves are used by default</b> because no pointing model exists yet at the start of a run, so the mount's reported position may be significantly off. The GOTO mode is forced to Sync so the mount is updated after each successful solve. The original settings are saved and restored when the run finishes, is aborted, or is reset.</li>
<li>Refactored point generation logic to eliminate duplicated generation and conversion math in the test suite, improving generator efficiency using a stateful sequence</li>
<li><b>Toni Schriber</b> fixed activation of the rotator button in the align module</li>
<li>Fixed effective focal length calculation to use radians in the DSLR branch</li>
</ul>

<h2>Guide</h2>

<div class="separator" style="clear: both;"><a target="_blank" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgE-xrzFPxP9Wpi0IX4ABMzWxj-d4U9qtayevvGrdpsnSyi2XvHg4Kqmu58OrkoR9yNFfgkno66FgsDvm1KxMDHuTSDZUvvCKlb23c2ARFiRW-VmBymScLdhu6G5ZNRw9vk3s2ZeZmiI0qF07SAfL0H3pyZqNwHzxIMI9RNUrTpvx_vrIK4ZmyLdIsZLCU/s1915/image.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="320" data-original-height="1073" data-original-width="1915" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgE-xrzFPxP9Wpi0IX4ABMzWxj-d4U9qtayevvGrdpsnSyi2XvHg4Kqmu58OrkoR9yNFfgkno66FgsDvm1KxMDHuTSDZUvvCKlb23c2ARFiRW-VmBymScLdhu6G5ZNRw9vk3s2ZeZmiI0qF07SAfL0H3pyZqNwHzxIMI9RNUrTpvx_vrIK4ZmyLdIsZLCU/s320/image.png"/></a></div>
<ul>
<li>Thanks to <b>Andreas Ruthner</b>, guide streaming now correctly handles video stream window interaction. The video window no longer pops up when guide streaming starts, displays frames correctly when opened from the Capture module after a guide session, and now renders 16-bit mono stream frames (previously only 8-bit mono and RGB were handled).</li>
<li><b>Andreas also</b> fixed frame, binning, gain and exposure sync for streaming mode. When starting guide streaming, the module now applies the same frame settings that captureOneFrame() applies for single-frame captures. Previously, streaming mode skipped this setup entirely, causing stale values from other modules to remain active in the driver.</li>
<li>Frame ROI and binning now sync on stream start, live gain updates apply immediately when the user changes the spinner during active streaming, and binning/exposure changes automatically stop and restart the stream</li>
<li>Added 0.001-0.01s exposure values to the guide exposure spinner for fast streaming and daytime testing</li>
</ul>

<h2>Rotator</h2>

<ul>
<li>Fixed several issues with Reversed rotator state not taken into account in various rotator operations</li>
<li>Rotation now aborts if the Position Angle error keeps increasing due perhaps to reversed rotator behavior</li>
</ul>

<h2>Ekos Profiles &amp; Connection</h2>

<ul>
<li>Significantly <b>cut down time to connect to INDI web manager</b> by skipping DNS resolution if we already have an IP address specified for the remote host</li>
<li>Fixed rare crash due to dangling clientManager pointer with test to verify the fix</li>
</ul>

<h2>Capture &amp; Livestacking</h2>
<div class="separator" style="clear: both;"><a target="_blank" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhei_3PI1050SI5H8Xl0yH0yVD32K97cTvX-jp0GUjfrVOgp3qqrzgZ8kcFYvTqpmIF50falEgcCDqxd3W79GGUnk8kmTYMi-jY6ILlpRqOT_K8Ph96CiIWkWefJjnBoB_TfwW3KVJbnscywA-ySx8jRYaG8q9IAe9e1H-C6L9nnNsqe8OR7Tdv3sRV3cU/s2420/Screenshot%202026-04-12%20at%2022.02.39.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="320" data-original-height="1606" data-original-width="2420" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhei_3PI1050SI5H8Xl0yH0yVD32K97cTvX-jp0GUjfrVOgp3qqrzgZ8kcFYvTqpmIF50falEgcCDqxd3W79GGUnk8kmTYMi-jY6ILlpRqOT_K8Ph96CiIWkWefJjnBoB_TfwW3KVJbnscywA-ySx8jRYaG8q9IAe9e1H-C6L9nnNsqe8OR7Tdv3sRV3cU/s320/Screenshot%202026-04-12%20at%2022.02.39.png"/></a></div>
<ul>
<li>Use <b>OpenCV debayering by default</b>. Enforce even ROI selection to ensure bayer boundaries are respected.</li>
<li>Always sync from INDI to overwrite shadow states in the Camera process</li>
<li>Account for STREAM_FULL_DEPTH when streaming</li>
<li><b>John Evans</b> added support for Live Stacker Alt/AZ data via Seestar S30 Pro. It should support other telescopes in Alt/AZ mode.</li>
<li>John added a gradient removal option to post processing in Live Stacker.</li>
</ul>

<h2>FITS Viewer &amp; File Handling</h2>

<ul>
<li>Use standard gzip compress instead of Qt own compression algorithm</li>
<li>Support loading <b>.fits.gz and .xisf.gz</b> in the viewer</li>
</ul>

<h2>Scheduler &amp; Observatory Automation</h2>

<ul>
<li>Fixed scheduler freezes when loading ESL referencing many ESQ files (patch by <b>Tomas</b>). BUGS:519294</li>
<li>Autopark should work over multiple nights now</li>
<li>If observatory is not started, skip shutdown procedure</li>
<li>Fixed issue where post-shutdown script run in infinite loop</li>
<li>Fixed scheduler and capture scripts not running inside flatpak</li>
</ul>

<h2>Optical Trains &amp; DBus API</h2>

<ul>
<li>Added DBus call to set and get Pictures directory</li>
<li>Fixed warning of missing devices when we already selected alternative devices in the optical train</li>
</ul>

<h2>Build &amp; Infrastructure</h2>

<ul>
<li>Use KSUtil to consolidate all calls to external executable so they can run correctly within a flatpak as well</li>
<li>Within flatpak, run the external scripts on the host system since it may require libraries that are only available on the host system</li>
<li><b>Christian Kemper</b> fixed macOS iconutil failure by adding 256px and 512px icon sizes rendered from the existing SVG source, which are required by iconutil on macOS 15 (Sequoia)</li>
<li><b>Wolfgang Reissenberger</b> updated the Dockerfile to be based on installation scripts for all steps: INDI, StellarSolver, PHD2, GSC, openCV. All scripts are built uniformly such that existing packages or installations are preferred. If the package is missing, first installing the appropriate package is tried. If this fails, the package is built from sources</li>
</ul>

<h2>Stability &amp; Bug Fixes</h2>

<ul>
<li>Fixed crash reported in crash-reports.kde.org regarding invalid base device or message text. The check for message text now occurs earlier in the process to protect against this crash.</li>
<li><b>Milhan Kim</b> fixed test deadlock by replacing QTest::mouseClick with animateClick(), which posts the click through the event loop and prevents tests from hanging indefinitely on QDialog::exec() loops</li>
<li>Fixed an issue where frequent temperature updates can cause the dark cover check to run indefinitely</li>
<li><b>Hy Murveit</b> fixed green lines display issue</li>
<li>Fixed solution assignment</li>
<li>Fixed crash and distorted artifacts in video streaming</li>
<li>Replaced all abs and fabs with std::abs for consistency</li>
<li>Modernized signals and slots</li>
</ul>

<p>Many thanks to <b>Christian Kemper</b>, <b>Andreas Ruthner</b>, <b>Toni Schriber</b>, <b>Hy Murveit</b>, <b>John Evans</b>, <b>Milhan Kim</b>, <b>Wolfgang Reissenberger</b>, <b>Tomas</b>, and all others who contributed fixes and improvements to this release! Your work makes KStars better for everyone.</p>

<p>Download KStars v3.8.3 today and enjoy improved mount modeling, faster connections, and more reliable guiding!</p>]]></content></entry><entry><title type="html">What Even is Ocean???</title><link href="https://anditosan.wordpress.com/2026/05/31/what-even-is-ocean/?utm_source=atom_feed" rel="alternate" type="text/html"/><id>http://anditosan.wordpress.com/?p=567</id><author><name>Andres Betts</name><uri>https://anditosan.wordpress.com</uri></author><published>2026-05-31T21:14:15+00:00</published><updated>2026-05-31T21:14:15+00:00</updated><content type="html"><![CDATA[<p class="wp-block-paragraph">Throughout this new process at KDE, I believe I have failed to clearly state what Ocean is and what it means for the future for Plasma user interface and experience.</p>



<p class="wp-block-paragraph">In this post, I will try to shed some light into this and hopefully it&#8217;s easier for new people interested in this project.</p>



<h2 class="wp-block-heading">Why the Confusion?</h2>



<p class="wp-block-paragraph">I think a lot of the confusion primarily comes from my part in showing graphics first and interface later.</p>



<p class="wp-block-paragraph">Graphics tend to attract a lot of attention. So much that it swallows other narratives about what Ocean is. It&#8217;s natural for our users to want to know more and accept that the graphics are the whole story.</p>



<p class="wp-block-paragraph">Spoiler&#8230; it&#8217;s not just graphics <img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<h2 class="wp-block-heading">How Should We Think of Ocean?</h2>



<p class="wp-block-paragraph">Ocean is many things, let me list them out:</p>



<ul class="wp-block-list">
<li>Ocean Design System</li>



<li>Ocean Widget Style</li>



<li>Ocean Font</li>



<li>Ocean Icons(Icon Pack)</li>



<li>Ocean Plasma Style</li>



<li>Ocean Color Scheme<br></li>
</ul>



<p class="wp-block-paragraph">I think this is another reason why there is confusion out there. I have given a few talks on this as well, but I also see how it&#8217;s confusing.</p>



<p class="wp-block-paragraph">In simple terms, <strong>Ocean is a new graphic design platform for the Plasma Desktop.</strong></p>



<p class="wp-block-paragraph">This new platform aims, first, to organize the way graphic design for Plasma is achieved. As you may know, designers like me, tend to be pretty creative and unbound. We give free range to creativity and we like to break norms.</p>



<p class="wp-block-paragraph">This is a problem, because if we want to make graphics for a computer system, such as Plasma, we need to organize our creativity in way that developers can understand.</p>



<p class="wp-block-paragraph">For this reason, in recent years, a modern way to organize creativity for computers was invented by applications like Sketch, Figma, and Adobe XD.</p>



<p class="wp-block-paragraph">In these applications SVG is the graphic of choice. SVG is a set of coordinates that tell the system how to draw shapes on the screen. It&#8217;s versatile enough that SVG code can be read and tweaked by designers and developers alike. It can be stretched without losing quality, yadah, yadah, yadah&#8230; You know the rest.</p>



<p class="wp-block-paragraph">This new wave of applications work with SVG as collections or repeatable graphics interconnected with each other. They use systems of &#8220;Components&#8221; and &#8220;Variants&#8221;. Given that computer UI is generally very repetitive, these components save designers time in building more copies of the same graphic with only slight modifications, let&#8217;s say for states such as default, hover, selected, etc.</p>



<p class="wp-block-paragraph">These design systems help bring the world of UI development into the graphic design applications. Many developers are very used to working with graphical components, but only until recently were designers able to work with them in a flexible graphical way.</p>



<p class="wp-block-paragraph">KDE Plasma has never had a system like this to organize design around the UI. Because of this, designers haven&#8217;t really made a ton of inroads into the system and this limits users in the way that we can deliver design for them. In essence, we designers, were never organized enough to provide a proper, development-ready, graphic design that could be used for Plasma.</p>



<p class="wp-block-paragraph"><strong>This is where Ocean comes in. We took up the idea of creating a design system for Plasma that accounts for most, if not all, of the necessary graphical building blocks that developers could use, that preserve consistency between graphics and code, and deliver a cohesive experience for users.</strong></p>



<p class="wp-block-paragraph">By doing this, our hope is that graphic designers that are used to working with design systems can join our team and help us go even further.</p>



<p class="wp-block-paragraph">On the developer side, a design system is a much more clear way of communicating component organization. Developers can more easily understand how buttons are made, what colors are used, what typography levels are on screen, etc. We do this by creating a series of graphic tokens that describe their use in more detail.</p>



<p class="wp-block-paragraph">CSS is also involved, even though we may not support it, applications like Figma and Penpot have the ability to represent component code in CSS terms that others can read. In addition to these tokens, we create a series of foundational tokens where we declare our colors, typography, shadow levels and composition, blur levels, etc. Everything that users would need to see on the screen.</p>



<h2 class="wp-block-heading">Ok, But What About the Graphics You Keep Showing?</h2>



<p class="wp-block-paragraph">During the first part of creating a design system, we noticed something pretty meaningful. Breeze and other previous themes, while they work, they don&#8217;t have any reflection in a design system. Therefore, designers have a hard time completing the puzzle for a good design system that accounts for Breeze. With any attempt, we would be completing so much of a missing puzzle that we would create something new anyway, just to replicate a style in Penpot, for example.</p>



<p class="wp-block-paragraph">Because of this, we decided to create a new style called Ocean and any style is composed of many parts, listed above.</p>



<p class="wp-block-paragraph">Because of this, we created:</p>



<ul class="wp-block-list">
<li>Ocean Icons (In progress)</li>



<li>Ocean Plasma Style (Complete in Penpot)</li>



<li>Ocean Font (In progress)</li>



<li>Ocean Style (Complete in Penpot)</li>



<li>Ocean Color Scheme (Complete-ish, needs more testing)</li>
</ul>



<p class="wp-block-paragraph">And one little important detail, it doesn&#8217;t matter so much how Ocean style looks. Why?</p>



<p class="wp-block-paragraph">Because through a design system for graphic designers, we have the ability to distribute our system for free to anyone that wants to use it. Graphic designers can tweak the design tokens that Plasma can understand and by doing that, they can more easily build a Plasma Style on their own in a way that is cohesive, thoughtful, complete. We then give those elements to the developer team that would help us execute the design. Hence why I say that Ocean is a design platform.</p>



<p class="wp-block-paragraph">Still, we created a new style in graphical form and we are working with the developer team to execute this style, using the design system tokens and components, in the same way that the designer intended.</p>



<p class="wp-block-paragraph">Our current focus is on icons, particularly application icons. This is just one of the many parts that compose Ocean design. A few months ago we completed a round of design that created monochrome Ocean icons. These icons are functional in nature and much easier to put together. However, we knew that app icons take longer because they are colorful and require lots of time and styling.</p>



<h3 class="wp-block-heading">Icons</h3>



<p class="wp-block-paragraph">My recent posts showcase the progress on these icons. To be more clear about how we are doing this icon design element, here is a process:</p>



<ol class="wp-block-list">
<li><strong>Formalize the visual system</strong>
<ol class="wp-block-list">
<li>Define strict rules for perspective, lighting, shadows, gloss, depth, materials, and color usage so all icons feel like one coherent family.</li>
</ol>
</li>



<li><strong>Strengthen semantic readability</strong>
<ol class="wp-block-list">
<li>Ensure each icon immediately communicates the app’s purpose, especially at small sizes. Avoid abstraction that weakens recognition.</li>
</ol>
</li>



<li><strong>Improve visual hierarchy</strong>
<ol class="wp-block-list">
<li><strong><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-bright-blue-color">Reduce competing elements and make each icon have one clear focal point with cleaner foreground/background separation.</mark></strong></li>
</ol>
</li>



<li><strong>Tighten color discipline</strong>
<ol class="wp-block-list">
<li>Use fewer competing colors, control saturation more carefully, and keep palettes more consistent across the set.</li>
</ol>
</li>



<li><strong>Be more selective with stylistic quirks</strong>
<ol class="wp-block-list">
<li>Avoid asymmetry, misalignment, or unusual perspectives unless they clearly improve recognition or composition.</li>
</ol>
</li>



<li><strong>Standardize depth and rendering behavior</strong>
<ol class="wp-block-list">
<li>Keep extrusion, internal shadows, dimensionality, and lighting logic consistent across all icons.</li>
</ol>
</li>



<li><strong>Shift from per-icon experimentation to system-level art direction</strong>
<ol class="wp-block-list">
<li>Prioritize cohesion and consistency over making every icon individually novel or visually surprising.</li>
</ol>
</li>
</ol>



<p class="wp-block-paragraph">&#8230;and we are in step 3 of the process for these icons. We are moving them from rough mockups and sketches into more formalized shapes. At this stage, you should not expect a lot of color or shape cohesion. After this pass comes a time of definition. We restrict our colors even more, simplify shapes for impact, remove or redo icons, etc. It&#8217;s a major review. We expect to do this along with the community.</p>



<p class="wp-block-paragraph">We also decided to not create icons for third parties. This makes the amount of app icons to make much smaller. This also makes it easier to think about what our icons should look like going forward.</p>



<p class="wp-block-paragraph">All in all, Ocean is a platform composed of many parts. Our current design focus is set on completing the icon pack while the rest of the style is preparing for development.</p>



<p class="wp-block-paragraph">I hope this makes it easier to understand and I am happy to answer any questions.</p>]]></content></entry><entry><title type="html">No Such Thing as a Free Lunch</title><link href="https://quickfix.es/2026/05/no-such-thing-as-a-free-lunch/?utm_source=atom_feed" rel="alternate" type="text/html"/><id>https://quickfix.es/?p=9867</id><author><name>Paul Brown</name><uri>https://quickfix.es/author/paul</uri></author><published>2026-05-31T17:35:53+00:00</published><updated>2026-05-31T17:35:53+00:00</updated><content type="html">Joe Bloggs sat himself in front of his brand new laptop, pressed the On button and waited.</content></entry><entry><title type="html">This month in KDE Linux: May 2026</title><link href="https://pointieststick.com/2026/05/31/this-month-in-kde-linux-may-2026/?utm_source=atom_feed" rel="alternate" type="text/html"/><id>http://pointieststick.com/?p=29002</id><author><name>Nate Graham</name><uri>https://pointieststick.com</uri></author><published>2026-05-31T16:16:56+00:00</published><updated>2026-05-31T16:16:56+00:00</updated><content type="html"><![CDATA[<div class="wp-block-image">
<figure class="alignleft size-full is-resized"><img data-attachment-id="24549" data-permalink="https://pointieststick.com/2025/10/25/kde-linux-deep-dive-package-management-is-amazing-which-is-why-we-dont-include-it/kde-linux-logo/" data-orig-file="https://pointieststick.com/wp-content/uploads/2025/10/kde-linux-logo.png" data-orig-size="256,256" data-comments-opened="1" data-image-meta="&#123;&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Kde-linux-logo" data-image-description="" data-image-caption="" data-large-file="https://pointieststick.com/wp-content/uploads/2025/10/kde-linux-logo.png?w=256" src="https://pointieststick.com/wp-content/uploads/2025/10/kde-linux-logo.png" alt="" class="wp-image-24549" style="width:217px;height:auto" /></figure>
</div>


<p class="wp-block-paragraph">Welcome to another edition of “This month in KDE Linux” — KDE&#8217;s <a target="_blank" href="https://linux.kde.org">in-progress operating system</a>.</p>



<h2 class="wp-block-heading">Infrastructure</h2>



<p class="wp-block-paragraph">This month we completed a major infrastructure project. Previously, our build process was generating Arch packages for KDE software and having <code>mkosi</code> install them; Hadi Chokr <a target="_blank" href="https://invent.kde.org/kde-linux/kde-linux-packages/-/merge_requests/94">ported this to use KDE&#8217;s <code>kde-builder</code> tool</a> to compile all KDE software directly. This change brings three benefits:</p>



<ul class="wp-block-list">
<li>Better alignment with how developers compile KDE software themselves.</li>



<li>Improves distro-agnosticism, so we can more easily get non-KDE software from a different source in the future should the need arise.</li>



<li>Substantially faster by using a more effective caching system.</li>
</ul>



<h2 class="wp-block-heading">QA &amp; testing</h2>



<p class="wp-block-paragraph">Another major focus this month was on improving KDE Linux&#8217;s automatic QA story. The project already has a basic &#8220;does it boot to the desktop?&#8221; test for every build, but we can do much better.</p>



<p class="wp-block-paragraph">To that effect, Bhushan Shah and Thomas Duckworth worked on finishing up <a target="_blank" href="https://invent.kde.org/kde-linux/os-autoinst-distri-kdelinux">the OpenQA-based testing system</a> prototyped by Kangwei Zhu last year. Once fully integrated, this promises to hugely improve our ability to catch bad builds before they&#8217;re released, and we can update it over time to catch even more failure conditions.</p>



<p class="wp-block-paragraph">Harald Sitter also <a target="_blank" href="https://invent.kde.org/kde-linux/kde-linux/-/merge_requests/533">added a test</a> using the existing system to make sure we don&#8217;t ship an image with broken file capabilities. We did ship one bad build that includes a regression here, so this new test ensures that it won&#8217;t happen again.</p>



<h2 class="wp-block-heading">Security</h2>



<p class="wp-block-paragraph">After multiple security issues were discovered in the upstream Linux kernel last month, a few of us (Adrian Vovk, Hadi Chokr, and I) did a mini-audit of insecure and unused software included in KDE Linux. This resulted in a variety of positive changes:</p>



<ul class="wp-block-list">
<li><a target="_blank" href="https://invent.kde.org/kde-linux/kde-linux/-/merge_requests/513">Returning to the vanilla kernel</a>; it turned out the Zen kernel no longer offered very much beyond the config tweaks we had already made anyway.</li>



<li><a target="_blank" href="https://invent.kde.org/kde-linux/kde-linux/-/merge_requests/507">Deleting the insecure and unused alf_alg kernel modules</a>.</li>



<li>Replacing the <a target="_blank" href="https://invent.kde.org/kde-linux/kde-linux/-/merge_requests/514">NTFS</a> and <a target="_blank" href="https://invent.kde.org/kde-linux/kde-linux/-/merge_requests/532">CDemu</a> kernel modules with their userspace FUSE versions.</li>



<li>Removing the out-of-tree <a target="_blank" href="https://invent.kde.org/kde-linux/kde-linux/-/merge_requests/520">OpenRazer</a> and <a target="_blank" href="https://invent.kde.org/kde-linux/kde-linux/-/merge_requests/530">APFS</a> kernel modules. It was nice to have these pre-installed, but we realized they would eventually cause us to fail secure boot review, and we should instead be working towards upstream solutions. APFS support can work in userspace anyway via its FUSE driver. It looks like it <a target="_blank" href="https://github.com/sgan81/apfs-fuse">might be abandoned</a>, though. So there may be no good option; we&#8217;ll see.</li>



<li>Removing a bunch of unused and unnecessary packages: <a target="_blank" href="https://invent.kde.org/kde-linux/kde-linux/-/merge_requests/512">acpi_call</a>, <a target="_blank" href="https://invent.kde.org/kde-linux/kde-linux/-/merge_requests/511">busybox</a>, <a target="_blank" href="https://invent.kde.org/kde-linux/kde-linux/-/merge_requests/515">cryfs</a>,<a target="_blank" href="https://invent.kde.org/kde-linux/kde-linux/-/merge_requests/515"> encfs</a>, <a target="_blank" href="https://invent.kde.org/kde-linux/kde-linux/-/merge_requests/520">hplip</a>, <a target="_blank" href="https://invent.kde.org/kde-linux/kde-linux/-/merge_requests/531">v4l2loopback-utils</a> (yes it is indeed unneeded; <a target="_blank" href="https://linux.kde.org/docs/virtual-cameras/">you can do everything it does in userspace</a>), and <a target="_blank" href="https://invent.kde.org/kde-linux/kde-linux/-/merge_requests/516">vpl-gpu-rt</a>.</li>



<li><a target="_blank" href="https://invent.kde.org/kde-linux/kde-linux/-/merge_requests/535">Removing fuse2</a> as it&#8217;s unmaintained and known to be insecure. This will unfortunately have the effect of breaking some old AppImage apps. If you encounter any, please report that as a bug to the app&#8217;s authors/packagers; multiple other OSs have already removed fuse2, so apps really need to update to fuse3 ASAP.</li>



<li>Removing <a target="_blank" href="https://invent.kde.org/kde-linux/kde-linux-packages/-/merge_requests/96">fenrir</a>, which it turns out was embarrassingly not used at all for various technical reasons. This allowed us to <a target="_blank" href="https://invent.kde.org/kde-linux/kde-linux/-/work_items/225">completely remove our usage of the AUR</a>, which had been a source of infrastructure instability in the past.</li>
</ul>



<h2 class="wp-block-heading">Pre-installed apps</h2>



<p class="wp-block-paragraph">I <a target="_blank" href="https://invent.kde.org/kde-linux/kde-linux/-/merge_requests/493">implemented a service</a> to install any new pre-installed Flatpak apps on people&#8217;s existing systems. It ignores any apps you&#8217;ve previously uninstalled manually.</p>



<p class="wp-block-paragraph">Speaking of new Flatpak apps, I <a target="_blank" href="https://invent.kde.org/kde-linux/kde-linux/-/merge_requests/504">replaced KWalletManager</a> and its configuration page in System Settings with the new <a target="_blank" href="https://apps.kde.org/keepsecret/">KeepSecret</a> app, packaged using Flatpak.</p>



<p class="wp-block-paragraph">I also <a target="_blank" href="https://invent.kde.org/kde-linux/kde-linux/-/work_items/617">updated Ark&#8217;s nightly Flatpak packaging</a> to include 7-zip support and generally synchronize it with <a target="_blank" href="https://flathub.org/en/apps/org.kde.ark">the Flathub version</a>.</p>



<h2 class="wp-block-heading">Documentation</h2>



<p class="wp-block-paragraph">I migrated the project&#8217;s website and documentation to <a target="_blank" href="https://linux.kde.org/">https://linux.kde.org</a>, where everything lives now. I also added a few more pages.</p>



<h2 class="wp-block-heading">Grab bag</h2>



<p class="wp-block-paragraph">Hadi Chokr set up <code>/opt/local</code> for being <a target="_blank" href="https://invent.kde.org/kde-linux/kde-linux/-/merge_requests/419">a supported location for installing compiled binaries</a>. This is because the usual <code>/usr/local</code> location is read-only on KDE Linux. This is now <a target="_blank" href="https://linux.kde.org/docs/more-software/#compile-it-yourself">documented here</a>.</p>



<p class="wp-block-paragraph">João Pedro Silva Sousa <a target="_blank" href="https://invent.kde.org/kde-linux/kde-linux/-/merge_requests/527">fixed a bug</a> that could make installation fail if there happened to be two KDE Linux live USB disks plugged in at once.</p>



<hr class="wp-block-separator has-alpha-channel-opacity" />



<p class="wp-block-paragraph">And that wraps up May! There&#8217;s still lots to do, so if you&#8217;re a fan of the project, please help out:</p>



<ul class="wp-block-list">
<li><strong>User support:</strong> <a target="_blank" href="https://discuss.kde.org/tag/kde-linux/450">help support people on discuss.kde.org using KDE Linux</a>.</li>



<li><strong>Issue reporting:</strong> <a target="_blank" href="https://kde.org/linux/docs/install/">install KDE Linux</a> and <a target="_blank" href="https://invent.kde.org/kde-linux/kde-linux/-/issues/">report issues</a>.</li>



<li><strong>Documentation:</strong> <a target="_blank" href="https://linux.kde.org/docs/">improve docs</a>; submit merge requests <a target="_blank" href="https://invent.kde.org/websites/linux-kde-org/-/merge_requests/">here</a>.</li>



<li><strong>Flatpak:</strong> fix <a target="_blank" href="https://invent.kde.org/kde-linux/kde-linux/-/issues/71">packaging or code issues in Flatpak-packaged apps</a>.</li>



<li><strong>OS development:</strong> <a target="_blank" href="https://linux.kde.org/docs/kde-linux-dev/">help build KDE Linux!</a> There&#8217;s <a target="_blank" href="https://invent.kde.org/kde-linux/kde-linux/-/work_items/?sort=created_date&amp;state=opened&amp;milestone_title=Beta&amp;first_page_size=100">plenty to do</a>.</li>



<li><strong>Kapsule development:</strong> <a target="_blank" href="https://invent.kde.org/kde-linux/kde-linux/-/work_items/584">work on our Incus-based Kapsule system</a>, which is integral to the &#8220;expansion by experts&#8221; story.</li>
</ul>]]></content></entry><entry><title type="html">Week 1 : Tabs are in</title><link href="https://yashbavadiya.bearblog.dev/week-1-update/?utm_source=atom_feed" rel="alternate" type="text/html"/><id>https://yashbavadiya.bearblog.dev/week-1-update/</id><author><name>Yash Bavadiya</name><uri>https://yashbavadiya.bearblog.dev</uri></author><published>2026-05-31T13:11:00+00:00</published><updated>2026-05-31T13:12:45+00:00</updated><content type="html"><![CDATA[<p>This is my first weekly update as a Google Summer of Code 2026 student
working with KDE on Kdenlive.</p>
<p>My project is "Improving Effect Widgets for Kdenlive." The first widget
I'm working on is the Curves Widget, specifically adding per-channel tab support to the avfilter.curves effect.</p>
<hr />
<p>The problem: Kdenlive's current Curves effect uses a dropdown to switch
between channels (R, G, B). Switching channels wipes the previous curve there's no memory per channel. So if you tune the red channel and switch to green, your red curve is gone. You'd have to stack multiple instances of the effect to adjust more than one channel.</p>
<p>The fix: replace the dropdown with tabs (All, R, G, B), each storing its own curve independently, all serialized together into avfilter.curves format.</p>
<hr />
<p>This week I went from zero code to functional tabs in Kdenlive.</p>
<p>What went in:</p>
<ul>
<li>Added <code>m_channelData</code> (<code>std::map&lt;CurveModes, QString&gt;</code>) to store
per-channel curve state and <code>m_tabBar</code> (<code>QTabBar</code>) to CurveParamWidget</li>
<li>Implemented <code>slotTabChanged</code> -> saves the current channel's curve before
switching, loads the next channel's curve or resets to straight line</li>
<li>Implemented <code>serializeAllChannels</code> -> builds the full avfilter.curves
format from all channel data</li>
<li>Created <code>avfilter_curves.xml</code> -> new effect definition with per-channel
parameter support</li>
<li>Fixed avfilter.curves being silently excluded from Kdenlive's effects list</li>
</ul>
<p>R, G, B tabs are working correctly and affecting the video output. The
"All" tab (master curve for all channels) is still being worked on.</p>
<p>Week 2 starts tomorrow.</p>]]></content></entry><entry><title type="html"></title><link href="https://tcanabrava.github.io/about/?utm_source=atom_feed" rel="alternate" type="text/html"/><id>https://tcanabrava.github.io/about/</id><author><name>Tomaz Canabrava</name><uri>https://tcanabrava.github.io</uri></author><published>2026-05-31T00:00:00+00:00</published><updated>2026-05-31T00:00:00+00:00</updated><content type="html"><![CDATA[<p>I'm Tomaz Canabrava, a developer with over 20 years of experience with compiled and non compiled languages.
Having worked for projects in large and small companies, I have a broad understanding of the software development process.</p>
<p>My strong focus is in Rust, a systems programming language that I use to build high performance, reliable software.
My previous focus was in C++ with Qt.</p>
<p>You can see the work I do on my <a rel="external" target="_blank" href="https://github.com/tcanabrava">GitHub</a>, and at <a rel="external" target="_blank" href="https://invent.kde.org/tcanabrava">KDE</a></p>]]></content></entry><entry><title type="html">Shanghai Report: Collaboration Talks with OpenKylin</title><link href="https://tcanabrava.github.io/openkylin-shanghai/?utm_source=atom_feed" rel="alternate" type="text/html"/><id>https://tcanabrava.github.io/openkylin-shanghai/</id><author><name>Tomaz Canabrava</name><uri>https://tcanabrava.github.io</uri></author><published>2026-05-31T00:00:00+00:00</published><updated>2026-05-31T00:00:00+00:00</updated><content type="html">&lt;p>Back in March at FOSSASIA in Bangkok, I got invited to visit the OpenKylin team in Shanghai. I mentioned it briefly at the end of that report, and here we are — the follow-up post.&lt;/p></content></entry><entry><title type="html">Some progress on Oxygens icons and more…</title><link href="https://nuno-icons.com/2026/05/30/some-progress-on-oxygens-icons-and-more/?utm_source=atom_feed" rel="alternate" type="text/html"/><id>https://nuno-icons.com/?p=186</id><author><name>Nuno Pinheiro</name><uri>https://nuno-icons.com/</uri></author><published>2026-05-30T11:27:06+00:00</published><updated>2026-05-30T11:27:06+00:00</updated><content type="html"><![CDATA[<div pagelayer-id="xbi2196" class="p-xbi2196 pagelayer-post_props">
</div>

<div pagelayer-id="ko46698" class="p-ko46698 pagelayer-row pagelayer-row-stretch-auto pagelayer-height-default">

			
			
			
			
			<div class="pagelayer-row-holder pagelayer-row pagelayer-auto pagelayer-width-auto">
<div pagelayer-id="6cm1286" class="p-6cm1286 pagelayer-col">

				
				
				
				<div class="pagelayer-col-holder">

<p class="wp-block-paragraph">So... progress continues on Oxygen <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> </p>


<div pagelayer-id="8kz5067" class="p-8kz5067 pagelayer-space">
<div class="pagelayer-space-holder"></div></div>


<p class="wp-block-paragraph">Over the last few weeks me and Pravin Kumar have been filling in some of the gaps in the icon set. There are still quite a few missing icons around the place, but slowly Oxygen is becoming a bit more complete again.</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="837" height="1024" src="https://nuno-icons.com/wp-content/uploads/2026/05/rect63-837x1024.png" alt="" class="wp-image-190" srcset="https://nuno-icons.com/wp-content/uploads/2026/05/rect63-837x1024.png 837w, https://nuno-icons.com/wp-content/uploads/2026/05/rect63-245x300.png 245w, https://nuno-icons.com/wp-content/uploads/2026/05/rect63-768x940.png 768w, https://nuno-icons.com/wp-content/uploads/2026/05/rect63.png 850w" sizes="(max-width: 837px) 100vw, 837px" /></figure>



<p class="wp-block-paragraph">Its fun revisiting this old project after all these years. Sometimes I find myself looking at old icons wondering what younger me was thinking. Sometimes the answer is "not much"or, the answer is "way too much"..</p>


<div pagelayer-id="gvx4343" class="p-gvx4343 pagelayer-space">
<div class="pagelayer-space-holder"></div></div>


<p class="wp-block-paragraph">Either way, Oxygen continues to grow.</p>



<p class="wp-block-paragraph">Talking about fun...</p>



<p class="wp-block-paragraph">I've also been spending some time investigating QML styling and themeing. And in this case not because i have immediate plans do this, but mostly because i am curious about what is possible and where the limitations actually are.</p>


<div pagelayer-id="qfs9505" class="p-qfs9505 pagelayer-space">
<div class="pagelayer-space-holder"></div></div>


<p class="wp-block-paragraph">One thing I learned over the years is that there is often a large gap between what a toolkit "officially" allows and what a sufficiently stubborn designer can get away with <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p class="wp-block-paragraph">Some of the ideas are probably completely unreasonable. Some not so much </p>



<p class="wp-block-paragraph">Which usually means they are worth exploring.</p>



<p class="wp-block-paragraph">I've been experimenting with possible directions for O² and thinking about how a future visual language could work.  And this that im doing now is more of an exploration on the range rgther than what it actualy look slike   </p>


<div pagelayer-id="lcl5151" class="p-lcl5151 pagelayer-space">
<div class="pagelayer-space-holder"></div></div>


<p class="wp-block-paragraph">Nothing concrete yet.</p>


<div pagelayer-id="n3w2561" class="p-n3w2561 pagelayer-space">
<div class="pagelayer-space-holder"></div></div>


<p class="wp-block-paragraph">Mostly experiments.<br>Questions.<br>Terrible ideas.<br>Possibly a few good ones hidden among them.</p>


<div pagelayer-id="pvh8330" class="p-pvh8330 pagelayer-space">
<div class="pagelayer-space-holder"></div></div>


<p class="wp-block-paragraph">If things continue to move forward we (via <a target="_blank" href="https://www.kdab.com/" data-type="link" data-id="https://www.kdab.com/">KDAB</a>) probably make a video showing some of these investigations, experiments and concepts. Sometimes its easier to explain visual ideas by showing them instead of writing walls of text about them.</p>


<div pagelayer-id="qjr8187" class="p-qjr8187 pagelayer-space">
<div class="pagelayer-space-holder"></div></div>


<p class="wp-block-paragraph">So stay tuned <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<figure class="wp-block-image size-full"><img decoding="async" width="850" height="636" src="https://nuno-icons.com/wp-content/uploads/2026/05/Screenshot_20260530_124927.png" alt="" class="wp-image-205" srcset="https://nuno-icons.com/wp-content/uploads/2026/05/Screenshot_20260530_124927.png 850w, https://nuno-icons.com/wp-content/uploads/2026/05/Screenshot_20260530_124927-300x224.png 300w, https://nuno-icons.com/wp-content/uploads/2026/05/Screenshot_20260530_124927-768x575.png 768w" sizes="(max-width: 850px) 100vw, 850px" /></figure>



<p class="wp-block-paragraph">And as always... if you are using Oxygen, thank you.</p>


<div pagelayer-id="qj68685" class="p-qj68685 pagelayer-space">
<div class="pagelayer-space-holder"></div></div>


<p class="wp-block-paragraph">Its nice seeing that this old project still has a few new stories to tell.</p>



<p class="wp-block-paragraph"></p>

</div></div>
</div></div>


<div class="wp-block-comments">
<p class="wp-block-paragraph"></p>
</div>]]></content></entry><entry><title type="html">April/May in KDE Itinerary</title><link href="https://www.volkerkrause.eu/2026/05/30/kde-itinerary-april-may-2026.html?utm_source=atom_feed" rel="alternate" type="text/html"/><id>https://www.volkerkrause.eu/2026/05/30/kde-itinerary-april-may-2026</id><author><name>Volker Krause</name><uri>https://www.volkerkrause.eu/</uri></author><published>2026-05-30T08:00:00+00:00</published><updated>2026-05-30T08:00:00+00:00</updated><content type="html"><![CDATA[<p>Since the <a href="//www.volkerkrause.eu/2026/03/28/kde-itinerary-february-march-2026.html">previous report</a>
two month ago, <a target="_blank" href="https://apps.kde.org/itinerary">Itinerary</a> got support for booking URLs, a newer foundation
for its Android packages, and more detailed shared vehicle information.</p>

<h3 id="new-features">New Features</h3>

<h4 id="booking-urls">Booking URLs</h4>

<p>Some public transport services provide booking deep links together with their journey search results.
That is, you can directly book the journey you have just searched in Itinerary or KTrip on the provider website, without having
to search for the same journey again there. Both apps provide that option when available now.</p>

<figure>
  
  <img src="https://www.volkerkrause.eu/assets/posts/232/kde-itinerary-journey-booking-action.png" alt="Screenshot of Itinerary showing a result of a train connection search with a booking action." loading="lazy" />
  
  <figcaption>Booking link on a train journey.</figcaption>
</figure>

<h3 id="infrastructure-work">Infrastructure Work</h3>

<h4 id="gbfs-v3-support">GBFS v3 support</h4>

<p>The handling of shared vehicles in <a target="_blank" href="https://commits.kde.org/kpublictransport">KPublicTransport</a> recevied a rework to properly
support the much more detailed modelling of vehicle types in newer <a target="_blank" href="https://gbfs.org">GBFS</a> versions. Since the early
versions of GBFS this has evolved from a simple enum to a complex type describing all kinds of properties of the
available vehicles.</p>

<p>As practically all systems supporting rental vehicles for first/last mile routing (<a target="_blank" href="https://opentripplanner.org">OpenTripPlanner</a>,
<a target="_blank" href="https://motis-project.org">MOTIS</a>, etc)
are based on the GBFS datamodel, being limited to an oversimplified set of fixed types was increasingly getting into the
way and prevented using newer features of those backends.</p>

<h4 id="qt-611-upgrade-for-android">Qt 6.11 upgrade for Android</h4>

<p>There has been a long overdue update of the Qt version used for KDE’s Android apps. As noted previously this unfortunately
means losing support for Android versions 8 and below. ARM32 builds have been discontinued in the process as well,
assuming that devices capable of running Android 9 or higher would also be able to run ARM64 code.</p>

<p>There have also been various other fixes related to the Android platform integration:</p>
<ul>
  <li>Notification interaction works properly again.</li>
  <li>Notification icons are now handled more in line of what Android does.</li>
  <li>Several issues related to safe area margins (ie. rounded screen corners and display cutouts) in
<a target="_blank" href="https://api.kde.org/kirigami-index.html">Kirigami</a> haven been fixed.</li>
</ul>

<p>All of this also benefits all of KDE’s Android apps.</p>

<h4 id="iata-ssim-flight-schedules">IATA SSIM flight schedules</h4>

<p>Air France/KLM published their current <a target="_blank" href="https://transport.data.gouv.fr/datasets/programme-des-vols-air-france">flight schedule</a>
as open data, in <a target="_blank" href="https://en.wikipedia.org/wiki/Standard_Schedules_Information_Manual">IATA SSIM</a> format.
A <a target="_blank" href="https://github.com/public-transport/ssim-converter">newly built tool</a> allows to convert
that into a <a target="_blank" href="https://gtfs.org">GTFS</a> feed that <a target="_blank" href="https://transitous.org">Transitous</a> can then consume,
using <a target="_blank" href="https://wikidata.org">Wikidata</a> to provide translated airport and airline information.</p>

<p>Flight data isn’t new in Transitous, but this dataset is particularly interesting given its size. It’s not limited to Air France/KLM themselves,
but also includes all (?) flights from their partner airlines. In total it’s nearly 400.000 flight patterns to almost 1.000 different airports.
That essentially connects all currently disconnected public transport “islands” we have in Transitous.</p>

<figure>
  
  <img src="https://www.volkerkrause.eu/assets/posts/232/transitous-ber-blr-flight.jpg" alt="Screenshot of MOTIS' stop view with flight options from Berlin to Bengaluru displayed." loading="lazy" />
  
  <figcaption>Flight from BER to BLR.</figcaption>
</figure>

<p>The good news is that it’s holding up to that without a loss in performance, and door-to-door routing
from e.g. Berlin to Tokyo actually works.</p>

<p>However, there’s a couple of reasons this isn’t rolled out yet and only available on the <a target="_blank" href="https://test.motis-project.org/">test instance</a>:</p>
<ul>
  <li>As with the already existing flight data, connectivity between flights and ground transportation is tricky.
I’ve <a href="//www.volkerkrause.eu/2020/05/02/kde-itinerary-airport-locations.html">written about this</a>
years ago already, applying the same approach helps here as well. Additionally,
we get terminal information in the SSIM data in some cases, which further improves this, especially at very large airports.</li>
  <li>We have no way yet to model check-in times in MOTIS, resulting in unrealistic transfer times from ground transportation to flights.
It’s on the roadmap there, and also needed for services like Eurostar, or to model security checks at e.g. the Barcelona Sants station.</li>
  <li>As a side-effect of that the router also finds clever tricks to bypass minimum transfer times between flights.</li>
  <li>Inter-terminal transfers don’t seem to work reliably, probably because <a target="_blank" href="https://openstreetmap.org">OSM</a> routing doesn’t yield viable connections
there. Unlike for railway stations in many countries, airport internals are unfortunately rarely mapped in detail in OSM yet.</li>
</ul>

<p>For more details see also the discussion in <a target="_blank" href="https://github.com/public-transport/transitous/pull/2090">PR 2090</a>.</p>

<h3 id="events">Events</h3>

<p>Registration for this year’s <a target="_blank" href="https://open-transport.org">Open Transport Community Conference</a> in October in Bern, Switzerland, opened
a few days ago. That’s as close as it gets to an Itinerary conference. If you are interested in attending
better sign up quickly, many tickets were already gone after the first day.</p>

<h3 id="fixes--improvements">Fixes &amp; Improvements</h3>

<h4 id="travel-document-extractor">Travel document extractor</h4>

<ul>
  <li>Added or improved travel document extractors for Condor and monbus.es.</li>
</ul>

<p>This has been made possible thanks to your travel document donations!</p>

<h4 id="public-transport-data">Public transport data</h4>

<ul>
  <li>Improved parsing of trip and route names in <a target="_blank" href="https://opentripplanner.org">OpenTripPlanner</a> responses (bug 519906).</li>
  <li>Adapted to Deutsche Bahn journey query API changes, fixing missing departure and arrival times there.</li>
  <li>Added support for wheelchair accessibility information from <a target="_blank" href="https://motis-project.org">MOTIS</a>.</li>
  <li>Added support for querying free-floating rental vehicles from Entur.</li>
  <li>Removed accidental apostrophe in front of flags in the country selector.</li>
</ul>

<p>All of this also directly benefits <a target="_blank" href="https://apps.kde.org/ktrip">KTrip</a>.</p>

<h4 id="itinerary-app">Itinerary app</h4>

<ul>
  <li>Fixed Itinerary showing an empty page when opening a file with it on a fresh installation.</li>
  <li>Fixed barcode scan mode on Android.</li>
  <li>Added support for Matrix SSO login.</li>
  <li>Fixed arrival platform display in journey search results.</li>
  <li>Show calendar icons/colors when available.</li>
  <li>Don’t load all reservation data when initializing the grouped statistics model.
This improved performance of the first access to the My Data page.</li>
  <li>Be slightly more clever when to clear seat reservation from alternatives.</li>
</ul>

<h3 id="how-you-can-help">How you can help</h3>

<p>Feedback and travel document samples are very much welcome, as are all other forms of contributions.
Feel free to join us in the <a target="_blank" href="https://matrix.to/#/#itinerary:kde.org">KDE Itinerary Matrix channel</a>.</p>]]></content></entry><entry><title type="html">This Week in Plasma: 6.7 Beta 2 Released</title><link href="https://blogs.kde.org/2026/05/30/this-week-in-plasma-6.7-beta-2-released/?utm_source=atom_feed" rel="alternate" type="text/html"/><id>https://blogs.kde.org/2026/05/30/this-week-in-plasma-6.7-beta-2-released/</id><author><name>Nate Graham</name><uri>https://blogs.kde.org/authors/nategraham/</uri></author><published>2026-05-30T00:00:01+00:00</published><updated>2026-05-30T00:00:01+00:00</updated><content type="html"><![CDATA[<!-- Example wording for a change, MR version. (Developer Name, [repo-name MR #xxx](https://invent.kde.org/plasma/repo-name/-/merge_requests/xxx)) -->
<!-- Example wording for a change, Bugzilla version. (Developer Name, [KDE Bugzilla #xxx](https://bugs.kde.org/show_bug.cgi?id=xxx)) -->
<!-- ![](thumbnail.png) -->
<!-- 


<section class="swiper d-flex mb-5" aria-label="Screenshots" role="list">
 <div class="swiper-wrapper d-flex my-3" role="listitem">
 </div>
 <div class="swiper-pagination" style="bottom: 0"></div>
 <div class="swiper-button-prev"></div>
 <div class="swiper-button-next"></div>
</section>

 -->
<!-- 
 


<figure class="text-center ratio ratio-16x9" style="">
 <video controls><source src="%25!s%28%3cnil%3e%29something.mp4" type="video/mp4" /></video></figure>
 -->
<p>Welcome to a new issue of <em>This Week in Plasma!</em></p>
<p>This week the team continued getting Plasma 6.7 in great shape for release. So there was lots of focus on bug-fixing and UI polishing.</p>
<p>We’ve released <a target="_blank" href="https://kde.org/announcements/plasma/6/6.6.91/">the second beta of Plasma 6.7</a>, jam-packed with the latest fixes. If you can, please install it and test everything! There are <a target="_blank" href="https://community.kde.org/Plasma/Live_Images">many options for doing so</a>.</p>
<h2 id="notable-ui-improvements">Notable UI improvements</h2>
<!-- Can find some with https://invent.kde.org/groups/plasma/-/merge_requests/?sort=merged_at_desc&state=merged&label_name%5B%5D=Enhancement&first_page_size=20 -->
<h3 id="plasma-67">Plasma 6.7</h3>
<p>Made it impossible to accidentally drag a window so far off a screen edge that it couldn’t be moved back. (Vlad Zahorodnii, <a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=495635">KDE Bugzilla #495635</a>)</p>
<p>Uninstalling an application now removes it from the history section of all the various launcher widgets. (Christoph Wolk, <a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=437303">KDE Bugzilla #437303</a>)</p>
<p>Made auto-hide panels compatible with the “Switch desktop on edge &gt; Always enabled” setting. (Francesco Panarese, <a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=370964">KDE Bugzilla #370964</a>)</p>
<p>The Application Launcher’s “All Applications” view now groups apps case-insensitively, so apps whose first letter is lowercase no longer get pushed into their own group. (Christoph Wolk, <a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=501788">KDE Bugzilla #501788</a>)</p>
<p>Clarified how the option to create a virtual screen works in the screen chooser dialog. (David Redondo, <a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=517296">KDE Bugzilla #517296</a>)</p>
<h3 id="plasma-68">Plasma 6.8</h3>
<p>The lock screen now fully respects the timeout value set by PAM on the underlying system, instead of adding its own mandatory delay on top of it. This means on systems with the delay set to 0, you can re-type your password immediately after getting it wrong. (Tobias Fella, <a target="_blank" href="https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/3702">plasma-desktop MR #3702</a> and <a target="_blank" href="https://invent.kde.org/plasma/kscreenlocker/-/merge_requests/322">plasma-workspace MR #322</a>)</p>
<p>The lock screen now notifies you when the “Slow Keys” accessibility feature is turned on, just in case you’re failing to type your password and don’t know why. (Martin Riethmayer, <a target="_blank" href="https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/3726">plasma-desktop #3726</a> and <a target="_blank" href="https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/6626">plasma-workspace MR #6626</a>)</p>
<p>Discover’s dialog about a Flatpak app being replaced by another one now reassures you that your data will be automatically transferred, and also warns you that favorites/shortcuts/etc. to the old app will have to be re-made manually. (Nate Graham, <a target="_blank" href="https://invent.kde.org/plasma/discover/-/merge_requests/1342">discover MR #1342</a> and <a target="_blank" href="https://invent.kde.org/plasma/discover/-/merge_requests/1343">discover MR #1343</a>)</p>
<p>Reduced the amount of visual flickering when Discover checks for updates. (Aleix Pol Gonzalez, <a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=513220">KDE Bugzilla #513220</a>)</p>
<h2 id="notable-bug-fixes">Notable bug fixes</h2>
<!--
Can find some with:
- HI and VHI bugs fixed: https://tinyurl.com/bdepnh4v
- All bugs fixed: https://invent.kde.org/groups/plasma/-/merge_requests/?sort=merged_at_desc&state=merged&label_name%5B%5D=Bugfix&first_page_size=20
-->
<h3 id="plasma-666">Plasma 6.6.6</h3>
<p>Fixed a case where KWin could crash when a monitor was rapidly power-cycled or some of its settings were rapidly changed. (Vlad Zahorodnii, <a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=520145">KDE Bugzilla #520145</a>)</p>
<p>Fixed a case where the <code>kactivitymanagerd</code> service could crash in the background. (Marco Martin, <a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=520595">KDE Bugzilla #520595</a>)</p>
<p>Fixed a clipboard-related issue that could make XWayland-using apps lag or freeze right after locking the screen. (Vlad Zahorodnii, <a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=520674">KDE Bugzilla #520674</a>)</p>
<p>Fixed an issue that could make the large text of the digital clock displayed on the lock and login screens look kind of jagged with certain specific fonts. (Filip Fila, <a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=516314">KDE Bugzilla #516314</a>)</p>
<h3 id="plasma-67-1">Plasma 6.7</h3>
<p>Worked around an oddly-specific issue in Qt that could make widgets break when enabled in the System Tray after having previously disabled them and then restarted the computer. (Tobias Fella, <a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=520144">KDE Bugzilla #520144</a>)</p>
<p>Worked around an issue with the hardware or firmware on specific laptops that could trigger an infinite stream of keyboard brightness OSDs after closing the lid. (Vitaly Repin, <a target="_blank" href="https://invent.kde.org/plasma/powerdevil/-/merge_requests/632">powerdevil MR #632</a>)</p>
<p>Fixed an issue that could make a renamed file on the desktop visually disappear (it still existed, and could be accessed through Dolphin) while multiple Activities were in use, or move to another location when there was only one Activity. (Akseli Lahtinen, <a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=520633">KDE Bugzilla #520633</a> and <a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=511920">KDE Bugzilla #511920</a>)</p>
<p>Fixed an issue that made it impossible to use a hardware key to authenticate to an 802.1x-protected network. (Katharina Bogad, <a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=520449">KDE Bugzilla #520449</a>)</p>
<p>Fixed an issue that made the Networks widget show the wrong icon for an OVS bridge network. (Ivan Perevalov, <a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=517384">KDE Bugzilla #517384</a>)</p>
<p>Fixed an issue that could make Plasma’s built-in remote desktop server lag or freeze when copying certain specific things in certain specific apps. (Paul Hoskinson, <a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=520175">KDE Bugzilla #520175</a>)</p>
<p>Fixed an issue that made it impossible to focus the Network Widget’s search field using <kbd>Ctrl</kbd>+<kbd>F</kbd>. (Akseli Lahtinen, <a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=515280">KDE Bugzilla #515280</a>)</p>
<p>Fixed an issue that made the buttons on the fingerprint enrollment dialog get misplaced. (Harald Sitter, <a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=515824">KDE Bugzilla #515824</a>)</p>
<p>Fixed an issue with the Breeze theming of GTK apps that made sidebar separator lines turn bright white with dark color schemes. (Levi Leal, <a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=484383">KDE Bugzilla #484383</a>)</p>
<h3 id="plasma-68-1">Plasma 6.8</h3>
<p>Fixed two issues that could make KWin crash or fail to evaluate mathematical calculations from the Overview effect. (Alexander Lohnau, <a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=519923">KDE Bugzilla #519923</a> and <a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=483147">KDE Bugzilla #483147</a>)</p>
<p>Fixed an issue that made it impossible to open the panel context menu while already in edit mode. (Tobias Fella, <a target="_blank" href="https://invent.kde.org/plasma/libplasma/-/merge_requests/1468">libplasma MR #1468</a>)</p>
<h2 id="how-you-can-help">How you can help</h2>
<p>KDE has become important in the world, and your time and contributions have helped us get there. As we grow, we need your support to keep KDE sustainable.</p>
<p>Would you like to help put together this weekly report? Introduce yourself in <a target="_blank" href="https://matrix.to/#/%23this-week-kde-apps:kde.org">the Matrix room</a> and <a target="_blank" href="https://community.kde.org/Promotion/This_week_in_KDE">join the team</a>!</p>
<p>Beyond that, you can help KDE by directly <a target="_blank" href="https://community.kde.org/Get_Involved">getting involved</a> in any other projects. Donating time is actually more impactful than donating money. Each contributor makes a huge difference in KDE — you are not a number or a cog in a machine! You don’t have to be a programmer, either; many other opportunities exist.</p>
<p>You can also help out by <a target="_blank" href="https://kde.org/donate">making a donation</a>! This helps cover operational costs, salaries, travel expenses for contributors, and in general just keeps KDE bringing Free Software to the world.</p>
<h2 id="to-get-a-new-plasma-feature-or-a-bug-fix-mentioned-here">To get a new Plasma feature or a bug fix mentioned here</h2>
<p>Push a commit to <a target="_blank" href="https://invent.kde.org/websites/blogs-kde-org/-/merge_requests/?label_name%5B%5D=This%20Week%20in%20Plasma">the relevant merge request on invent.kde.org</a>.</p>]]></content></entry><entry><title type="html">Marknote 1.6.0</title><link href="https://carlschwan.eu/2026/05/30/marknote-1.6.0/?utm_source=atom_feed" rel="alternate" type="text/html"/><id>https://carlschwan.eu/2026/05/30/marknote-1.6.0/</id><author><name>Carl Schwan</name><uri>https://carlschwan.eu/</uri></author><published>2026-05-30T00:00:00+00:00</published><updated>2026-05-30T00:00:00+00:00</updated><content type="html"><![CDATA[<p>After a few months of development, Marknote 1.6.0 is out!</p>
<p>This release is packed with new features. First of all, sub-folders are finally supported. This allows you to better organize your notes. This feature is still very new and at the moment, we don&rsquo;t support creating these sub-folders in Marknote and you will need to create them in Dolphin or your preferred file manager. But we are planning to improve this further in future releases. Each notebook now also displays how many notes are stored inside.</p>
<p><figure>
<a target="_blank" href="https://carlschwan.eu/2026/05/30/marknote-1.6.0/marknote-tree.png" data-size="1274x833">
<img src="https://carlschwan.eu/2026/05/30/marknote-1.6.0/marknote-tree.png" width="1274" height="833" loading="lazy"
alt="&nbsp;">
</a>
</figure></p>
<p>Another big new change is that the command bar exposed by Marknote, now allows you to search for notes across all your notebooks.</p>
<p>If you feel fancy, we also added an optional background blur effect for the editor similar to what is also available in other KDE apps like NeoChat.</p>
<p><figure>
<a target="_blank" href="https://carlschwan.eu/2026/05/30/marknote-1.6.0/blur.png" data-size="1666x1024">
<img src="https://carlschwan.eu/2026/05/30/marknote-1.6.0/blur.png" width="1666" height="1024" loading="lazy"
alt="&nbsp;">
</a>
</figure></p>
<p>Finally, we made it easier to add emojis to your notes by adding emoji completions to the text editor.</p>
<p><figure>
<a target="_blank" href="https://carlschwan.eu/2026/05/30/marknote-1.6.0/emoji.png" data-size="1274x833">
<img src="https://carlschwan.eu/2026/05/30/marknote-1.6.0/emoji.png" width="1274" height="833" loading="lazy"
alt="&nbsp;">
</a>
</figure></p>
<p>This release also fixes various minor bugs; contains small refactoring and improves the state of the translations.</p>
<h2 id="packager-section">Packager section</h2>
<p>You can find the package on
<a class="link" target="_blank" href="https://download.kde.org/stable/marknote/marknote-1.6.0.tar.xz.mirrorlist" target="_blank" rel="noopener"
>download.kde.org (kirigami addons)</a> and it has been signed with my <a class="link" target="_blank" href="https://carlschwan.eu/gpg-02325448204e452a/" >GPG key</a>.</p>]]></content></entry><entry><title type="html">Web Review, Week 2026-22</title><link href="https://ervin.ipsquad.net/blog/2026/05/29/web-review-week-2026-22/?utm_source=atom_feed" rel="alternate" type="text/html"/><id>https://ervin.ipsquad.net/blog/2026/05/29/web-review-week-2026-22/</id><author><name>Kevin Ottens</name><uri>https://ervin.ipsquad.net/</uri></author><published>2026-05-29T13:57:07+00:00</published><updated>2026-05-29T13:57:07+00:00</updated><content type="html"><![CDATA[<p>Let&rsquo;s go for my web review for the week 2026-22.</p>
<hr>
<h4 id="what-i-learned-about-billionaires-at-jeff-bezoss-private-retreat">What I Learned About Billionaires at Jeff Bezos’s Private Retreat</h4>
<p><em>Tags: business, politics, culture, ethics</em></p>
<p>Wondering how those very rich people think and perceive the world? Here is an explanation. I felt unease reading through this.</p>
<p><a target="_blank" href="https://www.theatlantic.com/magazine/2026/05/billionaire-consequence-free-reality/686588/?gift=fXb4ymsFcV2ntAzqIpmYvZ5SHmVudSgCCvY8EbJPC2Q">https://www.theatlantic.com/magazine/2026/05/billionaire-consequence-free-reality/686588/?gift=fXb4ymsFcV2ntAzqIpmYvZ5SHmVudSgCCvY8EbJPC2Q</a></p>
<br/>
<h4 id="secure-boot-and-microsoft-ca-rollover---a-heads-up-for-distributions">Secure Boot and Microsoft CA Rollover - a heads-up for distributions</h4>
<p><em>Tags: tech, microsoft, linux, security</em></p>
<p>Microsoft has been deploying new CA certificates late&hellip; Now distros have to wake up and prepare new signatures for their shims quickly.</p>
<p><a target="_blank" href="https://blog.einval.com/2026/05/22#secure_boot_ca_rollover">https://blog.einval.com/2026/05/22#secure_boot_ca_rollover</a></p>
<br/>
<h4 id="big-techs-anti-labor-playbook-has-come-for-wikipedia">Big Tech’s Anti-Labor Playbook Has Come for Wikipedia</h4>
<p><em>Tags: tech, wikipedia, community, business, work, ethics</em></p>
<p>This is very concerning. We don&rsquo;t need Wikipedia to fall prey to this kind of tactics&hellip; On the contrary!</p>
<p><a target="_blank" href="https://medium.com/@jakeorlowitz/wikipedia-is-doing-the-capitalist-thing-56a393232943">https://medium.com/@jakeorlowitz/wikipedia-is-doing-the-capitalist-thing-56a393232943</a></p>
<br/>
<h4 id="google-i-dump-your-ass">Google, I Dump Your Ass!</h4>
<p><em>Tags: tech, google, web</em></p>
<p>I guess it&rsquo;s time we realise Google doesn&rsquo;t send much traffic on the open web / small web / indie web (call it as you please) and so there&rsquo;s no need to let them harvest.</p>
<p><a target="_blank" href="https://jaredwhite.com/20260522/google-i-dump-your-ass">https://jaredwhite.com/20260522/google-i-dump-your-ass</a></p>
<br/>
<h4 id="the-ai-gold-rush-is-eating-its-own">The AI Gold Rush Is Eating Its Own</h4>
<p><em>Tags: tech, ai, machine-learning, gpt, wikipedia, cognition, business</em></p>
<p>This is clearly the Ouroboros moment in our industry. People pushing for such restructuring and layoffs are drinking the kool-aid and will ultimately be responsible for killing what put them there in the first place.</p>
<p><a target="_blank" href="https://blog.ppb1701.com/the-ai-gold-rush-is-eating-its-own">https://blog.ppb1701.com/the-ai-gold-rush-is-eating-its-own</a></p>
<br/>
<h4 id="the-community-is-the-achievement-the-achievement-is-the-community">The Community is the Achievement; the Achievement is the Community</h4>
<p><em>Tags: tech, knowledge, commons, community, ai, machine-learning, gpt, copilot, ethics, diversity</em></p>
<p>Very interesting take. This gives very valid ground on why tech communities should reject AI based contributions. Not doing so will indeed hinder the commons communities rely on to exist and improve. This is a path to prevent getting better at inclusivity and diversity (which is really needed).</p>
<p><a target="_blank" href="https://linguacelta.com/blog/2026/05/LLMs.html">https://linguacelta.com/blog/2026/05/LLMs.html</a></p>
<br/>
<h4 id="affordances-for-me-but-not-for-thee">Affordances for me, but not for thee</h4>
<p><em>Tags: tech, ai, machine-learning, gpt, ethics, politics, accessibility</em></p>
<p>This is a fact I don&rsquo;t get&hellip; people are going their way to satisfy the need of a LLM but not the ones of fellow humans. I guess it&rsquo;s the conclusion which is somewhat right, it&rsquo;s about who has power. This is sad if true&hellip; also I doubt it&rsquo;s the single explanation.</p>
<p><a target="_blank" href="https://werd.io/affordances-for-me-but-not-for-thee/">https://werd.io/affordances-for-me-but-not-for-thee/</a></p>
<br/>
<h4 id="the-price-of-humans">The price of humans</h4>
<p><em>Tags: tech, ai, machine-learning, gpt, copilot, marketing</em></p>
<p>Interesting point&hellip; Didn&rsquo;t think about it this way. We&rsquo;ll see I guess. Maybe human made services will actually get a premium rate indeed. Wouldn&rsquo;t be a bad outcome I guess?</p>
<p><a target="_blank" href="https://blog.umangsurana.com/blog/price_of_humans/">https://blog.umangsurana.com/blog/price_of_humans/</a></p>
<br/>
<h4 id="can-we-have-the-day-off">Can we have the day off?</h4>
<p><em>Tags: tech, ai, machine-learning, gpt, work, culture, productivity</em></p>
<p>I mean, with the announced productivity gains of generative AI&hellip; It doesn&rsquo;t feel like a big ask. 😜</p>
<p><a target="_blank" href="https://mlsu.io/posts/day-off/">https://mlsu.io/posts/day-off/</a></p>
<br/>
<h4 id="bitwarden-selling-out-self-hosting-a-password-vault">BitWarden selling out? Self hosting a password vault?</h4>
<p><em>Tags: tech, self-hosting, security</em></p>
<p>With Bitwarden sinking, it&rsquo;s maybe time to look at alternatives? This AliasVault option looks like an interesting contender even though a not young.</p>
<p><a target="_blank" href="https://firesphere.dev/articles/bitwarden-selling-out-self-hosting-a-password-vault">https://firesphere.dev/articles/bitwarden-selling-out-self-hosting-a-password-vault</a></p>
<br/>
<h4 id="a-cheap-vps-is-a-good-front">A cheap VPS is a good front</h4>
<p><em>Tags: tech, self-hosting, security, vpn, wireguard</em></p>
<p>Sounds like a good solution to self host things at home while having some protection.</p>
<p><a target="_blank" href="https://ergaster.org/thoughts/front-server/">https://ergaster.org/thoughts/front-server/</a></p>
<br/>
<h4 id="the-mysterious-xf86audioplay-issue">The mysterious XF86AudioPlay issue</h4>
<p><em>Tags: tech, audio, hardware</em></p>
<p>This is an odd and unexpected one! Funny after the facts bit clearly annoying otherwise.</p>
<p><a target="_blank" href="https://michael-prokop.at/blog/2026/05/20/the-mysterious-xf86audioplay-issue/">https://michael-prokop.at/blog/2026/05/20/the-mysterious-xf86audioplay-issue/</a></p>
<br/>
<h4 id="serving-files-over-http-three-ways-synchronous-epoll-and-io_uring">Serving files over HTTP three ways: synchronous, epoll, and io_uring</h4>
<p><em>Tags: tech, linux, io, asynchronous</em></p>
<p>Good post to have an idea of the modern IO APIs available.</p>
<p><a target="_blank" href="https://theconsensus.dev/p/2026/05/18/serving-files-three-ways.html">https://theconsensus.dev/p/2026/05/18/serving-files-three-ways.html</a></p>
<br/>
<h4 id="rust-patterns--engineering-how-tos">Rust Patterns &amp; Engineering How-Tos</h4>
<p><em>Tags: tech, rust</em></p>
<p>The writing isn&rsquo;t perfect, but it covers quite a few important topics in Rust. Seems to be a nice resource even though it&rsquo;s still work in progress.</p>
<p><a target="_blank" href="https://microsoft.github.io/RustTraining/rust-patterns-book/">https://microsoft.github.io/RustTraining/rust-patterns-book/</a></p>
<br/>
<h4 id="how-virtual-tables-work-in-the-itanium-c-abi--file-descriptor-two">How Virtual Tables Work in the Itanium C++ ABI | File Descriptor Two</h4>
<p><em>Tags: tech, c++, type-systems, memory</em></p>
<p>Wondering about the memory layout emitted by the compiler when a virtual table exists for a type? This is a good summary.</p>
<p><a target="_blank" href="https://peter0x44.github.io/posts/vtables-itanium-abi/">https://peter0x44.github.io/posts/vtables-itanium-abi/</a></p>
<br/>
<h4 id="the-worst-job-interview-i-ever-had">The worst job interview I ever had</h4>
<p><em>Tags: hr, interviews</em></p>
<p>Urgh&hellip; indeed this sounds like a very bad experience. Don&rsquo;t do this to applicants!</p>
<p><a target="_blank" href="https://www.oliverio.dev/blog/the-worst-job-interview-i-had">https://www.oliverio.dev/blog/the-worst-job-interview-i-had</a></p>
<br/>
<h4 id="what-is-a-harmonic-an-interactive-comic-about-additive-synthesis">What is a harmonic? An interactive comic about additive synthesis</h4>
<p><em>Tags: physics</em></p>
<p>Need a refresher on harmonics? This is a quick and fun way to do so.</p>
<p><a target="_blank" href="https://melatonin.dev/additive-synth-comic/what-is-a-harmonic/">https://melatonin.dev/additive-synth-comic/what-is-a-harmonic/</a></p>
<br/>
<h4 id="why-japanese-companies-do-so-many-different-things">Why Japanese companies do so many different things</h4>
<p><em>Tags: japan, business, culture</em></p>
<p>Interesting exploration of the Japanese business culture and why it&rsquo;s so different to most companies found in Western countries.</p>
<p><a target="_blank" href="https://davidoks.blog/p/why-japanese-companies-do-so-many">https://davidoks.blog/p/why-japanese-companies-do-so-many</a></p>
<br/>
<hr>
<p>Bye for now!</p>]]></content></entry><entry><title type="html">Qt Creator 20 - CMake Update</title><link href="https://www.qt.io/blog/qt-creator-20-cmake-update?utm_source=atom_feed" rel="alternate" type="text/html"/><id>https://www.qt.io/blog/qt-creator-20-cmake-update</id><author><name>Qt Dev Loop</name><uri>https://www.qt.io/blog/tag/loop/</uri></author><published>2026-05-29T10:54:11+00:00</published><updated>2026-05-29T10:54:11+00:00</updated><content type="html"><![CDATA[<p>Here are the new CMake changes in Qt Creator 20:</p>  
<img src="https://track-eu1.hubspot.com/__ptq.gif?a=149513&amp;k=14&amp;r=https%3A%2F%2Fwww.qt.io%2Fblog%2Fqt-creator-20-cmake-update&amp;bu=https%253A%252F%252Fwww.qt.io%252Fblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; ">]]></content></entry><entry><title type="html">SPDX Cryptographic Algorithm List: Spring 2026 Update</title><link href="https://toscalix.com/2026/05/28/spdx-cryptographic-algorithm-list-spring-2026-update/?utm_source=atom_feed" rel="alternate" type="text/html"/><id>http://toscalix.com/?p=3283</id><author><name>Agustín Benito Bethencourt</name><uri>https://toscalix.com</uri></author><published>2026-05-28T12:52:33+00:00</published><updated>2026-05-28T12:52:33+00:00</updated><content type="html">The SPDX Cryptographic Algorithm List keeps growing. New cryptoClass values, a structured docs folder, PQC as a new property, and SCANOSS as our first user-contributor. Here is what happened in the past months.</content></entry><entry><title type="html">GSoC 2026: Week 1 (Coding Period)</title><link href="https://roshani-gsoc.bearblog.dev/gsoc-2026-week-1-coding-period/?utm_source=atom_feed" rel="alternate" type="text/html"/><id>https://roshani-gsoc.bearblog.dev/gsoc-2026-week-1-coding-period/</id><author><name>Roshani Kumari</name><uri>https://roshani-gsoc.bearblog.dev</uri></author><published>2026-05-28T11:53:00+00:00</published><updated>2026-05-28T11:55:06+00:00</updated><content type="html"><![CDATA[<p>The community bonding period is over, and coding started, so this feels like the right moment for a first blog post. I'm contributing to KeepSecret this summer as part of GSoC 2026, working on single-wallet UX and page navigation architecture.</p>
<p>What I did during community bonding:</p>
<p>->Close/dismiss button for entry detail panel</p>
<p>Before the Community Bonding Period:</p>
<p>Resolving three issues:</p>
<ol>
<li>!17 (focus the search field when the Search action is triggered),</li>
<li>!18 (fix the "New Entry" dialog title, which was incorrectly saying "Create New Item") and</li>
<li>!20 (hides the sidebar when only one wallet exists, worked on the five layout states and cover edge cases like narrow windows with multiple wallets, single-wallet with an item open, and all three pages visible at once).</li>
</ol>
<p>Week 1 plan:</p>
<p>This week, I'm working on Import/export: study existing wallet data structures in KeepSecret. Define file format and design the export flow.</p>
<p>Port KeepSecret's actions to the new org.kde.kirigami.actioncollection API from kirigami-app-components. This wasn't in the original proposal but it's a good addition, suggested by my mentor, notmart (Marco Martin) — it means users will be able to configure keyboard shortcuts for actions like "New Wallet" and "New Entry" through a standard KDE dialog.</p>
<p>More updates next week. The code is at invent.kde.org/utilities/keepsecret</p>
<p>GSoC 2026 KDE KeepSecret Kirigami Qt / QML</p>]]></content></entry><entry><title type="html">Introducing Agentic Test Generation Skills for Qt Quick</title><link href="https://www.qt.io/blog/introducing-agentic-test-generation-skills-for-qt-quick?utm_source=atom_feed" rel="alternate" type="text/html"/><id>https://www.qt.io/blog/introducing-agentic-test-generation-skills-for-qt-quick</id><author><name>Qt Dev Loop</name><uri>https://www.qt.io/blog/tag/loop/</uri></author><published>2026-05-28T08:02:56+00:00</published><updated>2026-05-28T08:02:56+00:00</updated><content type="html"><![CDATA[<div class="hs-featured-image-wrapper"> 
 <a target="_blank" href="https://www.qt.io/blog/introducing-agentic-test-generation-skills-for-qt-quick?hsLang=en" title="" class="hs-featured-image-link"> <img src="https://www.qt.io/hubfs/QtQuickTest_Copilot_TestCasesTermostat.png" alt="Introducing Agentic Test Generation Skills for Qt Quick" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> 
</div> 
<p><span><span style="font-weight: bold;">Writing unit tests can be one of the most time-consuming and least creative phases of software development.</span> For every QML component a developer writes, an equivalent volume of test code must follow - covering properties, signals, mouse and key interactions, state transitions, and edge cases. </span></p>  
<img src="https://track-eu1.hubspot.com/__ptq.gif?a=149513&amp;k=14&amp;r=https%3A%2F%2Fwww.qt.io%2Fblog%2Fintroducing-agentic-test-generation-skills-for-qt-quick&amp;bu=https%253A%252F%252Fwww.qt.io%252Fblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; ">]]></content></entry></feed>