Language Selection

English French German Italian Portuguese Spanish

Kde Planet

Syndicate content Planet KDE
Planet KDE
Updated: 1 hour 43 min ago

MyPaint Brush Engine [Final Phase]

4 hours 57 min ago
We are in the final phase of GSoC. I don't even remember how quickly the last two months flew by. Coming to my project, it is almost complete apart from some finalisation related stuff that still is remaining. Perhaps, some review changes that my mentors shall give me once my current patch has been reviewed are also remaining.
This month, (20 days remaining before the final submissions start actually) I need to complete two items:
  1. Refactorizing the plugin for master branch: There were a lot of changes in master due to the complete resource-rewrite. Because of this, I need to change my way of handling mypaint brush files (.myb files) in master. This requires a bit of refactorization. I am afraid its been a while since I have seen the master and don't what changes I need to do to make this plugin work in master. I just hope it does not turn out to be something complex.
  2. User Documentation: Apart from refactorization, I need to start with writing user documentation ASAP. The advanced mypaint brush settings don't make much sense to me though, that might cause a bit trouble. I don't know what to write for those. Will require some help for this from my mentors I guess.
I don't know why, but I always seem to have this feeling at the back of my head that something will come up that will be tough to handle and ruin my project. Though this has been happening even before GSoC started. That scares me a bit :( Anyways.
Good bye :)

Latte Dock v0.10~ | July Update

Sunday 2nd of August 2020 01:35:00 PM

Hello everyone,

in the following you can read July development news from Latte Dock v0.10~ git version. [~, stands for rapid development, in your distro package repos is mentioned as git version]


1. New Auto Hide Sidebar visibility mode
Thanks to Martijn Vogelaar a new visibility mode for sidebars is supported. The new mode triggers Latte panel showing/hiding through the Latte Sidebar Button applet and global shortcuts but at the same time if the panel does not contain mouse for a period of time (can be set from Show timer) then it auto hides itself.
Visibility modes in general have updated their organization in order to be grouped much better. Currently they look like:

- visibility modes organization -

2. Background with All Corners

Users can now force background corners at all cases. I suppose this could be helpful if someone wants to replicate ChromeOS layout or play with different appearance styles.
- chromeos layout possibilities -

- all corners option in background -

3. Memory Consumption

A lot of improvements have been implemented in that regard. All Edit Mode windows (Canvas window, Main Settings with Behavior/Apperarance/Effects, Secondary small window) are now created only first time called and afterwards are reused for ALL Views (docks/panels) when requested. Because of this you are going to notice a very big memory usage drop when editing your panels and docks compared to any previous Latte version.
Even more, Indicators Config UIs found at Effects page are also following the new rule (create only once and reuse afterwards). In the past, indicators config uis were recreated its time a View was requesting editing. Because of that change I notice very stable memory usage that does not increase/decrease all the time when showing editing windows.
I think that the best way to calculate Latte memory consumption in v0.10~ is the following. Create your panels and docks the way you like them and change their properties and appearance to your liking. Close Latte afterwards and restart it. Start using your docks and panels by triggering popups, parabolic effect etc. Afterwards notice your memory usage but make sure that you have not triggered any docks/panels editing.

4. Layout Details Window

I am pretty proud of the new Layout Details window found in Layout Editor. With the new window you can add icons and backgrounds to your layouts in very nice and user friendly manner.
- layout details window / choose background color -

5. Layout Background Badges

- background badges -

When playing with Layouts in the editor it is nice to distinguish your different layouts fast and easy. Icons, colors and backgrounds are helping with this. Background badges take up the task and they are identified with the following priority:
   a. Layout icon is always preferred if it has been set by the user
   b. Layout assigned Plasma Activities icons are used if there is no layout icon
   c. Canvas Background is used there is no layout icon and that layout is not assigned to any activities
That was possible because layouts in the Editor are provided through QTableModel that has made the implementation pretty concrete and future proof.

6. Noteworthy Fixes

  • When a layout was deleted from Layouts Editor there were cases that could break the layouts model data validity.
  • Loading/Unloading different layouts could create a crash pointing in plasma frameworks because some codepaths were trying to access applets() that had already been destroyed.
  • Enable Hide Timer for ZERO value [instant use]
  • Enable dock/panel hiding only after any slide-in event has finished
  • Fix Panel/Dock types enforcement through Editing windows
  • Live Editing mode at all times even when "Rearranging and Configuring Applets". Latte is auto-adjusting dock and panel modes based on different user preferences immediately after such changes occur.
  • fix vertical system trays appearance for Plasma >= 5.19
  • Support XCB::SHAPE in order to define which dock areas are accepting mouse input and for all the rest input is forwarded to underlying windows [case of client sided background shadows used in docks].
  • Support GTK_FRAME_EXTENTS in order to define which dock areas are actually really used from docks and ignore all the rest. This way the compositor is informed about docks real geometry and locates underlying application windows accordingly [case of client sided background shadows that must be ignored from window manager].

7. Estimated Time of Arrival

There is none. Latte v0.10 will be ready, when it is ready. That may take up even one more year. I am developing Latte as my fun project and I want to keep it that way. If you think it is too far, do not hesitate, come, join and help...

8. Donations

Personally I do not think donations are necessary. Easier thing you can do is to just install from KDE Store the Latte related widgets, they work just fine even with plasma panels. KDE Store provides me some monthly beers because of this. Funny thing in that Latte Separator that I developed in a day provides me most of the beers and Latte Dock that I develop plenty of hours daily for the last three years provides me almost none.. :) I mention it as a funny fact, please do not take it differently.

In a case, if you still want to donate you can use the following:

You can find Latte at Liberapay ,    

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

Kate - User Feedback - August 2020

Sunday 2nd of August 2020 11:28:00 AM

Starting with the 20.04 release, Kate allows the user to turn on some telemetry submission. This is a purely opt-in approach. We do not submit any data if you not actively enable this feature! For details about the introduction of this feature, see this post.

After some months of having this out in the wild, I think it is time to show up with the first data we got.

Submission numbers

First, how many submission do we get?

Actually, not that many, even in July we got just ~800 data submission. As we hopefully have a lot more active users, it seems that not a large percentage of the users actually turned on user feedback submission. For the installations via the Windows Store we know we have ~20.000 active users in the lasts months per month (with some telemetry enabled), I would assume we have more on Unices.

What can already be learned from the data we got?

Kate versions in use

Most people use the the stable 20.04.x series and not some developer snapshot at the moment. And one sees that e.g. the 20.04.0 really got replaced by most users with one of the patch releases. How fast people really update from release to release needs to be seen, given the code is in since 20.04 and 20.08 is not yet out, that can’t be seen at the moment.

Qt versions in use

Next interesting data: which Qt versions are in use? Here, most people are already on Qt 5.15.

That is on one side nice, as the latest Qt version is the version I use most often for testing. On the other side, Qt 5.15.0 unfortunately has some breakage in the QJSEngine we use (actually, Qt 5.14, too), that means, if you see random crashes with backtraces into the QJSEngine parts, hope for some 5.15.x update (or backports done by your distribution). We can’t really work around that (beside if we would use a completely different engine, that would be a major effort).

Let’s see how the feedback submissions develop in the next months. Thanks already to all people already providing feedback!


If you want to chime in on this, feel free to join the discussion at the KDE reddit.

If you want to contribute, just join us at or on

One Weird Trick to Make Your Air-Conditioner Better

Saturday 1st of August 2020 07:45:00 PM

Those of you who read my last post know that I find summers a bit… hot. Ever since my first summer in Germany I’ve considered my trusty air cooler essential for my survival. Well, this week, with temperatures soaring to 35 degrees celsius, I had to get an upgrade.

Except that I didn’t buy the Commando 8 with 12.000 BTUs of raw cooling power, but the Comfee MPPH-07CRN7, a portable air conditioner with only 7.000 BTUs (roughly 0,5 Refrigeration Tons) of raw cooling power, for the princely sum of 199 EUR from Media Markt. It was a decent deal, exept that I thought I could carry home myself, before I saw the size and weight of that thing and had to pay more for a taxi to come and pick me up and drive the both of us home.

Setting it up just enough to get it to run was not incredibly difficult. The unit comes with a small plastic pipe to drain condensate water, and a big white flexible plastic air duct that you’re supposed to use to blow the hot exhaust air straight outside your house. I put a big bowl beside the unit where the condensate could drain out to, but the exhaust hose was a bit more tricky.

The unit comes with two ways to mount the exhaust hose: a wall mount for the ducting pipe, to use which you literally drill a 15cm diameter hole through your exterior wall and connect the duct there, and a window adapter, which you can fit into the frame of a sliding window and connect the duct to that, for a less violent solution to your exhaust woes. Unfortunately, I have a casement window (ones that swing open), so neither was going to work for me.

The first couple of nights, I used the window mount panels to cover up just enough of the window so that I could jam the exhaust pipe between the panels and the window frame, closed the window shutters above it, and stuffed a bedsheet to cover up the remaining gaps. I did however, order this: a casement window sealing kit. It’s basically a sheet of polyester that attaches to the frame and casement of your window using velcro, and then has a zipper down the middle which you can open to let the exhaust pipe through. Once that arrived, I attached it to my window, and I was ready to go.

Except not quite.

Unfortunately, there’s one giant problem with this setup - it’s grossly inefficient. And I absolutely hate inefficiencies. And because I know something’s not quite right, I can’t rest until I’ve fixed it.

Without going into too much detail about how air conditioners work - there’s an excellent video on that - there’s an important detail. Air conditioners have a hot side and a cold side. In a window AC, the hot side sits outside your window, drawing in air from the outside atmosphere, running it through the radiator to draw away the heat, and then dumping that hot air into the outside atmosphere, again. In a split AC, the hot side is a separate unit that sits somewhere outside your house, and connects to a cassette or indoor circulator through sealed coolant pipes.

The cold side, importantly, simply recirculates air inside the room, passing it through the cooling fins to take away heat from the air and thus cool it down. The cold air inside the room does not leave the room.

Except in a single-duct portable air conditioner.

Now portable air conditioners necessarily have to have both the hot and cold side in the same unit, and keep them both indoors. This is fine, as long as the unit is well insulated, and you’re using outside air to cool the hot side. Unfortunately, that last bit doesn’t quite work out with a single-duct portable air conditioner.

In a single-duct portable air conditioner, there only is one single duct, and it throws the hot exhaust from the hot side outside the room. But where does the air come from, you ask? Well, it’s using the air inside the room, which it just spent so much energy cooling down. Also, because it’s throwing cold air outside the room, it creates negative pressure inside the room, and this vaccuum gets replaced by warm air rushing into the room from every single crack and crevice that allows air to get into the room.

It’s so catastrophic, single-duct portable air conditioners should just be illegal, especially when the solution is so damn simple: dual ducts.

So I set about converting this unit into a dual-duct unit - one duct to take in fresh outside air, run it through the hot side of the unit, and then the second duct to throw the hot exhaust out.

And this Comfee unit makes it really easy. The hot side has only one air intake, a 26cm square grille right at the bottom of the unit. So I bought another ducting pipe from Amazon, fashioned an airbox out of some cardboard and, well, duct tape, and insulated the inside with some cotton wool padding covered with aluminium foil:

Then I used more duct tape, along with some foam padding that came with the unit to tape the airbox to the hot side intake grille, and ran the pipe to the outside using the same window:

As you know, hot air rises, so I’ve kept the intake pipe on the bottom, pointing slightly downwards. Also the intake pipe is just plastic and not insulated, so it really won’t be nice if it manages to take back any of the hot air that’s going out. The exhaust pipe, the one that I bought additionally isn’t exactly insulated, but it is double layer, with a reflective aluminium inner layer covered by a PVC outer layer, so it shouldn’t get too hot and radiate the heat back into the room.

And that’s it. Now I can stay cool, knowing that I’m not damaging the environment nearly as much as I would have been if I didn’t make the dual-duct conversion.

Until next time!

June/July in KDE Itinerary

Saturday 1st of August 2020 07:00:00 AM

The last bi-monthly report about the development of KDE Itinerary ended with a teaser for indoor map support for train stations and airports. This also dominated the work in the past weeks, and has made considerable progress so that the first features based on that have been integrated.

New Features

For every train station or airport in the itinerary timeline, it’s now possible to open the integrated indoor map view. While that already brings quite some value for locations with decent data quality (which seem to be mostly larger train stations at this point), things get a lot more interesting when looking at deeper integration and leveraging OSM data beyond just showing a map. In a few places one can already get a glimpse of what might be possible.

For finding a gate or platform, we currently only have a list for manual selection, but that’s obviously the first step towards automatically selecting the right place based on your reservations. What’s also visible is that this is already making use of data about public transport lines provided by KPublicTransport.

Train station platform finding, showing departing lines.

When picking an element on the map, we can show a number of additional information available, such as opening hours, accessibility information, payment methods or available dietary options for restaurants. While this is also mostly still just forwarding OSM data, it’s easy to imagine to eventually have filters or search options for all this.

Information box for a map element.

Indoor maps isn’t the only new feature in the app though, we can now also show vehicle load information for public transport operators providing that information. That’s useful when looking for an alternative connection, and specifically nowadays when a very crowded train can be a bigger issue than just being a minor discomfort.

Colored seat icon indicating the expected vehicle load. Infrastructure Work

There’s also a lot of work needed behind the scenes to support the indoor map support, in particular regarding providing up-to-date OSM data for it. See the recent posts on the necessary data and updating for this.

Another also data-related change is the new support for Benerail station identifiers. This consists of a new property for Wikidata, the inclusion of that in KItinerary’s lookup tables, and the use of that for resolving station references in e.g. Thalys barcodes.

Fixes & Improvements

There’s a few more noteworthy changes in other areas too:

  • Besides boarding passes and event tickets, so-called “generic” Apple Wallet passes are now displayed correctly by the KMail Apple Wallet pass plug-in.
  • We fixed an ambiguity in the vicinity of China in the coordinate-based timezone lookup system which was caused by openSUSE patching the IANA timezone database with an additional Asia/Beijing alias, and our data tables being generated on such a system.
  • Seat reservation information from Ouigo confirmation emails are now extracted correctly.

While field testing and collecting training samples of travel documents is currently not that easy, there’s plenty of other things that can be done. The KDE Itinerary workboard or the more specialized indoor map workboard show what’s on the todo list, and are a good place for collecting new ideas. For questions and suggestions, please feel free to join us on the KDE PIM mailing list or in the #kontact channel on Matrix or Freenode.

This week in KDE: better handling for grouped tasks in the Task Manager

Saturday 1st of August 2020 05:19:50 AM

This week we got a big improvement in how the Task Manager handles grouped tasks: by default, it activates the last-used task and then cycles through other tasks if you continue to click on it. There are also some more welcome improvements for the “Get New [Thing]” system, as well as a nice smattering of miscellany. Take a look:

New Features

MP4 video files now show the embedded cover art image when it’s available and previews are enabled (Heiko Schaefer, Dolphin 20.12.0)

The Task Manager now defaults to cycling through child tasks when clicking on a grouped task, and always display the most-recently-used one when switching to a task from an app that’s different from the current one. All of this may sound awfully complicated, but hopefully it’s exactly what you wanted it to do all along.

Changelog: Nitrux 1.3.1

Saturday 1st of August 2020 03:17:39 AM

Today is the day! — Nitrux 1.3.1 is available to download

We are pleased to announce the launch of Nitrux 1.3.1. This new version brings together the latest software updates, bug fixes, performance improvements, and ready-to-use hardware support.

Nitrux 1.3.1 is available for immediate download.

What’s new
  • We’ve upgraded the kernel to version 5.6.0-1020.
  • We’ve updated KDE Plasma to version 5.19.4, KDE Frameworks to version 5.72.0, KDE Applications to version 20.04.03.
  • We’ve further updated the GTK theme to match closer the Kvantum theme and the Plasma color scheme.
  • We’ve updated the Luv icon theme, including the Wallpapers.
  • We’ve fixed a problem where laptops with Nvidia discrete cards would not output video when using an external connection like HDMI.
  • We’ve added more wallpapers to our default selection, including wallpapers from the earliest versions fo Nitrux, and replaced some of the files with uncompressed images for better quality.
  • We’ve fixed a problem where an environment variable that we used to set for the Calamares installer was causing issues when changing application styles.

  • We’ve replaced Calamares with Calamares-QML. Calamares-QML is as its name indicates a QML port of the Calamares installer user interface.
  • We’ve updated the ISO to use LZ4 compression for faster installation times.
  • We’ve disabled transparency from the Kvantum theme due to changes in the Kvantum theme engine that would lead to visual problems in some applications.
Known issues
  • Resizing a window from the top-right corner doesn’t work, this is a problem with the Aurorae decoration; we will be using a native QStyle window decoration to replace it in future releases.
  • When using the tiling windows feature (Khronkite), the system tray plasmoids will be treated as regular windows.
  • OpenGL acceleration is used by default, if you use Nitrux in a VM open System Settings>Monitor>Compositor and select XRandr in addition to disabling desktop effects like Blur.

The post Changelog: Nitrux 1.3.1 appeared first on Nitrux — #YourNextOS.

Adventures in (Dyn)DNS

Friday 31st of July 2020 08:20:18 PM

So, I made the silly move to rely on my hardware supplier to provide me with a dynamic DNS service. Naturally, this offer expired, and I could no longer reach my home server. Because of Murphy, this naturally took place when I was away from home with no access to anything.

So – how does one find the way back home?

Luckily, I have a VPS that I log in to now and then. After a quick duck-ing (duckduckgo is my friend), I found the last command which was the first piece of the puzzle. Now I had a list of potential IPs.

Did I mention that I travel a lot?

There were quite a few IPs there. Pre-COVID-19, it would have been worse. Still, I found a few likely candidates based on frequency of use. Then I found this handy list of IP blocks in Sweden. Now I could tell my mobile data provider (Telenor) from my fibre data provider (Bahnhof).

Quickly adding my home domain and the suspected IP to /etc/hosts on my laptop allowed me to confirm my suspicions. Once in, I could setup duckdns for dynamic DNS, change the CNAME record of my domain, and now all is operational again.

I learned two things from this:

  1. Don’t rely on the time limited offers of hardware vendors for even the most trivial service. They are all trying to convert you into a as-a-Service deal and make you pay an annual fee. (i.e. read the fine print).
  2. I was really happy to use a CNAME record to redirect a subdomain of mine to my home server, so even when using a dynamic DNS service, I could switch to another dynamic DNS service. (this was pure luck – no foresight from my side was involved).

Also, while on the the topics of experiences. If you have the possibility, you should use bahnhof as your ISP. They have a track record of opposing surveilance laws and work to protect the privacy of their customers. Also – I’ve had zero issues with them since switching some 15 years ago, so I can recommend them from that perspective as well ;-)

Review Report 2

Friday 31st of July 2020 12:00:00 AM
GSoC Review 2 - Qt3D based backend for KStars

In the eighth week of GSoC, I continued on init and update calls to skymapcompsite and subsequent classes derived from skycomponent.

What’s done this week
  • Init calls for various skycomponent derived classes which help setup the Qt3D scenegraph like CatalogComponent.

  • Update calls for stars, planets, lines and similar sky components.

The Challenges
  • Integration issues with the original SkyPainter API written to support multiple backends. The CustomWindow class doesn’t utilize SkyPainter but has similar draw calls.
What remains
  • Completing all the update calls

  • Debugging and adding other sky objects.

  • Fixing star sizes


The Code

Week 8: GSoC Project Report

Wednesday 29th of July 2020 04:58:52 PM

Last week I implemented the duration fields and addition of storyboard items from storyboard. Previously it could only be done from the timeline docker. Also I implemented updating of all affected items’ thumbnail. This makes the docker almost complete sans the capability to save or export.

The duration field is implemented such that any item in the storyboard docker has the duration equal to the next keyframe in any node. This makes sense because the canvas image would be identical to the keyframe image for that duration only, after that the other keyframe’s content would be added to it. Changing duration would move all keyframes in all nodes after the keyframe for that item.

Duration Field on adding a keyframe in between

Changing duration would move all keyframes after the keyframe for that item in all layers. So when we change duration for item with frame 0, all items after it move and so do the keyframes for those items.

Effect of duration field changes on timeline docker

Adding item from storyboard item would add an item after the duration for the current item, current item being the item on which RMB was clicked or the plus icon belongs to. There is an Add Storyboard Item Before option in the right click menu that would add an item just before the current item.

Adding storyboard Item after current item Adding storyboard item before the current item Adding item using the plus button

Thumbnails for all the affected items would be updated when a keyframe is changed.
I created two classes, KisStoryboardThumbnailRenderScheduler and KisAsyncStoryboardThumbnailRenderer which inherits KisAsyncAnimationRendererBase.

KisStoryboardThumbnailRenderScheduler stores queues of dirty/changed frames. It has two queues. One for the keyframes that are directly changed such as by painting on the canvas. The other queue has frames that have been affected by the changes. The first queue is given preference for rendering. These queues are updated whenever the image becomes idle. After that they are one by one rendered and a signal is emitted that contains the KisPaintDevice. The thumbnails are updated using the KisPaintDevice.

KisAsyncStoryboardThumbnailRenderer renders a single frame in another thread. This class is used by KisStoryboardThumbnailRenderScheduler to render frames.

If we change Layer 2 – frame 7, this would change items for frame 10 and frame 14 as they have keyframes in layer 1 and any changes to layer 2 – frame 7 would change the composite image for frame 10 and 14.

Update of all affected frames

With all the major parts complete we are now ready to get these things tested. This is a shoutout to anyone interested in testing this feature out. If you are on a Linux system you can get the appimage from the following link.
This is the link to the appimage on google drive : link(google drive) (204M)
This is a testing guide that has brief info and directions : link (google doc)
You can leave any feedback or suggestions here or on the Krita-Artists post for this feature. If you come across any bug or crash or something more serious then please inform us at the Phabricator task for this feature.

This week I will look into how Krita saves file and write unit tests for saving and loading.

LabPlot 2.8 Beta

Wednesday 29th of July 2020 10:01:37 AM

In the last couple of days we’ve got a lot of feedback and bug reports from our users testing the current code and helping us to finalize the next release of LabPlot. Most of this feedback is addressed now and today we’d like to invite more people to contribute and we announce the availability of the beta release of 2.8.

A lot of work was done since the previous release of LabPlot. In the last months we reported regularly on new features and on the ongoing development in a series of blog posts:

In addition to this, many other improvements and bug fixes were done. Some of them are also mentioned in our ChangeLog file. The full release announcement will contain again a full summary of what was done for 2.8. Until then, please check the recently published blog posts and ChangeLog to get an overview of the the new features.

As usual, we provide the source code as well as packages for Windows and macOS:

GSoC'20 with KDE

Tuesday 28th of July 2020 06:30:00 PM
Part 2 -

The second coding period for GSoC’20 is now over. I am excited to share that the first part of my project is now over. I have finally finished porting to hugo and am now working on a refresh for the Season of KDE Website

Porting allowed for easy resuability of code and helped in removing a lot of extra files. This code reusability can be achieved in two ways - shortcodes and layouts.


Shortcodes are code snippets that can be used in markdown content that can render some predefined content. Simply put, shortcodes are small reusable code snippets that provide some functionality. For instance this is a builtin shortcode to embed a youtube video.

{{< youtube trJ0Q-wsna4 >}}

So much better than using an iframe everytime, right?

Hugo doesn’t restrict us to to the builtin shortcodes. We can have our own custom shortcodes that can themselves some nested shortcodes inside.

I created a simple shortcode for the ability to include a file in a page.

{{- if eq (.Get 1) "markdown" -}} {{with .Site.GetPage (.Get 0) }} {{- .Content | markdownify -}} {{- end -}} {{- else -}} {{with .Site.GetPage (.Get 0) }} {{- .Content -}} {{- end -}} {{- end -}}

This simple shortcode allows to include a file in any page and can render it in either html or markdown!

{{% include "/includes/about_kde.html" %}} Layouts

Layouts are more common in other tools. They basically act as template and can have blocks of content be inserted into them. Layouts were useful to create pages that were only slightly different.

I also managed to automate a lot of work using some simple regex and unix commands like find , sed and awk.

This past week I also started working on the Season of KDE website. I set up the project locally to use mykde (KDE’s WIP OAuth Identity Service) and made some UI improvements.

Current Season of KDE Website.

New Season of KDE Website.

I will continue to add more features and improvements to the website in the coming weeks :)

About my Project

The project involves improving KDE Web Infrastructure. KDE has a lot of websites and some of them like the main website could use an update.

The first part of the project involves porting to use Hugo- A go based static site generator. is very old and thus contains a lot of pages. This project would involve porting most of the pages to markdown so as to make the website faster and easier to develop.

The second part of the project involves updating Season of KDE website. The goal is to use more modern tooling and add some new features. This project is a part of the transition of KDE websites from LDAP to OAuth based authentication. OAuth is a much more modern approach to authentication and would solve some headaches with the current authentication system.

Current Working Repository: repo

If you would to join in, Say Hi at #kde-www on irc or telegram.

GSoC’20 Progress: Week 7 and 8

Tuesday 28th of July 2020 02:37:34 PM


With the subtitle information, i.e., the text, the start and end points of each subtitle, being correctly stored in the abstract list model, I shifted my focus in these two weeks towards the UI development of subtitles in the timeline.

First, to confirm whether the information is stored properly, I worked on displaying vertical lines across the timeline according to the start positions of each subtitle.

Once the lines were displayed on the timeline, confirming that all the connections I had made in the past weeks were working correctly; I modified the QML code to display each subtitle as a rectangle of width equal to its duration in the timeline and containing its respective subtitle text.

These subtitle clips are however fixed. The user can’t move them, change their width, and thereby change the duration of each subtitle, or even edit the text in each rectangle. As seen in the figure, the rectangles/clips are displayed over the video and audio tracks; a separate track to edit the subtitles also has to be created.

I spent a few days trying to understand how the application handles changes to model items and how various classes are connected to the timeline.

I began by working on adding functions to edit the model items, namely the text and the end positions of the existing subtitles.

This past week, I wrote a function in Subtitle model’s class to handle the modifications in the end positions of each subtitle. This function will update the original end position of the subtitle with the new position.

void editEndPos (GenTime startPos, GenTime oldEndPos, GenTime newEndPos);

The code can be viewed here.

With this, phase two of the coding period has come to an end and the second phase evaluations have begun. In the upcoming weeks, I will work on adding functions to enable editing the subtitle text which is displayed on the subtitle clips as well as the start position of a particular subtitle text.  Once these basic editing functionalities are added, I will begin to work on creating a separate track to hold the subtitle clips.

~ Sashmita Raghav

Google Summer of Code 2020 – week 6, 7 and 8

Monday 27th of July 2020 11:34:38 PM

Hi! Today, I am bringing the results of my work in developing text annotation support for marK.

In these three weeks I have been working in bug fixes and the logic to handle text annotation. It is worth mentioning one change in the original plan, I said in the previous posts that I was going to use KTextEdit, but for now, the code is using QTextEdit that is already available by using Qt and I could focus on the logic.

In the first day of the coding period I made a post that explained a bit about text annotation, now here are two examples that are already possible to do in marK:

Named Entity Recognition

Phrase Chunking

Using the 3 first lines of the example in brat’s screenshot of the aforementioned post.

Example of current usability

In this video I am doing named entity recognition annotation.

Above is a short video that I made to show the current state of text annotation in marK, near to the end, you can also see the file generated that contains the annotation data (a JSON file in this case).

This coding period was quite challenging, but also fun, I have learned a lot as I was implementing the logic to handle text annotation. Also, as you could see in the video, now it is possible to annotate data with mouse click and drag instead of only clicking, I think it will improve the user experience, making marK more comfortable to use, and it is not only limited to text annotation, image annotation supports it too.

What is next? I will fix the bugs that I found, improve the UX, make the code more performant and, together with my mentor, prepare marK to have his first release.

that is it, see you in the next post ; )

Cantor Integrated Documentation : Month 2 Progress

Monday 27th of July 2020 03:54:00 PM
Hello KDE people. Phase 2 evaluation is due from today onward until the 31st of July. In this blog  post, I will update you on the progress made during the second month of the coding period. So here are the things done:- Things Done 1. Changed the layout  of the documentation panel First of all, I have changed the basic layout of the panel altogether. Now it is much more attractive UI wise, more usable UX wise, and overall a good package with looks and features.  Here is how it looks like.
Documentation Panel 2. Add several minor widgets to improve the usability
  • "Search through keywords"  widget: This widget will be used by the user to search for help for particular keywords. This widget has a completer that displays the suggestions in real-time so that the user can reach the documentation for the intended keyword.
  • "Find in Page text"  widget: This widget will be used for string matching. It contains an input box where users can type in the word they are looking for on the current page. Matched strings are highlighted. Users can match case-sensitively or not based on their needs. This widget can also be used to find the strings forward or backward as the case may be.
  • "Zoom in/out"  action: User can change the zoom factor using SHIFT++/SHIFT-- to make the page comfortable to their eyes. They can also press the "Reset Zoom level to 100%" button to reset the zoom to 100%.
  • "Download images/gifs/pages"  context menu action: I have also added the ability to download the embedded images/gifs/HTML pages to local disk. The user just has to right-click on the resource and then press save. After a successful download, a message box confirms it.
3. Add documentation for Octave and Python as wellI have also created and added the Qt Help documentation files Octave and Python as well. These files are successfully used by the above panel and the documentation is displayed.

For those interested in trying it out themselves and/or playing with the code, can clone my repository and build it from the source. Here is the link to my repository on which I am working.

That's all folks for this time, until then, Goodbye!!

Status update: merged!

Monday 27th of July 2020 03:00:00 PM

Hey all!

I’m glad to announce that my GSoC 2020 project has been merged!

You should be able to use Disney’s SeExpr for fun and profit as soon as the next nightly.

The next objective is getting the docs in shape – see this merge request for more information; and, of course, we still need your help for a good batch of scripts to bundle with!

Thank you all for helping out!

MyPaint Brush Engine Phase #2 Report

Monday 27th of July 2020 12:37:00 PM
This is the last week before the phase 2 in Google Summer Code ends. This phase my area of focus was the preset editor, which would enable the user for modifying existing and creating new MyPaint brushes. I went on to extend the same than the one mentioned in my proposal to include more diverse variety of options and settings so that the editor gives us the provision to make much larger scale of changes and exercise complete customization control over the brush engine. It later on became a bit more complicated than I had expected it to be initially which led to a lot of bugs and crashes. It works fine now, mostly:) There is still one last bug that I need to eliminate, though.

Basic Options

Preset Editor
Overall, this was a good month :) 

Qt Creator 4.13 Beta2 released

Monday 27th of July 2020 10:18:59 AM

We are happy to announce the release of Qt Creator 4.13 Beta2 !

Google Summer of Code 2020 - Post 7

Sunday 26th of July 2020 01:50:00 AM

I finally tested the Rocs radial layout algorithm implementation. This includes some functional tests to check if the implementation works as expected in some cases and a non-functional test to evaluate the performance of the algorithm with respect to some aesthetic criteria.

The implementation passed all functional tests. Initially, the non-functional tests reported that edge crosses occurred. Since, in theory, no edge crosses can occur in layouts generated by the radial layout algorithm, I though the implementation had bugs. After checking the code a couple of times without finding any bugs, I decided to take a look at the graphs in which the algorithm was failing. I managed to get one example with just 8 vertices and applied the radial layout algorithm to it, getting the following result.

Wait! There are no crosses between edges in this layout. It turns out the bug was in the non-functional test. More precisely, the QLineF::intersects method reported an intersection between the two edges in red. After I fixed the problem, I got the expected results. Now I can focus on the documentation of the graph-layout plugin.

digiKam Recipes 20.07.27 released

Sunday 26th of July 2020 12:00:00 AM
Hot on the heels of the digiKam 7.0.0 release comes a new revision of the digiKam Recipes book. The new version includes Grouping RAW and JPEG files manually can be a real chore. Fortunately, a simple Python script can do this automatically, and the Group RAW and JPEG files with a script chapter provides instructions on using the script. The Disaster-proof digiKam setup chapter describes how to keep digiKam databases and configuration safe.

More in Tux Machines

libinput 1.16.0

libinput 1.16.0 is now available.

No significant changes since the second RC, so here's slightly polished RC1
announcement text.

This has been a long cycle, mostly because there weren't any huge changes on
the main development branch and a lot of the minor annoyances have found
their way into the 1.15.x releases anyway.

libinput now monitors timestamps of the events vs the current time when
libinput_dispatch() is called by the compositor. Where the difference
*may* result in issues, a (rate-limited) warning is printed to the log.
So you may see messages popping up in the form of
  "event processing lagging behind by XYZms, your system is too slow"
This is a warning only and has no immediate effect. Previously we would only
notice (and warn about) this when it affected an internal timer. Note that
these warnings do not show an issue with libinput, it shows that the the
compositor is not calling libinput_dispatch() quick enough.

The wheel tilt axis source was deprecated. No device ever had the required
udev properties set so we should stop pretending we support this.

Touchpads now support the "flat" acceleration profile. The default remains
unchanged and this needs to be selected in the configuration interface. The
"flat" profile applies a constant factor to movement deltas (1.0 for the
default speed setting).

Events from lid or tablet-mode switches that are known to libinput as being
unreliable are now filtered and no longer passed to the caller.
This prevents callers from receiving those known-bogus events and having to
replicate the same heuristics to identify unreliable devices that libinput
employs internally.

A new "libinput analyze" debugging tool is the entry tool for analysing
various aspects of devices. Right now the only tool is
"libinput analyze per-slot-delta" which can be used to detect pointer jumps
in a libiput record output. This tool used to live elsewhere, it was moved
to libinput so that reporters can easier run this tool, reducing the load on
the maintainers.

The tools have seen a few minor improvements, e.g.
- "libinput record touchpad.yml" does the right thing, no explicit --output
  argument required
- libinput measure touchpad-pressure has been revamped to be a bit more
- libinput measure touchpad-size has been added (as replacement for the
  touchpad-edge-detector tool)
- libinput measure fuzz has been fixed to work (again and) slightly more

The libinput test suite has been fixed to avoid interference with the
currently running session. Previously it was virtually impossible to work
while the test suite is running - multiple windows would pop up, the screen
would blank regularly, etc.

And of course a collection of fixes, quirks and new bugs.

As usual, see the git shortlog for details.

Diego Abad A (1):
      FIX: typo on building documentation

Peter Hutterer (2):
      test: semi-fix the switch_suspend_with_touchpad test
      libinput 1.16.0

git tag: 1.16.0
Read more Also: >Libinput 1.16 Released - Ready To Warn You If Your System Is Too Slow

18 Frameworks, Libraries, and Projects for Building Medical Applications

Open-source is not just a license or a code-based that left free on an online repository, It's a complete concept which comes with several advantages. Moreover, the most advantage you can get from Open-source is beyond the open-code it's FREEDOM; freedom to use or re-shape it as you see fit within your project commercial or otherwise, and that depends on the license of course. You are free from the headache of license conflict legal problems but also from the dilemma of dealing with restrections and limitations which come with property licenses. You are free from the system lock-in schemes, furthermore, you own your data, and freedom to customize the software as your structure requires and workflow demands. The Community: The Open-source project gains a powerful community as they gain users, the community users vary between advanced users, end-users, developers and end-users on decision-making level. Many of the community users are providing quality inputs from their usage and customized use-case and workflow or test-runs, Furthermore, they always have something to add as new features, UI modification, different usability setup, and overall introducing new workflows and tools, and That's what makes the progress of the open-source different than non-free solutions. While, Good community means good support, The community is a good resource to hire advanced users, developers, and system experts. It also provides alternative options when hiring developers. Unlike non-free software which are not blessed with such communities and where the options there are limited, The rich open-source community provides rich questions and answers sets that contributed by users from all around the world. Higher education value for the in-house team The open-source concept itself provides educational value, I owe most of what I know to open-source communities.The access to the source code and open-channels communication with the core developers is the best educational value any developer can get. Read more

Android Leftovers

Python Programming