从 shell 脚本更改 KDE 的鼠标主题和按钮设置

从 shell 脚本更改 KDE 的鼠标主题和按钮设置

我正在尝试左手鼠标,并且希望能够在右手模式和左手模式之间轻松切换。有一个适用于 Windows 的实用程序,称为交换鼠标按钮允许为该开关绑定一个键 - 交换按钮并更改指针的方向。

我想在 shell 脚本中为 KDE 做类似的事情。

使用 交换按钮很容易xinput,但我很难从命令行将鼠标主题更改为左手主题。我还更喜欢找到用于按钮交换的 KDE 解决方案,因为通过进行的更改xinput是会话绑定的并且 KDE 设置会被保存。我不希望在重置后有一个带有右手按钮的左手主题......

问题是,我找不到太多有关 KDE 命令行实用程序的文档。我发现这个帖子这建议使用kapplymousetheme,这看起来很有希望,但我不知道如何使用它(没有手册页,没有--help标志......)

我还发现kcmshell4 cursortheme打开鼠标主题对话框,并接受kcmshell4用于--args向模块发送参数的标志,但我找不到也无法弄清楚需要发送哪些参数才能在不打开对话框的情况下更改鼠标主题(如果支持的话)。

我还应该指出,我希望这些更改立即生效。更改配置文件并必须重新启动系统(甚至只是 X 或 KDM)是行不通的,但如果我可以重新加载该配置文件(当然使用命令行实用程序),以便更改立即生效,会没事的。

提前致谢!

答案1

晚了两年,但我刚刚在 Plasma 5 中重新解决了这个问题。也许这会对下一个提出这个答案的人有所帮助。

这是我用来交换鼠标按钮的 KDE 方法。也许同样的想法也可以应用于改变主题。

本质上,您所要做的就是在$HOME/.config/kcminputrcLeftHanded 和 RightHanded 之间更改 MouseButtonMapping,然后调用kcminit mouse.这是一个执行此操作的脚本:

#!/bin/bash

CONFIG=$HOME/.config/kcminputrc
CURRENT=`kreadconfig --file $CONFIG --group Mouse --key MouseButtonMapping`

if [ $CURRENT = "LeftHanded" ]; then
  kwriteconfig --file $CONFIG --group Mouse --key MouseButtonMapping RightHanded
elif [ $CURRENT = "RightHanded" ]; then
  kwriteconfig --file $CONFIG --group Mouse --key MouseButtonMapping LeftHanded
fi

kcminit mouse

请注意,KDE Plasma 4 中的文件是$HOME/.kde/share/config/kcminputrc,Plasma 5 中的文件也是如此,$HOME/.config/kcminputrc因此您可能需要编辑脚本以适应。

然后,我将此脚本添加到我的主 KDE 应用程序菜单中,以便我可以为其分配全局热键。

2018 年更新:

由于 KDE 配置文件发生更改,脚本现在如下所示:

#!/bin/bash

CONFIG=$HOME/.config/kcminputrc
CURRENT=`kreadconfig --file $CONFIG --group Mouse --key XLbInptLeftHanded`

if [ $CURRENT = "true" ]; then
  kwriteconfig --file $CONFIG --group Mouse --key XLbInptLeftHanded false
elif [ $CURRENT = "false" ]; then
  kwriteconfig --file $CONFIG --group Mouse --key XLbInptLeftHanded true
fi

kcminit mouse

2022 年更新:

kreadconfig 和 kwriteconfig 现在是 kreadconfig5 和 kwriteconfig5。

kcminit 命令行略有变化。

#!/bin/bash

CONFIG=$HOME/.config/kcminputrc
CURRENT=`kreadconfig5 --file $CONFIG --group Mouse --key XLbInptLeftHanded`

echo $CURRENT

if [ $CURRENT = "true" ]; then
  kwriteconfig5 --file $CONFIG --group Mouse --key XLbInptLeftHanded false
  #/usr/bin/kdialog --title "Leftyswitch" --passivepopup "Right handed mouse" 3
elif [ $CURRENT = "false" ]; then
  kwriteconfig5 --file $CONFIG --group Mouse --key XLbInptLeftHanded true
  #/usr/bin/kdialog --title "Leftyswitch" --passivepopup "Left handed mouse" 3
fi

kcminit kcm_mouse

答案2

您可以轻松更改为左撇子,如下所示:

 xmodmap -e "pointer = 3 2 1"

您可以找到有关的文档https://help.ubuntu.com/community/MouseCustomizations

答案3

配置的实际名称似乎只能在源代码中找到,即https://github.com/KDE/plasma-desktop/tree/d3c40a0582edbfa2674006e5a15e991a65f8f409/kcms/mouse/backends/x11

我正在寻找如何处理设置~/.config/kcminputrc

如果您使用libinput(而不是libevdev) 那么您可能想要检查x11_libinput_dummydevice.h,底部 3 行段落的最后一行(不是属性名称中带有“supports”或“default”的段落)会告诉您您想要什么,如果您需要鼠标设置

通过运行应用这些kcminit,它给出这样的输出:

Initializing  "/usr/lib/x86_64-linux-gnu/qt5/plugins/plasma/kcms/systemsettings/kcm_mouse.so"
Initializing  "/usr/lib/x86_64-linux-gnu/qt5/plugins/plasma/kcms/systemsettings/kcm_style.so"
Initializing  "/usr/lib/x86_64-linux-gnu/qt5/plugins/plasma/kcms/systemsettings/kcm_fonts.so"
Initializing  "/usr/lib/x86_64-linux-gnu/qt5/plugins/plasma/kcms/systemsettings/kcm_touchpad.so"
kcm_touchpad: Using X11 backend
Initializing  "/usr/lib/x86_64-linux-gnu/qt5/plugins/plasma/kcms/systemsettings/kcm_kgamma.so"

相关内容