Skip to content

Virtual keyboard always appears on SDDM login screen (Qt6 / SDDM 0.21 / Plasma 6) even after disabling InputMethod #80

Description

@spiderhacker13

Hi! First of all, thank you for creating this amazing SDDM theme. I really like its design.

I encountered an issue related to the virtual keyboard and spent quite some time debugging it before opening this report. I wanted to make sure it wasn't caused by my own system configuration.


Environment

OS

  • Parrot Security 7.3 (Echo)
  • Debian 13.5

Desktop

  • KDE Plasma 6
  • X11

SDDM

  • 0.21.0+git20250502.4fe234b-2

Qt

  • Qt 6.8.2

Installed packages

  • qt6-virtualkeyboard-plugin
  • libqt6virtualkeyboard6
  • qml6-module-qtquick-virtualkeyboard

Problem

When the SDDM login screen appears, the virtual keyboard opens automatically without any user interaction.

Expected behavior

The virtual keyboard should remain hidden unless explicitly requested by the user.

Actual behavior

The virtual keyboard appears immediately after the greeter starts.

Interestingly, after manually closing the virtual keyboard, it usually does not appear again while typing the password.


This issue only happens with Qylock

I tested multiple SDDM themes on the exact same system.

Theme Result
Breeze ✅ No issue
SDDM Astronaut Theme ✅ No issue
Qylock (Nier Automata) ❌ Virtual keyboard opens automatically

So the issue appears to be specific to Qylock.


SDDM configuration

Following Issue #53, I completely disabled the virtual keyboard configuration.

Originally:

[General]
InputMethod=qtvirtualkeyboard

I renamed:

/etc/sddm.conf.d/virtualkbd.conf

to:

virtualkbd.conf.bak

My current configuration is:

[General]
InputMethod=

There is also no:

GreeterEnvironment=QT_IM_MODULE=qtvirtualkeyboard

remaining anywhere under /etc/sddm.conf*.

I confirmed this with:

grep -R "InputMethod" /etc/sddm.conf /etc/sddm.conf.d
grep -R "GreeterEnvironment" /etc/sddm.conf /etc/sddm.conf.d

Therefore, the workaround described in Issue #53 has already been applied.

Unfortunately, the problem still exists.


Theme debugging

I compared the original theme with several small modifications.

Test 1

Commented out:

pwInput.forceActiveFocus()

inside the MouseArea.

Result

No noticeable difference.


Test 2

Disabled the startup timer:

Timer {
    interval: 300
    running: false
    onTriggered: pwInput.forceActiveFocus()
}

Result

  • The virtual keyboard no longer appeared immediately after boot.
  • However, the password field also lost its initial focus.
  • It became impossible to type the password until the field received focus (for example, after navigating with the keyboard).

This suggests that the timer is responsible for assigning the initial focus, but it may also be triggering the virtual keyboard.


Comparison with Astronaut Theme

One thing I noticed is that Qylock uses:

TextInput

while the Astronaut theme uses:

TextField

The Astronaut theme does not trigger the virtual keyboard on the exact same machine.

This makes me wonder whether the issue is related to how Qt6 handles TextInput when it receives focus during initialization.


Things I have already tested

I have already verified the following:

  • Reinstalled SDDM
  • Reinstalled the theme
  • Confirmed the correct theme is being loaded
  • Confirmed the theme files are identical to the repository version
  • Disabled InputMethod
  • Removed GreeterEnvironment
  • Removed duplicate themes
  • Tested without MouseArea calling forceActiveFocus()

None of these changed the behavior.


My current guess

At this point, I suspect the issue may be related to the interaction between:

  • Qt 6
  • SDDM 0.21
  • TextInput
  • forceActiveFocus() during initialization

rather than simply an InputMethod configuration issue.

Since other Qt6 SDDM themes work correctly on the exact same system, there may be a subtle difference in how the password field is initialized.

I'd be happy to test patches, experimental branches, or provide additional logs if needed.

Thank you very much for your work on this project!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions