Libinput support added to Touchpad KCM

libinput is a library to handle input devices in Wayland compositors and to provide a generic X.Org input driver. It provides device detection, device handling, input device event processing and abstraction so minimize the amount of custom input code compositors need to provide the common set of functionality that users expect.

libinput is expected to replace input drivers such as synpatics in the future, and there’s already a drive to move input stack in Fedora 22 to libinput as can be seen in the discussion here. Most of the software would transparently work, except – as quickly noted in that discussion – the KDE touchpad configuration. Tochpad KCM exposes almost every knob present in the synaptics driver. In contrast, libinput exposes very few options to configure – such as tap-to-click and keeps most of the other options enabled by default – such as disable touchpad while typing. This is more sensible and efficient to do – when using synaptics driver, disabling touchpad while typing was accomplished by the synclient daemon.

As an aftermath of the discussion in Fedora, libinput maintainer Peter Hutter contacted KDE developers, including yours truly who is guilty of porting the kcm-touchpad to KDE Frameworks 5. As I know nothing about input stack or touchpads in general (phew), Peter was kind enough to step up, clone the kcm-touchpad and add support for libinput in addition to (existing) synaptics driver. All I had to do then, is to port it again to Frameworks 5.

Tochpad KCM running on libinput

Tochpad KCM running on libinput

As of last week, the review request to do that has been reviewed by Martin Gräßlin and David Edmundson and merged into the master branch – in the meantime I have obtained KDE developer commit access. In other words, Touchpad KCM now supports both libinput and synaptics drivers! If both are installed, libinput is preferred and exposes only the relevant options. As the KCM user interface exposes a lot of options, most of them remain disabled. Ideally, it should be re-designed – for example the GNOME mouse/touchpad configuration (including GNOME Tweak tool) exposes very few options. Alexander Mezin, kcm-touchpad maintainer has mentioned plan to rewrite it, I hope he will be able to find some time.

The updated kcm-tochpad packages for Fedora 20, 21 and Rawhide (what to become F22) are available for testing in the copr in Fedora repositories. For some caveats such as edge scrolling available only on single-touch touchpads, see the discussion and associated bug here. There’s still some issue with edge scrolling setting, I’m investigating it.

Paratype PT Serif and PT Mono fonts are now available in Fedora

Paratype has a set of nice Latin/pan-Cyrillic typefaces including sans-serif, serif and monospace fonts. The sans-serif typeface, PT Sans, released in 2010 has been part of Fedora for a long time and it is the default font for Cyrillic/Russian. It is a nice font for display in desktop, documents and web.

In 2011, PT Serif and PT Mono were added to the collection. They both are nice looking and very good quality fonts. All the fonts are also made available under OFL (Open Font License) and all it needed was someone to package them for Fedora. Something in my todo list for a long time, couple of weeks ago I have leveraged the spec file of paratype-pt-sans-fonts and packaged the serif and monospaced fonts. Paratype distributes the source tar balls separately for each set and Fedora mandates to create individual packages in such cases. Thanks to the review and comments from Fedora Fonts-SIG, especially Parag Nemade, two new font packages – paratype-pt-serif-fonts and paratype-pt-mono-fonts are now in Fedora repositories.

Obligatory screenshot of both fonts:


KDE Touchpad configuration ported to Frameworks 5

Fedora 20 with KDE SC 4.14 has been very stable, and after a while it gets…boring – especially when Plasma 5 is already released and you see screenshots everywhere. If you cannot hold the urge and feel sufficiently adventurous, Dan Vratil has built the Fedora 20 and 21 rpms here. If you install i386 versions, beware that baloo-widgets cannot be installed due to unmet dependencies. So, once you install dvratil’s copr repo, just do:

dnf copr enable dvratil/kde-frameworks dvratil/kde-frameworks-unstable dvratil/plasma5
dnf remove kde\* && dnf install kf5\* plasma5\* --exclude=kf5-baloo-widgets\*

I had to manually edit /usr/share/xsessions/plasma.desktop to change "/usr//usr/bin" to "/usr/bin” so that “Plasma 5” appears in gdm list. After logging in, the desktop runs smooth, but you notice the lack of many applications because they are not yet fully ported to KF5/Plasma5.

KDE Plasma 5 desktop

KDE Plasma 5 desktop

Once I had the Qt5/KF5/Plasma5 based workstation fully operational, I could also develop, build and test KF5 based applications. Most of the KDE apps are ported or being ported to KF5 under 'frameworks' git branch. As the OpenSuSe team already have started building KF5 based apps in an unstable repository, I could leverage the spec files to build rpms.

The first itch I scratched was unavailability of touchpad configuration kcm. Not being able to enable touch-to-tap, vertical and horizontal scrolling is no fun. Looking at the git repo for kcm-touchpad showed that it is not yet ported to KF5. Checked out the git repo and started porting. There are quite some references, blogposts and tools available online to guide and ease the porting effort. As it is a kcm that is being ported, the first place to go is Frameworks Porting Notes. The subtopic of ECM (extended cmake modules) source incompatible changes is also handy updating CMakeLists.txt files. The next thing is reference to Martin Graesslin’s post on porting kcontrol module. And the final tool that is quite useful to port API changes is the kde-dev-scripts. Run the source files through relevant script – like "find -iname "*.cpp" -o -iname "*.h" -o -iname "*.ui" | xargs ~/Programs/Projects/kde-dev-scripts/kf5/<>". When you hit an API change that cannot be automatically converted by the script, check frameworks at Then port away, setup a build directory, compile, note the build failure, fix the build – repeat.

Alexander Mezin and Hrvoje Senjan reviewed the patches and after 6 revisions the patch is committed in kcm-touchpad frameworks branch.

KCM Touchpad on KF5

KCM Touchpad on KF5

RPMs for Fedora 20 and 21 (i386, x86_64) are built and available in my copr repo. It contains builds of kmix and konsole as well. More to build and I’ll make them available in the same repo once build completed. You are welcome to try at your own risk 🙂

Meiga is updated for Rawhide/Fedora 19

Recent mass rebuild of packages for Fedora 19 resulted in Meiga (lightweight content sharing tool) failing to build from source. A bug report has been filed which pointed at the build log. Build failure is caused by failing to link to libgssdp properly and my attempts to fix the issue didn’t succeed. Enrique was quick enough to produce a new release fixing the issue and Meiga has been updated to the new version in Rawhide as of last week. Packages can be found here.

Bluetooth NAP tethering support in KDE Plasma NM

Recently, Plasma Network Management applet gained ability for bluetooth tethering. The initial support was only for DUN (Dial Up Networking), but not for PAN (Personal Area Network) or NAP (Network Access Point).

Sat a whole day staring at KDE networkmanagement code and GNOME network-manager-applet to figure out how to extend this to NAP (my phone seems to support that); and with help of Lamarque, a few lines of code did the job.

Plasma NM Bluetooth NAP tethering

The patch to implement this is under review. It has had only limited testing from my end. Note that this will work only if you have applied patch for Solid to support bluetooth devices in kdebase-workspace. I’ve updated the kde-plasma-networkmanagement and kdebase-workspace RPMS and uploaded here. Binary RPMs are only for x86_64; for other architectures, rebuild the SRPMs. If there are brave souls out there to test it out, here’s the procedure:

  1. Update kdebase-workspace with the above ones
  2. Update kde-plasma-networkmanagement*
  3. Run “/usr/libexec/kde4/networkmanagement_configshell create --type bluetooth --specific-args "A1:B2:C3:D4:E5:F6 nap“. Replace A1:B2:C3:D4:E5:F6 with the hardware address of your bluetooth device (can be found out easily from BlueDevil).
  4. That’s it, the connection should automatically be set up and appear in Plasma NM.

Update: The patch is upstream. Lamarque has adapted and integrated it.

State of the KDE NetworkManagement

Ever since KDE 4 NetworkManager introduced, I’ve been playing with it. knetworkmanager was fairly usable then, but with various limitations including lack of support for mobile broadband devices. Knetworkmanager has been deprecated, and the replacement is kde-plasma-networkmanagement applet.

Lamarque Souza has been working on incorporating the mobile broadband support, and integration of ModemManager into Solid, the KDE hardware library. During the recent Solid Sprint, he has implemented the Mobile Connection Wizard (which is familiar to the NetworkManager-gnome users) and has called for help with wider testing. (kde-plasma-networkmanagement has been updated for F14 with this snapshot).

Yesterday I have built the networkmanagement trunk and tested Tata Indicom (Photon+) [India] device, and found that it crashes on finishing the wizard. I grabbed the backtrace from GDB and sent it over to Lamarque, who quickly fixed the issue and enabled CDMA support today. Checked out this latest version and tested it, and now mobile broadband connection works like a charm. Here’s a screenshot of the same.

I could say that now KDE NetworkManager is feature complete, as Wired, Wireless, Mobile Broadband and VPN connections work fine.

For people using Fedora 13, I have built RPMs for the latest version and uploaded in Note, there are no translations present at the moment, and it is only 64 bit. If you’d like to build for other architectures, please rebuild the SRPM.

Update 1: Rex Dieter has updated Fedora 14 RPMs, which I have re-spun for F13 and can be found at the above URL.