Planet KDE

Subscribe to Planet KDE feed Planet KDE
Planet KDE | English
Updated: 19 hours 8 min ago

An update on HDR and color management in KWin

Sun, 2023-12-17 19:00

In my last post about HDR and color management I explained roughly how color management works, what we’re doing to make it work on Wayland and how far along we were with that in Plasma. That’s more than half a year ago now, so let’s take a look at what changed since then!

Color management with ICC profiles

KWin now supports ICC profiles: In display settings you can set one for each screen, and KWin will use that to adjust the colors accordingly.

Applications are still limited to sRGB for now. For Wayland native applications, a color management protocol is required to change that, so that apps can know about the colorspaces they can use, and so that KWin can know which colorspace their windows are actually using, and the upstream color management protocol for that is still not done yet. It’s getting close though! For example I have an implementation for it in a KWin branch, and Victoria Brekenfeld from System76 implemented a Vulkan layer using the protocol to allow applications to use the VK_EXT_swapchain_colorspace and VK_EXT_hdr_metadata Vulkan extensions, which can be used to run some applications and games with non-sRGB colorspaces.

Apps running through Xwayland are strictly limited to sRGB too, even if they have the ability to work with ICC profiles, as they have the same problem as Wayland native apps: Outside of manual overrides with application settings there’s now way to tell them to use a specific ICC profile or colorspace, and there’s also no way for KWin to know which profile or colorspace the application is using. Even if you set an ICC profile with an application setting, KWin still doesn’t know about that, so the colors will be wrong.1

It would be possible to introduce an “API” using X11 atoms to make at least the basic arbitrary primaries + sRGB EOTF case work though, so if any developers of apps that are still stuck with X11 for the foreseeable future would be interested in that, please contact me about it!

HDR

In Plasma 6 you can enable HDR in the display settings, which enables static HDR metadata signalling for the display, with the PQ EOTF and the display’s preferred brightness values, and sets the colorspace to rec.2020.

With that enabled, you get two additional settings:

  • “SDR Brightness” is, as the name suggests, the brightness KWin renders non-HDR stuff at, and effectively replaces the brightness setting that most displays disable when they’re in HDR mode
  • “SDR Color Intensity” is inspired by the color slider on the Steam Deck. For sRGB applications it scales the color gamut up to (at 100%) rec.2020, or more simply put, it makes the colors of non-HDR apps more intense, to counteract the bad gamut mapping many HDR displays do and make colors of SDR apps look more like when HDR is disabled

There’s some additional hidden settings to override bad brightness metadata from displays too. A GUI for that is still planned, but until that’s done you can use kscreen-doctor to override the brightness values your screen provides.

KWin now also uses gamma 2.2 instead of the sRGB piece-wise transfer function for sRGB applications, as that more closely matches what displays actually do in SDR mode. This means that in the dark regions of sRGB content things will now look like they do with HDR disabled, instead of things being a little bit brighter and looking kind of washed out.23


My last post ended at this point, with me saying that looking at boring sRGB apps in HDR mode would be all you could do for now… well, not anymore! While I already mentioned that Xwayland apps are restricted to sRGB, gamescope uses a Vulkan layer together with a custom Wayland protocol to bypass Xwayland almost entirely. This is how HDR is done on the Steam Deck OLED and it works well, so all that was still missing is a way for gamescope to pass the buffers and HDR metadata on to KWin.

To make that happen, Joshua Ashton from Valve and I put together a small Wayland protocol for doing HDR until the upstream protocol is done. I implemented it in KWin, forked Victoria’s Vulkan layer to make my own using that protocol and Joshua implemented HDR support for gamescope nested with the Vulkan extensions implemented by the layer.

The Plasma 6 beta is already shipping with that implementation in KWin, and with a few additional steps you can play most HDR capable games in the Wayland session:

  1. install the Vulkan layer
  2. install gamescope git master, or at least a version that’s new enough to have this commit
  3. run Steam with the following command: ENABLE_HDR_WSI=1 gamescope --hdr-enabled --hdr-debug-force-output --steam -- env ENABLE_GAMESCOPE_WSI=1 DXVK_HDR=1 DISABLE_HDR_WSI=1 steam

To explain a bit what that does, ENABLE_HDR_WSI=1 enables the Vulkan layer, which is off by default. gamscope --hdr-enabled --hdr-debug-force-output --steam runs gamescope with hdr force-enabled (automatically detecting and using HDR instead of that is planned) and with Steam integration, and env ENABLE_GAMESCOPE_WSI=1 DXVK_HDR=1 DISABLE_HDR_WSI=1 steam runs Steam with gamescope’s Vulkan layer enabled and mine disabled, so that they don’t conflict.

You can also adjust the brightness of sdr stuff in gamescope with the --hdr-sdr-content-nits flag; for a list of things you can do just check gamescope --help. The full command I’m using for my screen is

ENABLE_HDR_WSI=1 gamescope --fullscreen -w 5120 -h 1440 --hdr-enabled --hdr-debug-force-output --hdr-sdr-content-nits 600 --steam -- env ENABLE_GAMESCOPE_WSI=1 DXVK_HDR=1 DISABLE_HDR_WSI=1 steam -bigpicture

With that, Steam starts in a nested gamescope instance and games started in it have HDR working, as long as they use Proton 8 or newer. When this was initially implemented as a bunch of hacks at XDC this year there were issues with a few games, but right now, almost all the HDR capable games in my own Steam library work fine and look good in HDR. That includes

  • Ori and the Will of the Wisps
  • Cyberpunk 2077
  • God of War
  • Doom Eternal
  • Jedi: Fallen Order
  • Quake II RTX

Quake II RTX doesn’t even need gamescope! With ENABLE_HDR_WSI=1 SDL_VIDEODRIVER=wayland in the launch options for the game in Steam you can get a Linux- and Wayland-native game working with HDR, which is pretty cool.

I also have Spider-Man: Remastered and Spider-Man: Miles Morales, in both of which HDR also ‘works’, but it looks quite washed out vs. SDR. I found complaints about the same problem from Windows users online, so I assume the implementation in the games is just bad and there’s nothing wrong with the graphics stack around them.

(Sorry for showing SDR screenshots of HDR games, but HDR screenshots aren’t implemented yet, and it looks worse when I take a picture of the screen with my phone)


With the same Vulkan layer, you can also run other HDR-capable applications, like for example mpv:

ENABLE_HDR_WSI=1 mpv --vo=gpu-next --target-colorspace-hint --gpu-api=vulkan --gpu-context=waylandvk "path/to/video"

This time the video being played is actually HDR, without any hacks! And while my phone camera isn’t great at capturing HDR content in general, this is one of the cases where you can really see how HDR is actually better than SDR, especially on an OLED display:


The future

Obviously there is still a lot to do. Color management is limited to either sRGB or full-blown rec.2020, you shouldn’t have to install stuff from Github yourself, and certainly shouldn’t have to mess around with the command line4 to play games and watch videos in HDR, HDR screenshots and HDR screen recording aren’t a thing yet, and many other small and big things need implementing or fixing. There’s a lot of work needed to make these things just work™ as they should outside of special cases like the gamescope embedded session.

Things are moving fast though, and I’m pretty happy with the progress we made so far.




  1. Note that if you do want or need to set an ICC profile in the application for some reason, setting a sRGB profile as the display profile is wrong. It must have rec.709 primaries, but with the gamma 2.2 transfer function instead of the piece-wise sRGB one so often used! 

  2. This is the reason for footnote 1 

  3. As far as I know, Windows 11 still does this wrong! 

  4. I recommend setting up .desktop files to automate that away if you want to use HDR more often. Right click on the application launcher in Plasma -> Edit Applications makes that pretty easy 

Categories: FLOSS Project Planets

KDE Android apps porting update

Sat, 2023-12-16 05:30

Following the recent posts on porting KDE Android applications to KF6, CI/CD changes for APKs and changes to packaging of KDE Android apps here’s an update on where we are meanwhile with switching KDE’s Android apps to KF6.

Infrastructure improvements Style plugin packaging fixes

There have been two crucial fixes which finally give us generally starting and visually correct apps:

  • Fixed loading of the Kirigami QML plugin (MR 1394).
  • Fixed bundling of the Breeze Qt Quick Controls style with androiddeployqt (MR 1395 and MR 84).
KTrip with Breeze style and working translations. APK optimizations

The Qt 6 based APKs tend to be noticeably larger than what we used to have with Qt 5. There’s multiple reasons for that:

  • Depending on Qt5Compat graphical effects costs about 4 MB storage / 1.5 MB download size due to its runtime dependency on the shader compilation pipeline. A handful of remaining uses have been removed from Kirigami meanwhile, with MR 1407 being the last one.
  • Remaining uses of the Qt.labs.platform module pull in QtWidgets as a dependency. For Qt 5 we used to have a patch to avoid that, for Qt 6 we need to find every single use and port away from that. That’s another 6.5 MB storage / 2.5 MB download size.
  • We used to have a much more minimal Craft default configuration for Qt 5. This has changed as more apps ended up needing a more diverse set of dependencies (such as the full ffmpeg stack for Tokodon, or support for signed PDFs in Okular), as well as Craft itself having become a more widely used part of our infrastructure on all platforms. Work on enabling application-specific minimized builds of particular heavy dependencies is ongoing (e.g. MR 740 or MR 743).

The above mentioned numbers might seem small on their own, but that’s to be seen against typically 20-30Mb APKs and are for things that are largely unused, ie. this is an easy 10-20% gain which doesn’t just affect every user but also our build and distribution infrastructure.

Permission checks

On Android applications need to explicitly request permissions for accessing certain components or information, such as the camera or the current location. That’s neither new nor related to the transition to Qt 6, but re-testing on a fresh installation on the latest Android version has exposed a few places where we missed these runtime permission requests.

Qt 6 has new API for doing this, but with Qt 6.5 that is still somewhat cumbersome to use as it’s only available on platforms with a permission system. While you can ifdef that in C++ it’s very inconvenient in QML, either way not good for easy and maintainable code (see e.g. the use in KWeatherCore).

With Qt 6.6 this significantly improved as the permission API is now available unconditionally on all platforms and just always reports “permission already granted” on platforms without a permission system, resulting in much simpler code (see e.g. the use in Qrca).

Qrca requesting camera permissions. Video processing

An issue that turned out to be particularly challenging has been a crash in KF’s barcode scanner when used after an application had been suspended at any point in time previously. Suspending applications happens on Android when an app is no longer in the foreground, so this is a very common scenario, and we have at least 4 apps with integrated barcode scanning.

Meanwhile we have at least identified the underlying cause in Qt Multimedia code, where some RHI state invalidated by suspension isn’t properly restored/reset after resuming. A crude patch for addressing that is meanwhile in review, whether that turns out to be the right way to fix this remains to be seen.

Dark mode support

Something we have been missing so far and that became easier to implement with Qt 6 is automatic support for the dark UI mode. While we have the style for this, we lacked the detection and automatic switching logic on Android so far, which has changed now:

There’s still one missing piece before we can enable this unconditionally though, we lack support for icon re-coloring on Android, or alternatively for bundling Breeze Dark icons.

Alligator with Breeze Dark color scheme but hardly visible icons. Emoji glyph rendering

A rather severe issue for apps like NeoChat or Tokodon was the lack of emoji glyph rendering in Qt 6 apps. This was a result of using fewer bundled dependencies of Qt but building those libraries ourselves instead, and thus ending up with a Freetype build that lacked support for PNG glyphs.

Once identified this was a matter of changing a few settings in Craft, and a minor patch to libpng’s pkgconfig file.

KTrip backend selection page with emoji flags. Application status Working

For some applications we meanwhile have a continuous F-Droid publishing in the nightly repository enabled again, using “works at least as well as the previous Qt 5 nightly build” as decision criteria:

In progress

There’s a few apps that have generally working Qt 6 APKs in general but are blocked on specific issues:

  • Alligator fails to add and fetch feeds.
  • Qrca and Vakzination are both blocked on the above mentioned video processing issue.
  • NeoChat still shows visual glitches in avatar textures and is also affected by the barcode scanner crash.
No Qt 6 APK builds yet

The third group are apps in various stages of porting to Qt 6 and with no port of their APK builds yet:

Itinerary

Personally my goal here is of course to get Itinerary working with Qt 6 in time for the 24.02 release, without disrupting users of the nightly build F-Droid repository. That’s why my focus has been on apps containing or using building blocks relevant for Itinerary (such as all of the above mentioned infrastructure issues).

With all of that in place the actual port of Itinerary is then hopefully not such a big deal anymore, in particular with the nasty barcode scanning crash fixed.

How you can help

You can help with porting and polishing the apps still needing work! Here’s the checklist I tend to follow for that:

  • The application is fully ported to Qt 6 and works on Linux with QT_QUICK_CONTROLS_MOBILE=1 and QT_QUICK_CONTROLS_STLYE set to org.kde.breeze or Material respectively.
  • There is a passing Android CI job.
  • The APK packaging has been ported as described here.
  • There is a CI job building the APK, as described here.
  • The APK does actually start on a phone or inside the emulator. With all the above mentioned work this is rarely a problem anymore, but can still happen due to a missing dependency for example.
  • There is an application-specific Craft exclusion list as described here.
  • Check if all icons show up as they do on desktop. Bundling icons is a rather error prone aspect of APK packaging.
  • If the app uses anything requiring special permissions (camera, location, notifications, etc) check whether those are properly requested. This benefits from testing on a very recent Android version.
  • Check if continuous publishing to the nightly F-Droid repository is enabled here.

If you want to help and/or have questions, feel free to join us in the KDE Android Matrix channel.

Categories: FLOSS Project Planets

This week in KDE: un-flashy important stability work

Sat, 2023-12-16 00:51

Everyone kept hammering on the bugs this week. As a result, the number of open Plasma 6 issues decreased, and so did the number of older high and very high priority Plasma issues! I’m feeling really good about this release. Daily driving it is already a pleasure. I think it might be a winner.

KDE 6 Mega-Release

(Includes all software to be released on the February 28th mega-release: Plasma 6, Frameworks 6, and apps from Gear 24.02)

General infoOpen issues: 199

UI improvements

The “Advanced Power Settings” page in System settings has now been folded up into a sub-page of the “Energy Settings” page (Jakob Petsovits, link):

Made a variety of improvements to the way device batteries are shown on Info Center’s “Energy” page: more device types are now identified correctly, and their device models are now shown so you can more easily distinguish batteries from different devices of the same type (Shubham Arora, link 1, link 2, link 3, link 4)

When you try to connect to a Wi-Fi network but enter the wrong password, you’re now informed of this immediately instead of having to wait a while to learn why it didn’t connect successfully (David Redondo, link)

The Breeze-themed Telegram icon has been updated to better match Telegram’s own branding (Onur Ankut, link):

The Breeze cursor theme now includes more pre-generated sizes, making its cursors look better at various scale factors and in more apps and toolkits that don’t yet conform to the cursor-shape-v1 Wayland protocol (Jin Liu, link)

Ark’s integrated viewer window now remembers its window size the next time you open it (Ilya Pominov, link)

In Spectacle’s Rectangular Region mode, you can now hold down the Shift key to see the magnifier while moving the box using arrow keys (Noah Davis, link)

Bug fixes

Important note: I don’t mention fixes for bugs that were never released to users; it’s just too much for me (it would probably be too much for you to read as well), and most people never encountered them in the first place. Because we’re in the middle of a big Plasma dev cycle, there are a lot of these bugs! So big thanks to everyone who’s made it a priority to fix them!

KWin can no longer crash when told by an app to open window with an invalid size (Xaver Hugl, link)

Editing an app’s .desktop file in such a manner that the file’s Exec= value ends up containing an equals sign no longer causes the properties dialog to crash the next time you use it to edit the same file (Harald Sitter, link)

Fixed a common random Plasma crash (David Redondo, link)

You can no longer crash KMenuEdit by creating a new entry, immediately deleting it, and then clicking “Save” (Harald Sitter, link)

In the Plasma Wayland session, the power and session actions once again work after KWin has crashed (David Edmundson, link)

Fixed several visual glitches related to missing pixels when using multiple screens with any of them having a fractional scale factor (Yifan Zhu, link 1 and link 2)

When using Dolphin’s Details mode to view a folder tree, expanding a folder no longer orders the items incorrectly when the parent view was sorted by size (Akseli Lahtinen, link)

Changes to the cursor size now take effect in Plasma immediately, without needing to restart plasmashell (Vlad Zahorodnii and others, link)

Using the “Cut” command on files and folders in Dolphin once again causes them to become visually desaturated (Jin Liu, link)

GTK4 apps now use the current KWin-provided window closing animation, instead of just disappearing immediately (Vlad Zahorodnii, link)

When using Elisa in mobile mode, its playlist sidebar can once again be closed (Kevin Kofler, link)

The Plasma-themed spinbox UI element now works properly with a wider variety of 3rd-party styling–hopefully all of them! (Marco Martin, link)

Other bug information of note:

Performance & Technical

The Overview effect is now much faster to launch and has smoother animations; this work is now largely done and it represents a major improvement! (Vlad Zahorodnii, Marco Martin, and Arjen Hiemstra, link 1 and link 2)

…And Everything Else

This blog only covers the tip of the iceberg! If you’re hungry for more, check out https://planet.kde.org, where you can find more news from other KDE contributors.

How You Can Help

We’re hosting our Plasma 6 fundraiser right now and need your help! Thanks to you we’re now at 91% of our goal of 500 new KDE e.V. members! That’s really close to 95%, which is close to 100%! So I think we might actually make it… if you like the work we’re doing, spreading the wealth is a great way to share the love.

If you’re a developer, work on Qt6/KF6/Plasma 6 issues! Which issues? These issues. Plasma 6 is very usable for daily driving now, but still in need of bug-fixing and polishing to get it into a releasable state by February.

Otherwise, visit https://community.kde.org/Get_Involved to discover other ways to be part of a project that really matters. Each contributor makes a huge difference in KDE; you are not a number or a cog in a machine! You don’t have to already be a programmer, either. I wasn’t when I got started. Try it, you’ll like it! We don’t bite!

Categories: FLOSS Project Planets

Beginning of Season of KDE 2024!

Fri, 2023-12-15 19:00
Beginning of SoK 2024!

New year, new Season!

This year, we are trying out a new way to handle the program. No more season.kde.org, everything is on invent.kde.org.

For mentors

Send a request to kde-soc-management@kde.org to be added to the group of mentors watch the project so you get notified when contributors create their proposals.

We will create a side issue which lets you select the projects you want to mentor and the ones you reject.

Note that you should not write in the comments whether the projects have been accepted or rejected until the admins publish the results.

For proposals

Create a new issue in our repository using the template sok_proposal. Add your proposal and tell the potential mentors about your idea. The issue will be confidential, meaning only you and the mentors will have access. The template will automatically add the labels for the program. You must not modify them.

If your project is accepted, it will become public, so don't enter any confidential personal information here.

If it already exists, select a label corresponding to your project. It will make filtering easier. If it the label does not exist, ping someone in the kde-soc channel, and an admin will add it when they can.

Selection

The issues will be labelled as accepted or rejected. Accepted projects will become visible.

Progress

Then, until the end of event, you will work on your chosen task, helped along by your mentors. At the end of the task, the projects will be labelled completed or not completed depending on their status.

KDE expects you to write and publish at least two blog posts. If you don't have a blog, create a pull request in this repository to create a blog post and we will post it on this website. One post needs to be written during the project to explain your progress.

Then, KDE encourages yout to post a shared blog post along with all the other participants at the end of SoK to sum up what has been done. This post will be published on this website.

The admins will then contact the participants that completed their projects to get information on where to send your KDE goodies.

Categories: FLOSS Project Planets

KDE: Snaps, KDEneon, Debian and my future.

Fri, 2023-12-15 16:33

First I want to thank KDE for this wonderful write up on LinkedIn. https://www.linkedin.com/posts/kde_akademy-2023-over-a-million-reasons-why-activity-7139965489153208320-PNem?utm_source=share&utm_medium=member_desktop It made my heart explode with happiness as I prepped for my interview on Monday. I didn’t get the job ( Just the usual “we were very impressed with your experience, but we went with another candidate” ). I think the cosmos is determined for me to hold out for the ‘project’ even though it is only part time work, it is work and if I have learned nothing else this year, I have learned how to live on a very tight budget! It turns out many of the things we think we need, we don’t. So with hard work of Kevin Ottens ( Thank you!!!! ), this should be finalized after the first of the year. This plan also allows me time for KDEneon and Debian work. I am happy with it and look forward to the coming year and the exciting things to come.

My holiday plans are to help the Debian KDE team with the KF6 packaging, On-going KDEneon efforts, and continue to make sure the snaps Qt6 transition is a painless as possible. I will also be working on the qt6 kde-neon extension.

In closing, despite my terrible luck with job-hunting, I am in an amazing community and I am truly grateful to each and every one of you. It has been a great year and I have added many new things to my skillset and I look forward to many more next year.

As usual, it is that time of month where I have not raised enough to pay my internet bill ( phone company taking an extra 200.00 didn’t help ) If you can spare any change ( any amount helps! ) please consider a donation https://gofund.me/b74e4c6f Thank you!

I hope everyone has a wonderful <insert your holiday here> !!!!!

~ Scarlett

Categories: FLOSS Project Planets

Web Review, Week 2023-50

Fri, 2023-12-15 08:43

Let’s go for my web review for the week 2023-50.

Make a Linux App

Tags: tech, foss, linux

Very needed evangelization. Go forth and make apps for Linux!

https://makealinux.app/


New extensions you’ll love now available on Firefox for Android

Tags: tech, mozilla, foss, android

Definitely the right move, more extensions are pouring in. People should benefit from them on Android as well.

https://blog.mozilla.org/en/mozilla/new-extensions-youll-love-now-available-on-firefox-for-android/


Spritely and Veilid: Exciting Projects Building the Peer-to-Peer Web

Tags: tech, distributed, p2p, privacy

What’s cooking up for the next generation of peer-to-peer applications? Here are two exciting examples of building blocks which are in the works.

https://www.eff.org/deeplinks/2023/12/meet-spritely-and-veilid


W4 Games raises $15M to drive video game development inflection with Godot Engine

Tags: tech, 3d, gaming, godot, foss

Good news for the Godot Engine. Let’s see where this goes in the coming years.

https://w4games.com/2023/12/07/w4-games-raises-15m-to-drive-video-game-development-inflection-with-godot-engine/


Epic v. Google: everything we’re learning live in Fortnite court

Tags: tech, google, law, monopoly

There will be an appeal but this is an important ruling already.

https://www.theverge.com/23945184/epic-v-google-fortnite-play-store-antitrust-trial-updates#stream-entry-65d34a06-1fa5-4eab-abf6-ce450441b543


Pluralistic: “If buying isn’t owning, piracy isn’t stealing”

Tags: tech, DRM, copyright, criticism

Once more, an excellent piece from Cory Doctorow. Allowing DRM encumbered devices could only lead to the mess we’re seeing nowadays.

https://pluralistic.net/2023/12/08/playstationed/


Power Hungry Processing: ⚡ Watts ⚡ Driving the Cost of AI Deployment?

Tags: tech, ai, machine-learning, gpt, energy

Important and interesting study showing how the new generation of models are driving energy consumption way up. As a developer, do the responsible thing and use smaller, more specific models.

https://arxiv.org/pdf/2311.16863.pdf


The AI trust crisis

Tags: tech, ai, machine-learning, surveillance, trust, transparency

There’s definitely a problem here. The lack of transparency from the involved companies doesn’t help. It’s also a chance for local and self-hostable models, let’s hope their use increases.

https://simonwillison.net/2023/Dec/14/ai-trust-crisis/


Kernel vs. User-Level Networking: Don’t Throw Out the Stack with the Interrupts | Proceedings of the ACM on Measurement and Analysis of Computing Systems

Tags: tech, linux, kernel, networking

Interesting deep dive about how network stacks work in kernel or in user land. Also provides some insight on how to improve the kernel stack.

https://dl.acm.org/doi/10.1145⁄3626780


What every computer scientist should know about floating-point arithmetic

Tags: tech, floats, mathematics

Probably the definitive resource on how floating-point arithmetic works.

https://dl.acm.org/doi/pdf/10.1145⁄103162.103163


The SQL Murder Mystery

Tags: tech, sql, databases, learning, game, funny

You like SQL? You like murder mysteries? This little game might be right for you.

https://mystery.knightlab.com/


Patching around a C++ crash with a little bit of Lua

Tags: tech, http, safety, bug, c++, lua

Nice trick to get the pressure off the team while it looks for a proper solution.

https://rachelbythebay.com/w/2023/12/07/header/


Real-world match/case

Tags: tech, python, pattern

Nice illustration on how pattern matching can simplify code and make it easier to write.

https://nedbatchelder.com/blog/202312/realworld_matchcase.html


trippy | A network diagnostic tool

Tags: tech, tools, networking

Looks like a nice tool for exploring network issues. I’ll take it for a spin when I get the chance.

https://trippy.cli.rs/


Dynamic music and sound techniques for video games

Tags: tech, music, sound, gaming

Interesting little tricks to create music and sound variations to guide the user.

https://blog.gingerbeardman.com/2023/12/09/dynamic-music-and-sound-techniques-for-video-games/


Behavior Belongs in the HTML

Tags: tech, html, semantic

This would indeed be a nice path forward for HTML. It’s much too dominated by JavaScript for now, having standardized semantic extensibility would be just better.

https://unplannedobsolescence.com/blog/behavior-belongs-in-html/


Painting with Math: A Gentle Study of Raymarching - Maxime Heckel’s Blog

Tags: tech, 3d, shader, mathematics

Another nice introduction to raymarching. I still find this a very interesting rendering approach. It’s really cool what you can do with those Signed Distance Fields functions.

https://blog.maximeheckel.com/posts/painting-with-math-a-gentle-study-of-raymarching/


Canon TDD - by Kent Beck - Software Design: Tidy First?

Tags: tech, tdd, design, tests

This is apparently a much needed clarification. Let’s get back to basics.

https://tidyfirst.substack.com/p/canon-tdd


Advice to a New Speaker - Dan North & Associates Limited

Tags: tech, talk

Nice list of advices in the second section. It makes a good point in some of the dynamics women might have to face in public conferences.

https://dannorth.net/advice-to-a-new-speaker/


The Importance of Career Laddering | CSS-Tricks - CSS-Tricks

Tags: tech, management, career

You got a career ladder in place? Well, that’s just a first step, how do you make sure the expectations are clear to people? How do you follow through? This article helps with those questions.

https://css-tricks.com/the-importance-of-career-laddering/


The surprising connection between after-hours work and decreased productivity

Tags: organization, meetings, productivity, work, life

Interesting survey results. This kind of confirm what we already suspected regarding longer work day and the amount of meetings.

https://slack.com/intl/en-gb/blog/news/the-surprising-connection-between-after-hours-work-and-decreased-productivity?nojsmode=1


Bye for now!

Categories: FLOSS Project Planets

KDE Ships Frameworks 5.113.0

Wed, 2023-12-13 19:00

Thursday, 14 December 2023

KDE today announces the release of KDE Frameworks 5.113.0.

KDE Frameworks are 83 addon libraries to Qt which provide a wide variety of commonly needed functionality in mature, peer reviewed and well tested libraries with friendly licensing terms. For an introduction see the KDE Frameworks release announcement.

This release is part of a series of planned monthly releases making improvements available to developers in a quick and predictable manner.

New in this version Baloo
  • [ExtractorProcess] Handle signal mangling by DrKonqi (bug 421317)
  • [ExtractorProcess] Test the various processing states
  • [ExtractorProcess] Make the extractor process path a constructor argument
  • [BasicIndexingBenchmark] Allow to keep temporary DB
  • [QueryTest] Add test case for terms folded to empty strings (bug 407664)
  • [DocumentUrlDb] Reduce allocations during path reconstruction
  • Shortcut non-matching phrase queries
  • [EngineQuery] Remove AND/OR operations
  • [QueryParser] Remove it, as it is no longer used
  • [SearchStore] Always use TermGenerator instead of QueryParser (bug 412421)
  • [Extractor] Do not emit startedIndexingFile for skipped documents (bug 462009)
  • Remove dead registerBalooWatcher DBus method
  • [FileWatchTest] Check attr changed signal when XAttr is not available
  • [FileWatchTest] Replace common boilerplate with RAII
  • [KInotify] Fix _k_addWatches helper when hitting descriptor limit
  • [KInotify] Simplify dirIter logic, use unique_ptr
  • [KInotify] Always add all watches in the event loop
  • [KInotify] Silence EventMoveSelf warning when not relevant
  • [KInotify] Removed unused and obsolete available() method
Extra CMake Modules
  • ECMQtDeclareLoggingCategory: support kdebugsettings files w/ . in basename
  • Add Find7Zip, deprecate Find7z, revert Find7z broken Linux support
  • Find7z: make it work also on non-Windows systems
Framework Integration
  • Reflect identifier change of oxygen-icons
KActivitiesStats
  • Adapt to renamed activities library repo
  • Adapt to move out of Frameworks
KActivities
  • Adapt to move out of Frameworks
KArchive
  • Fix broken bzip2 with new shared-mime-info
KConfig
  • Make KConfigWatcher noop for in-memory configs
KConfigWidgets
  • KRecentFileActions: Fix use after free (bug 476312)
KCoreAddons
  • kdirwatch: don't crash after moving threads (bug 472862)
  • kdirwatch: don't leave relative entries dangling
  • kdirwatch: expand ref counting system to keep account of public instances
  • kdirwatch: always unref d, and unset d from inside d (bug 472862)
KFileMetaData
  • Output generic file types from dump utility
  • Check if file path passed to dump utility is a readable file
  • [FFmpegExtractor] Bail out on first missing component during find_package (bug 458313)
  • Bump minimum Exiv2 version to 0.26
  • [TaglibExtractor] Add support for Ogg stream with FLAC (audio/x-flac+ogg) (bug 475352)
  • Generate fromName hash table programmatically from PropertyInfo table
  • Use proxy class for lowercase property name lookup
  • Reduce PropertyInfo::fromName overhead
  • [FFMpegExtractor] Support and check video/vnd.avi
  • [TaglibExtractor] Adapt code to SMI changes for audio/x-wav -> /vnd.wave
KIO
  • Add KF5 include for KPropertiesDialogPlugin
  • Add build option for KF6 coinstallability
  • Adaptations for shared-mime-info >= 2.3
KRunner
  • Adapt to plasma-framework being renamed to libplasma
  • Deprecate old QueryMatch::setType which will be removed in KF6
  • Backport KF6 API to set categoryRelevance for QueryMatch
  • Adapt to plasma-framework moving to Plasma
KService
  • Remove warning about empty Exec field from KService::exec() (bug 430157)
Plasma Framework
  • Adapt to renamed activities library repo
  • Adjust to KWayland moving to Plasma
  • Adapt to kactivities moving to Plasma
  • Reflect identifier change of oxygen-icons
Sonnet
  • Use the cmake variables rather than if(TARGET)
Security information

The released code has been GPG-signed using the following key: pub rsa2048/58D0EE648A48B3BB 2016-09-05 David Faure faure@kde.org Primary key fingerprint: 53E6 B47B 45CE A3E0 D5B7 4577 58D0 EE64 8A48 B3BB

Categories: FLOSS Project Planets

Qt for MCUs 2.2.5 LTS Released

Wed, 2023-12-13 06:27

Qt for MCUs 2.2.5 LTS (Long-Term Support) has been released and is available for download. As a patch release, Qt for MCUs 2.2.5 LTS provides bug fixes and other improvements, and maintains source compatibility with Qt for MCUs 2.2.x. It does not add any new functionality.

Categories: FLOSS Project Planets

Kate KF6 Status

Tue, 2023-12-12 15:07
Current state of the port

Thanks to the help of our contributors the current state of Kate for the upcoming first Qt & KF 6 release looks very promising. This includes not just people working on Kate and KTextEditor/KSyntaxHighlighing, but all of KDE Frameworks and Qt.

I now use the KF 6 based version both at work and home exclusively after we switched the master branch over to that. So far, beside the natural issues that can occur using a branch under active development, nothing really did stick out as a blocking issue.

Build it yourself and contribute

Our official Build It guide now shows how to get the KF 6 version, too. That is the version we want to have new contributions for, the KF 5 variant is now in pure bugfix mode. If you don't just want to fix a pure KF 5 bug, please aim to contribute to the current master branch. We can still backport stuff, if really needed.

We encourage you to have a look at our merge requests, see what else is going on there and maybe start working towards your very first own contribution. The current state for the first release based on Qt & KF 6 is very good, but naturally, there is always stuff to improve!

Comparison of the KF 6 and KF 5 versions

No post about some state without some proper screenhots ;0

Here the current state of Kate on KF 6, with current Breeze and Konsole part, built like described on Build It:

More or less the same with the latest KF 5 release as shipped with NixOS:

Beside the small cleanups in the design both in Kate and Breeze, I think that looks more or less identical.

Naturally under the hood a lot of things did change, but there are no disruptive changes and all features we had in the current stable version did survive the KF 6 port.

We had more or less the same amount of feature development and bug fixing like during the KF 5 time frame, just with some KF 6 porting 'sprints' mixed in.

Thanks again to all that made that feasible.

Special thanks to Waqar Ahmed from me, he did not only get Konsole to work on Windows in KF 5, he did help a lot to get that ported to KF 6, too, beside a lot of work on all other parts of Kate and Co.! All that work is invaluable, thanks a lot :)

Just take a look at our team page, more than 100 people did contribute to our stuff just in the last 12 months, that is amazing. And not just one or two lines. During the porting a lot of other people out of the KDE community stepped up to work on API adaptions and cleanups, that is awesome. Not only did Frameworks improve, people do care and fix up the users of changed API, too.

End of the year outlook

I think the current state of the port is good. We can be proud that we are more than ready for the upcoming 'megarelease'.

If you have time to test the beta or other snapshots, feedback is welcome. Please report bugs and if you can, please help to fix them.

Not all is well in the world, but at least from the perspective of the move from KF 5 to 6, for Kate/KWrite, all seems to have worked out very good this year.

In any case, I wish all people a good end of this and an even better start in the next year.

If you celebrate Christmas or any other festivity in the next weeks, I hope you have there a good time with family and friends!

Categories: FLOSS Project Planets

Kdenlive 23.08.4 released

Mon, 2023-12-11 13:49

Kdenlive 23.08.4 comes with a safeguard when working with variable framerate footage and fixes time remapping and subtitling issues. This version also brings back audio stem export support, which allows to render audio tracks as separate files. In case you are wondering why there is no 23.12 major release this month, the KDE community is gearing up for a mega release which will upgrade our software stack to Qt6 and KF6 frameworks. Although these are mostly under the hood changes, it means having a more modern and stable interface with improved Wayland support for Linux users. This transition paves the way for the upcoming performance enhancements effort, such as the integration of GPU effects.

Full log

  • Fix transparency lost on rendering nested sequences. Commit. Fixes bug #477771.
  • Fix guides categories not applied on new document. Commit. Fixes bug #477617.
  • Check MLT’s render profiles for missing codecs. Commit. See bug #475029.
  • Fix crash on auto subtitle with subtitle track selected. Commit.
  • Fix qml warning (incorrect number of args). Commit.
  • Fix audio stem export. Commit.
  • When pasting clips to another project, disable proxies. Commit.
  • Don’t allow creating profile with non standard and non integer fps from a clip. Commit.
  • Fix mix not always deleted when moving grouped clips on same track. Commit.
  • Fix remap crashes. Commit.
  • Ensure timeremap option is disabled when effect is deleted. Commit.
  • Time remap: fix changing speed broken / crashing. Commit.

The post Kdenlive 23.08.4 released appeared first on Kdenlive.

Categories: FLOSS Project Planets

Akademy 2023 - Over a million reasons why Snaps are important.

Mon, 2023-12-11 07:34

Speaker: Ms Scarlett Moore

I will start out with the fact that snaps have had over a million downloads and with those kind of numbers, they cannot be ignored. I will continue on to describe here my journey in creating a vast amount of snaps, the automation of said snap building using invent.kde.org and Ubuntu launchpad builders. I will explain the hurdles I have overcome and what needs to be done to keep the snaps updated and how developers can help ensure the users are getting updates in a timely manner. The hard part is done, I have made it easy, just a few more minutes of your time at release.

See the slide of this talk here

Categories: FLOSS Project Planets

KDE: KDE Snaps 23.08.4, PIM! KDE neon, Debian

Sun, 2023-12-10 08:33
KDE PIM Kaddressbook snap

KDE Snaps:

This weeks big accomplishment is KDE PIM snaps! I have successfully added akonadi as a service via an akonadi content snap and running it as a service. Kaddressbook is our first PIM snap with this setup and it works flawlessly! It is available in the snap store. I have a pile of MRs awaiting approvals, so keep your eye out for the rest of PIM in the next day.

KDE Applications 23.08.4 has been released and available in the snap store.

Krita 5.2.2 has been released.

I have created a new kde-qt6 snap as the qt-framework snap has not been updated and the maintainer is unreachable. It is in edge and I will be rebuilding our kf6 snap with this one.

I am debugging an issue with the latest Labplot release.

KDE neon:

This week I helped with frameworks release 5.113 and KDE applications 23.08.4.

I also worked on the ongoing Unstable turning red into green builds as the porting to qt6 continues.

Debian:

With my on going learning packaging for all the programming languages, Rust packaging: I started on Rustic https://github.com/rustic-rs/rustic unfortunately, it was a bit of wasted time as it depends on a feature of tracing-subcriber that depends on matchers which has a grave bug, so it remains disabled.

Personal:

I do have an interview tomorrow! And it looks like the ‘project’ may go through after the new year. So things are looking up, unfortunately I must still ask, if you have any spare change please consider a donation. The phone company decided to take an extra $200.00 I didn’t have to spare and while I resolved it, they refused a refund, but gave me a credit to next months bill, which doesn’t help me now. Thank you for your consideration.

https://gofund.me/b74e4c6f

Categories: FLOSS Project Planets

Plasma Browser Integration 1.9

Sat, 2023-12-09 03:52

I’m pleased to announce the immediate availability of Plasma Browser Integration version 1.9 on the Chrome Web Store. This is a maintenance release shipping a couple of important changes as well as the usual translation updates. The extension now ships 46 different localizations and will of course continue working just fine under the upcoming Plasma 6!

Konqi surfing the world wide web

Plasma Browser Integration bridges the gap between your browser and the Plasma desktop. It lets you share links, find browser tabs and visited websites in KRunner, monitor download progress in the notification center, and control music and video playback anytime from within Plasma, or even from your phone using KDE Connect!

The Firefox update has been stuck in review for a month now, so I decided to just release this announcement anyway. When Firefox users will get the update? I don’t know. The update on the Microsoft Edge store has been postponed for now as they demand Manifest Version 3. A migration in the works and will be released in time before Chrome starts disabling “legacy” extensions.

What’s new?

(also see the Changelog Page on our Community Wiki)

Reworked page injection code

While most Plasma Browser Integration features can be provided independently from any websites by using official browser extension APIs, adding media controls and the Web Share API requires adding some variables to the website’s JavaScript environment. Previously, this was done by injecting JavaScript tags into the DOM which then had access to the website’s realm. However, with the advent of Content Security Policy this became more and more restricted. While this is a good thing, it proved challenging for Plasma Browser Integration to continue offering the functionality people have grown to love over the years.

Firefox in particular for the longest time has been enforcing CSP even for browser extensions with access to a particular website. However, Manifest Version 3 in Chrome also does the same, so there will soon be no way around it. Thanks to Fabian Vogt, the extension has been ported to use a static script file with all endpoints pre-defined as opposed to injecting JavaScript strings built at runtime. It then communicates back and forth with the website using custom events. This makes the extension much more resilient and future-proof but more importantly makes media controls in Firefox fully work on Spotify!

Generic “Share…” option on the tab bar

Speaking of Firefox, Joshua Jackson ported browser detection away from checking for the InstallTrigger, which is deprecated. Additionally, the generic “Share…” entry is now available on a tab’s context menu alongside KDE Connect just like on the website’s context menu.

Performance improvements

Additionally, to improve startup performance, download monitoring is now only installed once a download has been started. On startup, the browser might send us an event about every single download (often hundreds!) that is still stored in the downloads history, even though we don’t care about them. Furthermore, thanks to Ambareesh Balaji the media players are now tracked in a WeakSet to reduce the likelihood of a memory leak of keeping long gone player instances alive.

From Plasma 5.27 Media Session API album cover processing is more lenient toward malformed data: SoundCloud has a bogus letter “t” in the image size string which previously broke displaying the album cover in Plasma’s Media Player applet. I reported that issue to their support in December 2022 but the issue still hasn’t been resolved. There have also been fixes to improve players in iframes, such as an embedded Vimeo player.

Everything else

In addition to that, Plasma Browser Integration no longer sometimes pretends to be a random web app rather than the browser it launched from. The tabs runner also excludes windows from web apps now as they are in a separate window and might as well be accessed via the “Open Windows” runner.

The history runner also filters “blob” URLs. Those are URLs pointing to data dynamically generated by JavaScript and cannot be referenced after the page that created the URL has closed.

Should something go wrong on the host side, you’ll see that more easily.

Calls to Native Messaging meanwhile check whether the port actually is open before sending a message. This avoids repeated console warnings being generated when the extension is installed on an unsupported system, as can easily happen when it is synced across devices to e.g. a Windows machine. Finally, debug output coming from the host binary looks much prettier in the developer console now.

Categories: FLOSS Project Planets

This week in KDE: DMA fence deadlines and lots of bug-fixing

Sat, 2023-12-09 00:40

The bug-fixing marathon continued this week, alongside an avalanche of new bug reports! It appears people are indeed testing the Plasma 6 beta release, which is great! Fortunately most of the bugs being reported are minor. Keep it up, everyone! And don’t forget about the Plasma 6 fundraiser; we’re getting really close!

KDE 6 Mega-Release

(Includes all software to be released on the February 28th mega-release: Plasma 6, Frameworks 6, and apps from Gear 24.02)

General infoOpen issues: 205

New features

When using automatic bug reporting, the system notification telling you that a crash report has been automatically reported now also gives you the opportunity to send along a message to tell developers what you were doing or help them understand the context surrounding the crash (Harald Sitter, link)

Bug fixes

Important note: I don’t mention fixes for bugs that were never released to users; it’s just too much for me (it would probably be too much for you to read as well), and most people never saw those bugs in the first place. Because we’re in the middle of a big Plasma dev cycle, there are a lot of these bugs! So big thanks to everyone who’s made it a priority to fix them!

Fixed a case where Dolphin could crash when undoing a mass-rename job (Akseli Lahtinen, link)

Setting your sector alignment to zero no longer crashes Partition Manager (Andrius Štikonas, link)

Switching your language to European Portuguese now works properly (Harald Sitter, link)

System Settings’ Recent Files page now supports non-default settings highlighting (Méven Car, link)

System Settings Energy Saving page now also supports non-default settings highlighting (Jakob Petsovits, link)

On System Settings’ Screen Edges page, the “Remain active when windows are fullscreen” checkbox now correctly highlights when in a non-default state (me: Nate Graham, link)

Using a touchpad to scroll on sliders throughout Plasma now scrolls in the expected direction when using inverted/”natural” scrolling (Ismael Asensio, link)

When taking a screenshot in Spectacle with the “automatically copy to clipboard” setting, the system notification that tells you about this can now be successfully be clicked to open the image in the default image viewer (Noah Davis, link)

The “Add More Timezones” Digital Clock widget popup is no longer sometimes too narrow to read the available timezones (me: Nate Graham, link)

Fixed several window positioning issues when using the “Minimize Overlapping” placement mode with a fractional scale factor in the Plasma Wayland Session (Yifan Zhu, link)

Other bug information of note:

Performance & Technical

Added support for “DMA-Fence deadlines”, which should improve performance and responsiveness on systems with Intel integrated GPUs in the Plasma Wayland session (Xaver Hugl, link)

Did a lot of performance work for the KWin Overview effect; it’s now much smoother, and work is ongoing to make it open faster, too (Vlad Zahorodnii and Marco Martin, link 1, link 2, link 3, link 4, link 5, link 6, link 7)

The Night Color transition no longer wrecks performance when using certain AMD GPUs (Xaver Hugl, link)

Ported the Accounts page in System Settings to work with Qt 6 (Nicolas Fella, link)

Automation & Systematization

Added a test to ensure that the animation speed setting works as expected (Fushan Wen, link)

Added a test to ensure that extracting the accent color from the wallpaper works as expected (Fushan Wen, link)

Added a test to ensure that the Media Controller widget’s time slider works as expected (Fushan Wen, link)

Added a GUI test to ensure that Info Center’s “About This System” page shows data properly (Alexander Wilms, link)

…And Everything Else

This blog only covers the tip of the iceberg! If you’re hungry for more, check out https://planet.kde.org, where you can find more news from other KDE contributors.

How You Can Help

We’re hosting our Plasma 6 fundraiser right now and need your help! Thanks to you we’re now at 88% of our goal of 500 new KDE e.V. members! That’s really close to 90%, which is close to 95%, which is close to 100%! So I think we might actually make it… if you like the work we’re doing, spreading the wealth is a great way to share the love.

If you’re a developer, work on Qt6/KF6/Plasma 6 issues! Which issues? These issues. Plasma 6 is very usable for daily driving now, but still in need of bug-fixing and polishing to get it into a releasable state by February.

Otherwise, visit https://community.kde.org/Get_Involved to discover other ways to be part of a project that really matters. Each contributor makes a huge difference in KDE; you are not a number or a cog in a machine! You don’t have to already be a programmer, either. I wasn’t when I got started. Try it, you’ll like it! We don’t bite!

Categories: FLOSS Project Planets

Plasma Mobile: tuned up to 6!

Fri, 2023-12-08 14:26

There are some plans to have a more official blog post on the plasma-mobile.org, these are my personal ramblings below…

Plasma 6 is coming together nicely on the desktop!

Coming back from hiatus, I was pleasantly greeted by a much more working session than when I last saw it in May; I have now completely switched over to it on my main machine!

On the other hand, there is still a lot of work to do on mobile to prepare it for the Plasma 6 release in February. I will outline the current situation and the work I have done in the past few months in order to make Plasma 6 a possibility for Plasma Mobile.

Context 🔗

I started working on KDE projects again in October (after an 8 month hiatus), slowly getting back into the groove of things. I unfortunately do not have as much spare time these days after work and school, but I try to do what I can!

The distro situation 🔗

For Plasma Mobile shell development on phones, we need to have distributions with KDE packages built from git master.

Many years ago, we used to have Neon images with Plasma Mobile that were maintained by Bhushan that were used for development, but required a large investment in time to maintain. We no longer have the (human) resources to maintain a distribution, so we are dependent on working with other distributions for development images.

Until this year, Manjaro had helped us by providing daily development images. Unfortunately, I have not really had contact with the project since one of their employees left earlier this year.

As a sidenote: Maintenance of the Manjaro Plasma Mobile images seemed to be inactive in the past few months, though there have been some encouraging signs from the forum in the past few days?

And so, there was a predicament. While I could develop the Plasma 6 mobile shell on the desktop, I had no way of testing it on a phone.

Thankfully, postmarketOS graciously took up the effort of maintaining a repository of KDE packages that track git master. Instructions can be viewed here. With the Plasma 6 beta release, there will be postmarketOS images that can be easily downloaded and tested with!

Seshan has also been working on an immutable distro ProLinux which has images that track git master as well, which have been useful to test with.

Porting 🔗

A big part of the porting effort is simply porting the shell and applications to Qt 6 and KDE Frameworks 6.

In the case of the shell, porting to Qt 6 was luckily fairly trivial. There were far more changes to the base KDE frameworks as package structures and QML plugins were being reworked, though that has stabilized in recent months. There are still some major regressions that need to be resolved before February (will be discussed later), but I am reasonably confident that the shell will in good shape by then.

For applications however, it is more of a mixed bag.

Several applications do not have active maintainers, and others need much more polish for mobile usage (as not all application developers have phones to test with).

Technically, I am responsible for KClock, KWeather and KRecorder, but I have typically done contributions to a multitude of applications to ensure that they work well on mobile. This time around though, I have only been really able to work on the shell with the limited spare time I have, and so I have not been able to do some of the heavier porting work for applications.

KRecorder in particular is unlikely to be ported in time for Plasma 6 as it depends on Qt Multimedia, which has had significant changes in Qt 6.

Beyond porting, I have also noticed some significant mobile-specific regressions in other applications that have been ported, which need to be addressed.

I would encourage anyone who is thinking of contributing to KDE to start here, application development is a very good way to learn Qt and get into further KDE contributions (as it is quite self-contained, compared to, say, the shell).

Styles 🔗

Plasma Mobile currently uses a separate Qt Quick style from the desktop (qqc2-breeze-style vs. qqc2-desktop-style), in which maintenance was lagging for Plasma 6.

The separate style is needed in order to have better performance, as it avoids some of the complex theming that the desktop needs to use for unifying styles between Qt Quick and Qt Widgets applications. However, it is a maintenance burden.

In November, I did a bunch of work on qqc2-breeze-style in order fix Plasma 6 related regressions, and to make it render more similarly to qqc2-desktop-style.

Task Switcher moving to KWin 🔗

In Plasma 5, the task switcher was built into the plasmashell process (which contains the homescreen, panels and most of what you see in Plasma), piping the application thumbnails from KWin.

In order to improve performance, it was a bit of a hack; the task switcher was built into the homescreen, so when it was opened, apps were minimized, showing the task switcher underneath. It was not optimal though, as it required convoluted logic in order to swap between the homescreen and task switcher views, and the thumbnails provided from the stream from KWin were not optimal performance wise.

With Plasma 6, I am moving the task switcher to be a self-contained KWin effect instead, which is inline with how the Desktop overview effect is implemented. This moves the task switcher off of plasmashell to KWin, cleaning up the code and potentially having performance improvements with how the application previews will be displayed.

We can also make use of KWin’s infrastructure for gesture-only mode (removing the navigation bar), rather than relying on a hack with invisible panels in order to trigger it.

The move has been a bit problematic though, as KWin developed regressions during Plasma 6 development that cause effect rendering to be broken on the PinePhone and SDM845 devices (possibly due to OpenGL versions?), but the issues are being worked on. As of Dec. 13, this has been fixed.

Rewriting Folio - the homescreen 🔗

Note: I will be writing a separate blog post that goes much more into detail in the future.

For some context, the default homescreen in Plasma 5 is Halcyon, which provides a simple way have a list of applications, while allowing them to be pinned and grouped into folders.

We also have the Folio homescreen, which was the original default (before Plasma 5.26) that was more similar to a traditional homescreen, having favourites pages and an application drawer to access the full list of apps.

The problem with Folio in Plasma 5 though was that it was particularly unstable (known to brick the shell), and was effectively an extended desktop canvas, so screen rotations and scaling changes would completely ruin the layout.

I knew that it would require a very significant effort in order to rewrite it and fix its issues, so I developed Halcyon as a stopgap solution until I had the time to fix Folio.

And so I spent about 5 weeks starting in October working solely on the Folio rewrite! It will be shipping as the default homescreen once again in Plasma 6.

I am pretty happy with how it turned out, it supports:

  • An app drawer
  • KRunner search
  • Folders
  • Pages
  • Drag and drop between all of the above
  • Applets/widgets
  • Row-column flipping for screen rotations
  • Customizable row and column counts
  • Customizable page transitions
  • Ability to import and export homescreen layouts as files
  • … and more!

Applets in particular are pretty exciting, though still need some work. They use the same infrastructure that the Desktop uses, so we can use existing applets!

New applets for mobile apps can eventually also be developed, pending interest.

A new service: plasma-mobile-envmanager 🔗

Plasma Mobile relies on some configurations (set in files) for KWin and the shell in general that directly conflict with what Plasma Desktop expects.

For example, we use different look-and-feel packages to provide pieces such as the lockscreen theme, as well as tweaks for features such as disabling window decorations.

In Plasma 5, this was accomplished by having the distribution ship config files that are installed to /etc/xdg (from plasma-phone-settings), which overrode Plasma related settings for users.

This was problematic in that this would affect the desktop session, making it impossible to use both the desktop and mobile sessions without doing some tweaking before switching. This also made it a barrier to be easily installable as “just another desktop environment”, which was a common complaint.

In Plasma 6, I introduced plasma-mobile-envmanager a utility that runs prior to shell startup that automatically does the configuration switching between what is needed for Plasma Mobile, and what is needed for Plasma Desktop.

This now allows distros to drop having to install hardcoded configs onto the system, and makes it easy to simply install as a separate desktop environment for existing systems.

A new application: plasma-mobile-initial-start 🔗

I added an application that runs when starting Plasma Mobile for the first time, guiding users on configuration on their system, from setting up the Wi-Fi, to configuring cellular settings.

It currently exists as an application that runs when the shell is started for the first time.

However, it likely needs to eventually be ported to be a true first-start wizard similar to what GNOME has as well as pico-wizard (used by Manjaro), in order to have elevated permissions so that the user does not have to be prompted for their password.

Docked mode 🔗

With Plasma 6, I am making some steps toward improving support with attaching a monitor, keyboard and mouse.

A new “Docked Mode” quick setting was introduced that, when activated:

  • Bring back window decorations
  • Stops opening application windows in fullscreen

Eventually, some more work can be done in order to have the external monitors load desktop panels instead of the mobile ones, which should make the experience equivalent to Plasma Desktop.

Telephony 🔗

I have historically not done much work on the telephony front.

There have luckily been contributors that have worked on Spacebar and Plasma Dialer (shoutout to Michael and Alexey!) in the past few years, allowing me to focus on other things.

From recent testing though, there have been a lot of regressions in Plasma 6, so I likely need to start learning the ropes of how it all works in order to help out. Of particular focus for me will be improving the quality of the cellular settings and overall shell integration with ModemManager.

My current carrier only supports VoLTE so I have been unable to test calling, and I have had trouble with my PinePhone in getting cellular working, but I will probably try buying a USB modem to do testing on the desktop with.

Settings module consolidation 🔗

In Plasma 5, a lot of mobile specific settings modules lived outside of the Plasma Mobile repository, in places such as the settings application.

I moved these settings modules together to be in the Plasma Mobile repository. This also removes the need to have a separate build of plasma-nm.

Other things to address 🔗

A big pain point in Plasma 5 was the mobile lockscreen. There were many cases of it crashing (causing the white text on black screen issue) as well as extraordinarily slow load times.

Much of it likely stems from the fact that it has to load the QML files right after the device locks, which can be slow and sometimes has graphical issues when coupled with suspend. I have tried to optimize the load time in the past, but it may be the case that we need to rethink the architecture a bit, not sure…

Conclusion 🔗

I will be returning to a university term in January, likely making it harder for me to contribute for a few months again.

I have luckily finished most of the features I have wanted to get done for Plasma 6, and am now spending my effort fixing bugs and improving code quality. I hope that we can have a successful, bug-free Plasma Mobile release in February, but it is quite daunting at the moment as a single volunteer contributor for the mobile shell.

If you are interested in helping contribute, I encourage you to join the Plasma Mobile matrix room!

There is also some documentation on the wiki that can help you get started.

go konqi!

Categories: FLOSS Project Planets

Future text improvements in Qt 6.7

Fri, 2023-12-08 09:23

The Qt 6.7 feature freeze is today, and we now start the process of further stabilizing the code. The actual release is still a few months off, but I thought I would look ahead at bit at what improvements are in store for font handling in Qt and Qt Quick. More specifically there are three things discussed: Variable font support, a brand new "large font" text renderer and font shaping feature support.

Categories: FLOSS Project Planets

Web Review, Week 2023-49

Fri, 2023-12-08 05:21

Let’s go for my web review for the week 2023-49.

Mobilizon V4: the maturity stage – Framablog

Tags: tech, framasoft, privacy, social-media, foss

Another important software release. Let’s wish luck to the new maintainers!

https://framablog.org/2023/12/05/mobilisation-v4-the-maturity-stage/


Introducing Wikifunctions: first Wikimedia project to launch in a decade creates new forms of knowledge – Wikimedia Foundation

Tags: tech, wikipedia, knowledge, programming

Interesting move, I’m wondering how far this will go. Reuse of those functions in other Wikimedia project will be critical to its success.

https://wikimediafoundation.org/news/2023/12/05/introducing-wikifunctions-first-wikimedia-project-to-launch-in-a-decade-creates-new-forms-of-knowledge/


Toxic comments are associated with reduced activity of volunteer editors on Wikipedia | PNAS Nexus | Oxford Academic

Tags: tech, wikipedia, knowledge, community, sociology

Very interesting study, shows how toxic comments impact contributions. Gives a good idea of the probability for people to leave. In the case of Wikipedia this highlights reasons which contribute to the lack of diversity in the contributors. This is a complex community issue in general, this studies does a good thing by shedding some light on the dynamics in the case of Wikipedia.

https://academic.oup.com/pnasnexus/article/2/12/pgad385/7457939?login=false


An Open Letter to the Python Software Foundation

Tags: tech, python, community

The fact that they felt the need to write such a letter is troubling. What’s going on in the Python Software Foundation really? Something needs to be fixed it seems.

https://pythonafrica.blogspot.com/2023/12/an-open-letter-to-python-software_5.html


Firefox on the brink? | BryceWray.com

Tags: tech, web, mozilla, google

Let’s hope it won’t get there… I wish people would abandon Chrome en masse. I unfortunately don’t see it happening and it’ll just weaken the Web.

https://www.brycewray.com/posts/2023/11/firefox-brink/


Chrome’s next weapon in the War on Ad Blockers: Slower extension updates | Ars Technica

Tags: tech, google, browser, attention-economy

Still using Chrome? What are you waiting for to change for another browser which doesn’t play against your interests.

https://arstechnica.com/google/2023/12/chromes-next-weapon-in-the-war-on-ad-blockers-slower-extension-updates/


Automakers’ data privacy practices “are unacceptable,” says US senator | Ars Technica

Tags: tech, automotive, privacy

A senator is stepping up and rightfully pointing the finger at automakers. Let’s hope more will follow.

https://arstechnica.com/cars/2023/12/automakers-data-privacy-practices-are-unacceptable-says-us-senator/


PlayStation keeps reminding us why digital ownership sucks - The Verge

Tags: tech, DRM, copyright

If you can’t download it without DRMs you just don’t own it, you’re renting it. This is completely different.

https://www.theverge.com/2023/12/5/23989290/playstation-digital-ownership-sucks


Just about every Windows and Linux device vulnerable to new LogoFAIL firmware attack

Tags: tech, security, bios

Fascinating vulnerability. When the BIOS is at fault with a crappy image parser… you can’t do much to prevent problems from happening.

https://arstechnica.com/security/2023/12/just-about-every-windows-and-linux-device-vulnerable-to-new-logofail-firmware-attack/


AI and Mass Spying - Schneier on Security

Tags: tech, ai, gpt, surveillance, spy

Definitely one of the worrying aspects of reducing human labor needs for analyzing texts. Surveillance is on the brink of being increased thanks to it.

https://www.schneier.com/blog/archives/2023/12/ai-and-mass-spying.html


Google Researchers’ Attack Prompts ChatGPT to Reveal Its Training Data

Tags: tech, ai, machine-learning, gpt, copyright

A glimpse into how those generator models can present a real copyright problem… there should be more transparency on the training data sets.

https://www.404media.co/google-researchers-attack-convinces-chatgpt-to-reveal-its-training-data/


Block the Bots that Feed “AI” Models by Scraping Your Website – Neil Clarke

Tags: tech, ai, machine-learning, gpt, copyright, criticism

This is clearly an uphill battle. And yes, this is because it’s broken by design, it should be opt-in and not opt-out.

https://neil-clarke.com/block-the-bots-that-feed-ai-models-by-scraping-your-website/


Introducing Gemini: Google’s most capable AI model yet

Tags: tech, ai, machine-learning, gpt

The Large Language Model arm race is still going strong. Models are still mostly hidden behind APIs of course, and this is likely consuming lots of energy to run. Results seem interesting though, even though I suspect they’re over inflating the “safety” built in all this. Also be careful of the demo videos, they’ve been reported as heavily edited and misleading…

https://blog.google/technology/ai/google-gemini-ai/#availability


Multifaceted: the linguistic echo chambers of LLMs - by James Padolsey

Tags: tech, linguistics, ai, machine-learning, gpt

LLMs training had a bias from the start… and now we got a feedback loop since people are posting generated content online which is then used for training again. Expect idiosyncrasies to increase with time.

https://blog.j11y.io/2023-11-22_multifaceted/


Seamless Communication - AI at Meta

Tags: tech, ai, machine-learning, gpt, translation, speech

Now this is a very interesting use of generator models. I find this more exciting than the glorified chatbots.

https://ai.meta.com/research/seamless-communication/#our-approach


ChatGPT’s One-year Anniversary: Are Open-Source Large Language Models Catching up?

Tags: tech, ai, machine-learning, gpt, foss

Very interesting review, we can see some interesting strengths and weaknesses. Also gives a good idea of the different ways to evaluate such models.

https://arxiv.org/abs/2311.16989


reaction, in replacement of fail2ban

Tags: tech, security, server, self-hosting

Could indeed turn into a nice alternative to fail2ban.

https://blog.ppom.me/en-reaction/


Standard Webhooks

Tags: tech, web, services, webhooks

Interesting attempt at having webhooks implementation a bit more standardized. This is indeed needed, currently everyone does them in slightly different ways and sometimes the quality is debatable. If it gets adopted it’d give a good baseline.

https://www.standardwebhooks.com/


You (probably) don’t need DateTime · Scorpil

Tags: tech, date, time, unix, complexity

Good reminder that the raw UNIX timestamps have interesting properties and often are enough not necessarily needing to rely on something more complex. Also gives nice criteria for picking between said timestamps and higher level types.

https://scorpil.com/post/you-dont-need-datetime/


You don’t need JavaScript for that - HTMHell

Tags: tech, web, html, css, frontend

Nice examples showing JavaScript use can be reduced in the browser. HTML and CSS are gaining nice features.

https://www.htmhell.dev/adventcalendar/2023/2/


Documentation unit tests

Tags: tech, tests, documentation

Interesting approach to reduce the amount of undocumented features because we simply forgot to update the documentation. Shows a few inspiring tricks to get there.

https://simonwillison.net/2018/Jul/28/documentation-unit-tests/


Struct initialization | Sandor Dargo’s Blog

Tags: tech, c++

Good walkthrough the finer points of members initialization in C++. Worth keeping in mind.

https://www.sandordargo.com/blog/2023/11/22/struct-initialization


When static types make your code shorter

Tags: tech, programming, type-systems

Somehow unsurprising, this is often the case: less validation code, but also less automated tests. With types you can write unwanted states out of existence.

https://evanhahn.com/when-static-types-make-your-code-shorter/


Profiling Rust programs the easy way | nicole@web

Tags: tech, rust, optimization, profiling

The Rust tooling makes it super easy to profile your programs. This is neat.

https://ntietz.com/blog/profiling-rust-programs-the-easy-way/


Topics in computer graphics

Tags: tech, graphics, 3d, learning

Very nice collection of tidbits of information for the main topics in computer graphics. A good way to get started or refresh the basics.

https://mrl.cs.nyu.edu/~perlin/graphics/


Nuclear Reactor Simulator

Tags: tech, web, game, 3d, simulation

Very cool simplified simulator. Gives a good idea of how this roughly works.

https://dalton-nrs.manchester.ac.uk/


“Smartifying” my Hi-Fi system

Tags: tech, hacking, raspberry-pi, music, networking, usb

Alright, this is definitely a cool hack.

https://blog.rgsilva.com/smartifying-my-hi-fi-system/


Deciphering Glyph :: Safer, Not Later

Tags: tech, quality, project-management, programming

An interesting interpretation of what was behind the “move fast and break things” motto which is nowadays blindly followed by some. A bit of a long piece but does the job and propose a more complete view and an alternative approach.

https://blog.glyph.im/2023/12/safer-not-later.html


TDD Isn’t Design - by Kent Beck

Tags: tech, tdd, design

Definitely this. Again TDD helps to work on the design, but it’s not a silver bullet which will give you the right design on a platter.

https://tidyfirst.substack.com/p/tdd-isnt-design


A few words about Blameless culture

Tags: tech, culture, blameless, quality, trust

Shows why it’s important to go for a blameless culture, also outside of postmortem. This is definitely not easy but worth it.

https://www.gybe.ca/a-few-words-about-blameless-culture/


How to do annual planning and strategy for an engineering organization — Lena Reinhard

Tags: tech, organization, strategy, planning

Good blueprint for building up and following up (the most important part really) of a strategy in your organization.

https://www.lenareinhard.com/articles/annual-engineering-organization-strategy-planning


Return to office is dead, Stanford economist says. Here’s why

Tags: tech, remote-working

Looks like remote work is here to stay for good now.

https://www.cnbc.com/2023/11/30/return-to-office-is-dead-stanford-economist-says-heres-why.html


RFC processes are a poor fit for most organizations - Jacob Kaplan-Moss

Tags: business, organization, decision-making

Good point on why you don’t want to drive your organization simply on RFCs. Yet another fad of “this worked for them, let’s do it as well”… per usual this fails to take into account the specificity of the context where it worked.

https://jacobian.org/2023/dec/1/against-rfcs/


First decide how to decide: “one weird trick” for easier decisions - Jacob Kaplan-Moss

Tags: tech, management, decision-making

Nice ideas for decision making in larger groups.

https://jacobian.org/2023/dec/5/how-to-decide/


Bye for now!

Categories: FLOSS Project Planets

Pages