Skip to content

Wednesday, 5 June 2024

Ruqola 2.2.0 is a feature and bugfix release of the Rocket.chat app.

Improvements:

  • Allow to increase/decrease font (CTRL++/CTRL+-)
  • Add channel list style (Condensed/Medium/Extended)
  • Add forward message
  • Improve mentions support.
  • Add support for deep linking Deep Linking.
  • Implement block actions.
  • Implement personal token authentication. Bug 481400
  • Add Plasma Activities Support
  • Add Report User Support
  • Implement Channel Sound Notification.
  • Implement New Room Sound Notification.
  • Implement Sorted/Unsorted markdown list.

Some bug fixing:

  • Fix dark mode support.
  • Fix jitsi support.Fix translate message in direct channel.
  • Don't show @here/@all as user.
  • Reduce memory footprint.
  • Use RESTAPI for logging.
  • Allow to send multi files.
  • Fix preview url.

URL: https://download.kde.org/stable/ruqola/
Source: ruqola-2.2.0.tar.xz
SHA256: 4091126316ab0cd2d4a131facd3cd8fc8c659f348103b852db8b6d1fd4f164e2
Signed by: E0A3EB202F8E57528E13E72FD7574483BB57B18D Jonathan Esk-Riddell jr@jriddell.org
https://jriddell.org/esk-riddell.gpg

Tuesday, 4 June 2024

I was keeping myself on Plasma 5.x until recently. I got so accustomed to the Bismuth window tiling script for KWin that I couldn’t imagine myself updating to Plasma 6.x where Bismuth doesn’t work.

Unfortunately (?), one of the recent Debian updates broke Bismuth in Plasma 5.x as well, so I had nothing keeping me on the old version anymore. I’m now (again) running the development version of (most) KDE software.

Since the update, I managed to make the Qtile tiling window manager work with Plasma to some extent. But the integration between Qtile and Plasma I hacked was less than ideal, and I kept switching between KWin which worked perfectly, as KWin does, but without tiling, and my Frankenstein Qtile which didn’t work that well, but it had tiling.

Maybe I’ll write about it if I get back to hacking Qtile, but that might not happen any time soon because…

Krohnkite

Then I saw the news that the predecessor of Bismuth – the Krohnkite script has been ported to KWin 6 – see the announcement on reddit, github to get and review the code, and kde store for the package you can install.

Huge kudos to all who are involved in the rebirth, the script works as well as it did with KWin 5.

Window decoration

The only thing missing was the simple ‘just a line around the window’ window decoration that Bismuth had.

KWin 6 and Krohnkite + Bismuth decoration
KWin 6 and Krohnkite + Bismuth decoration

Now we have that as well, I’ve ported the original Bismuth window decoration to KWin 6 (nothing huge, just a few tiny changes to make it compile). The code, and the installation instructions are available on github.

Haruna version 1.1.2 is out.

You can get it now on flathub:

flathub logo

Availability of other package formats depends on your distro and the people who package Haruna.

Windows version:

If you like Haruna then support its development: GitHub Sponsors | Liberapay | PayPal

Feature requests and bugs should be posted on bugs.kde.org, but for bugs make sure to fill in the template and provide as much information as possible.


Changelog:

1.1.2

Bugfixes:

  • Disabled track selection menus and buttons when there are no tracks to be selected
  • Fixed custom command toggling
  • Re-added "Scroll to playing item" and "Trash file" options to playlist context menu, lost during Qt6 port
  • Fixed some mpv properties not being correctly set at startup
  • Fixed video rendering on Windows

Monday, 3 June 2024

In addition to my larger projects in KDE and elsewhere, I’ve been working on a number of small projects over the years.

Since these naturally are hard to find, I want to present each one here briefly. Maybe you’ll find some of them useful.

MatePay

MatePay is a small payment system developed for the student hackerspace I’m part of, Spline.

It has a small built-in shop that we have been mostly using for the beverages that we provide in the space. However it also features an API that applications can use to process payments with. We use that to run public printers in the University.

MatePay is based on a simple SQLite database, it only makes sense to use when trusting the party hosting it.

Screenshot of the MatePay start page, showing the options to buy something, publish products or send money

Mateprint

Mateprint is a printing web interface with a payment feature. It can also print multiple copies and double-sided pages.

It is just a simple static executable written in Rust. All the hard work is done by CUPS.

The web interface of Mateprint, with the option to upload PDFs to print

Rawqueued

Originally the public printers were all connected over the network, using HP network add-on cards. Unfortunately just like the printers these are becoming really old (~30 years), and started dying regularly lately.

Since for some reason these cards are expensive I instead decided to replace them with Raspberry Pis. I wrote a small IPP server that just forwards the payload it receives to the printer, which is pretty much what the network cards did as well.

This setup is a bit simpler than maintaining cups filters on multiple devices, so the more complicated parts can all run on a central virtual machine.

You can find the repository here.

Wasfaehrt

Departure board showing busses in Dahlem

In the University we have a departure board in one of the student managed rooms. It is powered by the same code that also powers KDE Itinerary (KPublicTransport).

You can find it on Codeberg.

Departure board showing busses in Dahlem

SpaceAPI

For the Spline room, we of course needed a SpaceAPI endpoint. There is a small server that provides the SpaceAPI endpoint and an API to update whether the door is open or not. The updates are sent by a daemon running on a Raspberry Pi.

People of the Internet,

While I have mostly been silent in my blog posts until now, I’d like to put it out there that GSoC’24 at KDE has been going strong for me.

The Project : Forms/Javascript support improvement for Okular

Okular, the cross-platform universal document viewer developed by KDE supports PDFs with forms. These forms often use Javascript to make forms more convenient for its users. However, as of today, the support for Javascript within Okular is lacking. During this Google Summer of Code timeline, I’ll be working on improving this form and javascript support in Okular.

Okular uses the QJSEngine provided by the Qt framework for running the javascript in a sandboxed environment. While QJSEngine provides the engine, all the necessary JS objects supported by the PDF specification need to be supported by us. Along with this, many Acrobat specific pre-defined scripts need to be implemented in order to allow for PDFs to work consistently with other PDF readers like Adobe Reader, PDF.js, etc.

My project involves providing support for as many features as possible in Okular forms. I’d like to thank Albert Astals Cid for mentoring me for this project.

Week-1 Recap

Coding period officially started from the 27th of May and in week 1 itself, I had the following merge requests merged (Yayy!!).

  • event.selStart && event.selEnd : These event properties allows script writers to correctly use the part of the text that was selected during Keystroke events using event.selStart and event.selEnd. These properties would also help me further implement the Keystroke event pre-defined methods. !MR981
  • AFPercent_Format : This pre-defined method allows for correct formatting of data entered in percentage form fields. !MR982

Along with this, I have some more MRs under review right now.

  • AFTime_Keystroke : This pre-defined method allows only the acceptable input in the form fields that are supposed to be for time data. !MR987
  • event.change : While event.change already has an implementation, it is inconsistent with the other PDF Readers. It currently evaluates the change from the first point of difference to the end of the string. In fact, it should only reflect the incoming changes. !MR998

While the first week was off to a great start, there are many more features to implement here. For the next weeks I’m planning on getting the above MRs merged and then working on the other keystroke pre-defined methods.

So that was it for this blog, see you next time. Cheers!

Sunday, 2 June 2024

The Amarok Development Squad is happy to announce the immediate availability of Amarok 3.0.1, the first bugfix release for Amarok 3.0 "Castaway"

3.0.1 features a number of small improvements and bug fixes, the oldest fulfilled feature request dating back to 2010 this time. Wikipedia applet, UI strings, and playlist generation and collection filtering are among the components that have received multiple improvements in this release. The efforts to both further polish the Qt5/KF5 version, and keep doing clean-up and preparations that bring a Qt6/KF6 version closer, have been ongoing and will continue.

Changes since 3.0.0

FEATURES:
  • Added an option to copy image to clipboard in Wikipedia applet, and a clickable notification if a non-Wikipedia link was clicked.
  • Added an option to select if track's artist is shown for entries under various artists / different album artist in context browser (BR 276039, BR 248101)
  • Indicate which search option is active in Wikipedia applet (BR 332010)
CHANGES:
  • Amarok now depends on KDE Frameworks 5.78.
  • Improve strings in user interface (incl. BR 343896, BR 234854)
  • Reduce CPU usage by minimized/hidden analyzer (BR 390063) and other components.
BUGFIXES:

Getting Amarok

In addition to source code, Amarok is available for installation from many distributions' package repositories, which are likely to update to 3.0.1 soon. A flatpak is currently available on flathub-beta.

Packager section

You can find the tarball package on download.kde.org and it has been signed with Tuomas Nurmi's GPG key.

Friday, 31 May 2024

A bit like Nate’s “5 minutes bugs” initiative, I’m announcing a new initiative to improve our applications ecosystem. The goal is to improve the quality and quantity of KDE applications and the number of application contributors. For anybody who knows me, it is not that surprising. Inside KDE, I have been mainly involved in apps for many years. I worked on all areas, from development (maintaining or co-maintaining many apps like NeoChat, Kontrast, MarkNote, Tokodon, and Arianna, and contributing to numerous other apps, but also design, promotion, websites (e.g., apps.kde.org) and even a bit of packaging (Flatpak and to a lesser extent Windows). Hopefully, making this a bit more public and making this an initiative with a bit more coordination will encourage more people to help :)

The good thing is that we don’t start from zero. In almost 30 years, KDE developers have developed over 200 applications, covering many use cases, from high-quality applications for artists (Krita, Kdenlive, Glaxnimate) to educational and office apps. We also have:

  • tons of shared libraries that make developing new apps more straightforward and consistent
  • an increasing amount of technical documentation on develop.kde.org/docs (Thanks to Thiago, Claudio, and everyone else who contributed to it)
  • a nice auto-generated website that lists all of these apps (apps.kde.org)
  • a whole CI/CD system that makes it easy to test and deploy our apps to Flatpak, Windows, macOS, Android and FreeBSD
  • tooling for the user documentation and the translations of apps
  • an opt-in service to ensure that apps are regularly released (KDE Gear)
  • tools like Clazy and Heaptrack to improve the code quality and performance of KDE apps
  • and a lot more

However there are prominent areas where we should improve our story; otherwise, we would already have a desktop and mobile market share of 90% and archived world domination.

More concrete here is a non-exclusive list of high-level tasks to achieve this goal.

Closing the Feature Gap

We need to identify missing apps compared to other app ecosystems (Windows, macOS, Android, iOS, and GNOME) and see where we could, with little effort, improve our app offering. While creating a KDE 3D editor like Blender is unrealistic, we could already go quite far by creating small apps that wrap up existing CLI tools or KDE libraries. To give some examples, I saw a few days ago that GNOME has a new document converter app called Morphosis. It’s a simple wrapper around Pandoc, and we could either do the same and wrap Pandoc or use Calligra’s rich collection of filters. Another example is a translation application; we already have a library in KTextAddons that does translations with many backends (offline and online), and the library even provides a ready-to-use widget. We could create a simple wrapper around KTextAddons, and boom; we get a new high-quality application with minimal maintenance effort.

Improving our Existing Applications

Aside from creating new applications, improving and reviving some of our applications is also highly valued. A lot of work has already been put into these applications, and by cleaning up their UI and bringing them up to our latest standard, we could go quite far. Some examples: Calligra (a complete office suite including presentation tool, spreadsheet, presentation, and vector editor), KTechLab (an IDE for microcontrollers and electronics), KWave (a sound editor), Parley (a vocabulary trainer).

Usually for every release, I try to have one or two apps, where I focus some time on it. In the past, I worked for example on KWordQuiz, KAlgebra, Koko. I recently ported Calligra to Qt6, so now one of my side quests is to figure out a way to have a modern QtQuick UI while using the current QPainter-based renderer using the new Window embedding in Qt 6.7

Better Marketting for our Applications

We need not only more apps but also better promotion. The apps.kde.org website has already helped a lot by listing all KDE apps, and more recently, we also created a lot of kde.org/for websites that list some KDE apps for some niches that might be interested in some of our apps. Further ideas on improving the marketing effort would be to promote new and lesser-known applications on social media regularly. But also publish a “This week in KDE apps” blog post that would cover all the news relating to first and third-party apps (e.g., new apps, updates, new app relevant APIs), and this would be community maintained with a process similar to this week in Matrix/GNOME/… where people write in a Matrix channel and a bot compile the relevant posts togethers. We need to make the progress on our apps more visible.

In addition to promoting first-party apps, we must figure out how to better promote third-party apps and extensions that use KDE Frameworks and integrate well with Plasma. Here, we could get some inspiration from the GNOME Circle initiative.

Make it More Accessible to Start a New Project

Documentation is essential in making it easy for newcomers to start projects. In the past few years, we have invested a lot of effort into that. I started develop.kde.org/docs, moved and updated a lot of old documentation from techbase.kde.org, and mentored a Season of KDE project to write a Kirigami tutorial. Nowadays, Thiago is fabulously leading the documentation effort. It is going in the right direction.

Aside from pure documentation, I’m impressed by the quality of the GNOME Workbench app and the number of examples it contains. I started a simple prototype of the same idea with Kirigami a while ago, which I need to finish (help is welcome 🤗). In the same vein, KAppTemplate and our default templates need some love.

Aside from documentation, we should create a support channel where people can ask for help with their applications. We could also make it more evident that developers are encouraged to ask on kde-devel and the VDG channel for help with their apps, even if their apps are not first-party KDE applications.

Making it More Attractive to Write KDE Applications

Writing applications using KDE Frameworks is already quite attractive, but we should communicate more on the advantage of starting an application using the KDE Frameworks more.

Firstly, by leveraging an almost 30-year-old ecosystem, app developers can reuse many libraries for their apps and find examples of how to implement the most common workflow in existing code. KDE Frameworks are also extremely cross-platform, and creating a KDE application doesn’t restrict you to only Plasma. Krita and Kleopatra have famously had millions of Windows installations. We also have Craft, which helps develop and deploy Qt applications on Windows, macOS and Android.

For first-party applications, our self-hosted Gitlab allows app developers to have full CI/CD pipelines for many platforms and even automatically publish them to the Windows Store. We also have infrastructure for translations, user documentation, wikis, code search, file sharing (Nextcloud), chat (Matrix), OSM hosting, and more. There is also a human factor; by making an app a first-party KDE app, the app received a lot of help from experimented KDE developers as part of the KDE review process and also during the entire life of the app. And we have a promo team that helps promote your app as much as possible.

For third-party applications, by being LGPL, we give users of KDE Frameworks a lot of freedom in licensing and monetizing their applications as long as they contribute their changes back to the library they use.

Not Limiting Us to C++

In terms of cross-language support, there are also two independent efforts to make KDE Frameworks accessible to more programming languages: one for Python by alcarazzam, which is part of a GSoC project I am mentoring, and another one for Rust by mystchonky. These efforts should make it easier for app developers to write KDE applications even if they are unfamiliar with C++ or prefer not to use it.

Streamline the Publishing of our Apps for Other Platforms

We now reached a state where most of our applications are automatically published on Flathub. This is not the case yet for Windows, Apple and Android. Recently we gained the ability to publish directly from the gitlab CI to the Microsoft Store, but we don’t make use of that yet in most of our apps. So let’s change that!

Getting Involved

I started creating a board of issues on gitlab and filled it with various applications ideas from a discourse thread. Feel free to take one of the open task or suggests a new app.

Additionally I also created a Matrix room to have a room for conversation.

Let’s go for my web review for the week 2024-22.


The next decade of the web | James’ Coffee Blog

Tags: tech, web, social-media, democracy

Very nice piece. Hopefully it’ll push people to remember that the big social media enclosures are not really the Web. We can have more democracy on the Web again if we collectively want to.

https://jamesg.blog/2024/05/19/next-web-decade/


How does AI impact my job as a programmer? – Chelsea Troy

Tags: tech, programming, debugging, teaching, gpt, copilot

Definitely this. In a world where LLM would actually be accurate and would never spit outright crappy code, programmers would still be needed. It’d mean spending less time writing but more time investigating and debugging the produced code.

https://chelseatroy.com/2024/05/26/how-does-ai-impact-my-job-as-a-programmer/


When privacy expires: how I got access to tons of sensitive citizen data after buying cheap domains

Tags: tech, dns, privacy, security

Or why you should let domain simply expire, there’s plenty of work to do before that.

https://inti.io/p/when-privacy-expires-how-i-got-access


Instead of “auth”, we should say “permissions” and “login” | nicole@web

Tags: tech, security, communication

The words we use indeed matter. This is definitely a domain where we should avoid ambiguities…

https://ntietz.com/blog/lets-say-instead-of-auth/


arighi’s blog: Extend your battery life with scx_rustland

Tags: tech, linux, system, processes

Interesting results. It’s especially nice to see how sched-ext allows to easily iterate and experiment with process scheduling strategies.

https://arighi.blogspot.com/2024/05/extend-your-battery-life-with.html?m=1


Evolution of the ELF object file format | MaskRay

Tags: tech, system, unix, elf, history

Definitely a complicated history… this doesn’t make the evolution or documentation of it easy.

https://maskray.me/blog/2024-05-26-evolution-of-elf-object-file-format


Never reason from the results of a sampling profiler – Daniel Lemire’s blog

Tags: tech, performance, optimization, profiling

Definitely to keep in mind when using sampling profilers indeed. They’re useful, they help to get a starting point in the analysis but they’re far from enough to find the root cause of a performance issue.

https://lemire.me/blog/2024/05/30/never-reason-from-the-results-of-a-sampling-profiler/


PyPy has been quietly working for me for several years now

Tags: tech, python

This definitely shows PyPy as a successful runtime.

https://utcc.utoronto.ca/~cks/space/blog/python/PyPyQuietlyWorking


Let’s optimize! Running 15× faster with a situation-specific algorithm

Tags: tech, python, performance, optimization

Another good example of how to speed up some Python code with nice gains.

https://pythonspeed.com/articles/lets-optimize-median-local-threshold/


What is a collision? — On Error Resume Next

Tags: tech, 2d, collision, physics, simulation

Good introduction to collision resolution inside of physics engines.

https://www.sassnow.ski/rigid-body-collisions/1


matcha.css | Drop-in semantic styling library in pure CSS

Tags: tech, web, frontend, css

Looks like a nice CSS library for the semantic styling of web content.

https://matcha.mizu.sh/


Why, after 6 years, I’m over GraphQL

Tags: tech, graphql, complexity

Shows well why you likely don’t want to use GraphQL. The chances you need the extra complexity and caveats are very slim.

https://bessey.dev/blog/2024/05/24/why-im-over-graphql/


Don’t Microservice, Do Module

Tags: tech, architecture, microservices, complexity

Since this particular fad apparently doesn’t want to die… this is a good reminder about why you want to do something simpler.

https://yekta.dev/posts/dont-microservice-do-module/


My BDFL guiding principles | daniel.haxx.se

Tags: tech, foss, governance

Not necessarily my favorite governance model, but if you’re on that scheme… those are good guiding principles.

https://daniel.haxx.se/blog/2024/05/27/my-bdfl-guiding-principles/


To the brain, reading computer code is not the same as reading language | MIT News

Tags: tech, programming, cognition, neuroscience

Interesting research! Is reading code a math and logic task? Is it a language task? Well… it might be its own thing.

https://news.mit.edu/2020/brain-reading-computer-code-1215



Bye for now!

Introduction

Whatever takes time takes for good. Yeah, so, about on March I created a PR on snapcraft by canonical. It was about adopting more metadata from the parsed appstrean metadata file. The new fields that were made to parse were

  1. License
  2. Contact
  3. Issues
  4. Source Code (VCS Browser)
  5. Website
  6. Donation Link

What does this change means?

For publishers/snapcrafters

Publishers and snapcrafters who also maintains an appstrean metadata for their app, you don’t need to maintain the metadata in your snap package separately. Just add the metadata file in your snap and you’re good to go. (Also please keep in mind to enable the update metadata from snapcraft option in case you disabled it).

Thursday, 30 May 2024

The team is happy to announce Kdenlive 24.05, this update reimplements the Audio Capture feature and focuses on enhancing stability while introducing a few exciting new features like Group Effects and Automatic Subtitle Translations. This version comes with a huge performance boost and the usual batch of quality of life, user interface and usability improvements.

This release comes with several performance enhancements, significantly boosting efficiency and responsiveness. Highlights include a massive speed improvement when moving clips with the spacer tool, faster sequence switching, improved AV1 NVENC support, and quicker timeline operations. These optimizations are part of the ongoing performance improvement efforts funded by our recent fundraiser.

Group Effects

In the last release, we introduced the ability to add an effect to a group of clips. This release now lets you control the parameters affecting all effects within the group.

Multi Format Rendering

Video editors for social media can now rejoice: Kdenlive offers the ability to render videos in multiple aspect ratios, including horizontal, vertical, and square, all from a single project.

Simply set the desired format in the render widget. This feature was developed by Ajay Chauhan as part of the Season of KDE (SoK) and was mentored by the Kdenlive team. The mentoring process was funded by our recent fundraiser.

Automatic Subtitle Translations

Continuing the subtitle improvements, we have added the ability to automatically translate subtitles using SeamlessM4T. This process happens locally without requiring an internet connection.

Please note that you need to download the models from the settings first.

Proxy

In this release, we’ve introduced a user-friendly interface for creating and editing external camera proxy profiles. Additionally, we’ve added a new proxy profile for the Insta 360 AcePro (thanks to Silvan Streuli).

Improvements

This release brings several improvements to Kdenlive. Track selection is now more intuitive, with double-clicking allowing you to select a track in the timeline. FFmpeg TIMEBASE chapter export has been fixed (thanks to Jonathan Grotelüschen). Nested sequences are now more stable than ever. We've implemented a more robust copy-and-paste and sequence clip duplication system, fixed numerous crashes, and improved sequence compositing. Project archiving has been improved. More filtering options have been added to the file picker when importing clips, including categories like Video files, Audio files, Image files, Other files and _User files _rather than the current All supported files and All files (thanks to Pedro Rodrigues). A new search field has been added to the Settings window. Additionally, integration with OpenTimelineIO has been enhanced.

Other highlights include:

Multiple Bins

Implemented several fixes for handling multiple bins, ensuring stability and usability.

Audio Capture

The audio capture feature has been reimplemented in Qt6 (thanks to Lev Maslov). There is also now the ability to set the Default capture folder in the project bin as well as setting to allow captures to the stored in a subdirectory of the project folder on disk, rather than only in the root (Thanks to Christopher Vollick).

Monitors

You may now configure play/pause on monitor click, added the option to Play Zone From Cursor and improved panning and zooming with the middle mouse button.

Subtitles

We’ve enhanced subtitle font styles by adding bold and italic attributes. Whisper now offers an option to set a maximum character count per subtitle and provides better user feedback by showing the output in the speech recognition dialog. In the Speech-to-Text settings, we’ve included links to the model folders and display their sizes.