Provide a Plasmoid to control input methods

It's mostly useful to be able to hide the virtual keyboard like we do in
Plasma Mobile from the bottom panel, should probably replace the SNI
from KWin.
wilder-5.24
Aleix Pol 5 years ago committed by Aleix Pol Gonzalez
parent a3734c74f8
commit fb47508554
  1. 1
      applets/CMakeLists.txt
  2. 2
      applets/manage-inputmethod/Messages.sh
  3. 95
      applets/manage-inputmethod/contents/ui/manage-inputmethod.qml
  4. 20
      applets/manage-inputmethod/metadata.desktop
  5. 1
      components/keyboardlayout/virtualkeyboard.h
  6. 2
      shell/org.kde.plasmashell.desktop.cmake

@ -4,6 +4,7 @@ add_subdirectory(icon)
plasma_install_package(analog-clock org.kde.plasma.analogclock)
plasma_install_package(mediacontroller org.kde.plasma.mediacontroller)
plasma_install_package(lock_logout org.kde.plasma.lock_logout)
plasma_install_package(manage-inputmethod org.kde.plasma.manage-inputmethod)
add_subdirectory(appmenu)
add_subdirectory(systemmonitor)

@ -0,0 +1,2 @@
#! /usr/bin/env bash
$XGETTEXT `find . -name \*.qml -o -name \*.cpp` -o $podir/plasma_applet_org.kde.plasma.manageinputmethod.pot

@ -0,0 +1,95 @@
/*
* SPDX-FileCopyrightText: 2021 Aleix Pol Gonzalez <aleixpol@kde.org>
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
import QtQuick 2.1
import QtQuick.Layouts 1.1
import org.kde.plasma.plasmoid 2.0
import org.kde.plasma.core 2.0 as PlasmaCore
import org.kde.plasma.components 3.0 as PlasmaComponents3
import org.kde.plasma.extras 2.0 as PlasmaExtras
import org.kde.plasma.workspace.keyboardlayout 1.0 as Keyboards
import org.kde.kquickcontrolsaddons 2.0
Item {
id: root
property var overlays: []
Plasmoid.preferredRepresentation: Plasmoid.compactRepresentation
Plasmoid.fullRepresentation: Plasmoid.compactRepresentation
Plasmoid.compactRepresentation: PlasmaCore.IconItem {
source: plasmoid.icon
active: compactMouse.containsMouse
overlays: root.overlays
MouseArea {
id: compactMouse
anchors.fill: parent
hoverEnabled: true
onClicked: if (!Keyboards.KWinVirtualKeyboard.available) {
root.action_settings()
} else if (Keyboards.KWinVirtualKeyboard.visible) {
Keyboards.KWinVirtualKeyboard.active = false
} else {
Keyboards.KWinVirtualKeyboard.enabled = !Keyboards.KWinVirtualKeyboard.enabled
}
}
}
Component.onCompleted: {
plasmoid.setAction("settings", i18nc("Opens the system settings module", "Configure Virtual Keyboards..."),
"settings-configure")
}
function action_settings() {
KCMShell.openSystemSettings("kcm_virtualkeyboard");
}
states: [
State {
name: "available"
when: !Keyboards.KWinVirtualKeyboard.available
PropertyChanges {
target: plasmoid
icon: "input-keyboard-virtual-off"
toolTipSubText: i18n("Virtual Keyboard: unavailable")
status: PlasmaCore.Types.PassiveStatus
}
PropertyChanges { target: root; overlays: [ "emblem-unavailable" ] }
},
State {
name: "disabled"
when: Keyboards.KWinVirtualKeyboard.available && !Keyboards.KWinVirtualKeyboard.enabled
PropertyChanges {
target: plasmoid
icon: "input-keyboard-virtual-off"
toolTipSubText: i18n("Virtual Keyboard: disabled")
status: PlasmaCore.Types.ActiveStatus
}
PropertyChanges { target: root; overlays: [] }
},
State {
name: "visible"
when: Keyboards.KWinVirtualKeyboard.available && Keyboards.KWinVirtualKeyboard.visible
PropertyChanges { target: plasmoid
icon: "arrow-down"
toolTipSubText: i18n("Virtual Keyboard: visible")
status: PlasmaCore.Types.ActiveStatus
}
PropertyChanges { target: root; overlays: [] }
},
State {
name: "idle"
when: Keyboards.KWinVirtualKeyboard.available && Keyboards.KWinVirtualKeyboard.enabled && !Keyboards.KWinVirtualKeyboard.visible
PropertyChanges { target: plasmoid
icon: "input-keyboard-virtual-on"
toolTipSubText: i18n("Virtual Keyboard: enabled")
status: PlasmaCore.Types.PassiveStatus
}
PropertyChanges { target: root; overlays: [] }
}
]
}

@ -0,0 +1,20 @@
[Desktop Entry]
Name=Input Method
Comment=Manage your Input Methods
Icon=input-keyboard-virtual
Type=Service
X-KDE-ServiceTypes=Plasma/Applet
X-Plasma-API=declarativeappletscript
X-Plasma-MainScript=ui/manage-inputmethod.qml
X-KDE-PluginInfo-Author=Aleix Pol Gonzalez
X-KDE-PluginInfo-Email=aleixpol@kde.org
X-KDE-PluginInfo-Name=org.kde.plasma.manage-inputmethod
X-KDE-PluginInfo-Version=3.0
X-KDE-PluginInfo-Website=https://plasma.kde.org/
X-KDE-PluginInfo-Category=Accessibility
X-KDE-PluginInfo-License=GPL-2.0+
X-KDE-PluginInfo-EnabledByDefault=true
X-KDE-FormFactors=tablet,handset,desktop

@ -14,6 +14,7 @@ class KwinVirtualKeyboardInterface : public OrgKdeKwinVirtualKeyboardInterface
Q_PROPERTY(bool active READ active WRITE setActive NOTIFY activeChanged)
Q_PROPERTY(bool enabled READ enabled WRITE setEnabled NOTIFY enabledChanged)
Q_PROPERTY(bool visible READ visible NOTIFY visibleChanged)
Q_PROPERTY(bool available READ available NOTIFY availableChanged)
public:
KwinVirtualKeyboardInterface();
};

@ -65,4 +65,4 @@ NoDisplay=true
X-systemd-skip=true
X-KDE-Wayland-Interfaces=org_kde_plasma_window_management,org_kde_kwin_keystate,zkde_screencast_unstable_v1
X-KDE-DBUS-Restricted-Interfaces=org.kde.kwin.Screenshot
X-KDE-DBUS-Restricted-Interfaces=org.kde.kwin.Screenshot2

Loading…
Cancel
Save