tag:blogger.com,1999:blog-75235892024-03-14T07:18:36.718+01:00TSDgeos' blogA blog about random things and sometimes about my work translating and developing KDE and anythingAlbert Astals Cidhttp://www.blogger.com/profile/12001470108926138921noreply@blogger.comBlogger624125tag:blogger.com,1999:blog-7523589.post-76158813963364791412024-02-10T10:52:00.000+01:002024-02-10T10:52:20.643+01:00Plucker/Palm support removed from Okular for 24.05<p>We recently remove the Plucker/Palm support in Okular, because it was unmaintained and we didn't even find [m]any suitable file to test it.</p><p><br /></p><p>If you are using it, you have a few months to step up and bring it back, if not, let's have it rest.<br /></p>Albert Astals Cidhttp://www.blogger.com/profile/12001470108926138921noreply@blogger.com5tag:blogger.com,1999:blog-7523589.post-62569182734276513262024-01-11T22:21:00.004+01:002024-01-11T22:21:59.700+01:00KDE Gear 24.02 branches created<p>Make sure you commit anything you want to end up in the KDE Gear 24.02 releases to them<br /><br />Next Dates:</p><ul style="text-align: left;"><li> January 31: 24.02 RC 2 (24.01.95) Tagging and Release </li><li> February 21: 24.02 Tagging</li><li> February 28: 24.02 Release</li></ul><p><br /><a href="https://community.kde.org/Schedules/February_2024_MegaRelease">https://community.kde.org/Schedules/February_2024_MegaRelease</a> <br /></p>Albert Astals Cidhttp://www.blogger.com/profile/12001470108926138921noreply@blogger.com0tag:blogger.com,1999:blog-7523589.post-86525919670826570382023-10-20T00:47:00.003+02:002023-10-20T00:48:16.945+02:00Google Summer of Code Mentor Summit 2023<p>This past weekend I attended the <a href="https://sites.google.com/view/gsoc2023mentorsummit/home">Google Summer of Code Mentor Summit 2023</a> as part of the KDE delegation.</p><p> </p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://services.google.com/fh/files/events/2023mentorsummitgroupphoto.jpeg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="600" data-original-width="800" height="486" src="https://services.google.com/fh/files/events/2023mentorsummitgroupphoto.jpeg" width="648" /></a></div><br /> <p></p><p></p><p>I have been a mentor for GSOC almost every year since 2005 but this was my first time attending the mentor summit.</p><p> </p><p>There were sessions about the typical things you'd expect: how to get more diverse folks as students, how to make sure we onboard them correctly, sustainability, funding, etc. All in all nothing groundbreaking and sadly no genius solution for the issues we face was given, but to a certain degree it helps to see that most of us have similar problems and it's not that we're doing things particularly wrong, it's just that running a Free Software project is though.<br /></p><p><br /></p><p>Carl Schwan and me ran a Desktop Linux session together with Jonathan Blandford of GNOME (check his <a href="https://blogs.gnome.org/jrb/category/crossword/">Crosswords game</a>, seems pretty nice) and basically asked folks "How happy are you with the Desktop Linux", you can find the notes about it at <a href="https://collaborate.kde.org/s/HKn6BoNCRNezn3K">https://collaborate.kde.org/s/HKn6BoNCRNezn3K</a> Nothing we don't know about really, Wayland and flatpak/snap are still a bit painful for some folks even if there's a general agreement they are good ideas.</p><p><br /></p><p>I also organized a little session for all the attendees from Barcelona (it was about 6 of us or so) to <strike>sell them</strike> talk about <a href="https://bcnfs.org/">Barcelona Free Software</a><br /></p><p><br /></p><p>One thing that always pops up in your mind when going to events is "How useful was it for me to attend this" since traveling to California from Europe is not easy, it is not cheap and it means investing quite some time (which in my case included taking vacation from work). </p><p> </p><p>Honestly, I think it's quite useful and we should attend more similar events. We get to know key people from other projects and we make sure other projects know about us. One of the most funny interactions was me sitting in a table, someone joining and saying "Woah KDE, you guys are super famous, love your work" and literally seconds after another person joining us and saying "Uh, KDE what is that?"<br /></p><p> </p><p>There's not much pictures because Google forbids taking pictures inside their buildings, the few exceptions include <a href="https://photos.app.goo.gl/f3cwv2Ch9LmysoTs9">the chocolate table</a>, it's quite a large quantity of chocolate we got to try, thanks Robert from Musicbrainz for pushing people to bring it :)</p><p><br /></p><p>I'd like to thank Google and KDE e.V. for sponsoring my trip to the Summit, please donate at <a href="https://kde.org/fundraisers/plasma6member/">https://kde.org/fundraisers/plasma6member/</a><br /></p>Albert Astals Cidhttp://www.blogger.com/profile/12001470108926138921noreply@blogger.com1tag:blogger.com,1999:blog-7523589.post-28429195706963525572023-10-19T00:53:00.000+02:002023-10-19T00:53:12.407+02:00KDE February Mega Release schedule (the thing with Qt6 on it)<p>The next release for the big three in KDE land (KDE Frameworks, KDE Plasma and KDE Gear) is going to happen at the same time.</p><p><br /></p><p>This is because we are switching to Qt6[*] and it helps if we can release all the products at the same time.<br /></p><p><br /></p><p>If you want to help us with the effort, make sure to donate at <a href="https://kde.org/fundraisers/plasma6member/">https://kde.org/fundraisers/plasma6member/</a><br /></p><p><br /></p><p>The <a href="https://community.kde.org/Schedules/February_2024_MegaRelease">agreed schedule</a> is:</p><p><br /></p><h3><span class="mw-headline" id="8_November_2023:_Alpha">8 November 2023: Alpha</span></h3>
<p>KDE Gear 24.01.75 / KDE Plasma 5.80.0 / KDE Frameworks 5.245.0
</p>
<h3><span class="mw-headline" id="29_November_2023:_Beta_1">29 November 2023: Beta 1</span></h3>
<p>KDE Gear 24.01.80 / KDE Plasma 5.90.0 / KDE Frameworks 5.246.0
</p>
<h3><span class="mw-headline" id="20_December_2023:_Beta_2">20 December 2023: Beta 2</span></h3>
<p>KDE Gear 24.01.85 / KDE Plasma 5.91.0 / KDE Frameworks 5.247.0
</p>
<h3><span class="mw-headline" id="10_January_2024:_Release_Candidate_1">10 January 2024: Release Candidate 1</span></h3>
<p>KDE Gear 24.01.90 / KDE Plasma 5.92.0 / KDE Frameworks 5.248.0
</p><p>For KDE Gear that want to ship with Qt6 for this release they
need to be switched to Qt6 (and obviously stable) *BEFORE* this date.
</p>
<h3><span class="mw-headline" id="31_January_2024:_Release_Candidate_2">31 January 2024: Release Candidate 2</span></h3>
<p>KDE Gear 24.01.95 / KDE Plasma 5.93.0 / KDE Frameworks 5.249.0
</p>
<h3><span class="mw-headline" id="21_February_2024:_Private_Tarball_Release">21 February 2024: Private Tarball Release</span></h3>
<p>KDE Gear 24.02.0 / KDE Plasma 6.0 / KDE Frameworks 6.0
</p>
<h3><span class="mw-headline" id="28_February_2024:_Public_Release">28 February 2024: Public Release</span></h3>
<p>KDE Gear 24.02.0 / KDE Plasma 6.0 / KDE Frameworks 6.0 </p><p> </p><p>You can see that Alpha is less than 3 weeks away! Interesting times ahead!</p><p> </p><p>[*] some KDE Gear apps may remain in Qt5 if we have not had time to port them </p><p></p>Albert Astals Cidhttp://www.blogger.com/profile/12001470108926138921noreply@blogger.com0tag:blogger.com,1999:blog-7523589.post-64698645984089111132023-09-27T14:44:00.000+02:002023-09-27T14:44:08.373+02:00Am I using qmllint wrong? Or is it still not there?<p>Today I was doing some experiments with qmllint hoping it would help us make QML code more robust.</p><p><br /></p><p>I created a very simple test which is basically a single QML file that creates an instance of an object I've created from C++.</p><p><br /></p><p>But when running qmllint via the all_qmllint target it tells me</p><p><br /></p><pre class="code-java">Warning: Main.qml:14:9: No type found <span class="code-keyword">for</span> property <span class="code-quote">"model"</span>. This may be due to a missing <span class="code-keyword">import</span> statement or incomplete qmltypes files. [missing-type]
model: <span class="code-keyword">null</span>
^^^^^
Warning: Main.qml:14:16: Cannot assign literal of type <span class="code-keyword">null</span> to QAbstractItemModel [incompatible-type]
model: <span class="code-keyword">null</span>
^^^^</pre><pre class="code-java"> </pre><p>Which is a relatively confusing error, since it first says that it doesn't know what the model property is, but then says "the model property is an QAbstractItemModel and you can't assign null to it"</p><p><br /></p><p>Here the full code <a href="https://bugreports.qt.io/secure/attachment/146411/untitled1.zip">https://bugreports.qt.io/secure/attachment/146411/untitled1.zip</a> in case you want to fully reproduce but first some samples of what i think it's important</p><p><br /></p><p>QML FILE</p><pre class="code-java"><span class="code-keyword">import</span> QtQuick
<span class="code-keyword">import</span> QtQuick.Window
<span class="code-keyword">import</span> untitled1 // This is the name of my import
Window {
<span> // things </span> </pre><pre class="code-java"><span> </span> ObjectWithModel {
model: <span class="code-keyword">null</span>
}
}
</pre><p>HEADER FILE (there's nothing interesting in the cpp file)</p><pre class="code-java">#pragma once
#include <QtQmlIntegration>
#include <QAbstractItemModel>
#include <QObject>
<span class="code-keyword">class </span>ObjectWithModel : <span class="code-keyword">public</span> QObject {
Q_OBJECT
QML_ELEMENT
Q_PROPERTY(QAbstractItemModel* model READ model WRITE setModel NOTIFY modelChanged)
<span class="code-keyword">public</span>:
explicit ObjectWithModel(QObject* parent = nullptr);
AbstractItemModel* model() <span class="code-keyword">const</span>;
void setModel(QAbstractItemModel* model);
signals:
void modelChanged();
<span class="code-keyword">private</span>:
QAbstractItemModel* mModel = nullptr;
};</pre><p></p><p>CMAKE FILE</p><pre class="code-java">cmake_minimum_required(VERSION 3.16)
project(untitled1 VERSION 0.1 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(Qt6 6.4 REQUIRED COMPONENTS Quick)
qt_standard_project_setup()
qt_add_executable(appuntitled1 main.cpp)
qt_add_qml_module(appuntitled1
URI untitled1 VERSION 1.0
QML_FILES Main.qml
SOURCES ObjectWithModel.h ObjectWithModel.cpp
)
target_link_libraries(appuntitled1 PRIVATE Qt6::Quick) </pre><pre class="code-java"> </pre><p>As you can see it's quite simple and, as far as I know, using the recommended way of setting up a QML module when using a standalone app.</p><p> </p><p>But maybe I am holding it wrong? <br /></p><p></p><p></p>Albert Astals Cidhttp://www.blogger.com/profile/12001470108926138921noreply@blogger.com2tag:blogger.com,1999:blog-7523589.post-11933977457401805062023-07-17T16:55:00.004+02:002023-07-17T16:55:57.491+02:00 KDE Gear 23.08 branches created <p>Make sure you commit anything you want to end up in the KDE Gear 23.08 releases to them</p>Dependency freeze is next July 20<br /><br />The Feature Freeze and Beta is Thursday 27 of July.<br /><br />More interesting dates <br /> August 10: 23.08 RC (23.07.90) Tagging and Release <br /> August 17: 23.08 Tagging<br /> August 24: 23.08 Release<br /><a href="https://community.kde.org/Schedules/KDE_Gear_23.08_Schedule"><br />https://community.kde.org/Schedules/KDE_Gear_23.08_Schedule</a><br />Albert Astals Cidhttp://www.blogger.com/profile/12001470108926138921noreply@blogger.com0tag:blogger.com,1999:blog-7523589.post-76433890305344817192023-06-25T22:37:00.003+02:002023-06-25T22:37:36.795+02:00KDE Gear 23.08 release schedule<p>This is the release schedule the release team agreed on<br /><br /> <a href="https://community.kde.org/Schedules/KDE_Gear_23.08_Schedule">https://community.kde.org/Schedules/KDE_Gear_23.08_Schedule</a><br /><br />Dependency freeze is in less than 4 weeks (July 20) and feature freeze one <br />after that. Get your stuff ready!<br /> </p>Albert Astals Cidhttp://www.blogger.com/profile/12001470108926138921noreply@blogger.com0tag:blogger.com,1999:blog-7523589.post-59854046244786468262023-04-08T11:38:00.001+02:002023-04-08T11:38:28.944+02:00 The KDE Qt5 Patch Collection has been rebased on top of Qt 5.15.9<p> </p><p>Commit: <a href="https://invent.kde.org/qt/qt/qt5/-/commit/4c0d35b0991216766ca301de205599d1daa72057">https://invent.kde.org/qt/qt/qt5/-/commit/4c0d35b0991216766ca301de205599d1daa72057</a><br /></p><p><br /></p><p>Commercial release announcement: <a href="https://www.qt.io/blog/commercial-lts-qt-5.15.9-released">https://www.qt.io/blog/commercial-lts-qt-5.15.9-released</a> <br /></p><p><br /></p><p>OpenSource release announcement: <a href="https://lists.qt-project.org/pipermail/announce/2023-April/000406.html">https://lists.qt-project.org/pipermail/announce/2023-April/000406.html</a> <br /></p><p> </p><p>As usual I want to personally extend my gratitude to the Commercial users of Qt for beta testing Qt 5.15.9 for the rest of us.</p><p> </p><p>The
Commercial Qt 5.15.9 release introduced <a href="https://bugreports.qt.io/browse/QTBUG-105000">one bug</a> that have later been
fixed. Thanks to that, our Patchset Collection has been able to
incorporate the fix for the issue <a href="https://invent.kde.org/qt/qt/qtdeclarative/-/commit/2c31d25a44b1221c151681e1bb68ef78618e0166">[1]</a> and the Free Software users will never be affected by it! </p><p> </p>P.S:
Special shout-out to Andreas Sturmlechner for identifying the fix of
the issue, since I usually only pay attention to "Revert XYZ" commits
and this one is not a revert but subsequent improvement Albert Astals Cidhttp://www.blogger.com/profile/12001470108926138921noreply@blogger.com0tag:blogger.com,1999:blog-7523589.post-11769242173137334152023-03-10T21:27:00.004+01:002023-03-10T21:27:39.994+01:00 KDE Gear 23.04 branches created <p>Make sure you commit anything you want to end up in the KDE Gear 23.04 releases to them</p><p>We're already past the dependency freeze.</p><p></p><p>The Feature Freeze and Beta is next week Thursday 16 of March.<br /><br />More interesting dates <br /> March 30: 23.04 RC (23.03.90) Tagging and Release <br /> April 13: 23.04 Tagging<br /> April 20: 23.04 Release<br /><br /><a href="https://community.kde.org/Schedules/KDE_Gear_23.04_Schedule">https://community.kde.org/Schedules/KDE_Gear_23.04_Schedule</a> <br /></p>Albert Astals Cidhttp://www.blogger.com/profile/12001470108926138921noreply@blogger.com0tag:blogger.com,1999:blog-7523589.post-47137109823323743512023-03-08T22:58:00.004+01:002023-03-08T22:58:34.743+01:00Send you talks for Akademy 2023 *now*!<p>Call for proposal ends <strong>Thursday the 30th of March</strong></p><p><br /></p><p>There's still a few weeks, but time is really running out.</p><p> </p><p>I'm sure there's lots of interesting things you have to talk about Qt, KDE, C++, Community Management or other million things so head over to <a href="https://akademy.kde.org/2023/cfp/">https://akademy.kde.org/2023/cfp/</a> or over to <a href="https://conf.kde.org/event/5/abstracts/">https://conf.kde.org/event/5/abstracts/</a> if you want to skip the nicely worded page that encourages you to submit a talk :)<br /></p>Albert Astals Cidhttp://www.blogger.com/profile/12001470108926138921noreply@blogger.com0tag:blogger.com,1999:blog-7523589.post-86445198316817597202023-02-15T09:27:00.001+01:002023-02-15T09:27:06.141+01:00Send you talks for Linux App Summit 2023 *now*!<p>Call for proposal ends this Saturday 18th of February.</p><p> </p><p>I'm sure there's lots of interesting things you have to talk about so head over to <a href="https://linuxappsummit.org/cfp/">https://linuxappsummit.org/cfp/</a> and press the "Submit your talk" button :)<br /></p>Albert Astals Cidhttp://www.blogger.com/profile/12001470108926138921noreply@blogger.com0tag:blogger.com,1999:blog-7523589.post-88703461979089097502023-01-04T22:08:00.009+01:002023-01-05T00:43:54.697+01:00The KDE Qt5 Patch Collection has been rebased on top of Qt 5.15.8<p>Commit: <a href="https://invent.kde.org/qt/qt/qt5/-/commit/281044e2541c842f8d0b0bc1a199999bf9d9951c">https://invent.kde.org/qt/qt/qt5/-/commit/281044e2541c842f8d0b0bc1a199999bf9d9951c</a> <br /></p><p><br /></p><p>Commercial release announcement: <a href="https://www.qt.io/blog/commercial-lts-qt-5.15.8-released">https://www.qt.io/blog/commercial-lts-qt-5.15.8-released</a></p><p><br /></p>OpenSource release announcement: <a href="https://lists.qt-project.org/pipermail/announce/2023-January/000388.html">https://lists.qt-project.org/pipermail/announce/2023-January/000388.html</a><p> </p><p>As usual I want to personally extend my gratitude to the Commercial users of Qt for beta testing Qt 5.15.8 for the rest of us.</p><p> </p><p>The
Commercial Qt 5.15.8 release introduced two bugs that have later been
fixed. Thanks to that, our Patchset Collection has been able to
incorporate the the fix for one of the issues <a href="https://invent.kde.org/qt/qt/qtbase/-/commit/9cf586d629a04040c9414c4f9e17abbc65c644eb">[1]</a> and revert for the other <a href="https://invent.kde.org/qt/qt/qtbase/-/commit/f5f4260bff6aa633c381e7cdc81921cb80cd2ba6">[2]</a> and the Free Software users will never be affected by it! </p><p> </p><p>P.S: Special shout-out to Andreas Sturmlechner for identifying the fix of the issue, since I usually only pay attention to "Revert XYZ" commits and this one is not a revert but subsequent improvement <br /></p>Albert Astals Cidhttp://www.blogger.com/profile/12001470108926138921noreply@blogger.com0tag:blogger.com,1999:blog-7523589.post-92103389401520291122022-12-23T18:22:00.002+01:002022-12-23T18:24:17.049+01:00Donate to KDE with a 10% power up! (1-week-offer)<p>Hopefully by now, you know that in KDE we are running an <a href="https://kde.org/fundraisers/yearend2022/">End of Year Fundraising campaign</a>.</p><p>If you didn't, now you know :)</p><p>The campaign has already raised around 16 thousand euros, but there's still a bit to go to the minimum goal of 20 thousand.</p><p>So let's spice things up a little, I will donate 10% of every donation you make, you donate 1€, I will donate 0.1€, you donate 100€ I will donate 10€, etc.</p><p class="bold">I'm placing my maximum total donation amount at (20000-16211.98)/11 = <span class="qv3Wpe" id="cwos">344.37</span>€<span class="qv3Wpe" id="cwos">, that is if you all donate 3443.7</span>€ (or more)<span class="qv3Wpe" id="cwos">, I will donate </span><span class="qv3Wpe" id="cwos">344.37</span>€<span class="qv3Wpe" id="cwos"> and we'll reach the 20K goal.</span></p><p class="bold"><span class="qv3Wpe" id="cwos">How is this going to work? </span></p><p class="bold"><span class="qv3Wpe" id="cwos">I will make my donation on the 31st of December (just one donation, to save up on fees).</span></p><p class="bold"><span class="qv3Wpe" id="cwos">For your donation to be included in my matching donation you need to send me an email to <a href="mailto:aacid@kde.org">aacid@kde.org</a> with your name/email and put in copy (CC) the KDE e.V. board <a href="mailto:kde-ev-board@kde.org">kde-ev-board@kde.org</a> so they can confirm your donation.</span></p><p class="bold">Only donations between now (23rd of December around 18:00 CET) and 31st of December will be considered.</p>Albert Astals Cidhttp://www.blogger.com/profile/12001470108926138921noreply@blogger.com2tag:blogger.com,1999:blog-7523589.post-53716525801193652192022-11-05T21:38:00.000+01:002022-11-05T21:38:09.675+01:00 KDE Gear 22.12 branches created <p>Make sure you commit anything you want to end up in the KDE Gear 22.12 releases to them</p><p>We're already past the dependency freeze.</p><p><br />The Feature Freeze and Beta is next week Thursday 10 of November.<br /><br />More interesting dates<br /> November 24, 2022: 22.12 RC (22.11.90) Tagging and Release<br /> December 1, 2022: 22.12 Tagging<br /> December 8, 2022: 22.12 Release<br /><br /><a href="https://community.kde.org/Schedules/KDE_Gear_22.12_Schedule">https://community.kde.org/Schedules/KDE_Gear_22.12_Schedule</a> <br /></p>Albert Astals Cidhttp://www.blogger.com/profile/12001470108926138921noreply@blogger.com0tag:blogger.com,1999:blog-7523589.post-23004805460443366932022-10-28T23:39:00.004+02:002022-10-28T23:39:49.403+02:00 The KDE Qt5 Patch Collection has been rebased on top of Qt 5.15.7<p> Commit: <a href="https://invent.kde.org/qt/qt/qt5/-/commit/17246d90b97ef6ecc05cb225bc576b4fb30ca77a">https://invent.kde.org/qt/qt/qt5/-/commit/17246d90b97ef6ecc05cb225bc576b4fb30ca77a</a> <br /></p><p> </p><p>Commercial release announcement: <a href="https://www.qt.io/blog/commercial-lts-qt-5.15.7-released">https://www.qt.io/blog/commercial-lts-qt-5.15.7-released</a> </p><p><br /></p>OpenSource release announcement: <a href="https://lists.qt-project.org/pipermail/announce/2022-October/000376.html">https://lists.qt-project.org/pipermail/announce/2022-October/000376.html</a><p> </p><p>As usual I want to personally extend my gratitude to the Commercial users of Qt for beta testing Qt 5.15.7 for the rest of us.</p><p> </p>The
Commercial Qt 5.15.7 release introduced one bug that has later been
fixed. Thanks to that, our Patchset Collection has been able to
incorporate the revert for bug <a href="https://invent.kde.org/qt/qt/qtdeclarative/-/commit/45d43c04088efb8346979f633f72bb1f23183461">[1]</a> and the Free Software users will never be affected by it! Albert Astals Cidhttp://www.blogger.com/profile/12001470108926138921noreply@blogger.com4tag:blogger.com,1999:blog-7523589.post-3831098538367970072022-10-21T20:07:00.001+02:002022-10-21T20:07:11.830+02:00 KDE Gear 22.12 release schedule finalized <p>This is the release schedule the release team agreed on<br /><br /><a href="https://community.kde.org/Schedules/KDE_Gear_22.12_Schedule">https://community.kde.org/Schedules/KDE_Gear_22.12_Schedule</a><br /><br />Dependency freeze is in TWO weeks (November 3) and feature freeze one after that. </p><p>Get your stuff ready! </p>Albert Astals Cidhttp://www.blogger.com/profile/12001470108926138921noreply@blogger.com0tag:blogger.com,1999:blog-7523589.post-56596621136568997032022-09-17T11:12:00.000+02:002022-09-17T11:12:12.495+02:00Come to Barcelona for Akademy-es 2022!<p>As <a href="https://tsdgeos.blogspot.com/2022/08/come-to-barcelona-for-akademy-2022.html">previously announced</a>, Akademy 2022 will be happening in Barcelona at the beginning of October.</p><p><br /></p><p>On top of that, Akademy-es [the Spain spin-off of Akademy] is also happening in Barcelona the days before (29 and 30 of September). So if you're interested in KDE and understand Spanish a bit, please drop by <a href="https://www.kde-espana.org/akademy-es-2022">https://www.kde-espana.org/akademy-es-2022</a> and register yourself at <a href="https://www.kde-espana.org/akademy-es2022/registro.php">https://www.kde-espana.org/akademy-es2022/registro.php</a></p><p> </p><p>There's also a quite pretty t-shirt you can order but if you want it, you have to register BEFORE the end of the weekend if you want it!</p><p> </p><p><img alt="Camiseta Akademy-es" class="wp-image-1313" height="459" src="https://www.kde-espana.org/wp-content/uploads/2022/09/akaes_2022_camiseta_lado1.png" width="422" /> <br /></p>Albert Astals Cidhttp://www.blogger.com/profile/12001470108926138921noreply@blogger.com0tag:blogger.com,1999:blog-7523589.post-8806557333714808812022-08-15T23:14:00.003+02:002022-08-15T23:16:58.449+02:00Come to Barcelona for Akademy 2022!<p><a href="https://akademy.kde.org/2022">Akademy</a> is KDE's yearly community event, this year it happens between October 1st and October 7th in my <strike>city</strike> <a href="https://ca.wikipedia.org/wiki/Comarca">comarca</a> [one of the reasons of why it's happening is that our Mr. President tricked me into helping organize it [*]]</p><p> </p><p>You don't need to be a "KDE expert" to join, if you're remotely involved or interested in KDE you should really attend if you can (in person if possible, for me online really doesn't work for conferences), and not only the weekend of talks, but the whole week!</p><p><br /></p><p>I still remember 2007 when our back-then-newbie Mr. President asked me "should I really go to Akademy? All the week? is it really worth it?" and i said "as many days as you can", and I guess we made a good enough impression to convince him to stay around and even want to do all the paper work that involves being in the <a href="https://ev.kde.org/">KDE eV</a> board :D</p><p><br /></p><p>Anyhow, what i said, come to Akademy 2022! It's free, you'll learn a lot, meet nice people, will be both fun and productive.</p><p><br /></p><div class="separator" style="clear: both; text-align: center;"><a href="https://akademy.kde.org/sites/akademy.kde.org/files/2022/im_going_akademy2022.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="207" data-original-width="800" height="166" src="https://akademy.kde.org/sites/akademy.kde.org/files/2022/im_going_akademy2022.png" width="640" /></a></div><br /><p><br /></p><p>And you should too! <a href="https://akademy.kde.org/2022/register">Register today!</a><br /></p><p> </p><p> </p><p> </p><p>[*] I should really work on my "no" skills, I'm still working on Okular because decades ago i said "how hard can it be" when someone asked to update KPDF to use a newer version of a dependency.<br /></p>Albert Astals Cidhttp://www.blogger.com/profile/12001470108926138921noreply@blogger.com0tag:blogger.com,1999:blog-7523589.post-7369268206688379752022-07-12T23:50:00.002+02:002022-07-12T23:50:27.485+02:00KDE Gear 22.08 branches created<p>Make sure you commit anything you want to end up in the KDE Gear 22.08 <br />releases to them<br /><br />We're already past the dependency freeze.<br /><br />The Feature Freeze and Beta is this Thursday 14 of July.<br /><br />More interesting dates<br /> August 4, 2022: 22.08 RC (22.07.90) Tagging and Release <br /> August 11, 2022: 22.08 Tagging<br /> August 18, 2022: 22.08 Release<br /><br /><a href="https://community.kde.org/Schedules/KDE_Gear_22.08_Schedule">https://community.kde.org/Schedules/KDE_Gear_22.08_Schedule</a><br /> </p>Albert Astals Cidhttp://www.blogger.com/profile/12001470108926138921noreply@blogger.com0tag:blogger.com,1999:blog-7523589.post-74174920254979832452022-06-19T01:36:00.002+02:002022-06-19T01:36:15.379+02:00The KDE Qt5 Patch Collection has been rebased on top of Qt 5.15.5<p> </p><p>Commit: <a href="https://invent.kde.org/qt/qt/qt5/-/commit/2ab84b12b09a6c642d7c16de392d85bbcd49bb6a">https://invent.kde.org/qt/qt/qt5/-/commit/2ab84b12b09a6c642d7c16de392d85bbcd49bb6a</a> <br /></p><p> </p><p>Commercial release announcement: <a href="https://www.qt.io/blog/commercial-lts-qt-5.15.5-released">https://www.qt.io/blog/commercial-lts-qt-5.15.5-released</a> </p><p><br /></p>OpenSource release announcement: <a href="https://lists.qt-project.org/pipermail/development/2022-June/042659.html">https://lists.qt-project.org/pipermail/development/2022-June/042659.html</a><p> </p><p>I want to personally extend my gratitude to the Commercial users of Qt for beta testing Qt 5.15.5 for the rest of us.</p><p> </p><p>The
Commercial Qt 5.15.5 release introduced some bugs that have later been
fixed. Thanks to that, our Patchset Collection has been able to
incorporate the reverts for those bugs <a href="https://invent.kde.org/qt/qt/qtbase/-/commit/d16ee17a39252e06bf3bef08d80b0d116c473ba1">[1]</a> <a href="https://invent.kde.org/qt/qt/qtdeclarative/-/commit/b69d071c10dfa4c5d7b62692b8a9d7bb659a4ab5">[2]</a> <a href="https://invent.kde.org/qt/qt/qtcharts/-/commit/4b056cf30d5870f73ec467a963fcaaa6ec6fab46">[3]</a> <a href="https://invent.kde.org/qt/qt/qtbase/-/commit/bb4b40b7e1b7cc0af2f0c74a991edf39d64cac06">[4]</a> and the Free Software users will never be affected by those! <br /></p><p><br /></p><br /><br />Albert Astals Cidhttp://www.blogger.com/profile/12001470108926138921noreply@blogger.com0tag:blogger.com,1999:blog-7523589.post-84254100254834336932022-06-01T19:01:00.004+02:002022-06-01T19:01:32.083+02:00 KDE Gear 22.08 release schedule finalized <p>This is the release schedule the release team agreed on<br /><br /><a href="https://community.kde.org/Schedules/KDE_Gear_22.08_Schedule">https://community.kde.org/Schedules/KDE_Gear_22.08_Schedule</a><br /><br />Dependency freeze is in five weeks (July 7) and feature freeze one after that. </p><p> </p><p>Get your stuff ready! <br /></p>Albert Astals Cidhttp://www.blogger.com/profile/12001470108926138921noreply@blogger.com0tag:blogger.com,1999:blog-7523589.post-20487731743981081152022-05-23T23:17:00.007+02:002022-05-23T23:17:42.712+02:00Akademy 2022 Call for Participation is openThe Call for Participation for Akademy is officially opened!<br /><br />...and closes relatively shortly! Sunday the 12th of June 2022 <br /><br />You can find more information and summit your talk abstract here: <a href="https://akademy.kde.org/2022/cfp">https://akademy.kde.org/2022/cfp</a> <br /><br />If you have any questions or would like to speak to the organizers, please contact <a href="mailto:akademy-team@kde.org">akademy-team@kde.org</a> <br />Albert Astals Cidhttp://www.blogger.com/profile/12001470108926138921noreply@blogger.com0tag:blogger.com,1999:blog-7523589.post-27715127730828101642022-05-14T12:17:00.006+02:002022-05-14T12:45:23.006+02:00The KDE Qt5 Patch Collection has been rebased on top of Qt 5.15.4<p>Commit: <a href="https://invent.kde.org/qt/qt/qt5/-/commit/5c85338da3c272587c0ec804c7565db57729fd48">https://invent.kde.org/qt/qt/qt5/-/commit/5c85338da3c272587c0ec804c7565db57729fd48</a> <br /></p><p> </p><p>Commercial release announcement: <a href="https://www.qt.io/blog/commercial-lts-qt-5.15.4-released">https://www.qt.io/blog/commercial-lts-qt-5.15.4-released</a> </p><p><br /></p>OpenSource release announcement: <a href="https://lists.qt-project.org/pipermail/development/2022-May/042437.html">https://lists.qt-project.org/pipermail/development/2022-May/042437.html</a><p> </p><p>I want to personally extend my gratitude to the Commercial users of Qt for beta testing Qt 5.15.4 for the rest of us.</p><p> </p><p>The Commercial Qt 5.15.4 release introduced some bugs that have later been fixed. Thanks to that, our Patchset Collection has been able to incorporate the reverts for those two bugs that affected <a href="https://invent.kde.org/qt/backports-tracker/-/issues/1257">Android</a> and <a href="https://invent.kde.org/qt/backports-tracker/-/issues/1183">Windows</a> and the Free Software users will never be affected by those! <br /></p><p><br /></p><br />Albert Astals Cidhttp://www.blogger.com/profile/12001470108926138921noreply@blogger.com0tag:blogger.com,1999:blog-7523589.post-80574863691325924022022-04-29T10:41:00.002+02:002022-04-29T10:41:11.904+02:00Poppler finally has support for embedding fonts in PDF files!<p> Why would you want to embed fonts in PDF files are you probably asking yourself?<br /><br />Short answer: It fixes issues when adding text to the PDF files.<br /><br />Long answer:<br /><br />Poppler has had the feature of being able to fill in forms, create annotations and more recently add Digital Signatures to existing PDF files.<br /><br />This works relatively well if you limit yourself to entering 'basic' ASCII characters, but once you go to more 'complex' characters, things don't really work, from the outside it seems like it should be relatively simple to fix, but things related to PDF are never as simple as they may seem.<br /><br />In PDF each bit of text is associated with a Font object. That Font generally only supports one kind of text encoding and at most 'only' 65535 characters (65535 may seem a lot, but once you start taking into account non latin-based languages, you quickly 'run out' of characters).<br /><br />What Poppler used to do in the past was just save the text in the PDF file and say "This text is written in Helvetica font", without even really care to specify much what 'Helvetica font' meant, and then let the PDF viewer (remember when we save the PDF file, it will not only be rendered by Poppler again, but potentially by Adobe Reader, Chrome, Firefox, etc.) try to figure out what to do with that information, which as said usually didn't go very well for the more 'complex' characters.<br /><br />What we do now is for each character of new text that we add to the file is we make sure to embed a font for it. So if you're writing something like 'holaħŋ↓' we may end up adding a few fonts to the PDF file, and then instead of saying 'This is the text and it's in Helvetica, good luck', we will say something like 'This text is characters 4, 67, 83 and 98 of embedded Font X, characters 4 and 99 of embedded Font X2 and character 16574 of embedded Font X3'. This way when the file is opened by a PDF viewer it is 'very easy' for them to do the right thing and show what we wanted.<br /><br />Enough of technical talk! Now some screenshots to show how this has been fixed for Text Annotations, Forms and Signatures :)<br /></p><p><b>Writing "hello↓漢you" to a form</b></p><p>Before</p><p></p><p></p><p></p><p></p><p></p><p><img alt="imatge" class="gfm js-lazy-loaded qa-js-lazy-loaded" data-canonical-src="/uploads/6d1c4c8f7b536e7c8333184f2ca65ded/imatge.png" src="https://gitlab.freedesktop.org/poppler/poppler/uploads/6d1c4c8f7b536e7c8333184f2ca65ded/imatge.png" /> </p><p>Now</p><p></p><p></p><p> <img alt="imatge" class="gfm js-lazy-loaded qa-js-lazy-loaded" data-canonical-src="/uploads/1ddb218c94a7d8df21c716ef693f231c/imatge.png" src="https://gitlab.freedesktop.org/poppler/poppler/uploads/1ddb218c94a7d8df21c716ef693f231c/imatge.png" /> </p><p><b>Signing a PDF file with my name being "Albeŋŧ As漢tals Ciđ"</b></p><p>Before</p><p><img alt="image" class="gfm js-lazy-loaded qa-js-lazy-loaded" data-canonical-src="/uploads/12b5c93bd7936bedcca401757e370b8f/image.png" src="https://gitlab.freedesktop.org/poppler/poppler/uploads/12b5c93bd7936bedcca401757e370b8f/image.png" /> </p><p>Now</p><p><img alt="image" class="gfm js-lazy-loaded qa-js-lazy-loaded" data-canonical-src="/uploads/67145f672c71eae093c8301d439d5721/image.png" src="https://gitlab.freedesktop.org/poppler/poppler/uploads/67145f672c71eae093c8301d439d5721/image.png" /> </p><p> </p><p><b>Writing hola↓漢字 in a Text Annotation</b></p><p>Before</p><p><b><img alt="" height="258" src="data:image/png;base64,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" width="640" /> </b> </p><p> Now</p><p><img alt="" height="306" src="data:image/png;base64,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8sYgPXrUs9n98ZNPmkqSnnrqC0VERMvHJ5f69m2o8uX9Vb9+GX3xxStq1266Ll++oRIlfLRw4Vt67LGCiolJUP/+S3X48EW5ujqpeHEfTZnSJnt/UAAeag4Wi8WS04MAclpoaKgkKTg4OIdHAgDJHvbPJbN5Srb3GR0dLy+vnrp4cZQKFMiV7f0D+G8ZMmSlhgxZkSN9s9wRALLRsWPHdOXKlQdq48qVKypSpIj1v6+++uqe9aOiomzqDxo06IH6z0zDhg2Ts7Oz9b9+/frl9JDwENm375yOHw+T2WxRQkKShgxZqbJlCxLQABgeyx0BIJuEhYWpQYMGioiIUO/evdWrVy/lzp073e2YzWadO3fOehwVFXXP+haLxaZ+RIRxdqEzm81KTEy0OQYyy4ULEerbd7HOnYuQq6uTKlQorPnzO+f0sADgvghpAJANEhIS1KJFC509e1aS9Omnn2rSpEnq37+/unXrJldX1xweIfDwadIkRE2ahOT0MAAg3VjuCADZ4Pjx4zazWVLyssWePXuqbNmy+vXXX3NoZAAAwGiYSQNSMWDAAK1Z8+92zUWKFNGSJUtycETZ51F+7VmlXLlyCg0N1VdffaX//e9/unHjhvXcP//8o2effVZdunTR2LFjde7cOa1cuTLVtu5e3vjHH39o3LhxqdaPiYmxOd63b98960tS+fLlVb9+/XvWATLTP/9c1fnz15WUxH5mALKXo6NJRYp4q2jR/Dk9FCtCGpCKkydPavfu3dZjI93Hk9Uehdf+999/69q1fx9U6+vrq8DAwCzt09XVVR999JFef/11ffzxx5o1a5bu3GD3m2++0e7du9WuXTt98MEHaW539erVWr16dZrrb926VVu3br1nna5du6Ya0n766SfFxsamub97OXDggM1xaGiovv/++0xpW5JeeeUVubm5ZVp7yBr//HNVN27EqmLFIsqdm6W/ALJXVFSsTp++ptOnrxomqBHSADyS+vbtq59++sl63L17d02cODFb+i5YsKBmzJiht956S23bttWpU6es5w4ePKjw8PBsGUdGvfvuu7p06VKWtL1q1SqtWrUq09p79tlnCWn/AefPXyegAcgxXl5uKlo0nw4cOE9IA4BHXe3atbV//369/fbbWrBggSRp1KhRqlChgtavX5/qdfHx8dqzZ4/1OCAgQAEBAanWT0xM1K5du6zHfn5+CgoKuufY7nceyExJSRYCGoAc5eXlJrPZOMutCWkAkIO8vLw0f/58lSlTRjt37lSPHj3k4OCg7du3p3rN5cuXVbBgQetx586d9cknn6RaPzIyUt7e3tbjFi1aaMKECZnzAgAAQKYjpAGAAQwZMkQJCQlycHDI6aGkS/78+TVt2rScHoZV9+7ddf78+ZweBgAAD4SQBkh3SWsAACAASURBVAAG4ezsnNNDSDd3d3c1b948p4dh9dFHH+X0EAAAeGCENAD4j8mdO7fGjBljPa5du/Y967u5udnUr1SpUpaNDQAAPDhCGgAY2Pbt2202Cbntzh0L9+zZk2Kd1OofPXpUR48etatTp04dAhwAAAZASAMAA1u2bJlGjhyZLX2NGTOGkAYAgAEQ0gBJwcHBdmXz58/X/Pnz/3MbOcB4Tpw4ocmTJ+u9995T8eLFc3o4WcpisejMmTNZ2kdUVJTc3NxUqlSpLO0np6X0uQQAeDQQ0vDICg0Ntf45KipKUvJ26Ldt375dnTp1sh6nFNb++usvLVu2TDt37tTp06cVExOj3LlzK2/evCpXrpxq1aqlhg0bytU1857/Ex0drY0bN2rt2rU6efKkwsLCdO3aNXl4eKhAgQIqX768nnrqKTVq1Eju7u6Z1m9GXLp0Sdu3b9fOnTt17NgxXb9+XREREXJxcZG3t7cCAwNVrVo1NWzYUMWKFcvRsWaV2NhYtWjRQvv379f48eP18ssva+jQoSpbtmy628qdO7dGjBiR6vlLly7ps88+sx43aNDgnpt6XL169Z5b92dEVFRUtvxdenp6aurUqWrdunWW95Vd7vxMklL+XCK4AcCjgZAGpNGd9/Ts27dP/fr109q1a1Otv2zZMkmSr6+vevTooX79+snJKeP/5K5fv65Ro0ZpwoQJio6OTrXer7/+qrFjx8rLy0vvvfeePvzwQ5tnZGW1qKgozZo1SwsWLNDvv/8ui+XeD4acOnWqTCaTGjdurLFjx6pkyZLZNNLs0aNHD+3fv1+SZDabtWjRIi1ZskQdOnTQ8OHDVahQoTS35enpqe7du6d6/tixYzYhrWrVqvesf/r06UwPadnl1q1batOmja5du3bP1wgAwH8RIQ1IIw8PD0nSpEmT1LNnTyUkJKTpurCwMA0cOFArV67UypUrlTdv3nT3vXr1arVu3VoRERFpviYqKkrDhw/XrFmzNGvWLNWvXz/d/abX/Pnz1aVLF+sMQFqZzWatXLlSGzdu1E8//aTnnnsui0aY/apUqSJ/f39duHDBWpaUlKQZM2Zo8eLFGjlypLp06fKfWlb7/PPPW9+L+fLly7FxPP7442rXrp1NWcOGDRUSEmI9zsxZbAAAsgshDUijQoUKaerUqXr33XdTPJ8nTx4lJibq1q1bKZ7fvn27WrVqpV9++UUmkynN/U6dOlXdunVTUlJSiucdHR3l5eWlyMhImc1mu/Pnzp1To0aNNGfOHLVs2TLN/WZE0aJFUw1obm5uyp8/v7y9vRUVFaVz587ZzbLdunVLr732mvbs2aMSJUpk6VizS9euXdWxY0dNnDhRI0eO1LVr16znIiMj1a1bN/3000+aN2+eChQokIMjTbupU6emes7d3V1ff/11pvY3b948bd682abs8ccf17p165QnTx6b8nHjxmVq3wAA5ARCGpBGx44d05o1a6zHISEh6tatm5599lkVL17cupQxIiJCv/32m8aMGaPt27fbtLF27VotXLgwzWFp/fr16tq1q134qlKlirp27arGjRvL399fJpNJZrNZZ86c0apVqzR58mQdPnzYWj8hIUHt27dX4cKF9cQTT2T0R3BftWrVUsWKFa3L+ypVqqSOHTvq6aefVoUKFWzCaUREhObPn6/BgwfrypUr1vKoqCgNHTpUs2bNyrJxZjd3d3f16dNHXbp00ZgxY/T5558rNjbWen79+vVq3769Vq9enYOjzBwuLi7q0qVLprRlsVjUv39/u4BWv359LV682C6gAQDwsCCkAWl053OlBg0apE8++USOjo529by9vfXyyy/rxRdfVPfu3e1mFb788ss0hbSwsDC1b9/eLqANGTJEAwYMsOvbZDKpWLFieuedd/TWW29p4MCBGj16tPV8QkKCWrdurSNHjihXrlxpes0Z0bNnT23evFldunRR9erVU63n7e2trl27qkmTJqpevbouX75sPTdv3jxNnDhRuXPnzrJx5gQvLy8NHTpUbdu2VadOnbRt2zZJyUvy7vy7Sk1CQoJ2796d6vlTp07ZHF+8ePGe9e9cgmk0t27dUrt27bR06VKb8k6dOmnKlClydnbOoZEBAJD1CGlAOr399tsaOnTofeuZTCZNmDBBW7du1aFDh6zlO3fuVERExH038xgzZowuXbpkU9a7d28NHjz4vn07Oztr1KhRunnzpiZPnmwtP3funEaMGKHhw4fft42M6tixozp27Jjm+oGBgRo8eLDN5g+JiYnavn27GjZsmBVDzHFlypTR5s2b9dlnn+nTTz/ViBEjVKFChfted/XqVVWrVi3N/dy+H/G/5tChQ2rbtq0OHDhgLXN0dNSIESPUp0+fHBwZAADZI+03xgBQrly5bHbPux8nJye7e9gsFov+/PPPe15369Ytu/t+ihQpkq6+JWn06NHy9/e3KZs8eXKq983llFdeecWu7M5g+zAymUwaPHiwtm3bpg8++CCnh2MISUlJGj16tKpVq2YT0AICAvTbb78R0AAAjwxm0oB0eOmll9K9uUO9evXsys6dO3fPaxYvXmy3k2PPnj1tHgOQFp6enurdu7d69+5tLYuIiNCSJUvsdsXLSX5+fvLx8VF4eLi17M4NNh5mtWrVuuf5ChUqqFWrVmlqKyoqSqtWrbIely1bVhUrVkzzWMqUKZPmupklKipKV65c0bVr1/T+++/b3cfZvHlzTZ8+PUd3kQQAILsR0vDIut9DYVM6/8ILL6S7n+LFi9uVXb9+/Z7XbNmyxebYwcFBLVq0SHffktSyZUv16dPH5t621atXGyqkSVLevHltQlp6t/F/WLVu3TrND2w+duyYTUhr3rz5PR9+bQQLFy5U586d7cp9fHw0ZsyYdC2d/a/jQdUAgNtY7ghICg0NVWhoqE1Zq1at7J5dVbly5XS37eTkZH3G2m33W254e0OJ20qUKKGAgIB09y1JhQsXVqlSpWzK/vjjjwy1lZVcXFxsjlN6nAAefg4ODnrzzTd19OjRRyqgpSSlzyUAwKOBmTQgjZydnVOcFUuLu8Pe3c8Hu/vcsWPHbMrKly+foX5vq1ixok2bp06dUnx8vF0wykoXL15UeHi4rl69qmvXrik6OlqxsbGKiYlRbGyszTb8eHQ1atRI06ZNy+lhAACQowhpQBp5eXml6yHUGXXjxg27B1dndBYtteuTkpJ06dIlBQYGPlC7qTGbzdq2bZuWLFminTt36uDBg4qMjMySvh4G58+fV6FChezeXy+++KLdrOq9JCYm2hyPGzdO3333XbrGUrVq1Xs+r+3cuXP33NY/vfbu3WtzfOXKFf3888+Z1r6fn59q1qyZae0BAJAdCGlAGmXls8XulNL9ag/6vDAvLy+7sps3bz5QmylJTEzU9OnTNWzYsPtujoJ/dezYUSaTSd9//73NxjSRkZE29+mlV0xMjGJiYtJ1zf3C9KZNm7L0fsZdu3bpxRdfzLT2nn/+eS1fvjzT2gMAIDsQ0oA0cnLKnn8uKf1S/aDLEl1dXe3K7p51eVCXL1/WCy+8oJ07d6Zax8nJST4+PvLx8ZG3t7fc3d3l7u4uDw8PLV++3HCPBsgOO3fu1K+//ipJqlSpkubPn68nn3wyh0cFAAByEiENMJi7NxmRHnzWK6WdEu/3MO30iIiIUO3atfX333/blDs5Oal58+Zq1qyZqlWrptKlS6cadosVK5bpIS0pKUkzZ87Um2++aXdfYFrExsZqwYIFWbqBxf/+9z/rny9cuKA9e/ZYQ9r8+fMVGxub5rbmzp2rgQMHWo8nTJiQ7h1JUwr0AO7NbLbIwcFBDg62fwaAjCKkAQaTN29eu7K7n5mWXildn5nPnerRo4ddQKtatap++OEHu50ls0tSUpLatm2rBQsW6M8//9Q333yTrqAWGxur5s2ba+3atTpx4kS6HySeFkeOHLG5/ypv3rzq1KmT9djPzy9d7f3zzz82x88884yKFi36YIO8S+3atTV37txMa2/Dhg02G4VUqlRJH374Yaa1X7hw4UxrC5CkAwfO6/Tpq2rcOEROTsn3kXbsOFNvvFFb9euX0Xvvzddzz5VTs2YV7tnOlCmb9PTTZVS2bMHsGDaA/xhCGmAwuXPnlq+vr8LCwqxlR48efaA2jxw5YnPs4eGRaffYXbhwQd9//71NWbFixfTbb7+leC9catIzY3Q/dwY0SZo6daosFou+/fbbNAW1uLg4vfjii1q7dq0kafjw4TKbzTazXplh5MiRNjt9duvW7YH+Xu58tIKbm5tKly79QONLSVBQkIKCgjKtvdjYWJuQFhAQoLZt22Za+0Bmi41N0IgRa7Rs2QFNn/67tXzevH+Xen/9dfKzLj/4oL6++OJVnT8focRE28eKTJ68WXnyeMjDw3Y5u4+Ppzw9mdEGHnWENMCAypUrZxPSDh48qKSkJDk6Oqa7LbPZrAMHDtiUVa9e/YHHeNvSpUvtnmk2aNCgdAU0i8Wiq1evZtqYtmzZooULF9qU3d7l8H5BLS4uTi+99JLWrFljUz527Fh16tRJJUqUyJQxnj59WvPmzbMeu7q66r333pMkLVu2LN0bfiQmJtqE8QIFCmjRokUZHp+zs7NefvnlDF8PZIbixQdq6tR2euaZx9J97alTV1WixCDFxU20znil1dq1oXJzc9FTT5W0O1e9ejGtWtVdw4ev1tmzI+Th4awuXeapTZvHVbduKfXu/ZOeeeYxNWlSTk5OyZ/ZPXos0NKl++3aat9+hl3Zxo299OST9v0CeLQQ0gADql+/vjZs2GA9joyM1ObNm1WvXr10t7VlyxZdu3bNpqx27doPPMbb7l7mKEkNGjRIVxuHDx/O1I1Mnn76ac2YMUNvvPGGTYD87rvvZLFYNHXq1BSvi4+P1yuvvKJffvnFptzd3V0rVqzItIAmSZ9//rnNa+7QoYMKFkxe9tS9e/cH3h3z7NmzatWqVYav9/b2JqThkbV8+UH5+ORKMaRJkre3hz7//N9/H8OHN1P+/Lnk7e2hAQMay8vLTd7etvcXr179nho0KJtiexaL5OAgPf74iMx7EQD+0whpgAG9+OKLGjRokE3Z7NmzMxTSZs6caVfWqFGjjA7Nzt0BUJJ8fHzS1caKFSsyazhWHTp0kCS7oDZt2jRZLBa7B4rfDmgrV660Kb8d0OrXr59pYwsLC9P06dOtxw4ODurdu3emtQ8ga1y/Hq2RI9forbeeUMmSBXT69DUVLz4wxbpBQfn111/DbMqaNZuslSsP2dUNCMirdet6ZMmYAfw3EdIAAwoJCdGTTz6pLVu2WMvmzJmjvn37qmzZlL+JTcnhw4c1Z84cm7LKlStn6hbvefLksSsLCwtL84YVN27c0Jdffplp47lThw4d5ODgoNdff90mqE2fPl3Ozs42dWfOnKmEhASbMnd3dy1fvjxTA5okffXVVzbLGZs3b64yZcpYj8uUKZOu3TePHj1qMyuXN29em+fteXh4qHjx4uka44M+mw/ILEePXlLv3ot09ux1BQbm08SJrVSnTvKs9qVLUerVa5E2bjyu+PhENWtWQV991UJ58rjbtbNq1SENGbJS585dl8nkoB496qtPn/TN+ktSTEy8Hn98pBYtekslS/rK1ze3Ll4cpV27Tqtbt3naufNjhYZeVLNmk63X/PRTF0lSSIi/zb1pFy9GqkWLqapUKUB+fl7aufPjdI8HwMOJkAYY1JAhQ2zCQVJSklq1aqUtW7ak6X6v69evq2XLlkpKSrIpz8yd86TkTULutnz5cr377rv3vTYhIUGvvfaarly5kqljulP79u0lyS6o3R3IUgtozzzzTKaO5/Lly5owYYJNWZ8+fWyO169fn+b2xo4dq549e1qPCxQooH379lnfK1Ly5hwDBgx4oOWPQE6ZNesPrVnTQ35+Xho6dKXeeecH7d+fPHvVuvV3Cg72199/D1N8fJLeeGO23nprrn788S27doKCfDRjRgcFBxfSvn3nVKPGSLVsWVWBgWnf6TZvXg+NHfua6tQpocKFk79ICQu7IUfHd6x1bv85KCi/3fWFCv37pdauXaf10UdLVLVqoL75pm2KwRLAoyt9d9ICyDb16tWzBozbDhw4oHr16mn/fvsb0O+0d+9e1atXT4cPH7Ypf+GFF9SmTZtMHWdKIebTTz+97xgPHz6sJ554QqtXr87U8aSkffv2mjlzpkymtH3kZVVAk5J3irzzeXB16tTJ8D2Cs2bNUq9evWzKvvvuO/n7+2vu3LnW2Tiz2az27dtr6dKlGR84kEPeeaeu/PySv5h69dUqOnr0kiTp9Olr2rLlpEaMeFFubs7y8nLTiBEvasmSfYqMtN94p2zZggoOLiRJqlQpQIUK5dGpU/bLte/HZHJQy5bVVLq0nwoX9tbNm+N08+Y4bdrUS5UqBViPDx4cLLPZkmo7ffsuVpUqgfr++zdUoEDm7LYL4OHBTBpgYFOmTNGBAwdsAs+ePXtUtWpV1a9fX02bNlVQUJB1eds///yjFStWaMOGDXYzaEWKFNGMGfY7iT2okJAQ1alTR9u2bbOWXb16VTVq1FDnzp3VrFkz61K78PBw7dmzRytWrNDq1aut94UFBwfrmWeesZthykzt27eXg4ODOnbsaLcb5Z2yMqCdPn1a33zzjU3ZJ598ku524uPjNWDAAH3xxRc299Z17dpVzZo1kyQFBgbq66+/ts6eJSYmqmXLlho/frzefvvtDD3cG8gJt2esJMnFxcm6XPDs2evKk8dNXl5u1vNFi+aT2WxRePhNOTrafimzYMEuTZv2u27ciJWDQ/IM2N2fBTExCXJ1/fdXo7i4RDk6mux2h7x27Zb69/9ZNWoUU+fOts8NzJXrfeuf9+zpr4oVA1SoUD+Fhd2we22bNp3QV1/9alM2e/brats283bgBfDfREgDDMzT01Pr16/Xc889pz179ljLk5KStG7dOq1bty5N7ZQvX14rV65U/vz2y28yw/jx4/Xkk08qOjraWhYXF6dJkyZp0qRJ97y2RIkSWr16tY4ePZqlIU2S2rVrJ0mpBjV3d3ctW7YsSwKalBzI4uPjrce1atVK906YoaGhatu2rfbt22dT/uqrr9r9/Fq2bKkdO3ZY7/mLj49X165dNX/+fH333XeZulslkFVMppS/UChY0EuRkbGKjIyxLhU8deqqTCYHBQTk1cWLkda627f/rbff/l6bNvVWpUoBkqTChT+ya7NfvyW6fj1aXl5uiotL1Msvf6M6dUqof3/bzZbWrTuisLAbatGiql57raokafXqUP34425Nn/7vCojbY9+2zXZJsyS1aTNNnTs/ofr1y9iU583rYVcXwKOHkAYYnI+Pj7Zu3aqPPvpIEydOvOcs0N1MJpM6dOigcePGpeu5ZelVpUoVLV++XC1btlR4eHiar3vyySe1cOFC+fn5ydvbWyaTKV2vLyPatWsnBwcHdejQwaav2wHt2WefzZJ+9+zZY7eJS3pm0S5cuKDhw4dr6tSpdvfPdevWTePHj5eTk/1H+hdffKGiRYuqV69e1tnVjRs3qnz58urZs6e6dOmiwMDADLwiIGeVLFlAdeoU18cfL9UXX7yqxMQkDRjws1q3ftxmNkxKnjXz9nZXuXLJyx1Xrz6sS5ei7Nr89NOmathwvI4evSSLRapRI0gffGC7cVBiolnffLNFb7/9pPLk6WnXxqJF/36h1qJFFc2f31nFi9vveOvh4aJChbxSPAcA3JMG/Ae4u7tr3LhxCg0NVefOnZUv371vdPf19VXHjh118OBBzZgxI0sD2m3169dXaGioevTocd/+SpUqpa+//lobN26Un5+fpOTdBENCQrJ8nJLUtm1bzZ4923qPWlYHNEl6//33bUJhzZo19dxzz933uu3bt6t9+/YqVqyYJk+ebBPQcufOrRkzZmjy5MkpBrTbevTooZ9//lm5cv1730tMTIz+97//KSgoSM2aNdOqVasy9Vl1aXXx4kWb43u9DuBuCxe+ratXbykg4CMFBw9RgQK5NWmS/QY5jRuXU506JVWq1GA98cQYbdnylxo1KmdXL18+T61d20OPPVZQNWoU04oV78jDw8WmzpYtJ3TmzDU9/3x5JSVNVlzcRE2Y0FI1agRp9uzXVaVKER06NFhJSZM1f37nLHvtAB5uDpa7HxYEPIJCQ0MlJd8b9V+QmJioffv26eDBgwoLC1NsbKzy5cunAgUKqHTp0qpcuXKO3nMUFxenXbt26cCBA7p27ZoSExOVK1cuBQYGqlKlSipVqlSOje1O//zzj27duiVvb28FBARkWT8LFiyw21nxt99+S/G5d2azWbt27dLy5cv1ww8/6OTJkym2+cILL2jy5MnpGvehQ4fUo0cPmwel3ylXrlyqUaOG6tSpozp16uiJJ56Qh0fGl15FRkaqQYMGslgscnFxkbOzsxwdHeXk5CSLxaKIiAjt3bvXJhy+9dZb+vbbbzPc58Pkv/a5lF5m8xTrnzdtOqG6dY3xuSAlz5Y5OMjuvjaz2aKXX/5Gzz1XVu3b19SmTcc1ZcpmWSzSlCmtVaRIPs2atV0DBy5T9+519dRTpVS7dgnd/jiOjU3QuXMRMpkc1K7dDA0a1ESNG9uHRQA5Y/Pmv2weYj9kyEoNGZL5z3JNC76yBP6DnJycVK1aNVWrVi2nh5IiV1dX6y/6RhYUFJQt/ZQoUUKlS5fW8ePHJUkNGjRI9cHkHTt21Ny5c1M8JyXvBjl8+HDVrVs33eMICQnRb7/9prVr16p///7avXu3zfmbN2/q119/1a+//qoqVapo06ZN6e7jTnny5FGtWrU0fvz4NF+TVfcDAulx90Yht5lMDnrvvadVrlzy885+/HGP3nyztpo2LW9dYvn667XUsGGwFi3ao6NHL1mf6ZbcrqO6d/9Be/ac1dNPl1aVKkWy5fUA+O9hJg3Qw/+NNXJedHS0+vbtq8mTJ2vHjh2pBuyoqCjVrl3b5vEJTk5Oevnll/Xuu+9m2oPILRaLFi1apMmTJ2vLli02u4H6+vpq//79Kliw4AP3c/r0aQUFBSkt/6tp06aN5syZk+ZHJTzsHvbPJSPPpAF4NDGTBgCPGA8PD02cOFFdu3a95713Xl5emjNnjmrUqKFq1arptddeU8uWLVWoUKFMHY+Dg4NatGihFi1a6OrVq1q5cqWWLl2qtWvXasKECZkS0CSpaNGiql+/vjZv3iwHBwc5OjrKzc1NHh4e8vHxkb+/vypXrqznn39etWrVypQ+AQD4ryOkAUA2SsvmKJUrV1ZYWJj1YdRZLX/+/OrQoYM6dOiguLg4ubq6Zmr769evz9T2AAB42LGmBAAMKLsC2t0yO6ABAID0I6QBAAAAgIEQ0gAAAADAQAhpAAAAAGAghDQAAAAAMBBCGgAAAAAYCCENAAAAAAyEkAYAAAAABkJIAwAAAAADIaQBAAAAgIEQ0gAAAADAQAhpAAAAAGAghDQAAAAAMBBCGgAAAAAYCCENAAAAAAyEkAYAAAAABkJIAwAAAAADIaQBAAAAgIEQ0gAAAADAQAhpAAAAAGAghDQAAAAAMBBCGgAAAAAYCCENAAAAAAyEkAYAAAAABkJIAwAAAAADIaQBAAAAgIEQ0gAAAADAQAhpAAAAAGAghDQAAAAAMBCnnB4AYATBwcE5PQQAsMHnEgA8ughpeGSFhoZa/xwVFSVJ8vLysqnDL0lIizvfS6nhvYT7uft9lNLnEu8jAHg0sNwRAAAAAAyEkAYAAAAABkJIAwAAAAAD4Z404A637wG5U1ruN8KjKzg4OMX3TUp4LyE16XkfAQAefsykAbLfMAQAAADIKcykAf8vtaDGbmq4n7SGfN5LuBe+LAIA3MZMGgAAAAAYCCENAAAAAAyE5Y54ZLH0DJmF9xIyA+8jAMBtzKQBAAAAgIEQ0gAAAADAQAhpAAAAAGAghDQAAAAAMBBCGgAAAAAYCCENAAAAAAyEkAYAAAAABkJIAwAAAAADIaQBAAAAgIEQ0gAAAADAQAhpAAAAAGAghDQAAAAAMBBCGgAAAAAYCCENAAAAAAyEkAYAAAAABkJIAwAAAAADIaQBAAAAgIEQ0gAAAADAQAhpAAAAAGAghDQAAAAAMBBCGgAAAAAYCCENAAAAAAyEkAYAAAAABkJIAwAAAAADIaQBAAAAgIEQ0gAAAADAQAhpAAAAAGAghDQAAAAAMBBCGgAAAAAYCCENAAAAAAyEkAYAAAAABkJIAwAAAAADIaQBAAAAgIEQ0gAAAADAQAhpAAAAAGAghDQAAAAAMBBCGgAAAAAYCCENAAAAAAyEkAYAAAAABkJIAwAAAAADIaQBAAAAgIEQ0gAAAADAQAhpAAAAAGAghDQAAAAAMBBCGgAAAAAYCCENAAAAAAyEkAYAAAAABkJIAwAAAAADIaQBAAAAgIEQ0gAAAADAQAhpAAAAAGAghDQAAAAAMBBCGgAAAAAYCCENAAAAAAyEkAYAAAAABkJIAwAAAAADIaQBAAAAgIEQ0gAAAADAQAhpAAAAAGAghDQAAAAAMBBCGgAAAAAYCCENAAAAAAyEkAYAAAAABkJIAwAAAAADIaQBAAAAgIEQ0gAAAADAQAhpAAAAAGAghDQAAAAAMBBCGgAAAAAYCCENAAAAAAyEkAYAAAAABkJIAwAAAAADIaQBAAAAgIEQ0gAAAADAQAhpAAAAAGAghDQAAAAAMBBCGgAAAAAYCCENAAAAAAyEkAYAAAAABkJIAwAAAAADIaQBAAAAgIEQ0gAAAADAQAhpAAAAAPB/7dsxSiRRGEbR10XDRILacVkbck/u0R1UYDiCnTiJ0waCW3gX6pwVfNGDC/8LEWkAAAAhIg0AACBEpAEAAISINAAAgBCRBgAAECLSAAAAQkQaAABAiEgDAAAIEWkAAAAhIg0AACBEpAEA4GIrLAAAA1RJREFUAISINAAAgBCRBgAAECLSAAAAQkQaAABAiEgDAAAIEWkAAAAhIg0AACBEpAEAAISINAAAgBCRBgAAECLSAAAAQkQaAABAiEgDAAAIEWkAAAAhIg0AACBEpAEAAISINAAAgBCRBgAAECLSAAAAQkQaAABAiEgDAAAIEWkAAAAhIg0AACBEpAEAAISINAAAgBCRBgAAECLSAAAAQkQaAABAiEgDAAAIEWkAAAAhIg0AACBEpAEAAISINAAAgBCRBgAAECLSAAAAQkQaAABAiEgDAAAIEWkAAAAhIg0AACBEpAEAAISINAAAgBCRBgAAECLSAAAAQkQaAABAiEgDAAAIEWkAAAAhIg0AACBEpAEAAISINAAAgBCRBgAAECLSAAAAQkQaAABAiEgDAAAIEWkAAAAhIg0AACBEpAEAAISINAAAgBCRBgAAECLSAAAAQkQaAABAiEgDAAAIEWkAwFSn0+wFAK23SKQBAFMtyzKu13+zZwAH9vHxOZalU2nn2QMAgGNb1/ux7+9j2x7H3d2f2XOAQzmN6/Vz7Pv7WNeH2WN+iTQAYKptu4x9/zteX9/G19f/2XOAgzmfl7GuD+Pp6XH2lF8iDQCYbtsuY9sus2cAJPiTBgAAECLSAAAAQkQaAABAiEgDAAAIEWkAAAAhIg0AACBEpAEAAISINAAAgBCRBgAAECLSAAAAQkQaAABAiEgDAAAIEWkAAAAhIg0AACBEpAEAAIScZw8AAI7l5eV59gSAtNPtdrvNHgEAAMAP544AAAAhIg0AACBEpAEAAISINAAAgBCRBgAAECLSAAAAQkQaAABAiEgDAAAIEWkAAAAhIg0AACBEpAEAAISINAAAgBCRBgAAECLSAAAAQkQaAABAiEgDAAAIEWkAAAAhIg0AACBEpAEAAISINAAAgBCRBgAAECLSAAAAQkQaAABAiEgDAAAIEWkAAAAhIg0AACBEpAEAAISINAAAgBCRBgAAECLSAAAAQkQaAABAiEgDAAAIEWkAAAAhIg0AACBEpAEAAISINAAAgBCRBgAAECLSAAAAQkQaAABAiEgDAAAIEWkAAAAhIg0AACBEpAEAAISINAAAgBCRBgAAECLSAAAAQkQaAABAiEgDAAAI+QYetybZTPgcaAAAAABJRU5ErkJggg==" width="640" /></p>Albert Astals Cidhttp://www.blogger.com/profile/12001470108926138921noreply@blogger.com5tag:blogger.com,1999:blog-7523589.post-26854888458218024382022-03-07T14:53:00.003+01:002022-03-07T14:56:04.189+01:00Okular: Signature support now works on Android<p>This is a continuation of <a href="https://tsdgeos.blogspot.com/2022/02/okular-signature-verification-user.html">https://tsdgeos.blogspot.com/2022/02/okular-signature-verification-user.html</a></p><p>In that blog what was introduced was the new user interface to be able to see digital signatures in the mobile interface (i.e. the one that uses Kirigami instead of QWidgets).</p><p>You can use the Okular mobile interface anywhere you want, it's not really mobile-only, it's really mobile-optimized, so you can try it (though you'll have to build it manually since most distributions don't build it by default) on desktop Linux too.</p><p>Anyway, in that previous blog I talked about introducing the new user interface to be able to see digital signatures, and that worked out of the box in places that provide NSS like desktop Linux or Plasma Phone distributions (Aleix tried on the PinePhone and confirmed it works), but for Android it still did not work.</p><p>What was needed was something very similar to what we did for Windows <a href="https://tsdgeos.blogspot.com/2022/02/okular-signature-support-now-works-on.html">https://tsdgeos.blogspot.com/2022/02/okular-signature-support-now-works-on.html</a> but this time for Android.</p><p>I added a way for Craft to <a href="https://invent.kde.org/packaging/craft-blueprints-kde/-/commit/d82ef0db2c40cf98c9d405a1734bbc5cb6286686">build NSS for Android</a> and told it to <a href="https://invent.kde.org/packaging/craft-blueprints-kde/-/commit/efec8c0ea82e02803f4b9e2136cd3685becb718d">not disable NSS when building poppler for Android</a> that should have been all.</p><p></p><p>But things are never simple enough...</p><p>For Android we use a tool called androiddeployqt, it is a tool that gathers everything needed for your project and creates the APK file for it. Unfortunately it has a documented limitation with runtime plugins, it has no way to know they are needed so they are not packaged. NSS unfortunately has plugins, so after some "why is this crashing?" hours of scratching my head and debugging i realized the problem was the missing plugins were not being "installed".</p><p>The workaround to make androiddeployqt work for plugins is basically linking the plugins to your binary, this way the plugin is a clear dependency and gets packaged, but did I say things are never simple enough?</p><p>In KDE we have binary-factory continuous integration for Android and we also have gitlab continuous integration for Android, unfortunately they use different ways of building, the first uses Craft, the second does not. This means that in gitlab CI the NSS library is not available, so I can't link to it, but i need to link to it so that Craft on the binary-factory CI creates the APK files correctly.</p><p>To try to resolve that I came up with a patch that tried to <a href="https://invent.kde.org/graphics/okular/-/commit/d6b1524987b374e7059b7592bf40be30ae41f067">differentiate if we were building inside Craft or the gitlab CI</a> unfortunately while that worked on my local setup it did not work on the KDE servers, so at the end I resolved for a much more pedestrian way, there's an <a href="https://invent.kde.org/graphics/okular/-/commit/f234bdf4941f4e897c1102bd470677dd6ec5094e">option to enable the extra libraries</a> and Craft <a href="https://invent.kde.org/packaging/craft-blueprints-kde/-/commit/19393364f76a2a901b6e13a6a1424f1dd613c14f">enables that option when building Okular</a></p><p>So after that, yes, it works as you can see in the screenshot below :) <br /></p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEja7bDTNxFIqWwQCTwCfOnJUgNlDmFLVkcimLRp9nuGsao641Ts_8x2-snP3GySC1rQkMoNAuPGpws3TztkQAOYAPQTTld2rpe5g6GF0ZqqN1QLnAcgeUW_C_THrBP0qr6DVeqfB7b9QbxjXTXft80ffXqr-bnjh7-8I1ptVPnjNPXNk_jF5w=s1280" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1280" data-original-width="720" height="640" src="https://blogger.googleusercontent.com/img/a/AVvXsEja7bDTNxFIqWwQCTwCfOnJUgNlDmFLVkcimLRp9nuGsao641Ts_8x2-snP3GySC1rQkMoNAuPGpws3TztkQAOYAPQTTld2rpe5g6GF0ZqqN1QLnAcgeUW_C_THrBP0qr6DVeqfB7b9QbxjXTXft80ffXqr-bnjh7-8I1ptVPnjNPXNk_jF5w=w360-h640" width="360" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Signature Properties User Interface<br /></td></tr></tbody></table><p>If you want you can download the Okular APK from <a href="https://binary-factory.kde.org/job/Okular_Nightly_android-arm64/">https://binary-factory.kde.org/job/Okular_Nightly_android-arm64/</a> but beware there are still some limitations that don't make Okular usable day-to-day for Android, so we've created a <a href="https://community.kde.org/GSoC/2022/Ideas#Project:_Improve_Okular_for_Android">Google Summer of Code potential project</a> for that, maybe you're interested?<br /></p>Albert Astals Cidhttp://www.blogger.com/profile/12001470108926138921noreply@blogger.com0