Skip to content

Welcome to Planet KDE

This is a feed aggregator that collects what the contributors to the KDE community are writing on their respective blogs, in different languages

Monday, 3 October 2022

Today, we bring you a new report on the Maui Project’s progress.

Maui 2.2.1 was released almost two months ago. Since then, new features, bug fixes, and improvements have been made to the Maui set of apps and frameworks; the following blog post will cover some of the changes and highlights coming to the upcoming stable release.

What’s new?

Among many bug fixes that will be listed below, some of the highlights include paper-cut fixes to the MauiKit controls look and feel, such as translucent overflowing content, a new TabView, and more coherent and cohesive controls; more powerful features to the Maui apps, and updates to the latest libraries used by Maui apps.

MauiKit

Once again, the framework has been cleaned up, and many bugs have been solved, resulting in better performance and optimizations. This is what’s new:

Core

  • Tweak the WheelHandler to allow horizontal scrolling without keyboard modifiers; add a new property: primaryOrientation to WheelHandler to set the intended scrolling behavior as Horizontal or Vertical.
  • Expanded the TabBar of the TabView control to support toolbar-like behavior.
  • The TabView controls have been improved with new transition animations and an improved implementation to use both tab-bar and overview grid patterns easily. Now switch between tabs on the mobile mode by sliding between them, and reorganize them on the desktop by drag and drop.
  • Cleaner AboutDialog hides developer emails and links to them from the developer name.
  • Translucency for the Page overflowing content under toolbars.
  • Tweaked and improved the implementation of ToolActions control for jointed buttons, now using a ToolButton instead of a custom control.
  • Improved ListItemTemplate and Page control implementation.
  • Hooked a new property to MauiMan: Maui.Style.enableEffects can make the apps much lighter by not using animations or special effects.

FileBrowsing

  • Add support to inject elements into the delegates.

TextEditor

  • Cleaned up implementation details and removed option to show the line-counter widget.

Maui Style

  • Styling fixes to MenuItem.
  • Added a drop-down indicator for ToolButton with sub-menus.

MauiMan & Maui Settings

MauiMan is a server for syncing setting preferences across different processes that also broadcasts via DBus those property changes; it also ships with a library with a public API for hooking to those standard settings.

  • MauiMan server is now a DBus service for DBus to handle (auto start etc.)
  • Added new boolean property: enableEffects

Maui Apps

Small steps have been taken to improve the app’s features, stability, and usability. Most apps are now much more compact UI-wise, have more keyboard shortcuts support, and have more touch-friendly gestures. A quick overview of what’s new and improved can be found here:

Nota, Pix, and Index on Android.

Index

  • Sidebar keyboard shortcuts: Ctrl+Click to open in a new tab; Ctrl+Alt open in a split view.
  • Horizontal scrolling of the PathBar works again.
  • Add an option to detach a tab into a new window.

Booth

  • Initial support for scanning QR codes is now working

Booth QR code scanning – Nota & Station new TabBars.

Vvave

  • Now tries to maintain a single instance of the app running instead of opening multiple ones; more options for the server will be coming soon: such as creating playlists and adding tracks.
  • Fix the issue with blank cover artworks making the adaptive mode color scheme white.
  • Tweak the focus-view actions.
  • Added a transition animation between focus and collection views.
  • Fix focus view current playing track positioning.
  • Resume playback of a track.

Pix

  • Faster startup time when opening images with the viewer, as the collection browser won’t load until needed.
  • Fix the missing contextual menu for images from the viewer carousel.

Bonsai

  • Merged ToolBar into the TabBar
  • Display the status of the files in the browser view.
  • Added support for switching branches.
  • Display remotes and related branches.
  • Display information about the project from the README.MD file if available.
  • Add information header about the repository.
  • Initial work on expanding the clone dialog options

Nota

  • Merged ToolBar into the TabBar for a more compact look and feel; the file menu can be accessed from the TabButton itself.
  • Now is a single instance app, and new documents will be opened in new tabs or split view, depending on the calling parameters.
  • Move the line counter from MauiKit TextEditor to the app.

Buho

  • Now is a single instance app and added a server to request the creation of new notes.

  • Added command line option to create a new note quickly with: buho -n -c "Esta es una nota"

Shelf

  • Initial support for comic book formats: CBZ and CBR.
  • Merged ToolBar into the TabBar

Station

  • Merged ToolBar into the TabBar for a more compact look and feel.
  • Re-worked implementation of command shortcuts.
  • Now, QML sources are being pre-compiled for faster startup times.

 

And quick fixes and updates to all the other apps.

Maui Shell & CaskServer

CaskServer exposes Cask functionalities, such as requesting screenshots, screencast, or power management, such as logout, reboot, shutdown, etc.

  • Initial work for exposing Chrome and Shell properties.
  • Added Screenshot properties for requesting screenshots.

Maui Shell compositor and shell have received the following fixes:

  • The focus of new windows works correctly; minimizing a window will focus the window right under it.
  • Added support for requested screenshots: with animation and sound.
  • Added support for switching between windows using the tab switcher: Alt+Tab
  • Do not allow to pass mouse event from the top window to other surfaces under it.
  • Bind to MauiMan’s enableEffects property.
  • Added option to always have the launcher in full screen. Pending to expose this property via CaskServer.
  • Rotation experiments.

The post Maui Report 19 appeared first on MauiKit — #UIFramework.

The sun is shining, the beach is busy, the cava is flowing, the record shops are full of hipsters. Akademy is in full swing here in Barcelona, Here’s some scribbled notes I took from some of the talks I went to incase they are any interest to anyone.

The keynote was from Ashai dev Hector Martin. Ashai Linux runs on M1 ARM macs. EFI is a security nightmare, it’s an operating system in itself. Linus said Apple Macs won’t be available for Linux unless Apple opens up its GPU. Macs have a permissive mode to boot custom kernels including XNU (Apple’s open source OS kernel). He got himself a patreon and github sponsorship and enough people fund him to do it as a job. He did lots of impressive things to get Linux working on ARM M1 Macs and voila his video shows a Plasma desktop on a Mac.

Neil Gompa on Fedora and KDE

Neil Gompa spoke on Fedora. See http://fedoraloveskde.org/ . Packages by Fedora KDE SIG. Fedora has Wayland by default (also RHEL). Better graphics performance, less resource usage. For gaming SDL is Wayland native (Simmple Direcmedia Layer), needed replaced with a shim library for SDL 1 to use SDL 2. Fedora is first distro for Pipewire for all audio routing (dropping Pulseaudio and JACK). Btrfs by default, optimised for flash storage, transparent compression, improves space efficiency and IO performance. The flagship variant is Fedora KDE Plasma Spin. It has some minor branding and usability tweaks, Firefox as browser, FirewallD and SELinux. Fedora Kinoite launched last year, minimal default experience, rpm-ostree immutable base, apps as Flatpaks. In RHEL Plasma is in Extra Packages for Enterprise Linux. CentIS Hyperscale and AlmaLinux have Plasma ISOs from RHEL. (AlmaLinux is a RHEL rebuilt and replaces much of what CentOS used to.) In the future they hope to make SDDM use Wayland (needs an SDDM release). Fedora workstation is shipped by Lenovo and more, he wants Fedora KDE on hardware. The out of box experience isn’t great for this yet but he’s working with Nate to do it. Plasma Mobile packages just integrated into Fedora Rawhide so maybe x86 tablets and then ARM device support.
Wayland downside are that it has quirkyness, multi monitor quirky, mixed DPI is quirky, Plasma Wayland is pretty much feature complete. Accessibility not there and input methods not there so no screen readers. Plasma LTS was horrible to maintain as a distro because underlying frameworks and apps not inline. He suggests to spend the energy of Plasma LTS dev fixing normal Plasma releases.

Volker Krause spoke about push notifications, they must be part of the platform and app does not need to run, there’s potential for apps to abuse them but they are crucial for some uses. On proprietary systems (Google, Apple, Windows) you are locked in, they can’t be removed. UnifiedPush standardises interface and DBus, Android etc. Push drivers are Ntfy, NextPush (for NextCloud), Gotify. Android distributors FCM bridge. DBus mostly proof of concept. He shows the distributor in the KCM. He shows an app subscribed to notifications of German weather warnings. There’s legal and privacy risks: storage, authentication and encryption is not standardised. We have all the blocks, the main challenge is hosting the provider service.

Lunch Time

Shyamnath Premnadh (Shyam) spoke on How C++ and Python can thrive together. He’s a Senior Software dev at Qt for Python team. C++ is loved, fast, control, mature etc. Python is also popular, at least from Stackoverflow rankings. You wouldn’t use C++ for something quick and dirty. He gives some exmaples of where Python is easier than C++. Qt for Python is an application suite. Pyside6qmlls, Shiboken, assistant, linguist and others. Shiboken makes the bindings, it uses libclang to parse the Qt headers. He shows a C++Papp with Python plugins which can change the themes and other settings in the C++ app. The code to make this is easy and he shows that too. He shows QtScrypt, a proof of concept for integrating Python inside C++ in the same file. He shows pyside-deploy making a Flatpak package for his app.

Volker Krause spoke about Frameworks 6 porting. At Akademy 2019 they made a plan, do the work in the Qt 5 codebase, branch late, actionable tasks. Now KF builds on Linux, BSD and Android. Windows has 30 of 55 building. CI coverage is good. Plasma platform integration builds and works. QtWidget apps work, QML ones need more work. He shows his desktop running Kate with KF6, then Konsole, then Systemsettings. And he reveals that the whole Plasma desktop and KWin is running with KF6. This is not the out of box experience it requires some modifications for QML. ToDo before we can branch is not much. Still to be decided the scope, just KF6 or Plasma as well.

Pleasingly I tested free of Flu and Covid. Masks are still needed though.

Lydia talks about fundraising with Jean-Baptiste. It was lots of work and not cool. They’re trying project specific fundraising starting with Kdenlive. Jean-Baptiste takes the stage, their workload is increasing, they want a sustainable project. That needs a CI for binaries. For 1 year he’s been working with the e.V. board on a fundraiser. Signed a contract in March for the new fundraising software. Launched September. After 12 days it has now raised over €12,000 which is amazing. Challenges: make it sustainable. Increase presence in schools. Keep having fun. Lydia says contact the board if you want to do the same with your app.

Albert Astals Cid talks about security, 9 people with history in KDE (3 of them accounts so old they don’t know when they started). Needs new blood. When they get an e-mail they reply to say “thanks we will look into it”. Then check if it’s a bug or a feature. Then contact with someone who might be able to fix it. Get a CVE and publish. But you need to be careful when else it’ll go on The Register. They would like help from oss-fuzz adding kfilemetadata, baloo, kmime etc. They want KAuth uses audited.

Healthy Mind Healthy Code talk with Harald

Harald talks about Healthy Mind Healthy Code. He became aware some people had problems and struggles with their KDE contributing. It’s important to have sleep. Learn to say no. Have friendships. Reflect on your state on mind, maybe you’re being stressed out by KDE. You should be mindful you should get something out of it. You don’t want to lose sleep over it. Know your limits, do not stress too much if you can’t fix all the bugs in the world (half might do). Sometimes its OK to take a holiday for a couple of years. Do not over plan your life. He points to a Gitlab activity chart showing gaps, gaps are a good thing as it means you did go on holiday.

Akademy Award Winners

Akademy Awards winners for winning app is KStars, winning developer is Harald, winning non-dev contributions is Aniqa.

Akademy next year will be in Greece! Now onto the week of Birds of a Feather Meetings!

Party Time at the Social Event

Sunday, 2 October 2022

Akademy Talks in Barcelona

Akademy is back, online and in person. FFP2 masks being the only sign of a pandemic having happened. Barcelona is warm and sunny and we’re meeting at the Universidad Polytechniqua de Catalunya in grand lecture theatres with high def projectors. It’s great to see some old faces and some new and discuss the progress of the last couple of years since we could last meet. Here’s some notes on some talks I went to.

Volker Hilsheimer gives the keynote aschief architect of Qt for last 6 months. We are 2 years into Qt 6 and stuff is still being ported. Qt 6.4 is now out and it adds QtLocation as the last major module to be ported to 6. Qt WebAssembly is an important development, zero deploy, near native performance, Web in Qt and Qt in Web, they consider it to be Docker for Apps. How will KDE use it? Lots of work is happening to make Qt prepared for C++20. C++23 is on its way, stuff like the stack tracing library will be valuable. There’s some C++ successor languages upcoming like cppfront and carbon which they want to see what’s relevant. Python is something they have invested in. People are asking about Rust, they’re not actively doing anything but it’s something they’ll need to look into. Many people think of Qt as a user interface library, that’s not the only aspect but it’s a big part of it. What controls are still missing? QtWidgets they won’t throw much resources at, they will keep it relevant and up to date but QtQuick is where they want to put effort. They have not spent a great deal of time making sure Qt apps look great on the Linux desktop in recent years – they are now looking at that again. HMI, Human Machine Interface, is relevant. Connectivity is interesting for Qt (it’s not just a UI framework). Community is important for the Qt project, there’s a long and good history with the KDE community. Qt now has a community manager Pedro Bessa (who takes the stage). Almost 100% of the real world problems being solved with Qt is done outwith Qt Company so your perspective is important to them. 1/3 of maintainers are outside the Qt Company. Having an ecosystem for Qt. A question about speed recognition in Qt? Yes, contribution was this summer to QtSpeech repo.

This big church looks familiar

Adam Szopa goals talk. Goals initiative was started in the distant past of 2017. In 2019 Wayland, Consistency and All About the Apps kicked off. Then Covid happened.

Aleix talks about Apps: if humanity used more of our apps we would have less wars. It’s hard for us to do all the work. Are we as good as it gets to getting the last mile? On all the stores and all the platforms? We always have a one to one relationship with the app and the user. Snapcraft has most apps and 350k base users, 60,000 installs of Krita and Kdenlive. Flathub has 120 apps with Krita and Kdenlive most popular at about 25,000 installs. On Google Play Krita has 1m active installs (Android and ChromeOS) which KDE Connect has 300k installs. The Craft SDK now works for Android. KDE Connect uses native Java-style code in Android. Windows store has lots of users, 1M Krita installs but otherwise only 8 apps. Apple not convenient, incompatible with GPL in the store.

Snaps give us some stats. 350,000 active installs of the base. 60,000 active installs of the most popular apps Krita and Kdenlive.

Niccolo and The Dawn of Consistency. He gives the example of KHamburgerMenu which should have a similar widget which is a panel, having a common component was something he kept talking of but it was never done. App redundancy, one part of the goal was removing multiple applications. This depends if KDE is an umbrella for any app or if it’s a brand that promotes a set of apps. For example Maui is very much doing the wrong thing with their own design with their own Kit and they have their own shell but MauiShel isn’t part of KDE even though MauiKit is. Maybe we should have a requirement for KDE look and feel as part of being KDE. Some apps are a bit stagnant, in general I’d like to move them to Kirigami because that helps consistency. Kate and KWrite use the same code so congratulations. Band consistency, many apps had their own website, there has been a lot of improvement for this. Consistency within applications has improved.

Méven talks about Wayland goal. In Plasma 5.24 we got the Overview Effect, improved NVidia support (where the distro uses the patches), improved stability too. In Plasma 5.25 we got touch mode for better tablet support and a tonne of stability improvements. In Plasma 5.26 we got improved virtual keyboard support, improved graphical tablet support, xwayland and DPI improvements and a lot of stability improvement. But showstoppers are still missing colour profiles, blurry rendering with fractional scaling and many more. Virtualisation and screen recording still needed before people can switch from X.

Announcing the New Goals for 2022:
KDE For All: Boosting Accessibility with Carl
Automate and systematize internal processes with Nate – make sure people’s processes they know about are automated so when they move on that knowledge is still there, e.g. bug triaging, CI checks, document knowledge, doing off-boarding when people leave,
Sustainable Software with Corelius, see eco.kde.org

Barcelona goes hipster with record store cocktail bars

Tomaz spoke on Terminals. Unix users will use a shell, but terminals are difficult. He got some users to use different terminals with various tasks: how to change text size, how to open another program etc. 5 different universities took part. Changing text size. For xterm etc 0%, gnome-terminal 90% could but the name of option is “zoom”. Konsole 100%. Kitty is a new terminal based on Rust got 70%. Copy and paste didn’t work well as everyone used control-c (except on MacOS) maybe we should allow control-C for copy. One student cried in despair. Thankfully Konsole has sane defaults but we are still far from good. He demos the SSH session panel and the quick commands

Devin Lin and Bhushan spoke about Plasma Mobile. Within Plasma Mobile there’s over 40+ projects, 300+ tickets and 6+ active downstreams (opensuse, fedora, manjaro, postmarketOS etc). He showed the new shell as it will be in Plasma 5.26. He shows the quick settings. In the middle is the pin view with notifications, the same tech as desktop. He shows the audio applet and lock screen notifications. For telephony they switched from ofono to modemmanager. Plasma Dialer is for calls. Spacebar app is for SMS and MMS. callaudiod from Mobian for audio routing. There’s convergent apps like Discover, Elisa, Koko, Kasts, Neochat, KClock etc. Some mobile specific apps like Angelfish, QMLKonsole. Supports Pinephones and postmarketOS supporter devices such as OnePlus 6. It can also be installed anywhere on Linux distros. But there is more vendor lock in coming, a fragmentation between open mobile communities. Coming up: Kontact. Improved tablet support. And a great feature would be full convergence – you can walk up to monitors and plug in mouse and keyboard and get a desktop.

Bhush and Devin talk Plasma Mobile

KStars v3.6.1 is released on 2022.10.02 for MacOS, Linux, and Windows. It's a bi-monthly bugfix release with a couple of exciting features.

Due to major changes in this release, we are releasing it as Early Preview. We hope to release final stable release in a few weeks given the user feedback.

Optical Trains

Ekos introduces a new method to configure equipment by organizing them into Optical Trains. An optical train is a collection of devices arranged in orders from the telescope/lens up until the last imaging element. It includes everything in between including reducers, barlows, OAGs, rotators, filter wheels and so forth.

You will no longer select individual devices in Ekos modules, you simply select which train you want to use. Settings are now saved per-train basis so you can have different settings for each train. This is all done automatically and no need to save or load settings yourself.

For further explanation, check out this YouTube tutorial


Dark Guiding


Sophie Taylor is a new contributor to KStars and a highly talented scientific developer. She is a PhD student and has contributed a new internal guider feature: Dark guiding.

One of the primary benefits of the GPG guiding system is the ability to predict the behavior of the mount at any point in time; not just when guide camera images are received. Dark guiding introduces a rapid control loop that occurs several times per guide exposure, to correct for the predicted error. This way, not only can the benefits of long duration guide exposures be taken advantage of (e.g. capturing fainter guide stars), but some of the benefit of short-term exposures too; namely, quicker corrections to the mount.

For example, you can configure 5 seconds guiding exposures with 1 second dark guiding updates. Dark Guiding is an improvement to GPG, and part of the GPG menu in the Guider menu.

Internal Guider

Hy Murveit increased the number of usable MultiStar references. It was limited to 10 previously but now you can increase it as appropriate given the seeing conditions.


State Machines

Wolfgang Reissenberger continues work on dedicated state machines. This is the next step towards dedicated state machines for EKOS. This step contains:

  • Introduction of a dedicated meridian flip state machine encapsulating both the meridian flip state of the mount and the overall state. This state machine is shared between Capture and Mount, which avoids mutual state communication.
  • First functionality regarding the meridian flip is shifted from Capture and Mount to the state machine. Nevertheless, the complex operations are still part of the Capture code and will be addressed in one of the next refactoring steps.

More Fixes & Improvements

Hy Murveit           fix align solver disconnect crash, disable ssolver logging
Hy Murveit           Analyze target distance should be plotted as a property of the last capture.
Wolfgang Reissenberger Problem with guide calibration after meridian flip
Sophie Taylor        Proper support for loading compressed image statistics
Robert Lancaster     Attempting to patch Find Dialog Crash Bug on MacOS
Marius P             guidealgorithms use C++ initialization instead of memset
Hy Murveit           Reduce the resolution in drawing artificial horizon to 1 degree
Hy Murveit           Bugfix--scheduler was ignoring artificial horizon ceiling constraints
alfred herrhausen    Summary Screen layout improvements, Total RMS added
Wolfgang Reissenberger No separate JPLParser creation for check of epoch_mjd, since this causes crashes
Jasem Mutlaq         Add support for DSLR lenses. User can select either scope or lens in equipment
Hy Murveit           Fix bug where deprecated XML caused extra sequence jobs
Hy Murveit           PAA: use the index and healpix of the 3rd PAA calibration image at the start of the refresh phase.
Wolfgang Reissenberger State machines for meridian flip and Capture
Wolfgang Reissenberger Bugfix for restarting a paused capture sequence after a meridian flip
Hy Murveit           Call checkCamera before loading a sequenceQueue in case UI has not yet been updated.
Wolfgang Reissenberger Handling attempts sending an RPC call if no connection established
Hy Murveit           Do not draw star circles when printing HFRs
Jasem Mutlaq         Warn users if one or more devices fail to connect

Saturday, 1 October 2022

I’m at Akademy this week discussing and planning the future with my awesome fellow KDE contributors! So next week’s post will be huge. 🙂

Some time ago, I wrote a post about integrating Qt’s associative containers with the fancy new C++ features, range-based for loops with structured bindings.

That post inspired KDAB’s own Giuseppe D’Angelo to add the asKeyValueRange member function to both QHash and QMap. Now it’s possible to iterate over them with a simple range-based for loop, like so:

for (auto [key, value] : map.asKeyValueRange()) {
    // ...
}

The second part of my previous post demonstrates how we can iterate over Qt SQL results using a range-based for loop as if it were an ordinary collection.

This post covers what is needed to be able to traverse the SQL results in a much nicer and safer way like so:

for (auto [active, name, team] : QSqlResultTypedRange<bool, QString, QString>(query)) {
    qDebug() << "active(bool):" << active;
    qDebug() << "name(QString):" << name;
    qDebug() << "team(QString):" << team;
}