I know it has been a while since our last update, but I can assure you that we have not been twiddling our thumbs! For the holiday season, we are happy to bring a new release of Kalendar, which we have worked hard on to bring new features, better performance, and a bunch of bugfixes that should make Kalendar better than ever on those of you with shiny new machines. This release should land over the newt couple of days.
Note: Kalendar is still under heavy development. You’re free to poke around and try it out, but it is not yet final software! If you want to contribute to its development, join us in Kalendar’s Matrix room.
Our 0.4.0 release
We are excited to have you try Kalendar, and we want your feedback — especially bug reports! These will help us improve Kalendar as much as possible before releasing 1.0.
It is now in the hands of distribution packagers to add Kalendar to their repositories. The most up-to-date and unstable version of Kalendar will continue to come from our git repository, and some users have gone ahead and started packaging builds of Kalendar coming straight from our master branch.
- OpenSuse has a package on OBS (KDE:Unstable:Extra)
- Fedora has two COPR packages (1) (2)
- Arch has an AUR package
- Neon has Kalendar packaged in Unstable
We hope you enjoy using Kalendar as much as we enjoy making it, and look forward to what you have to tell us about it!
Now, here’s what’s new this week:
Three-day and single-day views
Add single-day and three-day views to Kalendar (Claudio Cambra)
0.4.0 brings two new views: the three-day and single-day views. These are based on the week view, presenting events and tasks according to their times. These new views should make it much easier to check your calendars when the window is width-constrained, or when you have lots of overlapping events.
The three-day view therefore replaces the week view on mobile. The week view was borderline unusable on mobile, and the three-day view makes for a much more usable calendar view.
The day view is also accessible as an overlay across all of Kalendar’s views, on both desktop and mobile. Clicking on the day header, in the month, week, and three-day views brings up the day view for that specific day.
For those of you with very busy schedules, this should make Kalendar a lot more legible.
Drag-drop calendar changing
Add drag/drop for tasks to change collections (Claudio Cambra)
Also new in 0.4.0 is a new thing you can drag and drop: you can drag tasks from the tasks view onto a calendar in the sidebar and quickly change a task’s calendar. This change was inspired by one of elementaryOS’ new features, so credit where credit is due — it’s a great idea!
We are working to extend this new feature to other views for the next release.
Making Kalendar faster than ever
Fixed massive freezing caused by changing date on week view (Claudio Cambra)
Background load for month view no longer async, accelerating startup significantly (Claudio Cambra)
Also load incidence delegates in month view async (Claudio Cambra)
Lazy load date change drawer (Claudio Cambra)
Change root MultiDayIncidenceDelegate component from Rectangle to Item, as Rectangle is unnecessary (Claudio Cambra)
This past week I finally received my Pinephone Pro, and was immediately disappointed to find that Kalendar was still somewhat sluggish on the device. Over the new year, we will be making sure to continue refining and optimising Kalendar to make it as smooth as we can on the device.
We have already began this work. Beginning with the week view, changing the view’s date to far-flung dates should no longer cause Kalendar to freeze while it pointlessly processes new dates. This should make navigation significantly faster.
We have also tweaked what components are loaded synchronously and which ones are loaded asynchronously. This tuning should help Kalendar more quickly load what you need, while loading things that you may not need in the background. Overall, this should make the app feel smoother and faster.
Lastly, we have made the component for incidence items in the month view slightly lighter, which should slightly improve loading times and general smoothness.
Keep current time position when changing week (Slawek Kaplonski)
Added escape handling to remaining dialog windows (Claudio Cambra)
Tasks view now always shows date string according to system locale (Claudio Cambra)
Kalendar now gets raised to front when new instance is attempted to be opened (Claudio Cambra)
A nice new change in the week, three-day and day views is that your scroll position is conserved across the different weeks/three-day/day intervals. This should save you from having to always scroll to the times that you are interested in viewing in these views. Thanks, Slawek!
We have also ensured that now every dialog window in Kalendar can be closed with the escape key. Those of you on very up-to-date distributions (e.g. Neon user, Arch, openSUSE Tumbleweed, etc.) will have likely already experienced this change thanks to changes upstream, but changes within Kalendar should ensure that the escape key closes dialog windows regardless of the system’s Kirigami version.
The tasks view now also shows the date always according to your system locale, which should save you from being confused by the formatting of the dates shown here.
Lastly, trying to start a new instance of Kalendar when the application is already open will bring the Kalendar window to the front of your desktop!
Big improvements to the alarm notifier client
Fold NotificationHandler into KalendarAlarmClient (Volker Krause)
Create notifications from full incidence objects (Volker Krause)
Update active alarms if we get an earlier one for the same event (Volker Krause)
Create KNotification instances on demand (Volker Krause)
Unify handling of active and suspended notifications (Volker Krause)
Remove the alarm daemon systray entry (Volker Krause)
Store active alarm information whenever they change (Volker Krause)
Simplify incidence access in dumpAlarm() (Volker Krause)
Remove unused notification context (Volker Krause)
Remove unused D-Bus interface of the alarm daemon (Volker Krause)
Use Alarm::parentUid instead of the ETM specific custom property hack (Volker Krause)
Align the alarm timer to the next minute (Volker Krause)
Thanks to Volker, Kalendar’s notifier daemon has acquired some big technical improvements. Eventually, this daemon will be used by both Kalendar and KOrganizer, so these changes will eventually benefit KOrganizer users too!
The first improvement is that the daemon is much smaller and more efficient. Volker has reduced the amount of code that the notifier daemon uses while retaining the same functionality, making the daemon smaller and easier to maintain.
Additionally, the alarm client is now more reliable. For example, suspended notifications are now triggered immediately after a restart but at the correct time; active notifications that haven’t been dismissed are now also restored.
The notification daemon now also checks for alarms according to the stored alarm times, rather than polling every minute for active alarms. This is significantly more efficient (which should help save your battery!) and also more reliable across restarts.
We have also removed the system tray entry. We found that there were enough usecases to justify its retention. For one, the system tray is inaccessible on Plasma Mobile and on GNOME, making the tray icon unusable. Even on Plasma, we found that there were many reasons to use it; since we use KNotifications, we can simply use Plasma’s Do Not Disturb mode to hide notifications, and we found the use-case of turning off the daemon rare enough that it didn’t make much sense to keep around.
Lastly, the alarm daemon’s notifications now have full access to incidence data. This should allow us to add more contextual actions, extra relevant information, and more in the future.
Massive thanks to Volker for these improvements! 🙂
Other bug-fixes and small changes
- Fix mangling of dates for datepicker when converting from C++ to QML (Claudio Cambra)
- Enable hover for listitems in collection picker (Claudio Cambra)
- Fixed current time indicator in three-day and day view (Claudio Cambra)
- Datepicker now has a separator, consistent with Plasma tabbars, and also is better adapted to being used elsewhere as an independent component (Claudio Cambra)
- Disable drag and drop when processing prior drops, preventing calendar breakage (Claudio Cambra)
- Cancelling recurring incidence moves now reenables drag (Claudio Cambra)
- Strip carriage returns from new tag names and add max number of characters, fixing bug (Claudio Cambra)
- Remove unneeded dateutils import in datecombo and added default display value (Claudio Cambra)
- Fixed bug caused by filter header where upon opening the day view layer and then closing it, a chunk of the current view would be eaten by the toolbar (Claudio Cambra)
- Fixed ‘Today’ button in all hourly views (Claudio Cambra)
- Fix incidences disappearing off of certain weeks/months after scrolling (Claudio Cambra)
Is there anything you’d like to see added to Kalendar? Get in touch! I’m @clau-cambra:kde.org on Matrix.
If you want to support Kalendar’s development, I strongly encourage you to donate to the KDE community. These donations help us keep our infrastructure running, including our GitLab instance, our websites, and more. You can donate at https://kde.org/community/donations/.
If you are already a KDE supporter and want to support Kalendar development directly, you can donate to:
- Claudio Cambra (Kalendar maintainer and… oh, that’s me! 👋) (Liberapay)