Posted
about 2 years
ago
by
Srirupa's Blog
Perspective Ellipse Assistant in Krita
Hello, this is my second blogpost for SoK 2022.
In my previous blogpost, I wrote that I’ll be working on extending the Ellipse Assistant Tool to add support for Perspective Ellipse in Krita. However, last week
... [More]
my mentors and I decided that as of now, it makes more sense to add a new Assistant Tool for Perspective Ellipse instead of extending the Ellipse Assistant Tool.
My Progress so far
Adding a new Assistant Tool
Here’s the Tools Option Docker after the new Perspective Ellipse Assistant is selected!
Creating an adjustable Four Cornered Convex Quadrilateral
Anyone familiar with Assistant Tools in Krita would have noticed that the current Perspective Assistant Tool draws an adjustable convex quadrilateral with grid lines. I decided to take advantage of that and reused the existing code, got rid off the grid lines, and voila! I’ve a four cornered mesh for my Perspective Ellipse Assistant.
For people who are familiar with Krita’s codebase:
I added PerspectiveEllipseAssistant.h and PerspectiveEllipseAssistant.cc to the ktita/plugins/assistants/Assistants directory which currently contanis files for all the other assistant tools in the form XAssistant.h/cc, where X is the Assistant name.
Then, I registered my Assistant by including the following piece of code in the assistant_tool.cc file.
KisPaintingAssistantFactoryRegistry::instance()->add(new PerspectiveEllipseAssistantFactory);
And there, my four cornered mesh works exactly how it’s expected too! ;)
Next Steps
I would spend the next few weeks creating an inscribed ellipse inside my four cornered mesh. This, however, is going to take some time as I am not yet fully comfortable with the mathematics involved.
For this part, I want to transform a circle to an ellipse using a transformation matrix, given that the equation for the circle and the transformation matrix is given. I’m looking for a way to obtain the coefficients of the equation for the corresponding transformed ellipse.
Anyone having any leads on this can feel free to mail me here. Thanks in advance! [Less]
|
Posted
about 2 years
ago
by
KDE Community
Sunday, 13 February 2022
KDE today announces the release of KDE Frameworks 5.91.0.
KDE Frameworks are 83 addon libraries to Qt which provide a wide variety of commonly needed functionality in mature, peer reviewed and well tested libraries with
... [More]
friendly licensing terms. For an introduction see the KDE Frameworks release announcement.
This release is part of a series of planned monthly releases making improvements available to developers in a quick and predictable manner.
New in this version
Baloo
Static libs linked into shared libs need -fPIC
Breeze Icons
start-here-kde: Make icon adaptable to dark themes (bug 416302)
Fix icon colors to be consistent across all sizes
Check executables exist in PATH before passing them to QProcess
Declare namespace for kongress icon
Fix naming of brightness icons
Extra CMake Modules
kde_package_app_templates: drop atime,ctime, consistently set mtime
kde_package_app_templates: use numeric owner/group with tar
Set the right @since version for ECMQmlModule
Only enable -bsymbolic-functions when Qt is built in a compatible way
Introduce ECMFindQmlModule.cmake
Add ecm_set_deprecation_versions cmake function
Framework Integration
Install plugin in kf
Fix wrong porting of KNSCore::Engine::configSearchLocations (bug 448237)
KActivitiesStats
reduce boost
KActivities
Use uppercase includes
Unharcode Qt major version
KAuth
Move plugins in kf
Correct the dependencies specified for KAuth
Bump minimum required version of Polkit-Qt-1 to 0.112.0
Remove Polkit-Qt build support, Polkit-Qt-1 replaced it a long time ago
Adjust CMake code to find PolkitQt{5,6}-1
KCalendarCore
Revert “Honour STATUS:CANCELLED”
Serialize container sizes as 32bit integers
Compare timeSpec() for the due date/time, too
Fix generate pkg file
T12270: create an inheritance hierarchy of private types
KCMUtils
Add KPluginWidget::load()
Remove assertion for KPluginMetaData param in KCModuleLoader::loadModule
KCModuleProxy: Use std::optional to check if we have a KPluginMetaData object
KCModuleProxy: Replace space with underscore when registering DBus service
Switch header style to ToolBar for system settings
kpluginmodel: Also copy plugin Id from KService to json object
KCMUtils can be built on Windows too
KConfig
Introduce StandardShortcutWatcher to watch for runtime changes (bug 426656)
Extract isNonDeletedKey() helper function
Look for entries with common group prefix in entryMap’s subrange
KConfigPrivate::copyGroup: remove redundant entryMap lookup
groupList: convert each group name from UTF-8 once
Exclude deleted groups from groupList() (bug 384039)
KConfigWidgets
KLanguageButton: Don’t insert duplicates
KLanguageButton: Adapt to new .desktop filenames
Change shortcuts of standard actions if standard shortcut changes (bug 426656)
Use BUILD* deprecation wrapper for virtual method (bug 448680)
Simplify KHamburgerMenu menu items
Only require KAuth on Linux/FreeBSD
Don’t use KAuth on Windows
KCoreAddons
Search in kf
kcoreaddons_target_static_plugins: Use private linking for plugin registration file
klibexec helper to resolve libexec path relative
KPluginMetaDataTest: Fix check for service type querying error essage
desktopfileparser: Avoid a run-time string concatenation
KF5CoreAddonsConfig: check desktoptojson version when cross-compiling
desktoptojson: Further improvements to cross-compilation mode
Fix kcoreaddons_desktop_to_json when cross-compiling
Add KPluginMetaData::fromJsonFile()
KPluginMetadata: store all paths as absolute ones
KPluginMetaData::metaDataFileName: Fix broken check if we have the metaDataFileName value set
kcoreaddons_add_plugin: Throw error when we have unparsed args
Improve formatRelativeDateTime
Improve error message for KPluginFactory::loadFactory
Add missing copying of error text in KPluginFactory::instantiatePlugin
KDAV
Fix header installation path to include module prefix
Use uppercase “KDAV” name as qmake identifier, to be match KF standards
Fix pri file to also note KCoreAddons dependency
Fix non-existing include path set in pri file
KDeclarative
proper position for top separator
[KeySequenceItem] Make keySequence «non-null», «non-undefined» and «non-""»
[KeySequenceItem] Fix code style and bump QML imports
Make QML code depend less on the kcm context property
Fix QT_NO_OPENGL build after 66c5bb0efa
kquickcontrols: Improve accessibility in ColorButton.qml (bug 449282)
GridDelegate: Focus on the delegate after a menu is closed
GridDelegate: Open menu when Menu key is pressed
Exclude epoxy in qt6 => exclude plotter class
Deprecate KDeclarative::ConfigPropertyMap in favor of KConfigPropertyMap
It’s not necessary now as “the Frameworks that actually require
Don’t use KGlobalAccel on Windows
KDED
install plugins in kf
Set order of kded launching with systemd boot
kded supports building on Windows, make sure we have our dependencies available
KDELibs 4 Support
Link against KF5::Auth
Also add the KAuth dependency in the CI metadata
KDESU
Check executables exist in PATH before passing them to QProcess
Port from KToolInvocation::kdeinitExecWait (deprecated) to QProcess
kdesud: close all file descriptors > 3 on exec()
KDocTools
Check executables exist in PATH before passing them to QProcess
Don’t hardcode “kf5” for the catalog search path
KFileMetaData
make TypInfo comparison const
Install plugins in kf
deprecate image extraction via embeddedimagedata
KGlobalAccel
Fix action registration and unregistration order (bug 448369)
Check executables exist in PATH before passing them to QProcess
KDE GUI Addons
Add Google Maps Geo URI handler
Add Qwant Maps to CMakeLists
Add Qwant Maps Geo URI handler
Add a fallback handler for the geo: URI scheme
Install plugins in kf
KHolidays
Update Taiwanese holidays
UK holiday change 2022 (Spring bank holiday) (bug 448305)
KHTML
fix khtml crash in wayland session
[ci] Fix phonon dep
KI18n
Default initialize QVariants as such, not as a QString
install plugins in kf
Fix warning info
KuitSetup: fix setting classification of tags
KIconThemes
Check executables exist in PATH before passing them to QProcess
Don’t create a new KColorScheme for each KIconColors
KIdleTime
Change plugin install dir on macOS
Install plugins in kf
KImageFormats
Check executables exist in PATH before passing them to QProcess
KIO
[KFilePlacesView] Use helpEvent for teardown action tooltip
KPropertiesDialog: only load plugins suitable for mime type of file
Use new KLibexec to locate kioslave5
Consider slow files as remote files in previewjob (bug 372849)
[KFilePlacesView] Elide section header if needed
exec line is not necessary now
[desktopexecparser] Consider associations from mimeapps.list to determine whether an app supports a scheme (bug 439132)
[kopenwithdialog] Fix filtering (bug 449330)
[KFilePlacesView] Adjust entire delegate height during (dis)appear animation
kdirmodel: Allow using full path for Icon in .desktop file (bug 448596)
Deprecate class KNTLM & methods, no users known outside of kio-http
[previewjob] Don’t recreate same regex
KDirOperator: on first show, don’t display files in dir-only mode
Group configure_file and kcoreaddons_add_plugin
Install plugins in kf
Officially deprecate kcoredirlister methods that use QRegExp
Utilize KPluginMetaData::value overloads
Install kio_version.h in the KIO include prefix
Add option of using DBus activation for ApplicationLauncherJob
[KFilePlacesView] Don’t highlight delegate when hovering header area
[KFilePlacesView] Call teardownFunction from inline eject button, too
[KFilePlacesView] Don’t hide hidden entries when clicking one
[KFilePlacesView] Add inline eject button
[KFilePlacesModel] Introduce TeardownAllowedRole
[KFilePlacesView] Wire up QAbstractItemView::iconSize
[KFilePlacesView] Add getter and change signal for showAll
[KFilePlacesView] Allow to provide a teardown function
[KFilePlacesView] Add middle click support and signals for item activation
[KFilePlacesView] Refactor context menu
file_unix: Do not try to preserve ownership when permission is -1 (bug 447779)
KPropertiesDialog: use the KFileItem when checkig if the url is local (bug 444624)
Deprecate the “connected slave” feature
Kirigami
OverlaySheet: Accommodate the left and right padding
OverlaySheet: Initialise the view with sound values
FormLayout: Replace heuristic approach with an instanceof check
Fix install plugin in kf
libkirigami: Port to target_sources and other target-specific properties
Disable BUILD_EXAMPLES/TESTING when BUILD_SHARED_LIBS is off
Add Chip Component
Add android related files to template
Add BasicListItem.iconSelected property and use it in CheckableListItem
Take in count difference in bottom and top padding in search icon
API dox: document CamelCase include headers
KF5Kirigami2: install headers to path prefix matching C++ namespace Kirigami
Introduce “InputMethod” singleton and supporting code to detect virtual keyboard
Properly document ShadowedRectangle and co
Deprecate TabBar toolbar style
Dialog: Smoothen enter/exit animation, and ensure themes don’t add footer background
Improve search icon inside SearchField
Give the NavigationTabBar component an ocean style
Add a search icon to the SearchField
template: remove title from AboutPage
examples/PageRouter: don’t introduce applicationWindow id
Make enter/key presses “click” BasicListItems
Improve default template
Dialog: Use performant shadow
Use version-less/non-deprecated install location variables
Fix find_dependency
change color when card is highlighted
Kirigami supports Windows, ensure we have our dependencies there too
KItemModels
Rework removeParentMappings() to not rely on stable QHash iterators
Don’t cache end iterator when modifying the container
KJobWidgets
Check executables exist in PATH before passing them to QProcess
KJS
Revert “Install kjs_version.h in /usr/include/KF5/KJS/”
KNewStuff
Update code snippet for NewStuff.Action
Register KNSCore::Entry under name “Entry” as a Q_GADGET to QML
Consume string views before they become invalid
Focus search field by default unless doing so would show the virtual keyboard (bug 444727)
Deprecate KNS3::Button class in favor of KNSWidgets::Button
Introduce KNSWidgets::Button class for better compatibility with KF6 changes
KNSWidgets::Action add compatibility for unified entry class in KF6
Unify how kpackageType is determined for the addons
Button.qml Fix binding for engine property
Button.qml: Use QML loaders for dialog component
Fix broken usage example for NewStuff.Action
Remove QProcess::ExitStatus parameter from signal handler parameter list if we don’t need it
KNotification
Remove Phonon from Linux CI
Add KStatusNotifierItem::hideAssociatedWidget()
KStatusNotifierItem: use actions instead of Yes/No in Quit confirm dialog
KPackage Framework
Simplify code using KPluginMetaData::fromJsonFile
Explicitly call KPluginMetaData::fromJsonFile when constructing metadata objects
Fix unintended result in readKPackageTypes (bug 448625)
Use ecm_mark_nongui_executable() for mock:// handler
PackageJob: Use QStandardPaths::findExecutable() to find resolvers
QueryTest: validate the install() result
Build static libs which are linked into shared libs as PIC
KQuickCharts
ModelSource: Don’t use QPointer for storing the model
ModelSource: Cache minimum/maximum properties of the model
KRunner
search plugins in kf
Put aliased classes in “KRunner”-namespace
Fix flickering in Application Launcher for every character typed (bug 423161)
Port to KDEDeprecationSettings cmake function
KF5RunnerConfig.cmake.in: Explicitly require QtGui and KCoreAddons, exclude Plasma on deprecation free builds
Add compatibility type definitions for classes without ‘Plasma’ namespace
Fixups for building without including KService/KIO/Plasma-Frameworks (bug 447908)
Silence deprecation warning for KPluginInfo/KServiceTypeTrader in compatibility blocks
KService
Install kservice_version.h in KService include prefix
Make parseLayoutNode function const
Make “missing merge tag” error actionable
KTextEditor
Abort completion on view scroll on wayland
Avoid flicker on refresh
install plugin in kf
Use QDir::temp().filepath() instead of manually creating temp file paths
KateModOnHdPrompt::slotDiff: Create diff file in temp folder (bug 448257)
avoid flicker for border on size changes (bug 435361)
Fix undo manager leaks more properly
When using tabs, use tabs to auto indent (bug 367966 375529)
Fix @since for aboutToSave
Fix leaks in undo manager
Don’t scroll on select all (bug 435855)
Fix auto-reloading files in git repositories
Handle single statement condition blocks better (bug 385472)
Fix cstyle for cases where there is a func in param
Reload doc on OnDiskCreated
Allow disabling focus frame (bug 418657)
Fix selection scrolling from line border works only downwards (bug 419076)
Fix camel cursor when last word is of one letter only (bug 448692)
only execute diff in path
only start programs in user’s path
completion: Use scored fuzzy matching
Do proper fuzzy matching in completion (bug 401509)
Fix undo history wrongfully restored in some cases
Revert “Do not cancel mouse selection when using the keyboard” (bug 446189)
don’t let auto-detection overwrite user settings
Introduce auto indent detection
Restore undo history when document is same (bug 297883)
Fix drag pixmap highlight sometimes does not match original text (bug 438567)
Find: Update working range when replacing (bug 447972)
set QClipboard::Selection for select all (bug 428099)
Fix rash when switching between tabs while search is running (bug 445683)
improve wording for modified on disk warnings (bug 372638)
KTextEditor has a hard dependency on KAuth - ensure it is available
Introduce Document::aboutToSave signal
Fix creative QString constructions from numerical values
Use version-less install target default arguments
Use non-deprecated style option initialization
Combine keys and modifiers using the | operator
Disambiguate QStringBuilder to QByteArray conversion for hashing
Make comparison operator const
Don’t pass a QString pointer to QString::compare
Automatically determine iterator type
Fix QChar conversion ambiguities
KWallet Framework
Fix install headers
KWayland
Ensure when unmapped is emitted, ::windows() will not contain unmapped window
Don’t use hard-coded versions with targets and variables
Install pkg-config file
Deprecate PlasmaWindowModel::requestVirtualDesktop()
kwayland server has been moved to plasma kwayland-server since 5.73
src/client: wrap deprecated methods in deprecation macros
KWindowSystem
Check executables exist in PATH before passing them to QProcess
install plugins in kf
Avoid XKeycodeToKeysym in KKeyServer::initializeMods (bug 426684)
Remove placeholder wayland platform plugin
[kwindowinfo] Add support for reading _GTK_APPLICATION_ID
Add KWindowSystem::updateStartupId(QWindow *window)
KXMLGUI
Check executables exist in PATH before passing them to QProcess
Use uppercase includes
Allow KToolBar to be in other places than MainWindow’s ToolBarArea
Fix i18n comment not being properly extracted
ModemManagerQt
Explicitly register QDBusObjectPath type
NetworkManagerQt
Don’t write to QByteArray out of bounds
Make de/serializing of the parity option symmetric
Add support for WPA3-Enterprise 192-bit mode
Oxygen Icons
Check executables exist in PATH before passing them to QProcess
Plasma Framework
Check executables exist in PATH before passing them to QProcess
ExpandableListItem: Deprecate custom isEnabled property and alias it to enabled (bug 449539)
PC3 ButtonContent: Move property defaultIconSize to the top-level component
Identify containments using X-Plasma-ContainmentType instead of service types
Native interface always available
ModelContextMenu: drop Accessible.role property
Do not use Control for PC3::IconLabel (bug 445899)
Corona::containmentForScreen: Ignore activities when an empty string is used (bug 448590)
Change where add_feature_info(EGL) is called
Fix detection of GLX support in QtGui
PC3 ScrollView: set step sizes based on devicePixelRatio
ConfigModel: Expose Roles enum to QML
Adapt build system for building against qt6 + fix some compile errors
Don’t fallback to EGL::EGL, just don’t link to EGL when it’s not found
Always sync the setPanelBehavior to wayland (bug 448373)
PlasmaQuick::Dialog - Fix flickering issues when resizing (specially in krunner) (bug 427672)
Always sync the setPanelBehavior to wayland (bug 426969)
PC3 ScrollView: Avoid importing QtQuick.Controls.2
Doc: Improve descriptions of Plasma::DataSource methods
Don’t crash when a screen gets disabled and enabled again (bug 447752)
PC3 RadioIndicator: use radiobutton.svg for breeze-light and breeze-dark
KWayland does not make sense outside of Linux/FreeBSD, so don’t try to depend on it there
Add Yakuake panel icon (bug 427485)
Deprecated PlasmaExtras.ScrollArea component
PC3 SwipeView: use longDuration for highlight animation
Prison
Prison supports Windows
QQC2StyleBridge
Avoid needlessly reading font settings
StyleItem: emit signal on style changes
install plugins in kf
take icon width into account
adapt width of combobox to its content (bug 403153)
Theme placeholderTextColor
Make menu items taller in Tablet Mode
Fix find_package
Remove QStyle::State_Horizontal when it’s not horizontal
Adapt build system for building against qt6
Slider: handle scrolling (bug 417211)
Use upstream scroll implementations for Combobox and SpinBox
Use metrics from Breeze for menu items (bug 447289)
Solid
Convert some connect to new signature style
[UDisks2 Backend] Don’t do media check for loop devices
[upower] Properly round up battery’s capacity (bug 448372)
[UPower Backend] Check for Bluez for any unknown battery type
[UDisks2] Ignore file systems mounted with x-gdu.hide option
Sonnet
Allow to install plugin in kf5 or kf6 directory
Syntax Highlighting
Python: fix line continuation starting with a string
CSS: add some values and functions
CSS: fix nested function call (bug 444506)
Zsh: fix line-break and pattern in double bracket condition
Bash: fix line-break in double bracket condition (bug 448126)
Bash: fix parameter expansion replacement with extended glob
[R] Add support for new pipe from R 4.1
Update Stan highlighting
Security information
The released code has been GPG-signed using the following key:
pub rsa2048/58D0EE648A48B3BB 2016-09-05 David Faure [email protected]
Primary key fingerprint: 53E6 B47B 45CE A3E0 D5B7 4577 58D0 EE64 8A48 B3BB [Less]
|
Posted
about 2 years
ago
by
Volker Krause
Here’s another small update on the progress around KDE Frameworks 6, a lot has
happened again since last month’s post.
Only a few modules aren’t building yet, and the vast majority of building modules
now also has passing unit tests.
Building against
... [More]
Qt6
Only three frameworks don’t build out of the box yet.
KTextEditor, due to QTextStream::setCodec gone and needing a manual replacement, as
well as due to issues with the first attempt of porting from QDesktopWidget to QScreen
for completion popup placement.
Plasma Frameworks, due to changes in the low-level X11 and OpenGL APIs of Qt and a
few remaining uses of deprecated KPluginInfo API.
KQuickCharts, due to needing to be ported to QtShaderTools.
Note that this is only about compilation, this doesn’t automatically mean things are
also expected to run yet, especially for QML code that isn’t the case yet.
Task T15127 tracks the progress of this.
Unit tests
With things building the next step is to make all unit tests pass (or at least behave identical to
a Qt5 build). Numerous fixes have gone in over the past weeks for this, and we are down to just four
modules that have additional failures compared to KF5, and two more with at this point still expected
QML test failures (due to QML code not being portable prior to branching).
There are some recurring patterns we might also hit again in Plasma or application code:
QHash is no longer a node-based container, which means its iterators can more easily
become invalid.
QVariant::isNull is now just a “shallow” check, ie. it no longer checks whether the payload is a null
value of the corresponding type, but only checks whether there is a payload at all.
Qt container sizes are no longer int but qsizetype, which is a 64 bit value on 64 bit systems. While
mostly a compile-time problem, this can also have implications at runtime, e.g. when serializing container
sizes into a QDataStream.
Task T15232 tracks the progress on this.
Continuous integration
Linux/Qt6 continuous integration has meanwhile also been set up for some Plasma modules. Plasma modules include
important parts of the platform integration, such as the Breeze style or the Qt platform plugin that brings
you KIO file dialogs, which are relevant to actually use a KF6 application eventually.
Plasma 6 Sprint
For the bigger picture Qt6/KF6 porting plans for Plasma there’s a sprint being planned,
see this mailing list thread.
For anyone working on KF6 this is probably worth attending, as there’s plenty of overlap
and inter-dependencies in those efforts.
Contribute
Obviously all of the above is the result of a big team effort, and you can be part of that!
The KF6 workboard is the central place for coordinating the work related
to Frameworks 6. There’s also a weekly one hour call on Tuesday 17:00 CET. It’s also worth joining
the kde-frameworks-devel mailing list and the #kde-devel channel on Matrix. [Less]
|
Posted
about 2 years
ago
by
Nate Graham
Plasma 5.24 was released a few days ago, and so far it’s been the smoothest release in memory. There have been a few regressions, but fewer than other recent releases. I’m sure all of you who have experienced new issues will speak up in the comments
... [More]
, of course. But overall it has gone quite well!
15-Minute Bugs Resolved
Current number of bugs: 83, same as last week. Current list of bugs
In the Plasma Wayland session, panels no longer sometimes randomly freeze especially right after login (Vlad Zahorodnii, as soon as your distro updates their KDE Qt patch collection to include this patch)
Closing your laptop lid when an external monitor plugged in no longer causes the computer to inappropriately go to sleep when the setting to disable this has been used (Somebody awesome, Plasma 5.24)
New Features
Konsole now supports Sixel, allowing it to display .sixel images right inside the window (Matan Ziv-Av, Konsole 22.04)
Konsole now has a new plugin that stores saved commands and pieces of text for you (Tao Guo, Konsole 22.04)
Bugfixes & Performance Improvements
When using Kate’s feature to stash and restore unsaved changes to open files when closing the app, those changes are now actually saved as expected rather than being silently destroyed if you happen to quit the app using the “Quit” action or Ctrl+Q keyboard shortcut instead of clicking on the window’s close button (Waqar Ahmed, Kate 21.12.3)
Canceling an in-progress archive job now automatically deletes the temporary file that was being created (Méven Car, Ark 22.04)
Konsole’s text re-flow feature now works for lines of text that have no whitespace or newline characters at all (Luis Javier Merino Morán, Konsole 22.04)
System Settings no longer crashes when the active color scheme doesn’t exist on disk for some reason; now it falls back to Breeze Light (the default color scheme) and doesn’t crash (Nicolas Fella, Plasma 5.24.1)
In the Plasma Wayland session, Plasma no longer always crashes when you screencast in certain circumstances (David Edmundson, Plasma 5.24.1)
In the Plasma Wayland session, using custom splash screens once again works (Linus Dierheimer, Plasma 5.24.1)
The Scale effect is once again configurable (Alexander Lohnau, Plasma 5.24.1)
Links to System Settings pages added to the desktop using the “Add to Desktop” context menu item in Kickoff once again actually appear on the Desktop as expected (Alexander Lohnau, Plasma 5.24.1)
Certain types of large buttons with text no longer make their text half-invisible when they’re focused with the keyboard (Ingo Klöcker, Plasma 5.24.1)
Info Center’s “Devices” page once again works as expected if the command-line lspci program lives in /sbin/, /usr/sbin, or /usr/local/sbin on your computer (Fabian Vogt, Plasma 5.24.1)
Dragging desktop files over a Sticky Note applet no longer makes the files temporarily disappear (Severin von Wnuck, Plasma 5.24.1)
In the Plasma X11 session, the cursor no longer disappears while using the “Zoom” effect (Vlad Zahorodnii, Plasma 5.24.1)
The Fall Apart effect once again works and no longer interacts strangely with the Overview effect (Vlad Zahorodnii, Plasma 5.24.1)
In the Plasma Wayland session, fixed one way that tooltips could be mis-positioned (Vlad Zahorodnii, Plasma 5.24.1)
The Overview effect no longer inappropriately shows minimized windows in the desktop thumbnails for moment before immediately hiding them again (Vlad Zahorodnii, Plasma 5.24.1)
When using certain 3rd-party window decoration themes, quick-tiling a maximized window no longer unexpectedly de-maximizes the window instead of quick-tiling it (Vlad Zahorodnii, Plasma 5.24.1)
System Settings is now faster to launch, especially when using the legacy Icons View mode (Fushan Wen, Plasma 5.24.1)
Dolphin no longer crashes when you close its “Create New File” file dialog in a remote location (Nicolas Fella, Frameworks 5.92)
Fixed a memory leak when canceling in-process move/copy archive (etc) jobs (David Faure, Frameworks 5.92)
Scrollable views with text in QtQuick-based software no longer exhibit visual glitches with text being cut off or squished at the top or bottom when the view is scrolled very slowly a pixel at a time (Noah Davis, Frameworks 5.92)
Font changes now take effect instantly in QtQuick-based apps (Nicolas Fella, Frameworks 5.92)
Buttons in System Tray applets that open Info Center pages now work if you don’t happen to have Info Center installed; they instead open the requested page in a separate window (me: Nate Graham, Frameworks 5.92)
All QtQuick-based apps now use slightly fewer CPU resources (Aleix Pol Gonzalez, Frameworks 5.92)
User Interface Improvements
When an app is installed more than once from different sources (e.g. one version from distro repos, and another version from Flatpak), The context menu for that app in Kickoff no longer has multiple entries saying, “Uninstall or manage add-ons” (Alexander Lohnau, Plasma 5.24.1)
Searching for apps that are not yet installed no longer returns duplicate entries for matched apps that are available from multiple sources (Alexander Lohnau, Plasma 5.24.1)
In the Overview effect, apps’ selection highlight effects now disappear when you start to drag them (Vlad Zahorodnii, Plasma 5.24.1)
System Settings’ Quick Settings page has received some UI polish for the alignment and spacing of its elements and the clarity of its labels (me: Nate Graham, Plasma 5.25):
Kate, KDevelop, and other KTextEditor-based apps now do a much better job of differentiating files opened in tabs that have the same filename (Waqar Ahmed, Frameworks 5.92):
Dragging a file or folder over an item in the Places panel now causes that location to be opened and displayed in the main view so you can drag the thing into a folder inside it. And if the Places panel item you dragged over was an unmounted disk, it is now automatically mounted first! (Kai Uwe Broulik, Frameworks 5.92)
Errors in the open/save dialogs are now shown inline as in Dolphin, rather than with a separate dialog window (Kai Uwe Broulik, Frameworks 5.92)
…And everything else
Keep in mind that this blog only covers the tip of the iceberg! Tons of KDE apps whose development I don’t have time to follow aren’t represented here, and I also don’t mention backend refactoring, improved test coverage, and other changes that are generally not user-facing. If you’re hungry for more, check out https://planet.kde.org/, where you can find blog posts by other KDE contributors detailing the work they’re doing.
How You Can Help
If you’re a developer, check out our 15-Minute Bug Initiative. Working on these issues makes a big difference quickly!
Otherwise, have a look at https://community.kde.org/Get_Involved to discover 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!
Finally, consider making a tax-deductible donation to the KDE e.V. foundation. [Less]
|
Posted
about 2 years
ago
by
Kevin Ottens (ervin)
Let’s go for my web review for the week 2022-06.
Mark Zuckerberg and team consider shutting down Facebook and Instagram in Europe if Meta can not process Europeans’ data on US servers
Tags: tech, facebook, surveillance
That sounds great to me. Could
... [More]
they do it already please?
https://www.cityam.com/mark-zuckerberg-and-team-consider-shutting-down-facebook-and-instagram-in-europe-if-meta-can-not-process-europeans-data-on-us-servers/
Thank you, Valve
Tags: tech, valve, linux, gaming
Thank you indeed. The amount of upstream contributions their efforts fostered is enormous at this point.
https://kinduff.com/2022/02/06/thank-you-valve/
KDE: A Nice Tiling Environment and a Surprisingly Awesome DE
Tags: tech, KDE
It is nice to hear from a happy user from time to time. And yes, KWin is a very nice tiling environment once you have the right extensions (I use Bismuth and dynamic virtual desktops nowadays). I’m fairly happy with those.
https://changelog.complete.org/archives/10338-kde-a-nice-tiling-envieonment-and-a-surprisingly-awesome-de
On finding the average of two unsigned integers without overflow
Tags: tech, c++, assembly, programming
You thought averaging two unsigned was trivial? Think again, here what needs to happen in all its glory.
https://devblogs.microsoft.com/oldnewthing/20220207-00/?p=106223
What’s in a Good Error Message?
Tags: tech, programming, logging
Excellent article about best practices for logging errors, most of it applies for other type of logs though.
https://www.morling.dev/blog/whats-in-a-good-error-message/
Exposing a web service with Cloudflare Tunnel
Tags: tech, cloudflare, networking, self-hosting
This looks like a nice way to somewhat safely expose self-hosted services to the outside.
https://erisa.dev/exposing-a-web-service-with-cloudflare-tunnel/
The Fall of Scrum?
Tags: tech, agile, scrum
This asks very valid questions. I’m a bit less optimistic than in the conclusion though… I suspect that if it truly falls, it will be replaced by another cargo cult.
https://ronjeffries.com/articles/-z022/01121/fall-of-scrum/
Interview Questions to Ask Your Interviewer
Tags: hr, interviews
As I keep saying to people I interview… it’s also about you interviewing us! I wish I had more questions from them. This list is a bit biased to some type of companies but that’s a good starting point.
https://daveceddia.com/interview-questions-to-ask-company/
Bye for now! [Less]
|
Posted
about 2 years
ago
by
Qt Dev Loop
We are happy to announce the release of Qt Creator 7 Beta!
|
Posted
about 2 years
ago
by
Qt Dev Loop
Qt Creator 7 comes with an updated CMake project configuration settings page.
|
Posted
about 2 years
ago
by
Weng Xuetian (csslayer)
Relationship between the input method server and applications under Fcitx5+KWin/Wayland
With the latest release of Plasma 5.24, the native wayland input method support in KWin is improved to support non-virtual keyboard input method like Fcitx 5.
... [More]
(There are lots of issues if you try to use zwp_input_method_v1 in 5.23).
This leads to a outcome that non-Gtk/Qt application using text-input-v3 can be used flawlessly under KWin Wayland. Though, there is some small step that you’ll need to follow.
First of all, I suggest you have most up-to-date Plasma 5.24 and Fcitx 5.0.14. I believe the distribution that picks up Plasma 5.24 should also have up-to-date Fcitx 5.
Next, you’ll need to make KWin Wayland to launch Fcitx 5. This is required because only the privileged client is allowed to talk to KWin on input method protocol. KWin will send a socket file descriptor to the input method and input method service need to use this socket to connect to KWin.
Thanks to a simple KCM, which is accessible from systemettings -> Virtual keyboard (Naming of the KCM is not so good, because it was designed for mobile phone to launch maliit initially.)
From there, just select Fcitx 5. This requires you to have up-to-date Fcitx 5 to make it show up in this KCM, because it requires a special new field in the Fcitx 5 desktop file.
Although kwin will launch input method in a pretty early stage, but there might still be some race condition if there is another mechanism (Like XDG autostart) to launch Fcitx 5. You can try to re-login to see if if works, if not, you may want to disable Fcitx 5’s own XDG autostart or what ever mechanism you’re using to launch Fcitx 5.
Theoretically you don’t need to re-login, KWin can reload it immediately after you apply the setting in systemsettings. I would just re-login to make sure everything it properly launched, then you should be good to go.
Hello world from Chinese Pinyin!
Should I keep setting GTK_IM_MODULE / QT_IM_MODULE / XMODIFIERS?
QT_IM_MODULEQt has text-input-v2 support which can be used if QT_IM_MODULE is empty, but it has some small issue regarding the preedit. Also, with current version of wayland input method protocol, there can be only one global input context for wayland. So right now it can be a problem if you want to use the “per-application” input state supported by Fcitx 5. But using Qt’s text-input protocol has one benefit, is that visually there won’t be blinking for input window.
GTK_IM_MODULEGtk has text-input-v3 support, but it’s preedit is poorly styled with bold font for highlight. Also, its surrounding text support is poorly implemented. So for now, using GTK_IM_MODULE=fcitx might still be good option if you want to have all Fcitx features.
XMODIFIERSIt’s required to support XWayland.
[Less]
|
Posted
about 2 years
ago
by
KDE Dot News
Falkon
Falkon
Our web browser Falkon has been quickly gathering new features, and this month saw the 3.2 release.
It adds in-screen capture functionality so you can easily grab a screenshot, it now comes with a inbuilt PDF viewer, and downloads can
... [More]
be paused and resumed.
Best of all, you can Download themes from the KDE Store. Who wants to customize their browser?
Falkon is available from the Snap store or your Linux distro.
If you are interested in packaging or developing Falkon, please contact the devs to get involved. More contributions are always appreciated!
Kalendar 0.4.0
Kalendar
Kalendar is a new calendar application that allows you to manage your tasks and events. Kalendar supports both local calendars as well as a multitude of online calendars: Nextcloud, Google® Calendar, Outlook®, Caldav, and many more.
Kalendar was built with the idea to be usable on desktop, on mobile and everything in between.
There have been monthly releases recently each adding a bunch of new features and improvements, including drag and drop for calendar items.
In the new 0.4 release, there are 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.
In the prior release, Kalendar aligned with Plasma’s motto of ‘simple by default, powerful when needed’. The developers tweaked the default configuration to make the application as clean and simple as it needs to be. They also changed the month view so the weeks would not be numbered by default, and for tasks to be arranged in ascending date order. This should save users from fiddling around with the settings!
The app comes on the PinePhone Pro or you can get it from your Linux distro.
It will likely be added to Plasma Mobile Gear releases in future.
Ruqola 1.6
Ruqola
Ruqola (Italian for the salad leaf "rocket") is KDE's cross platform Rocket.chat app. Rocket.chat is a secure chat app and platform. Their slogan is: real-time conversations with your colleagues, other companies or customers. Rocket.Chat does everything other platforms do, but doesn't expose your data.
Ruqola’s recent 1.6 release settles the UI on tranditional QWidgets, adds team support and includes the all important emoji support.
Download it from your Linux distro or grab installers for Windows and Mac.
GCompris 2
GCompris 2
Our comprehensive educational games app GCompris released version 2, adding a bunch of new activities and improving a bunch more.
Baby mouse is for children learning to interact with a computer for the first time.
Oware is a traditional African strategy game, it can be played against the computer or with a friend.
In Path encoding (absolute or relative) children need to give a set of directions to follow a defined path in a grid.
Path decoding (absolute or relative) is the opposite. Children have to create the path corresponding to a defined set of directions.
In Learn quantities, the goal is to count how many items are needed to represent a quantity.
In Learn decimal numbers, children cut units in pieces to learn the concept of decimal numbers.
Learn decimal additions and Learn decimal subtractions use the same principles as Learn decimal numbers, but this time to practice these operations.
With Ordering numbers, children can practice ordering numbers in ascending or descending order.
With Ordering letters, children can practice ordering letters in alphabetical order or in reverse order.
Ordering sentences is a step up in which children can practice reading and grammar by sorting out parts of a sentence.
Positions is an activity to learn the terms describing the relative position of an object.
You can get it for Windows Store, Android on the Play Store, Download Mac or Linux, Flathub, Snap Store or even Raspberry Pi.
Heaptrack 1.3
Heaptrack
One for the developers, Heaptrack is an app to monitor memory usage. It can attach to running apps and tracks all calls to the core memory allocation functions and log these occurrences.
The Heaptrack v1.3.0 release is packed with quite some important new features. Most importantly, it is now possible to filter by time ranges. To do so, simply select a time range in one of the plots and right click to filter by time. Once analysis is complete, you will see the delta between the two time points; a very useful addition to the heap memory analysis workflow!
You can get it from your Linux distro or just use the AppImage.
Kid3
Kid3 on Android
Version 3.9 of Kid3, a music file tag editor, brings new features. It is now possible to add custom frames to the quick access frames, which are always directly editable in the frame table. Standard frame values can now be edited directly in columns of the file list. Users of the command line version kid3-cli now have the possibility to run QML scripts. Customization of the quick access frames is now also possible on Android. It also comes with translations to new languages and bug fixes.
Kid3 is available all over. Chocolatey for Windows, Flathub on Linux, Homebrew for Mac, F-Droid for Android and any Linux distro.
BugFixes
Tellico 3.4.3 Our collection manager app updated its Kinopoisk data source
KGeoTag 1.2
updated its build system and now talks updated to GPX files Mime Type.
KDiff 1.9.4 fixed DOS/Wndows line ending handling regression and a race condition during teardown.
New Beta Software
Kodaskanna
Kodaskanna is a utility for reading data from 1D/2D codes (e.g. QR codes or bar codes) and making the data available for further processing.
The long-term vision for Kodaskanna is to be a simple utility to integrate in workflows where some data processing expects a data blob (or a series of those) to be taken from a machine readable source by the user. It should have reusable general purpose extensions both for reading all kind of encoded data in all kind of sources (e.g. graphical, acoustical) or straight from dedicated input devices, as well as for validating and previewing the extracted data for the expected data format. The invoking instance should be able to filter/define what is possible. The utility should be usable both in-process and out-of-process, and ideally itself be replaceable by other solutions providing the same interface.
ARM64 Coming to the Snap Store
KBlocks
KDE publishes over 100 apps on the Snap store, an app store for all Linux distros. In the last 30 days there are 181,750 machines using them in 209 territories.
Launching today we have published the first Snap for ARM64 so you can use KBlocks on your Raspberry PI or PinePhone Pro. This architecture will become more important once laptops using the chips become more prominent, so it's great to see KDE becoming available on another platform.
[Less]
|
Posted
about 2 years
ago
by
Jan Grulich
There was a blog post from Peter Hutterer about Flatpak portals posted few months back. Peter explained what are portals and how do they work. Portals are used mostly because of security and sandbox/Wayland restrictions. Many times your only way to
... [More]
get access outside (opening a file, sending a notification, sharing a screen, etc.) is to use a portal. For most use-cases applications or developers don’t need to care about them as their support is usually implemented in libraries they use. For example Qt and GTK use portals internally so apps can use still the same APIs as before and they don’t need to worry about their apps not working in sandboxed environments. BUT there are still scenarios where libraries have unsufficient or none portal support, or a different options are desired so what are the options in this case if you still need to use portals?
Do everything yourself, which means you will implement all the DBus calls and handling yourself.
Use a library. Most logic choice would be libportal, but there is also a project called ASHPD for Rust users.
What is libportal and libportal-qt?
The libportal library provides GIO-style async APIs for Flatpak portals. It hides all the DBus complexity users would face in case of using portals directly and provides a user-friendly library instead. You might think that the libportal-qt is the same thing, just with Qt-style APIs, but the idea behind it is that each toolkit (Gtk3, Gtk4, Qt5, Qt6) has a different way to get a window handle which is needed to associate portal dialogs with the app that invoked them. So libportal-qt just provides a way to get a XdpParent object from a QWindow. As a C++/Qt developer I don’t mind using C/Glib APIs and I used it many times, but there is still one speciality I fail to use everytime, my friend GVariant. Some of the portal APIs in libportal expects a GVariant for all the complex structures, for example to specify a filter option for OpenFile() call from the fillechooser portal, you have to build a very complex GVariant based on the DBus specification.
Remember I told you libportal-qt doesn’t offer Qt-style APIs? This is not necessarily true, because I implemented all the complex structures you will have to pass in most of the portals and implemented functions that will return them as GVariants so you don’t need to get in touch with GVariants at all.
How to use libportal-qt?
First of all, all libportal flavours have pkgconfig file installed so it’s easy to use them from any build system and you just need to search for libportal-qt5 (we don’t have -qt6 version yet).
And how does the code look like? For example let’s say you want to open an image:
// Creates a filter rule, this can be a Mimetype or Pattern.
XdpQt::FileChooserFilterRule rule;
rule.type = XdpQt::FileChooserFilterRuleType::Mimetype;
rule.rule = QStringLiteral("image/jpeg");
// Create a filter with our rules, we will then pass it to OpenFile() call as GVariant.
XdpQt::FileChooserFilter filter;
filter.label = QStringLiteral("Images");
filter.rules << rule;
// Create a GVariant from our filter. This will result into variant in form of:
// "[('Images', [(1, 'image/jpeg')])]"
g_autoptr(GVariant) filterVariant = XdpQt::filechooserFiltersToGVariant({filter});
// Get XdpParent to associate this call (portal dialog) with our window.
XdpParent *parent = xdp_parent_new_qt(m_mainWindow->windowHandle());
// Finally open a file. XdpQt::globalPortalObject() is another convenient function
// that creates a global instance of XdpPortal object so you don't need to take care
// of creating it yourself. For some of the arguments we just pass a nullptr to don't
// specify them.
xdp_portal_open_file(XdpQt::globalPortalObject() /*XdpPortal object*/,
parent /*XdpParent object*/, "Title", filterVariant /*filters*/,
nullptr /*current_filter*/, nullptr /*choices*/,
XDP_OPEN_FILE_FLAG_NONE /*flags*/, nullptr /*cancellable*/,
openedFile /*callback*/, this /*data*/);
xdp_parent_free(parent);
// Then the callback would look like this, eg.
static void openedFile(GObject *object, GAsyncResult *result, gpointer data) {
g_autoptr(GError) error;
g_autoptr(GVariant) ret =
xdp_portal_open_file_finish(XdpQt::globalPortalObject(), result, &error);
if (ret) {
// Another convenient function that will get you uris and choices from
// GVariant returned by xdp_portal_open_file() call.
XdpQt::FileChooserResult result = filechooserResultFromGVariant(ret);
// Do whatever you want to do with the result. Here we just print opened selected files.
qDebug() << result.uris;
}
}
As you can see, no GVariant got hurt and you can easily open a file without any GVariant knowledge. Besides FileChooser portal helpers, we also have Notification portal helpers, because serializing icons and buttons is also something that is not trivial. For the rest of the portals you either don’t need to use complex GVariants so you can use them easily without helper functions same way as shown above, or some portals like ScreenCast or RemoteDesktop are not used that often and we don’t have helper functions for those just yet.
I hope you can find this helpful in case you want to join this world. The libportal project is hosted on GitHub in case you want to try it just now, because this is still not part of any stable release (will be in libportal 0.6), or report a bug or just look at my GVariant helpers to see what I spare you of. [Less]
|