Skip to content

Sunday, 28 May 2023

Hello, Tech enthusiasts! I am beyond excited to introduce to you my first project on GitHub – a Bash-based Telegram Bot that allows you to monitor and control a remote computer!

The idea behind this bot is pretty simple, yet powerful – you can command your PC, retrieve important system information, perform updates and even control system processes directly from your Telegram app. I’ve designed this bot with KDE Neon in mind, but it can be adapted to other Linux-based systems.

Here’s a sneak peek into some of the key functionalities provided by the bot:

function getBattery {
local percentage=$(upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep percentage | awk ‘{print $2}’)
echo “Battery level: $percentage”

function getCpuUsage {
local usage=$(top -bn1 | grep “Cpu(s)” | \
sed “s/.*, *([0-9.])% id.*/\1/” | \
awk ‘{print 100 – $1″%”}’)
echo “CPU Usage: $usage”

The bot responds to a set of predefined commands that range from simple system status checks like /battery, /status, /uptime, /memory, /disk, /cpu_usage to more complex functionalities such as /shutdown, /upgrade, /screenshot, and so on.

For the bot to run, it requires some prerequisites like curl, jq, bc among others. Some commands also require specific programs to be installed on your system.

The code is still in its initial version (0.1) and there might be some bugs on certain commands. But I am enthusiastic about making it better with every iteration. Future enhancements include multi-language support and other features based on user feedback.

I encourage you to give it a try, and would greatly appreciate your feedback. Feel free to report any issues, or suggest enhancements on the project’s GitHub page.

Here’s the link to the project on GitHub: telegram-remote-bash

Happy Coding!

After I accidentally screwed up my system Friday night, I ended up with no choice but to install all system updates from KDE neon “unstable” which now defaults to a Plasma 6 session. I certainly wasn’t planning on spending a few hours that evening fixing my setup. Alas, I am now taking “eating your own dog food” to the extreme and made my daily driver laptop run Plasma 6.

“About this System” dialog: KDE neon Unstable Edition.
KDE Plasma Version: 5.27.80
KDE Frameworks Version: 5.24.0
Qt Version: 6.5.0
There’s a few loose screws here and there.

Of course in the current phase of development it’s in a bit of a rough shape, a combination of packaging / co-installability woes, like some key components still stemming from a Plasma 5 build, and actual broken code suffering from changes in Qt, Frameworks, and Plasma itself. For instance, the Breeze SDDM theme already requires Qt 6 whereas SDDM is currently shipped as a Qt 5 build. The fallback theme it provides is quite broken, so it took me a while to log in again. On the other hand, Breeze temporarily isn’t provided for Qt 5 anymore, so those apps look hideous right now. Of course, this is all being worked on and will be resolved soon.

On the plus side, I now really have to fix everything that gets in the way of using this system productively. I already addressed a few issues Nate bugged me about at the Plasma Sprint in Augsburg earlier this month. For starters, my KRunner wasn’t working and aborted whenever I typed a query. I was completely oblivious to how reliant I have become on it until it stopped working. Luckily, it was just a stale KRunner plug-in I had been working on ages ago (one that lets me find emails in Thunderbird, sadly never finished due to massive performance problems in the relevant extension APIs). Once deactivated, KRunner was mostly usable again.

However, clicking results in KRunner doesn’t work, you have to use the keyboard to select them. While the items visually react on a mouse press, no action is triggered on release. It seems the ListItem inside steals the clicks from the surrounding MouseArea. The easiest solution is to shuffle the code and make the ListItem the root object, which also simplifies and speeds things up, but I’d really like to know what changed and where (is it Qt, Kirigami, Plasma Framework?) to break code that doesn’t appear to have changed much in years.

Another bug I just addressed was favicons not working in Plasma Browser Integration’s KRunner plug-ins (tabs runner and history runner), again a feature that I heavily rely on. Qt 6 introduced a qsizetype (something like size_t) which it now uses instead of int for properties, such as array size, image stride, etc. In some places this change was accidentally propagated to DBus signatures which subsequently broke an API contract.

Finally, the removal of the deprecated Qt.MidButton enum value (it’s now Qt.MiddleButton) broke middle clicking windows in the task bar to close them. Luckily, that was a straightforward change and at a glance I didn’t find any other references to the old name in Plasma repositories.

Over all, the system is quite usable and I encourage all brave developers to give it a try and help iron out all the bugs. Nevertheless, at the moment it’s pretty much just a Qt 6 port of Plasma 5, and I expect other things to break as we integrate more fundamental changes to the software architecture. For instance, the Plasmoid API is currently undergoing a major cleanup and Plasma Framework is being dismantled right now.

Going to Akademy, Thessaloniki, Greece


I’m Anant Verma, currently an R&D engineer at Tejas Networks Ltd, India. My proposal, “Implement Calendar Availability” was accepted for GSoC’23.

This is an introductory post to my project.

Project Goals

My proposal is based on one of the ideas by KDE: “Implement calendar availability”. The goal of the project is to extend the iCal support to include elements in RFC 7953. This would entail adding new UI elements through which users will add/edit their availability. Along with this, KCalendarCore will be edited to support the new AVAILABILITY/VAVAILABILITY components (defined in RFC 7953).


We often have regular periods of time where we are available or unavailable. For example, a college professor can easily specify what are their office hours and blocks of time where they are out of office. Ideally, these blocks of time should be used while making a free/busy lookup for that user.

In the background, the Kalendar application receives and sends information to calendar servers as per their defined protocols. Among the data exchanged, there is a free/busy field. However, this field is used to represent fixed time periods only and doesn’t provide a way to specify a repeating period of available/unavailable time. RFC 7953 is an improvement over this and would allow users to essentially publish their availability.

This new information will be added in AVAILABILITY and VAVAILABILITY components and would be sent to calendar servers while syncing. During a free/busy lookup, the server (if it supports RFC 7953) will consider above components during free/busy calculation.


I will be making more blog posts on my progress. Looking forward to working on this project!

Saturday, 27 May 2023

About me

Hi! Im Vansh, a third-year CS undergraduate. Ive been looking to start contributing to FOSS projects for a while now, and decided to make use of GSoC as a foray into my open source journey. KDE Plasma on top of various Linux distributions has been my daily-driver of choice for nearly three years, which is why KDE especially appealed to me as a community that I'd love to be a part of. Let's get started :)

The project: Calendar invitations in Kalendar

One of the limitations of Kalendar in its current form is that without the option to send and receive invitations for events, Kalendar users must resort to other calendar clients to manage their meetings when dealing with events with multiple attendees. The goal of this project is to implement actions in Kalendar allowing users to share their free/busy information, view free/busy info of others, send invitations to others while creating or editing events, check attendees participation status and respond to incoming invitations.

Anyway, will catch you in the next post with some updates on the project!

Since the last update two month ago KDE Itinerary got an improved timeline view, new importing and editing capabilities and even more travel document extractors. We also started to explore ways to integrate with Matrix for coordination during group trips.

New Features

Timeline revamp

The most noticeable changes both in look and feel happened around the main timeline view, in particular the better looking card headers and the much improved scrolling performance.

KDE Itinerary's main timline page showing a train ticket, hotel reservation and weather forecast.
KDE Itinerary's new timeline view.

Many more details of the timeline were improved as well:

  • Transfers are now properly included in trip groups and don’t sometimes leak out after a group in case of delays.
  • Weather forecast elements are much more compact.
  • Cancelled elements no longer trigger conflict or missing connection warnings and no longer show progress indicators or interfere with transfers.

Besides the significant timeline scrolling performance improvement, we also integrated a few optimizations for the application startup, with loading more data on demand and by using more efficient storage formats.

Importing from URLs

Importing data by merely copy/pasting a URL to the corresponding event such as the KDE Akademy 2023 website has been mentioned last time already, but has meanwhile been expanded further.

This now also works for website referring to e.g. a hotel or restaurant which unlike an event misses information about when you are going to be there. In those cases we now bring up the corresponding editor pages pre-filled with all information already found on the website.

Like with events this is all based on machine-readable annotations in those sites and thus only works with sites having that.

KDE Itinerary's hotel reservation editor with the hotel address already filled in.
Hotel reservation editor pre-filled based on a pasted URL.

Additionally, importing from URLs now also works via the URL sharing feature on Android.

Even more editing

In order to support this Itinerary’s editing capabilities have been significantly expanded. This includes:

  • Bus seat reservations.
  • Shortening bus trips as it has already been possible for train trips.
  • Hotel checkin/checkout times.
  • Restaurant reservation times.
  • Event times and URLs.
  • Airport names, terminals and arrival times for flights.
KDE Itinerary's bus reservation editor allowing to shorten trips and add reserved seats.
Bus reservation editor.

Several platform-specific date/time editing issues have also been addressed, as well as the address editor flagging all postal codes as invalid in countries where we have no postal code format information.

Infrastructure Work

Matrix location sharing

In the background we have been experimenting with the foundation for new exciting features to support coordination on group trips, integration with Matrix.

This mainly includes exploring how general Matrix support can be made available to non-chat applications without duplicating essentially a full chat client, as well as more specifically how static and real-time location sharing over Matrix could work, ideally not just limited to a simple coordinate but including all the context we have in Itinerary.

NeoChat showing a map with a location shared from the corresponding event reservation in Itinerary.
NeoChat showing a location shared from Itinerary.

This is all still early and experimental and not integrated by default, but hopefully we have the basics working in time for some field testing during Akademy in Thessaloniki in a few weeks :)

I'm going to Akademy 2023!

Generic ERA FCB extractors

Quite some effort went into implementing ERA “Flexible Content Barcode” (FCB) ticket barcodes over the past year, at times when those only occurred rarely in the wild. ERA FCB barcodes are the “new” fully machine readable (but very complex) standard for interoperable European railway tickets. This effort starts to pay of nicely meanwhile, as more and more operators begin to use this format, most recently European Sleeper and some variants of the “Deutschlandticket”.

With the wider selection of samples we were now able to implement a generic extractor for ERA FCB tickets, which should produce decent results even with ticket variants we haven’t seen yet. With the preceding more human- than machine-readable ERA TLB format this was far less reliable.

The use of UIC station codes in ERA FCB tickets also resulted in 1000+ Wikidata changes to add or fix UIC codes in railway station data, in particular in regions that traditionally used different station codes, such as Germany.

Fixes & Improvements

Travel document extractor

  • New or improved extractors for Aegean Air, Air Asia, ATPI, B&B Hotels, Best Western, České dráhy, Deutsche Bahn, European Sleeper, Eventbrite, FlixBus, Gepard Express, Grimaldi Lines, MÁV, ÖBB, Ouigo, Qatar Airways, SNCB, SNCF, Sunny Cars, Vueling, and Westbahn.
  • Support for several encoding variants of the Deutschlandticket, as well as for the ÖBB VorteilsCard.
  • Fixed merging of hotel reservations for different people with different checkout times.
  • Fixed extracting from emails with emails as attachment.
  • Improved generic name extraction to also recover spaces lost in boarding pass barcode encoding.

All of this has been made possible thanks to your travel document donations!

Public transport data

  • Improved coverage metadata for the Czech Republic.
  • Fixed a crash when cancelling location search queries.
  • Fixed location queries in Australia and the UK.
  • Support for FlixTrain, MÁV and SNCF Intercites onboard APIs.
  • Support for disruptions messages from the Deutsche Bahn onboard API.

Indoor map

  • Train station floor level data fixes in OSM for Lyon Part-Dieu, Mönchengladbach and Stuttgart, among others.
  • Fixed hit detection for icons using a physical sizes.
  • Support for the MapCSS text-position declarations as well as negative numeric tag values.
  • Improved rendering of different variants of linear barrier types (bollard lines, hedges, kerbs, etc).
  • Fix rendering of service roads in the light color style.
  • Handle additional ways of modelling platform sections in OSM.
  • Fixed rendering of ocean areas.
  • Improved rendering of certain combinations of floor and column elements found e.g. in Paris Gare de l’Est.

Itinerary app

  • Fixed display of binary PDF417 barcodes used e.g. by MÁV.
  • Added support for EAN13 barcodes needed e.g. by Grimaldi Lines ferry tickets.
  • Fixed a deadlock on updating currency conversion rates (bug 469562).
  • Fixed attaching documents on multi-traveler reservations losing data of other travelers (bug 469347).
  • Fixed imported PDFs losing their file name on Android (bug 468942).
  • Show the platform section for the current seat reservation or booked seating class on the train details page when available.
KDE Itinerary's train reservation details page showing the platform section the current seat reservation is in.
Train departure details showing the platform section based on the seat reservation.
  • Show disruption notes on the live status page when available, and hide information that is not supported on board of the current trip.
  • Added a toggleable auto-follow mode to the live status map.
  • Improved Apple Wallet boarding pass layout for overflowing labels.
  • Fixed vehicle layout content overlapping the page header on Android.
  • Improved the display of date-only check-in/check-out times for hotel reservations.

How you can help

Feedback and travel document samples are very much welcome, and there are plenty of other things that can be done without traveling as well. The KDE Itinerary workboard or the more specialized indoor map workboard show what’s on the todo list, and are a good place for collecting new ideas. For questions and suggestions, please feel free to join us in the KDE Itinerary channel on Matrix.

Hello and welcome to my first-ever blog! This is written as part of my work for KDE for GSoC '23.

About Me

My name is Shivodit Gill, I am a second-year student studying Bachelor of Computer Applications (BCA) in India. This is my first ever Google Summer of Code, so I'm eager to get started and learn new things.

I'm looking forward to increasing my capabilities and writing code that could (possibly!) find a home in the code repositories of popular apps, and be of use to people around the world. Together with my mentor, Albert Astals Cid (, I feel ready to tackle this challenge.

My project

For GSoC '23 I will be working on Okular for Android, and implementing the following features:

A font-fetching API for Android

This will use the AFontMatcher API introduced in Android API 29 to fetch the required font files to properly display text in pdfs that do not embed their fonts.

Fixing icon rendering in Okular for Android

Currently, Okular for Android has issues with the rendering of icons - almost none of the icons are shown. I hope to find the root cause of this issue and fix it.

Possible Challenges:

There are a few challenges I will face in my project:

  • My lack of Android development experience

  • Android follows a very different approach to debugging and developing applications. This combined with my inexperience in Android development will prove to be a massive obstacle.

  • Using the QtCreator debugger and compilation environment with the KDE Android development docker image does not work - I have tried and have not yet gotten it to work. It seems that this is a common problem and another developer has stated in the kde-android matrix room that they have to use logcat and print debugging.

However, I am hopeful that with the help of my mentors and enough perseverance, I will be able to overcome these challenges.

Thanks for reading, have a nice day!

Hey all, just a simple blog post this time, I just wanted to showcase the colorscheme I have made for KDE Plasma and various text editors and such.

AksDark Colorscheme for KDE Plasma


I have been working on this colorscheme for many months now, slowly tweaking it and figuring out what are the best colors for me.

I think I've finally found what works for me the best.

About the name: I am bad at naming things and I just first felt like "Okay only I use this colorscheme so I just name it AksDark lol" and well seems some people like it a lot!


Okay, yes, it's silly to write about history of why I made a colorscheme besides "it looks cool" but hear me out, there's an actual reason!

I have tried a lot of dark colorschemes, but they often share this one thing that does not work for me:

Low contrast.

My eyes are in weird place where too high contrast hurts, but too low contrast just doesn't help readability at all and I get easily distracted. I think my ADHD adds to it as well!

I couldn't for the life of me find a colorscheme that has vibrant colors but also not too dark background. Even Catpuccin, while good looking, has just too much pastel for me, and the purple background just bothers me in general.

I would love to rename AksDark to something else and have similar project for it like Catpuccin is! Email me or talk to me on Fediverse if interested :D

With pastel colors, the colors arent distinct enough and when I read things, I keep jumping from place to place, since it doesn't "lock" my eyes. I do not know any science behind this.

I wanted something very neutral, but vibrant. These sound like they're odds with each other, but I think they can be made work.


AksDark comes with dark-gray background, but all the elements are vibrant and high color. I tried to keep the luminosity of the color values very similar, so in black and white mode one can still look at the text and see what's going on.

AksDark Colorscheme in black and white

As you can see the colors are pretty distinct in b/w mode, however it seems link and visited colors could use some tweaking. Of course one has to remember that different monitors can display them differently and so on.

The contrast is purposefully high, but not too high. The gray background ensures that eyes do not hurt when looking at the bright text, but it still is bright enough to lock my view and help me concentrate.


I just trial-and-error'd it. I tried even darker background color but that ended up getting my eyes tired. I tried less bright text etc. colors but that just made me distracted easily, avoiding the "eye-lock."

What I got now is pretty much perfect for my needs.

The most helpful tool with this was definitely! One can easily make their own colorschemes with it. However, the biggest problem with it is that, for example, syntax highlighting will always look different between applications. So it will require a lot of manual tweaking in the end, which is what I spent most of my time doing.

Other apps

Since I really like this colorscheme, I made a Kate style for it too:

AksDark Colorscheme for Kate text editor


And Konsole

AksDark Colorscheme for Konsole terminal emulator


There's colors for other apps like VSCode and Jetbrains IDE's in my repository:

However they may not be as up-to-date.

Outline plasma theme!

Last but not least, if you use the default Breeze window decoration with this colorscheme, this Plasma theme is also default Breeze, but with similar outlines. Having outlines on my Plasma theme helps me a lot (I dont get lost in sea of windows), so maybe someone else will find it useful too: AksDarkPlasma

Also remember that you can download all these themes and styles from the "Get more new stuff" menus in KDE Plasma!

That's all, I hope you like the colorscheme and find it useful as well, if your eyes and/or brain are just as weird as mine!

Friday, 26 May 2023

This week probably the biggest news is that in Plasma 6, the Night Color feature will work as expected on Wayland when you’re using an NVIDIA GPU! Because NVIDIA’s drivers don’t support the necessary Gamma LUT features to make it work in an optimal way as on Intel and AMD GPUs, we had to use a slightly different approach that isn’t quite as efficient. But hopefully that’s better than not having the feature work at all, and if you care about the increased resource usage, you’re welcome to not use the feature. This work was done by Xaver Hugl. Thanks, Xaver!

User Interface Improvements

KRunner search results for very short 2 and 3 character strings should be a bit better and more relevant now (Alexander Lohnau, Plasma 5.27.6. Link)

System Settings’ sidebar now has better keyboard navigation, and lets you use the arrow keys instead of the tab keys if you’d prefer or if you’re using a device with a d-pad and no obvious tab key (Ivan Tkachenko, Plasma 5.27.6. Link)

In the Plasma Wayland session, when you activate a KWin effect with a touchpad gesture in a certain direction, the opposite gesture now deactivates it (Aleix Pol Gonzalez, Plasma 6.0. Link)

System Settings’ File Search page has gotten a visual overhaul and now looks nicer (me: Nate Graham and Helden Hoierman, Plasma 6.0. Link):

The tooltips showing window previews in the Task Manager no longer time out on their own while the cursor remains hovering over a Task, just like the behavior of other tooltips elsewhere (me: Nate Graham, Plasma 6. Link)

Other Significant Bugfixes

(This is a curated list of e.g. HI and VHI priority bugs, Wayland showstoppers, major regressions, etc.)

Spectacle’s sidebar is no longer too narrow to accommodate long button text in some languages (Yoann Laissus, Spectacle 23.04.2. Link)

When using a horizontal bottom panel, Task Manager tooltip window thumbnails no longer sometimes appear in the wrong location (Bharadwaj Raju, Plasma 5.27.6. Link)

In the Plasma X11 session, dragging files to Task Manager Tasks in such a manner that you end up right-clicking while still dragging no longer sometimes causes drag-and-drop to just break (Fushan Wen, Plasma 5.27.6. Link)

In the Plasma Wayland session, some blurred and transparent Breeze-themes context menus no longer sometimes exhibit weird visual glitches (Mouse Zhang, Plasma 5.27.6. Link)

When KDE apps are run in dark mode on non-Plasma desktops where the plasma-integration package isn’t installed, Breeze icons will now correctly use light colors instead of staying dark and becoming unreadable (Jan Grulich, Frameworks 5.107. Link)

When your system is set up with an encrypted home directory, file and folder thumbnails will now be stored in their typical cache location in your homedir, preventing them from having to be re-generated every single time (Payton Quinn, Frameworks 5.107. Link)

Other bug-related information of interest:

Automation & Systematization

Now that tons and tons of KDE projects use JSON files to describe their metadata, there’s now a JSON file validator CI job that will prevent silly errors (Alexander Lohnau, right now. Link)

…And everything else

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

How You Can Help

If you’re a user, upgrade to Plasma 5.27! If your distro doesn’t offer it and won’t anytime soon, consider switching to a different one that ships software closer to its developer’s schedules.

If you’re a developer, please please please start living on Plasma 6 and fixing the bugs that you encounter. It’s usable for daily driving (I’m doing so) but still very much pre-alpha and in need of work to get it into a releaseable state by the end of the year.

Otherwise, visit 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!

And finally, KDE can’t work without financial support, so consider making a donation today! This stuff ain’t cheap and KDE e.V. has ambitious hiring goals. We can’t meet them without your generous donations!

Hello world,

This is my first blog post for Google Summer of Code 2023.

During the Google Summer of Code timeline, I will be working on implementing the admin APIs in Tokodon. These APIs will provide mastodon moderators with a suite of moderation tools within Tokodon. I would like to thank Carl Schwan ❤ for mentoring me during Season of KDE and once again for this project. I am really grateful to work under his guidance. By implementing this new feature, Mastodon moderators will be able to easily adopt Tokodon and utilize moderation tools within the application.

I haven’t come across any Mastodon client that implements the admin APIs so by implementing this feature in Tokodon, we can ensure wider adoption. I’ve already started working on implementing the feature and have been maintaining regular communication with my mentor.

I will be writing regular blog posts on my website. You can follow my progress here

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

Twitter Is a Far-Right Social Network - The Atlantic

Tags: tech, social-media, politics, twitter

Indeed… things have been changing very rapidly.

Patterns in register map design

Tags: tech, hardware, programming, cpu

Very thorough overview on how registers are used when you get closer to the hardware. Very good resource to use as reference.

Memory Allocation

Tags: tech, memory

Everything you always wanted to know but didn’t dare asking about memory allocators. OK, maybe not “everything everything” but this gives a very good overview on how they work and the trade-offs they have to make.

How Much Memory Do You Need to Run 1 Million Concurrent Tasks? | Piotr Kołaczkowski

Tags: tech, multithreading, performance, memory

Doesn’t give the whole picture (memory isn’t the only important parameter) but interesting results nonetheless. A few surprises in there, Java and C# do much better than one might assume for instance.

Stop Saying C/C++ | Bryce Vandegrift’s Website

Tags: tech, c++, c, programming

Indeed, the times when we could pretend one was a superset of the other are long gone.

``Rewrite it in Rust” Considered Harmful?

Tags: tech, safety, security, memory, c, c++, rust

Indeed, the story of integrating C and C++ with Rust isn’t a simple one right now. It might introduce larger attack surfaces. Some improvements are proposed in this paper.

Writing Python like it’s Rust | Kobzol’s blog

Tags: tech, programming, python, rust

Nice list of patterns leveraging the Python type hints for richer and safer interfaces.

GitHub - Xfennec/progress: Linux tool to show progress for cp, mv, dd, … (formerly known as cv)

Tags: tech, linux, tools, command-line

Looks like a smart and interesting little tool. I definitely needed something like it more than once.

5 Things Founders, Investors and Recruiters Should Know about the CTO role | by Marc van Neerven | CTO-as-a-Service | Medium

Tags: tech, business, cto, management

Interesting insights about the minutiae of the CTO role.

Writing summaries is more important than reading more books — Andreas Fragner

Tags: book, note-taking

Definitely something I learned way to late. I wish I had started with such summaries and book notes earlier.

Origin Stories: Plantations, Computers, and Industrial Control

Tags: tech, economics, history, capitalism, automation

Very interesting explorations of the early days of automation and computation. This shows another face of Babbage which is often ignored. It is a cruel demonstration on how his machine were first and foremost encroached on division of labor as inspired by plantations.

The Fastest Maze-Solving Competition On Earth - YouTube

Tags: tech, robots, competition, funny, mathematics

The fascinating world of micromice competitions. There’s a lot of thinking leading to those really smart designs.

Bye for now!