Language Selection

English French German Italian Portuguese Spanish

Kde Planet

Syndicate content
Planet KDE - http://planetKDE.org/
Updated: 11 hours 11 min ago

Linux App Summit 2019 schedule is out!

Monday 7th of October 2019 10:43:19 PM

We published the Linux App Summit 2019 schedule last week.

We have a bunch of interesting talks (sadly we had to leave almost 40 almost as interesting talks out, we had lots of awesome submissions!) ranging from flatpak and snaps to how product management is good for Free Software projects with some thought provoking talks thrown in to make us think what's the future of our platform.

I am going and you should totally come too!

The attendance is free but please register at https://events.linuxappsummit.org/


Akademy 2019 in Milan

Monday 7th of October 2019 10:00:16 AM

Last month I attended KDE’s annual gathering Akademy, which took place at the University of Bicocca in Milan, Italy. Never before had I been to an Akademy where I was interested in so many workshops and discussions that I hardly wrote any actual code.

It’s important to stay healthy during a conference – a bunch of KDE developers taking a swim in Lake Como

I arrived quite late on Friday evening, just in time before the kitchen closed at the welcome event. As usual, Saturday and Sunday were packed with presentations: after Lydia welcomed us at the conference, Lars Knoll, CTO of The Qt Company, gave a presentation on their plans for Qt 6. We were glad to hear that Qt is moving towards using CMake as build system which is what KDE has been using for over a decade now. Another point that got us excited was that they’re aiming to provide a unified styling engine for Qt Widgets and Qt Quick. Currently, we try to fill that gap with our qqc2-desktop-style Framework which works pretty well but also has its shortcomings since it just uses QStyle for painting widgets to a texture and none of QtQuick’s hardware-accelerated capabilities.

My talk (slides, video recording) this year was a quick rundown of Plasma’s new notification system. I showed some of its features, such as do not disturb mode, explained new APIs for application developers to use, and gave an outlook on what’s planned in the future. One of the ideas on the crazy side was to have Plasma Browser Integration help reduce duplicate notifications synced through KDE Connect. Often I have a dedicated app on my phone but just use the web version on my computer. What if, when a notification is synced from my phone, KDE Connect can ask my browser whether I have the respective website open and then filter out the notification since you probably got one from the browser already anyway?

Organized like a pro

There were so many interesting BoF sessions this year that I had to actually schedule where to go well in advance. Starting off the week early in the morning was a planning session on KDE Frameworks 6, where we came up with a giant work board of things to do. See David’s email for all details. Later that day I attended sessions on Snapcraft (we’re “all about the apps”, after all), openQA, GitLab, and KDE neon.

Tuesday morning I scheduled a BoF on notifications. It was a brainstorming session on how to improve notifications both for application developers and end users. The main focus was how to make the history more useful, what ways there are for applications to manage their notifications properly anytime, no matter if it is currently shown in a popup or two pages down the history. Also, we did some planning for a KNotificationV2 class with fewer dependencies, first-class QML bindings, and proper platform backends for Android, Windows, macOS, etc. See the meeting notes for more information.

The Plasma BoF afterwards was mainly about Wayland (screen rotation, window thumbnails, virtual keyboard improvements, stability), theming, System Settings reorganization, and Plasma Mobile. Following the successful Plasma 5.12 LTS and based on distro feedback we decided that Plasma 5.18 will be another LTS release. Check out the meeting notes, too.

Traditionally Wednesday afternoon is when Akademy attendees venture out explore the area they all traveled to. This year’s day trip went to the North to Varenna near Lake Como, where we hiked up to Vezio Castle, and took the ferry to the other side of the lake. Of course, with sunny weather and beautiful landscape around, we just had to take a swim in the lake.

Gorgeous view from Castello di Vezio

On Thursday morning there was a session on how to write custom KItinerary extractors. I’m a huge fan of KDE Itinerary and in the few hours between discussions I actually had to write some code, I moved forward my secret master plan to augment Plasma Browser Integration with Itinerary and structured data extraction capabilities. Stay tuned for a follow-up blog post on that. :)

Carl already worked on automatically extracting all Plasmoid configuration keys for the new sysadmin documentation page

In the afternoon we scheduled a two hour track for everything enterprise. The big topic right now is KIO Fuse which will finally allow non-KDE applications to seamlessly access network shares and other remote locations. We were also glad to hear our friends in Munich are quite happy with Plasma 5.12 LTS. The second hour was mostly spent on touching up our sysadmin documentation and we decided to migrate it to a Sphinx page, similar to our new HIG page. The idea is to use as much auto-generated content from actual config files and source code as possible to keep it from getting outdated that easily. Again, there’s some notes with more details.

Thanks to everyone involved in making this event possible! It has been a great week of discussion and planning with many new faces that I’m looking forward to seeing again in the future.

WatchData PROXKey digital signature using emSigner in Fedora 30

Monday 7th of October 2019 08:19:24 AM

TL;DR — go to Howto section to make WatchData PROXKey work with emSigner in GNU/Linux system.

Introduction

Hardware tokens with digital signature are used for filing various financial documents in Govt of India portals. The major tokens supported by eMudhra are WatchData ProxKey, ePass 2003, Aladdin, Safenet, TrustKey etc. Many of these hardware tokens come (in CDROM image mode) with drivers and utilities to manage the signatures, unfortunately only in Windows platform.

Failed attempts

Sometime in 2017, I tried to make these tokens work for signing GST returns under GNU/Linux, using the de-facto pcsc tool. I got a WatchData PROXKey, which doesn’t work out-of-the-box with pcsc. Digging further brings up this report and it seems the driver is a spinoff of upstream (LGPL licensed), but no source code made available, so there is no hope of using these hardware tokens with upstream tools. The only option is depending on vendor provided drivers, unfortunately. There are some instructions by a retailer to get this working under Ubuntu.

Once you download and install that driver (ProxKey_Redhat.rpm), it does a few things — installs a separate pcsc daemon named pcscd_wd, installs the driver CCID bundles and certain supporting binaries/libraries. (The drawback of such custom driver implementations is that different drivers clash with each other (as each one provides a different pcscd_wd binary and their installation scripts silently overwrite existing files!). To avoid any clashes with this pcscd_wd daemon, disable the standard pcscd daemon by systemctl stop pcscd.service.

Plug in the USB hardware token and to the dismay observe that it spews the following error messages in journalctl:

Oct 06 09:16:51 athena pcscd_wd[2408]: ifdhandler.c:134:IFDHCreateChannelByName() failed Oct 06 09:16:51 athena pcscd_wd[2408]: readerfactory.c:1043:RFInitializeReader() Open Port 0x200001 Failed (usb:163c/0417:libhal:/org/freedesktop/Hal/devices/usb_device_163c_0417_serialnotneeded_if1) Oct 06 09:16:51 athena pcscd_wd[2408]: readerfactory.c:335:RFAddReader() WD CCID UTL init failed.

This prompted me to try different drivers, mostly from the eMudhra repository — including eMudhra Watchdata, Trust Key and even ePass (there were no *New* drivers at this time) — none of them seemed to work. Many references were towards Ubuntu, so I tried various Ubuntu versions from 14.04 to 18.10, they didn’t yield different result either. At this point, I have put the endeavour in the back burner.

A renewed interest

Around 2019 September, KITE announced that they will start supporting government officials using digital signatures under GNU/Linux, as most of Kerala government offices now run on libre software. KITE have made the necessary drivers, signing tools and manuals available.

I tried this in a (recommended) Ubuntu 18.04 system, but the pcscd_wd errors persisted and NICDSign tool couldn’t recognize the PROXKey digital token. Although, their installation methods gave me a better idea of how these drivers are supposed to work with the signing middleware.

Couple of days ago, with better understanding of how these drivers work, I thought that these should also work in Fedora 30 system (which is my main OS), I set out for another attempt.

How to
  1. Removed all the wdtokentool-proxkey, wdtokentool-trustkey, wdtokentool-eMudhra, ProxKey_Redhat and such drivers, if installed; to start from a clean slate.
  2. Download WatchData ProxKey (Linux) *New* driver from eMudhra.
  3. Unzip and install wdtokentool-ProxKey-1.1.1 RPM/DEB package. Note that this package installs the TRUSTKEY driver (usr/lib/WatchData/TRUSTKEY/lib/libwdpkcs_TRUSTKEY.so), not ProxKey driver (/usr/lib/WatchData/ProxKey/lib/libwdpkcs_SignatureP11.so) and it seems the ProxKey token only works with TRUSTKEY driver!
  4. Start pcscd_wd.service by systemctl start pcscd_wd.service (only if not auto-started)
  5. Plug in your PROXKey token. (journalctl -f would still show the error message, but — lesson learned — this error can be safely ignored!)
  6. Download emsigner from GST website and unzip it into your ~/Documents or another directory (say ~/Documents/emSigner).
  7. Ensure port 1585 is open in firewall settings: firewall-cmd --add-port=1585/tcp --zone=FedoraWorkstation (adjust the firewall zone if necessary). Repeat the same command by adding --permanent to make this change effective across reboot).
  8. Go to ~/Documents/emSigner in shell and run ./startserver.sh (make sure to chmod 0755 startserver.sh, or double-click on this script from a file browser).
  9. Login to GST portal and try to file your return with DSC.
  10. f you get the error Failed to establish connection to the server. Kindly restart the Emsigner when trying to sign, open another tab in browser window and go to https://localhost:1585 and try signing again.
  11. You should be prompted for the digital signature PIN and signing should succeed.

It is possible to use this digital token also in Firefox (via Preferences → Privacy & Security → Certificates → Security Devices → Load with Module filename as usr/lib/WatchData/TRUSTKEY/lib/libwdpkcs_TRUSTKEY.so) as long as the key is plugged in. Here again, you can skip the error message unable to load the module.

Akademy 2019: new goals, new board, new president

Sunday 6th of October 2019 05:43:53 PM

Akademy 2019 has been over for a little more than 3 weeks now. It’s been a great and eventful Akademy. Let’s take a look at what happened.

New goals

In 2017 we chose 3 goals to work towards together as a community. Those were improved onboarding, usability and productivity of basic software and privacy. For all of them we’ve made great progress and I’m thrilled by the result. But the original idea behind the goals wasn’t just to get work done on some specific goals. The other reason was to give us something to work towards together as a community (as we were starting to lose that uniting factor that binds us all together as KDE grows) and to get in new people by making it clearer what we need help with and where to dive in. Looking back now my expectations were exceeded quite a bit for those. It makes me so happy to see a lot of new people joining and being enthusiastic about contributing to KDE in meaningful ways – even going so far as to proposing 2 of the 3 selected initial goals.

At the beginning of the year we decided it was time to shift our focus to new goals and started the process for proposing and voting on new goals. We started Akademy with a review of the initial goals and then I had the pleasure to announce the new ones:

  • Wayland: We will finalize the transition to Wayland and embrace the future of desktop. This is a necessary step towards a lot of new features and improvements our users want to see, like better touchscreen support.
  • Consistency: As KDE’s software evolved small and large inconsistencies creep in that make our software less pleasant to use. It also means having to maintain different implementations of essentially the same component like a scrollbar. We will identify and remove these inconsistencies in all of KDE’s software.
  • All about the Apps: We want to refocus on KDE’s applications and make them easier to discover and install for our users.

I’m looking forward to the progress on these goals over the next 2 to 3 years. To start helping out please have a look at the goals page and get in touch.

New board

As every year during Akademy we held the general assembly of KDE e.V. and elected new board members for the two open positions. I’m delighted to welcome Adriaan and Neofytos to the board.

After the election it was time to decide on the board positions. I have been on the board of KDE e.V. for 8 years now and the president for 5 years. Leading this organisation has been one of the most important things I have done so far and I believe I have made an impact. At the same time I am convinced that it is not healthy for an organisation to be lead by the same person for too long. That’s why at the start of my current term we discussed how we see the future of the organisation and our role in it. It was clear that Aleix has been doing invaluable work on the board as the vice president and would clearly be a good choice to lead the organisation in the future. We decided that we will have at least one year at the end of our current term where I will be on the board to support and advice and ensure a smooth transition for Aleix. This time has come now. I would like to ask you all welcome Aleix as the new president of KDE e.V. and provide him with all the support he needs. I am looking forward to working with our new Board and see where we will take KDE e.V. together in the next years.

The new board positions we agreed on are as follows:

  • Aleix Pol i Gonzalez: President
  • Lydia Pintscher: Vice President
  • Eike Hein: Vice President and Treasurer
  • Adriaan de Groot: Board Member
  • Neofytos Kolokotronis: Board Member
Next Akademy

We are still looking for a host for Akademy 2020. If you’d like to host the KDE community next year please have a look at the call for hosts which has all the details and reach out if you have any questions.

This week in KDE: apps, apps apps!

Sunday 6th of October 2019 04:02:57 AM

It’s been a big week for Dolphin with some new features, plus various improvements for other apps. Among them, KDE developer Christoph Cullmann went on a High DPI rampage and and fixed visual glitches in Kate and Okular on Windows when using a High DPI scale factor, and made great progress towards fixing the infamous line glitches in Konsole when using fractional scaling. Though still not quite perfect, it’s much better now.

Beyond that, a bunch of great things are in development which I can’t announce yet, but I guarantee that you’ll like them once they land in the coming weeks!

New Features Bugfixes & Performance Improvements User Interface Improvements How You Can Help

Check out https://community.kde.org/Get_Involved and find out ways to help be a part of something that really matters. You don’t have to already be a programmer. I wasn’t when I got started. Try it, you’ll like it! We don’t bite!

Finally, consider making a tax-deductible donation to the KDE e.V. foundation.

Recently Used ioslave

Saturday 5th of October 2019 08:05:00 AM

With D7446 landing, the new ioslave recentlyused:/ ioslave will become user visible with KDE Frameworks 5.63. This differential revision adds two entries "Recent Files" and "Recent Locations" to the place panel (in dolphin and open/save dialogs)

It leverages the ioslave recentlyused:/ introduced in D22144, allowing to access KActivity data. KActivity is the service that provides "recent" elements to kickoff menu and is activity aware as the name suggests.

So now "Recent Files", "Recent Locations" in the places panel share the same underlining data with kickoff.

But recentlyused:/ can be used to create your virtual folders for recent files or folders. For instance

  • recentlyused:/files?type=video/*,audio/*

To filter recently accessed video and audio files.

  • recentlyused:/files?path=/home/meven/kde/src/*&type=text/plain

To filter recently accessed text files in any subdirectory of /home/meven/kde/src/

  • recentlyused:/locations?path=/home/meven/kde/src/*

To filter recently accessed folders in any subdirectory of /home/meven/kde/src/

You can read the documentation for more details.

When working on this new feature, It was a great time to improve KActivity. So I allowed KActivity to ingest data from gtk applications in differential D23112.

I want to thank Ivan Lukić for building KActivity service and library and reviewing most of this work. And I want to thank all the other reviewers involved.

CMake 3.15.4 landed in FreeBSD

Friday 4th of October 2019 10:00:00 PM

We (and this is a “we” that means “I pushed a button, but other people did all the real work”) just landed the latest CMake release, version 3.15.4, in the official FreeBSD ports tree.

This is part and parcel of the kind of weekly maintainence that the KDE-FreeBSD group goes through: building lots of other stuff. We’re happy to be responsible for code that hundreds of other ports depend on, but it brings a bunch of extra work with it. I probably build gcc and llvm a few times a week just testing new KDE bits and pieces (because in between those tests, the official ports for other parts, like those compilers, have updated as well).

For KDE development, this means that after installing the KDE packages, followed by devel/kdevelop you can dive right in with:

  • Clang 8 or 9 (depends on which FreeBSD version)
  • boost 1.71
  • Qt 5.13.0
  • KDE Frameworks 5.62
  • KDE Plasma 5.16.5
  • KDevelop 5.4.2

You can watch our progress (or how we’re keeping up) over on repology, which is a darn useful resource for figuring out what to package.

Plasma Mobile: weekly update: part 1

Friday 4th of October 2019 12:00:00 AM

Starting from today, the Plasma Mobile team is beginning a weekly blog series to highlight the fixes and features landing in various modules that make Plasma Mobile.

Phone shell

At Akademy Bhushan and Marco presented Plasma Nano shell to the community. Earlier this week the changes to use plasma-nano as a base shell package landed in plasma-phone-components. The shell includes an updated look for the app launcher and several of the shell interactions, including adding and removing widgets and changing the wallpaper.

Kirigami

A very common pattern for applications, both for mobile and desktop, is to include some kind of menu which loads different “main pages” for the application. On a desktop application, you’ll have a sidebar on the left which switches the pages on the right. On a mobile application you’ll have this list either as the first page or in the left side drawer accessible by swiping right. Since it’s a pattern that ended up being needed by many apps, we introduced a new dedicated API for it: PagePool and PagePoolAction: This API makes it possible to implement this paradigm with just few lines of code.

Here is a minimal example of an application that implements this behavior with PagePool and PagePoolAction:

import QtQuick 2.6 import org.kde.kirigami 2.11 as Kirigami Kirigami.ApplicationWindow { id: root Kirigami.PagePool { id: mainPagePool } globalDrawer: Kirigami.GlobalDrawer { title: "Hello App" titleIcon: "applications-graphics" actions: [ Kirigami.PagePoolAction { text: i18n("Page1") icon.name: "speedometer" pagePool: mainPagePool page: "Page1.qml" }, Kirigami.PagePoolAction { text: i18n("Page2") icon.name: "window-duplicate" pagePool: mainPagePool page: "Page2.qml" } ] } contextDrawer: Kirigami.ContextDrawer { id: contextDrawer } pageStack.initialPage: mainPagePool.loadPage("Page1.qml") }

See it in action in the following video:

Maui Project

MauiKit, the UI framework, is now making further usage of Kirigami properties, components and helpers for visual consistency. It has now become more integrated into the platform by using KF5 libraries and has gained new features to improve the user interaction patterns both on mobile and desktop.

Settings application

Nicolas Fella updated the “Settings” app to fix the module activation when the app is already running, commit.

Code of the “Accounts” module was moved from the Settings app to kaccounts-integration, replacing the existing module there. This makes the desktop and mobile platforms use the same unified code base.

Jonah Brüchert added an “Information” module in the Settings application, which will eventually replace the the “about-distro” module in the kinfocenter code base.

Applications

Dan Leinir Turthra Jensen fixed Peruse making it usable on HighDPI screens. commit.

Jonah Brüchert introduced changes in Plasma Angelfish to port the settings screen to match the Kirigami look-and-feel and navigation and usage patterns. Changes were also introduced to split the global drawer and context drawer.

Bhushan Shah fixed a crash in the dialer code at startup, which was then tested by Luca Weiss on the Pinephone developer kit.

Index, the file manager, now makes use of KIO for file operations. It also uses the same model for bookmarks and places as the desktop. This means tighter integration with other apps and the system, providing progress notifications on moving, copying and removing files and browsing remotes locations like SFTP.

There is now a collapsible sidebar that, when collapsed, can be dragged to preview its contents. This is useful on small screens, such as on Plasma Mobile devices.

You can now also browse your files with the new Miller Column View, and open different places in different tabs.

With the Selection Bar interaction pattern you can select files across different places. This interaction pattern has been improved a lot and the selection state in the different views and directories is preserved.

Index incorporates a file preview which allows to quickly preview files and get basic information from text, images, videos and audio files. Coming soon: PDFs.

Nota, the simple text editor, has gained syntax highlighting support and you can also open multiple files in different tabs thanks to the KIO libraries and KQuickSyntaxHightlighter.

Buho, the note-taking and link-collector, can now sync notes by using NextCloud’s Notes app API, and can benefit from MauiKit Editor component for syntax highlighting to save snippets of code.

Some of the Maui apps are about to have stable relases and you can try them out on Android as well!

Johan Ouwerkerk has made major improvements to the otpclient app in the last few weeks from. otpclient is an app for generating two factor login codes, similar to Google’s Authenticator or SailOTP.

Currently the basic feature works, but a lot of work remains to be done. One way you can help us a lot is by suggesting a better name for the app on the theme of “keys”, “two factor”, “login” and “authentication”.

Downstream

In postmarketOS, changes by Clayton Craft to update the device support for Librem 5 devkit was merged along with changes by Bart Ribbers to update Plasma to the latest pre-release and update the settings app to the latest revision. Bhushan created a merge request to update the mesa and kernel used for pinephone in postmarketOS. You can watch a video by the postmarketOS developer, Martijn Braam. In the video he puts together the final PinePhone prototype, which also includes a sneak preview of Plasma Mobile!

You can also watch a demo of Plasma Mobile running on Librem 5 devkit using updated postmarketOS packages:

The KDE Neon team upgraded the Qt version from 5.12.3 to 5.13.1. This includes several bugfixes and new features. These upgrades have landed in the new edge image for Halium based devices like the Nexus 5X.

Want to help?

Next time your name could be here! To find out the right task for you, from promotion to core system development, check out Find your way in Plasma Mobile. We are also always happy to welcome new contributors on our public channels. See you there!

KDE & Qt Applications and High DPI Displays with Scaling

Thursday 3rd of October 2019 04:40:00 PM
What is a High DPI Display?

In the past, most displays had (or the OS pretended to have) around 96 PPI, more or less.

If you differed a bit and had too small/large UI elements, you mostly just resized your default font size a bit and were kind of happy.

In the last years, more and more displays arise that have a much higher PPI values, which allows for e.g. very crisp rendering of text.

I arrived late in that era for my Linux machines by now starting to use two 163 PPI displays.

Just tweaking your fonts doesn’t help here, all other things will still be unbearable small, even if you in addition increase e.g. icon sizes.

A solution for this is the current trend to just “scale” your UI by some factor, for my displays some factor of 1.5 leads to the most pleasant sizes.

How does Qt handle that?

A detailed description on how Qt does try to tackle the challenges of such displays can be found here.

More or less the gist of this is: In your application you work on logical pixels (in most cases) and Qt will do the hard work for you to then paint that in real pixels with the right scaling applied.

In practice, this isn’t fully transparent to the programmer. For example, as soon as you work with QPixmap, you will think a bit about where which pixel variant is used. You need to be careful to not mix-up the size() of a QPixmap 1:1 with let’s say layout/widget sizes in such scaled scenarios, see here.

Fine, nice, but what does that mean in practice?

Let’s take a look at how this works out in practice using the latest stable release of KDE & Qt stuff:

  • KDE Plasma 5.16.5
  • KDE Applications 19.08.1
  • KDE Frameworks 5.62.0
  • Qt 5.13.1

My setup for the below experiments are two 163 PPI displays with scale factor 1.5.

I use some Manjaro Linux with open-source AMD drivers for some average middle class card.

The screenshots are taken on my second screen. I used PNG to avoid that some JPEG artifacts make the real rendering artifacts unclear, bear with the large size.

Experiments on Kate & Konsole

Let’s show the current state with Kate & Konsole, here how Kate 19.08.1 looks if you start it on the second screen with default configuration with COPYING.LIB of ktexteditor.git as file:

This looks kind of strange. What you see is actually no split screen, even that is a pure rendering artifacts, actually, the whole Kate windows is more or less one artifacts.

A user reported this in Bug 411965 - Rendering issue in dual screen hidpi setup. With my new setup I was able to reproduce that, on every Kate start :/

The user himself investigated this and came to the same conclusion as me, the culprit is some winId() call in KonsolePart. As Kate constructs the KonsolePart widget without a parent first and then insert it into a layout, the code inside the part will call winId() on a non-native widget.

This is now fixed and backported to the 19.08 branch.

This means, with 19.08.2, you will have the following experience:

This somehow looks more like an actual working application.

For people not able to update, a workaround is to disable both project and terminal plugin in your Kate setup, no ideal solution, but makes Kate at least usable again.

Is now all fine with Kate? Unfortunately not, lets change my font size a bit and select things:

I selected both in the text view (KTextEditor) and in the KonsolePart to show the issue is not just a plain “we are too dumb to render things” in KTextEditor. You get equal artifacts with most of our software :(

I spend some time to trace this issues down in the QTBUG-66036 - QTextLayout draw() rendering issues with “some” font sizes.

It came up to not being a text related issue at all.

To give a small outline how KTextEditor and Konsole render stuff:

  • All things are in pure integer coordinates inside the applications.
  • More or less we render some uniform high lines of text.
  • Most background/selection coloring is done via fillRect with integer coordinates/sizes in both KTextEditor/Konsole.
  • KTextEditor paints parts of the text background via QTextLayout::setFormats.
  • KTextEditor and Konsole rely in some parts on the clipping to avoid over-painting.

Given none of both rendering “engines” work anywhere with non-integer coordinates and sizes, the artifacts seems to be strange. They only occur with fractional scaling, e.g. with 1.5, not with e.g 2.0.

During debugging, three major issues that lead to the artifacts came up, I created separate bugs for them, as they are not text rendering related:

QTBUG-78964 - fillRect + Anti-Aliasing + hi-dpi Scaling => missing filled pixels

If you use fillRect, even for purely integer coordinates and sizes, if the scaling is fractional and you have the render hint “QPainter::Antialiasing” turned on, it will miss to fill one pixel at the border. For KTextEditor/Konsole mostly at the lower part of the filling. A workaround for this, now commited for KTextEditor framework and Konsole is to turn the anti-aliasing off for large parts of the rendering. Only the parts that actually need it, turn if on again, this doesn’t affect e.g. the text anti-aliasing.

QTBUG-78962 - setClipRect misbehavior for hi-dpi scaling with QRect overload vs. QRectF overload

KTextEditor uses setClipRect to avoid overpainting between individual lines. Unfortunately, like fillRect, setClipRect leads to one pixel being clipped away too early for fractional scaling. A workaround for this is to use the QRectF overload of setClipRect. Even thought the passed QRectF has the same pure-integer coordinates, this will avoid the clipping errors due to different internal handling. KTextEditor uses now this workaround.

QTBUG-78963 - Misbehavior of clipping done for ::paintEvent with hi-dpi fractional scaling

Even after all this fixed, Konsole still draws some artifacts. Konsole is more relying on paintEvent to clip correctly than KTextEditor. Unfortunately the internal clipping done for the paintEvent seems to have the same off-by-one rounding issues like the manual setClipRect for QRect instead of QRectF. As we can’t control this clipping region in Konsole, I see no easy workaround, beside more often trigger full widget updates, which are costly.

This leads to this current state of the rendering in the master branch. I did select + deselect a bit text in the terminal to trigger the paintEvent related clipping failure, you can see a few small one pixel high selection leftovers below the selection area. You need to play a bit with the scaling factor and font size, too, to trigger the effects, as like all rounding errors, you need specific values to trigger them.

I hope the Qt bugs linked above can be fixed in the near future, as I doubt we can add workaround to all the applications affected (nor do we want to) and the clipping issue of the paintEvent, if it really is the reason for the last remaining Konsole artifacts, seems not to be really fixable at all in the application code, beside going away from fine grained repaints.

Here are the matching KTextEditor and Konsole bug report for the above issues. The relevant Qt bugs are linked there again, too.

Are that all current issues? I assume not.

I think there are for sure more pitfalls hidden, if you use some fractional scaling and Qt & KDE applications. Some of our applications are even still horrible broken for any kind of scaling :(

We are open-source software, patches to improve the current situation are very welcome.

Perhaps you are able to fix one of the above Qt bugs, that would be great!

P.S. Floating point math is hard!

One thing that disturbed me during trying to get rid of the rendering artifacts, is the bit careless choice of scaling factors people use.

I can understand that you want to have things 20% larger, but unfortunately, a factor of 1.2 leads to rounding errors all over the place, as 1.2 is no the nice number it seems to be in the hardware double precision floats we use.

If you want to avoid running in bad artifacts more than needed, please better scale with some factor that is a nicely representable float, like some multiple of 1⁄16 or 1⁄32.

For example some scaling with 1.25 will lead to much less issues than 1.2.

For details, just read up about how stuff like 0.1 or 0.2 is represented ;=)

You can ignore that advice and scale like you want, but I won’t take care of the artifacts that remain for e.g. 1.1 scaling in some corner cases ;=)

Discussion

Feel free to join the discussion at the KDE reddit.

Windows download link in kde.org/applications

Thursday 3rd of October 2019 09:35:35 AM

Some quick news about a new feature of kde.org/applications! With the amazing work done by Hannah von Reth and Christoph Cullmann, we now have more applications in the Windows Store.

I updated kde.org/applications to display this important information. Now if you are browsing for example the Kate application page using Windows, you should see a button “Install on Windows” instead of “Install of Linux”.

Since the generation of this website use the AppStream standard and this standard allow to add some custom fields, I added a vendor prefixed field to it: KDE::windows_store. Et voilà, the metadata is available to the php code.

The next task is to add a list at the bottom of the supported platform, in case the operating system detection doesn’t work. This will let the visitor know about all the supported platforms.

If someone is interested in doing this task, please contact me on irc/matrix #kde-www and username ‘Carl Schwan/CarlSchwan[m]’. The repository is available in the new KDE Gitlab instance: invent.kde.org/websites/kde-org-applications/.

Krita 4.2.7 Released

Thursday 3rd of October 2019 08:42:40 AM

Today, we’re releasing the sixth bug fix release of Krita 4.2. As discussed in our development update, we intend to release a few more monthly 4.2 bug fix releases before releasing Krita 4.3. There are a lot of bug fixes!

And to celebrate the release, we have a new video by Ramon Miranda which comes with a very nice present: a free new bundle of six sketching brush presets!

Bugs Fixed in 4.2.7
  • Improve the layout and functionality of the color selector dialog and make it perform much better. (BUG:381529). Patches by Mathias Wein.
  • Do not crash when trying to merge an invisible group layer (BUG:411124)
  • Make it possible to save group layers to file layers even if they are empty (BUG:411101)
  • Make the initial location of the OCIO profile selector sensible
  • Fix possible crashes when a broken file ends up in the Recent Documents List (BUG:411416)
  • Use locale-based formatting of numbers in the measure tool and other places. Patch by Karl Ove Lufthammer.
  • Make HTML markup in the Search Field tooltips work. Patch by Karl Ove Lufthammer.
  • Fix a crash when moving multiple vector shapes (BUG:409872)
  • Fix the sort order of images imported as frames if they are not numbered with prefix 0’s (BUG:375885)
  • Make it possible again to run the Python Scripting Debugger on Linux (BUG:410807) Patch by Rebecca Breu.
  • Cache ICC profiles when loading layers: this speeds up loading images with thousands of layers (BUG:411532)
  • Fix file layer and comics manager page updating on Windows (BUG:410409, BUG:389544)
  • Use LittleCMS’ copy alpha channel flag to speed up color transformations
  • Fix outline move mode (BUG:411057)
  • Fix a hang in the text shape if an UTF-8 Line Break character is used (BUG:410402)
  • Fix a random crash if there is not enough space in the swapfile location for AMD Ryzen 3500 CPU’s (BUG:411081)
  • Fix checking whether the swapfile location is actually writable on Windows (BUG:411129, BUG:411081)
  • Fix another random crash when painting (BUG:411280)
  • Fix artifacts when moving control points of a path shape (BUG:411334)
  • Fix a crash when cropping a particular image (BUG:411536)
  • Fix move action in the bezier selection tool (BUG:398294)
  • Fix artifacts in Gaussian Blur on transparent layers (BUG:411719)
  • Fix a crash when the Liquify Transform is started too quickly (BUG:411703)
  • Fix a bad memory leak in the jpeg converter (BUG:410864)
  • Fix a crash when loading a JPEG image with a broken color profile (BUG:410864)
  • Fix problems when zooming with a touchpad (BUG:410940)
  • Fix issues when using the calculation capabilities of the specific color selector’s spin boxes (BUG:409818). Patch by Jasper Hartog
  • Make sure all layers are shown in the animation timeline by default
  • Fix a crash when the colorize tool is active on closing Krita
  • Fix a crash when converting a colorspace with OCIO enabled (BUG:411045)
  • Fix the Strength parameter not being used in Rotation – Fuzzy Dab (BUG:376179)
  • Fix a crash when using the mouse wheel while an image is opening
  • Re-add error messages lost when refactoring the error messages for loading images
  • Do not crash if libjpeg encounters any kind of error (BUG:364350)
  • Fix presets with random offset of texture being marked dirty all the time (BUG:406427)
  • Fix curves changing randomly with sensors with Use Same Curve enabled (BUG:383909)
  • Add a simple progress bar when saving .kra files
  • Ensure that the temporary folder isn’t suggested as a save-location as this can result in lost work.
  • Make sure toolbars don’t get enabled after editing the toolbar buttons (BUG:402679)
  • Do not crash when loading a tiled TIFF file with planar color data. (BUG:407171)
  • Fix freezes when changing some brush properties or curves (BUG:410158)
  • Fix wrong borders in the Edge Detection and Height To Normal Map Filters (BUG:411922)
  • Fix outline of Group Layers in Move Tool and Transform Tool (BUG:392717)
  • Fix preview of shape layers in Transform Tool and Move Tool (BUG:392717)
  • Raise the maximum FPS limit to 300 fps from 100 fps
  • Do not allow clone layers from pass-through group layers (BUG:409949)
  • Fix the color of a selected shape being synchronized with the color selectors (BUG:381784)
  • Fix updating the current shape color when doing undo/redo (BUG:404975)
  • Fix the broken TestKisSwatchGroup test (BUG:410387) Patch by Krysztof Kurek.
  • Make the splash render pixel-perfect on fractionally scaled displays. Patch by Guo Yunhe.
  • Fix a crash in Feather Selection, Wavelets, Blur and Edge Detection (BUG:412057)
  • Include reference images in the screen color picker (BUG:411816) Patch by Matthias Wein.
  • Clean up the SVG files used for icons and license the SVG files properly. Patch by Raghavendra Kamath.
  • Fix updating the assistants when moving the handles. Patch by Matthias Wein.
  • Fix a bad memory corruption error color handling. Patch by Matthias Wein.
Download Windows Linux

(If, for some reason, Firefox thinks it needs to load this as text: to download, right-click on the link.)

OSX

Note: the gmic-qt is not available on OSX.

Source code

Note: Linux distributions building Krita against Qt 5.13 have to be aware that a regression in Qt crashes Krita on exit. There’s a workaround for that, but that was not ready for this release.

md5sum

For all downloads:

Support Krita

Krita is a free and open source project. Please consider supporting the project with donations or by buying training videos or the artbook! With your support, we can keep the core team working on Krita full-time.

 

A fast and thread-safe pool allocator for Qt - Part 2

Thursday 3rd of October 2019 06:00:00 AM

In part 1 of this blog series, we developed a pool allocator that is optimized for small allocations. We confirmed that we do that a lot in Qt when we allocate QEvent or QObject instances, and a specialized allocator might be useful for application developers as well. So far, our solutions will allocate complete pages of memory as needed, and hand out memory chunks of a fixed size that is specified at compile time through a template parameter. It supports different threading models, with different tradeoffs regarding performance, memory efficiency, and concurrency. The results were giving us a very promising performance, beating the general-purpose allocators by a factor of 3-10 in our multi-threaded benchmarks.

Fall Season

Wednesday 2nd of October 2019 10:00:00 PM

Autumn is upon us (this means in the Netherlands: it has started raining, but for me: coffee and pumpkin pie).

Qt 5.13 has landed in FreeBSD, but this is now generating a bunch of bug reports, so I’m holding off upgrading my own desktop until some of those have been sorted out (by Tobias or myself, probably in VMs). Other parts of the stack are pretty much up-to-date.

I see there’s been a kube 0.8 release – the mail thingy, not the container thingy. We don’t package that for FreeBSD, and a 30-seconds attempt at doing so hits a “need some under-specified dependencies”. I get the urge to submit some merge requests for the CMake files and documentation (as always, constrained by time to actually write the patches).

For autumn housecleaning I threw out a bunch of stuff I’d been keeping since 2003 that “I would read someday”, which turned out to be untrue. The newly-available space has been claimed by computer parts, though. My desk remains largely unchanged, with SDDM not understanding my weird monitor setup. Plasma deals with that layout just fine (the left monitor is for all kinds of chat applications, where I don’t have to watch it directly and the vertical space means more IRC history remains visible when I do look at it).

Blog housekeeping has completed phase 1: all my wordpress entries from the mysteriously-vanished hoster that I used have been imported, although links between the entries are not fixed yet. This includes my FSFE blog back from when I was involved with that organization. The old posts remind me of all the events I’ve been though in my years involved with Free Software. One that particularly struck me and which as true today as it was nearly eleven years ago is this one, quoting Atul Chitnis in his closing speech of FOSS.in in 2008:

The point is to make a difference. Not just a difference for yourself, but a difference for the world.

Test Plasma 5.17 Beta

Wednesday 2nd of October 2019 01:41:30 PM

Plasma 5.17 Beta is out for testing and it needs you to give it a try. Do the panels show up where they should? Can you control your media players from the task manager? Do the obscure plasmoids you like still work? Download the KDE neon Testing edition ISO now to give it a try.

QBSP for TechNexion boards added to downloads

Wednesday 2nd of October 2019 09:09:45 AM

In the past we have been talking about what is QBSP here: https://www.qt.io/blog/2018/12/14/board-support-package-commercial-build-enablers-qt-partners and from the official documentation here: https://doc.qt.io/QtForDeviceCreation/qtdc-qbsp.html

We are happy to announce that our Hardware Technology partner TechNexion has just released new Qt Board Support Packages (QBSP) for their hardware platforms. The QBSP's are now available also for TechNexion iMX8MQ and iMX8M-Mini boards for Qt 5.12 LTS and Linux hosts. You can find them through your Qt Account under account.qt.io/downloads.

Kube 0.8.0 is out!

Tuesday 1st of October 2019 09:28:24 PM

After a waaaaaay to long “break” I have finally tagged another release.

The largest change in this release is the addition of the calendar view, which is not only useful, but also marks an important milestone in our development roadmap; We finally have all the pieces together from a technology perspective.

The calendar’s week view

The calendar was a major undertaking due to a couple of challenges:

  • It’s synchronized over its own protocol (CalDAV)
  • It’s for once not a list, so it’s visually a completely different beast than everything else.
  • It has lots of fun special cases such as recurring events, timezones, overlapping events, multiday vs. single day events, …
  • We wanted to avoid loading your complete calendar (including the past 10 years) into memory, while making sure you get recurring events displayed even if they started 10 years ago.

The work done so far solves most of the important challenges, but there are also definitely a couple of holes in it still, such as no drag and drop support.

While the calendar is certainly the biggest new feature, there’s also a bunch of other improvements in there:

  • A new editor view, providing a much cleaner look than what we used to have.
  • Basic support for scheduling via iTip (both for sending an invitation to attendees, and for interacting with invitations you have recieved).
  • Autodiscovery support for CalDAV and CardDAV servers (So https://example.com instead of https://caldav.example.com/calendars/user@example.com/ is enough to configure your account).
  • Builds and runs on MacOS and Windows (it admittedly is not getting a lot of testing on those platforms, especially on Windows, but the baseline is there).
  • A fastmail account configuration dialog.
  • It’s now possible to create and modify contacts.
  • We no longer default to displaying HTML email
  • … and a bunch of other stuff in a little over 226 commits to sink and 561 commits to kube.
Tarballs

Tarballs are available at the usual locations:

Get It!

Of course the release is already outdated, so you may want to try a flatpak or some distro provided package instead:

https://kube.kde.org/getit.html

“Kube is a modern communication and collaboration client built with QtQuick on top of a high performance, low resource usage core. It provides online and offline access to all your mail, contacts, calendars, notes, todo’s and more. With a strong focus on usability, the team works with designers and UX experts from the ground up, to build a product that is not only visually appealing but also a joy to use.”

For more info, head over to: kube.kde.org

The Planet is on Reddit

Tuesday 1st of October 2019 08:01:00 PM

For many years planet.kde.org was the goto page for news around KDE. This is still the case nowadays - many KDE contributors have their blog synchronized to talk about all sorts of KDE related cool stuff.

However, what changed significantly is how these blogs are discussed afterwards.

In the old days each blog typically had its own comment section. Nowadays, blogs may still have this comment section, but most of the time the blogs are discussed in the respective reddit subgroup. For instance, a popular subreddit is reddit/r/kde. There, you can find many KDE developers as well as many KDE users, giving direct feedback, asking questions, sometimes mentioning bug reports. While KDE of course has a dedicated bug tracker bugzilla that should be used, discussing a bug or wish on reddit often reaches a broader audience, putting some focus on specific bugs.

Similarly, there is also a subreddit for C++ called reddit/r/cpp where many C++ experts (compiler developers, members of the C++ ISO committee) are around. Following this reddit certainly also makes sense for Qt developers. Then of course, there are subreddits like reddit/r/linux etc. where KDE also pops up from time to time.

So in conclusion, via these subreddits we are able to reach many more communitites than just the KDE community. So if you are a blogger on planet.kde.org, make sure to post your blogs on the KDE subreddit. And in case reddit is new to you, you should definitely check it out from time to time!

For Kate, we decided to not have comments at all anymore. Instead, we simply always post our Kate blogs on the KDE subreddit for discussion, just like for this post.

Akademy! 2019 Edition

Monday 30th of September 2019 04:12:03 PM

KDE Akademy 2019

 

I am happy to report yet another successful KDE Akademy! This will make my 5th Akademy This year akademy was held in beautiful Milan, Italy. As usual we had so many great talks, you can read all about them here:

https://dot.kde.org/2019/09/10/akademy-2019-talks-heres-what-you-missed

My trip was shortened again due to flight availability, but I still got in some great BoF sessions. We were able to achieve some tasks and goals with the Fundraising Working Group. I hung out with the Neon team for a few, and it was decided I will continue the Debian merge and continue to keep the delta between Debian and neon as minimal as possible. This helps all deb based distributions in the end. I was also happy to see snaps are coming along nicely! There was a great BoF on user support, where we discussed trying to get users connected with the people that can answer questions. I believe we landed on Discourse, we are on the technical stage of making that happen.

The core of what makes Akademy so important is the networking of course. I was able to see many old friends and meet many new ones. I was so happy to see so many new faces this year! With each year our bunch has become more and more diverse, which is always a good thing. Face to face collaboration is very important in an environment where we mostly see text all day.

Until next year! Happy hacking and see you all around in the interwebs.

Scarlett

P.S. Stay tuned and I will have another post with everything I have been up to in the last year.

 

Related posts:
  1. Another successful Akademy! Neon team BoF, snappy and more.
  2. KDE Akademy 2018
  3. I’m going to Akademy! Neon team and more..

September Development Update

Monday 30th of September 2019 01:50:22 PM

We’re about to do another bug-fix release of Krita: that’ll be 4.2.7. We’re seeing that the number of new bug reports is dropping a bit, week over week: even though most bug reports can be closed instantly as duplicates or not bugs at all, that’s probably a sign that our stable releases are getting more and more stable. (See here to learn how to make good bug reports.) Though the total number of open bugs remains high, we worked really hard all September to make Krita better:

We also managed make 538 changes to the code in September with 23 developers — and that excludes translations, since those aren’t in our code repository.

We also went back to the Coverity Static Code analyzer and started analyzing Krita again. That was good for at least a hundred potential bug fixes, and it’s something that’s ongoing. We hadn’t done that for quite some time! There is still plenty to do, but the average defect density for projects the size of Krita is 0.7, so we’re not that bad.

Of course, focus on fixing bugs means that there’s less time for cool new features, or extending existing features. We did merge Sharaf Zaman’s Android port, though, which means that pretty soon we should have signed nightly Android APK’s!

Today during our weekly contributors meeting (notes are here), we decided we wanted to continue and do another couple of montly bug fix releases in the 4.2 series. In what’s currently our master branch, there are quite a few nice new features we’d like to share, though, and we’ll start making alpha builds of master in October, and invite everyone to help test what will become Krita 4.3.0.

We had originally wanted to release 4.3.0 in October, and have a fundraiser to celebrate the release. Part of the reason we’re postponing 4.3.0 is that we’d like to continue for a while with the stable 4.2 releases. Another reason is that we want 4.3.0 to have a completely reworked system for loading, handling and saving things like brush presets. We’ve been working on that for a long time now, and things are coming together, but there’s still a lot that needs to be done.

Latte bug fix release v0.9.3

Monday 30th of September 2019 12:26:05 PM

Latte Dock v0.9.3   has been released containing important fixes and improvements!


Go get  v0.9.3   from, download.kde.orgor  store.kde.org*

-----* archive has been signed with gpg key: 325E 97C3 2E60 1F5D 4EAD CF3A 5599 9050 A2D9 110E
Fixes:
    • important: plenty of fixes for margins and Fitt's Law
    • support android click animation even for panel empty areas
    • latte indicators can now support animations for panel empty areas
    • track kwinrc changes only when needed
    • latte plasmoid is now using the last used activity from its layouts instead of the plasma current one. In that way tasks animations are improved under multiple layouts environments when switching activities
    • fix for all screens last active window tracking
    • fix automatic icon size calculations in order to avoid constant cpu usage
    • update some qt deprecated code

    Donations:

    You can find Latte at Liberapay if you want to support,    

    or you can split your donation between my active projects in kde store.

    More in Tux Machines

    Devices Leftovers

    • Khadas VIM3L (Amlogic S905D3) Benchmarks, Settings & System Info

      Khadas VIM3L is the first Amlogic S905D3 SBC on the market and is sold as a lower-cost alternative to the company’s VIM3 board with a focus on the HTPC / media player market.

    • Semtech SX1302 LoRa Transceiver to Deliver Cheaper, More Efficient Gateways
    • In-vehicle computer supports new MaaS stack

      Axiomtek’s fanless, rugged “UST100-504-FL” automotive PC runs Ubuntu 18.04 or Windows on 6th or 7th Gen Intel chips, and offers SATA, HDMI, 2x GbE, 4x USB 3.0, 3x mini-PCIe, a slide-rail design, and the new AMS/AXView for MaaS discovery. Axiomtek announced a rugged in-vehicle PC that runs Ubuntu 18.04, Windows 10, or Windows 7 on Intel’s Skylake or Kaby Lake processors. The UST100-504-FL is aimed at “in-vehicle edge computing and video analytics applications,” and is especially suited for police and emergency vehicles, says Axiomtek. There’s also a new Agent MaaS Suite (AMS) IoT management suite available (see farther below).

    • Google Launches the Pixel 4 with Android 10, Astrophotography, and Motion Sense

      Google officially launched today the long rumored and leaked Pixel 4 smartphone, a much-needed upgrade to the Pixel 3 and 3a series with numerous enhancements and new features. The Pixel 4 smartphone is finally here, boasting upgraded camera with astrophotography capabilities so you can shoot the night sky and Milky Way without using a professional camera, a feature that will also be ported to the Pixel 3 and 3a devices with the latest camera app update, as well as Live HDR+ support for outstanding photo quality.

    • Repurposing A Toy Computer From The 1990s

      Our more youthful readers are fairly likely to have owned some incarnation of a VTech educational computer. From the mid-1980s and right up to the present day, VTech has been producing vaguely laptop shaped gadgets aimed at teaching everything from basic reading skills all the way up to world history. Hallmarks of these devices include a miserable monochrome LCD, and unpleasant membrane keyboard, and as [HotKey] found, occasionally a proper Z80 processor. [...] After more than a year of tinkering and talking to other hackers in the Z80 scene, [HotKey] has made some impressive headway. He’s not only created a custom cartridge that lets him load new code and connect to external devices, but he’s also added support for a few VTech machines to z88dk so that others can start writing their own C code for these machines. So far he’s created some very promising proof of concept programs such as a MIDI controller and serial terminal, but ultimately he hopes to create a DOS or CP/M like operating system that will elevate these vintage machines from simple toys to legitimate multi-purpose computers.

    today's howtos

    Audiocasts/Shows/Screencasts: FLOSS Weekly, Containers, Linux Headlines, Arch Linux Openbox Build and GhostBSD 19.09

    • FLOSS Weekly 551: Kamailio

      Kamailio is an Open Source SIP Server released under GPL, able to handle thousands of call setups per second. Kamailio can be used to build large platforms for VoIP and realtime communications – presence, WebRTC, Instant messaging and other applications.

    • What is a Container? | Jupiter Extras 23

      Containers changed the way the IT world deploys software. We give you our take on technologies such as docker (including docker-compose), Kubernetes and highlight a few of our favorite containers.

    • 2019-10-16 | Linux Headlines

      WireGuard is kicked out of the Play Store, a new Docker worm is discovered, and Mozilla unveils upcoming changes to Firefox.

    • Showing off my Custom Arch Linux Openbox Build
    • GhostBSD 19.09 - Based on FreeBSD 12.0-STABLE and Using MATE Desktop 1.22

      GhostBSD 19.09 is the latest release of GhostBSD. This release based on FreeBSD 12.0-STABLE while also pulling in TrueOS packages, GhostBSD 19.09 also has an updated OpenRC init system, a lot of unnecessary software was removed, AMDGPU and Radeon KMS is now valid xconfig options and a variety of other improvements and fixes.

    MX-19 Release Candidate 1 now available

    We are pleased to offer MX-19 RC 1 for testing purposes. As usual, this iso includes the latest updates from debian 10.1 (buster), antiX and MX repos. Read more