TAG

首都機能移轉 (2) 歌詞 (2) 靠北文 (40) 戲言 (30) 糟糕 (7) ACG (23) Assembly (2) Boost (2) C (31) C++ (69) CMake (4) CSIE (67) Debian (34) Design_Pattern (2) Django (1) Eclipse (1) en_US (13) FFmpeg (3) FoolproofProject (26) FreeBSD (2) Git (4) GNU_Linux (65) IDE (5) Java (11) JavaScript (19) KDE (15) Khopper (16) KomiX (3) Kubuntu (18) Life (1) Lighttpd (2) Mac_OS_X (2) Opera (1) PHP (2) PicKing (2) Programing (21) Prolog (1) Python (7) QSnapshot (2) Qt (30) Qt_Jambi (1) Regular_Expression (1) Shell_Script (7) Talk (98) VirtualBox (7) Visual_Studio (13) Windows (18) zh_TW (36)

2011年7月24日 星期日

Reuse existing KSnapshot on press PrintScreen

在 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}
把上述內容存成一個檔案並讓它可執行, 我個人是放到 /usr/local/bin/ksnapshot.sh .

接著修改 System Settings 裡的 Input Action, 把 PrintScreen 對應的命令改成上面那個 script 的路徑即可.



1 則留言:

  1. 沒想到這個有一點困擾我的東西
    在這邊找到解法了
    太感謝了!

    回覆刪除