How to Configure Keyboard Shortcuts in KDE Plasma on Fedora

Configure KDE Plasma keyboard shortcuts via System Settings > Shortcuts to customize key bindings.

When muscle memory fights the desktop

You hit Super+T expecting a terminal window, and the desktop minimizes everything instead. Or you want a single key to trigger a backup script, and the configuration menu buries the option under three layers of nesting. KDE Plasma manages input through a centralized shortcut daemon that intercepts key events and dispatches actions via D-Bus. You can configure these bindings through the graphical interface, manipulate the configuration files directly, or use CLI tools for automation and dotfile management.

How Plasma routes key events

Plasma stores shortcuts in ~/.config/kglobalshortcutsrc. This file maps key sequences to component identifiers. When you press a key, the window manager or the shortcut daemon intercepts the event. If the key matches a binding, the daemon sends a D-Bus signal to the target component. The component executes the action.

Conflicts arise when two bindings claim the same key. Plasma resolves conflicts based on the active window context and the priority of the shortcut category. Global shortcuts have higher priority than application-specific shortcuts. If two global shortcuts clash, the last one registered usually wins, though the GUI warns you before allowing the overlap.

The configuration uses an INI-style format. Sections correspond to D-Bus service names. Keys within sections are action identifiers. Values are key sequences expressed in Qt format. Understanding this structure lets you manage shortcuts without the GUI and automate changes across systems.

Configure shortcuts via System Settings

The graphical interface provides visual conflict detection and a searchable list of available actions. Use this when you are exploring what shortcuts exist or need to resolve a collision.

Run the command to open System Settings directly to the Shortcuts panel. This skips the navigation tree and lands you where you need to be.

systemsettings6 shortcuts
# Launches System Settings directly to the Shortcuts panel.
# Skips the navigation tree and saves time.
# Use systemsettings5 if you are on Fedora 39 or older.

The Shortcuts panel groups entries by component. Global shortcuts affect the entire session. Application shortcuts only trigger when that application is focused. Custom shortcuts let you define arbitrary commands or scripts.

To change a shortcut, locate the action in the list. Click the current key sequence. Press the new combination. Click outside the field to commit. If the system detects a conflict, a dialog appears listing the existing binding. You can reassign the conflicting shortcut or cancel the change.

To create a custom shortcut, select "Custom Shortcuts" in the tree. Click "Edit" and choose "New" then "Global Shortcut" and "Command". Enter a name and the command to execute. Assign the key sequence. Custom shortcuts run in a shell context and can invoke any executable available in your PATH.

Test the shortcut immediately. The daemon reloads configuration on the fly, but a restart fixes stale state.

Manage shortcuts from the terminal

The GUI is slow for bulk changes or scripted deployments. Use kwriteconfig6 to modify shortcuts safely from the command line. This tool handles the INI structure, manages encoding, and creates sections automatically. Direct file edits risk corrupting the configuration if you miss a newline or bracket.

Convention aside: Fedora 40 and later ship with KDE Plasma 6. The configuration tool is kwriteconfig6. Fedora 39 and older use KDE Plasma 5, which requires kwriteconfig5. Check your version with plasmashell --version before running commands.

Here is how to assign a shortcut to an existing application action.

kwriteconfig6 --file kglobalshortcutsrc --group "org.kde.konsole" --key "org.kde.konsole/ShowHideWindow" "Meta+T"
# Writes the shortcut to the user config file.
# --group specifies the component section in the INI file.
# --key defines the specific action within that group.
# The value is the key sequence in Qt format.

The group name matches the D-Bus service name of the application. The key name is the action identifier. The value uses Qt key sequence syntax. Modifiers include Alt, Ctrl, Meta, Shift, and Super. Meta and Super both refer to the Windows key. Combine modifiers with +. Keys are case-sensitive. F1 works. f1 does not.

To discover the correct group and key for an application, query the running D-Bus services.

qdbus6 --system | grep -i konsole
# Lists D-Bus services matching the pattern.
# The service name is the group name for shortcuts.
# Use this to discover the correct group for unknown apps.

Once you have the service name, list the available actions.

qdbus6 org.kde.konsole /konsole org.kde.konsole.SessionManager.listSessions
# This example shows how to query the object path.
# Shortcut actions are usually under the component interface.
# Check the application documentation for the exact action ID.

Action IDs are not always obvious. The most reliable source is the configuration file itself. Read the current state to find valid keys.

kreadconfig6 --file kglobalshortcutsrc --group "org.kde.konsole" --list
# Lists all keys defined for the group.
# Returns the action identifiers currently in use.
# Use this to find the key name before modifying it.

To remove a custom binding and revert to the system default, delete the key.

kwriteconfig6 --file kglobalshortcutsrc --group "org.kde.konsole" --delete "org.kde.konsole/ShowHideWindow"
# Removes the custom binding.
# Plasma falls back to the system default defined in the package.
# Use this to undo a mistake without restoring a full backup.

Convention aside: User configuration lives in ~/.config. System defaults live in /etc/xdg or /usr/lib/kde-settings. Never edit files in /etc/ or /usr/lib/. Package updates overwrite those paths. Your changes vanish on the next dnf upgrade.

Verify and debug

Shortcuts can fail silently if the daemon does not receive the event or if the target component rejects the signal. Verify the configuration and check logs when a shortcut does not work.

Read the value back to confirm the write succeeded.

kreadconfig6 --file kglobalshortcutsrc --group "org.kde.konsole" --key "org.kde.konsole/ShowHideWindow"
# Reads the current value from the config file.
# Returns the key sequence string or empty if unset.
# Useful for scripts that need to verify state before changing.

Stream the daemon logs to see if the shortcut triggers.

journalctl -u plasma-kglobalaccel6 -f
# Streams logs from the shortcut daemon.
# Watch for "Shortcut already used" or "Failed to activate" messages.
# Press the key while this runs to see if the daemon receives the event.

If the daemon logs show the event but the action does not happen, the target component may be unresponsive. Check the component's logs. If the daemon logs show nothing, another process is grabbing the key. Full-screen applications, games, and some terminal emulators capture input exclusively. Close the interfering application or reassign the shortcut.

Run journalctl -t kglobalaccel first. Read the actual error before guessing.

Common pitfalls

Qt key sequence format is strict. Meta+T works. Meta + T fails because of the spaces. Ctrl+Shift+t fails because t is lowercase. Use uppercase for letter keys.

Conflicts do not always produce warnings in the CLI. kwriteconfig6 writes the value without checking for collisions. If you assign Meta+T to two different actions, the last write wins. The GUI warns you. The CLI does not. Check for conflicts before overwriting.

Wayland compositors enforce input security. Some global shortcuts may be blocked by the compositor for security reasons. Input grabs by applications can prevent the daemon from seeing the key. If a shortcut works in X11 but fails in Wayland, the application may be claiming exclusive focus. Switch to the X11 session to test, or reassign the shortcut to a combination less likely to conflict.

Custom shortcuts run in a restricted environment. The command executes with the user's environment, but some variables may not be set. Use absolute paths for scripts. Do not rely on ~ expansion in the command field. Use $HOME instead.

The configuration file is text, but it is not a script. Do not add comments or blank lines manually. kwriteconfig6 manages the structure. Manual edits can introduce encoding issues or parsing errors. If you must edit the file, use a text editor that preserves UTF-8 encoding and line endings.

Reboot before you debug. Half the time the symptom is gone.

Choose your method

Use System Settings when you need visual conflict detection and want to browse available actions. Use kwriteconfig6 when you are scripting configuration changes or managing dotfiles. Edit kglobalshortcutsrc manually when you need to restore a backup or perform batch replacements. Use qdbus6 when you need to trigger a shortcut action programmatically from a script or cron job.

Trust the package manager. Manual file edits drift, snapshots stay.

Where to go next