在 Debian 或 Kubuntu 的预设设定, 按下 PrintScreen 键会运行 KSnapshot, 若再按下一次 PrintScreen, 则会再唤起一个 KSnapshot. 但这不是我想要的行为, 当我按下PrintScreen 时就代表我想抓图了, 不停地运行新的 KSnapshot 有点蠢. 幸好 KSnapshot 有提供足够的 D-Bus 介面, 这让我们可以写一个 script 操作已存在的 KSnapshot.
#! /bin/sh
PID=`pidof -s ksnapshot`
if [ -z ${PID} ] ; then
`which ksnapshot` -caption KSnapshot &
exit 0
fi
DBUS_SERVICENAME="org.kde.ksnapshot-${PID}"
DBUS_PATH='/KSnapshot'
DBUS_METHOD='slotGrab'
qdbus ${DBUS_SERVICENAME} ${DBUS_PATH} ${DBUS_METHOD}
接着修改 System Settings 里的 Input Action, 把 PrintScreen 对应的命令改成上面那个 script 的路径即可.
10 FEEDBACKS