X 用的 bindkey

上次用過 Bash bind key 達到自動帶入sudo的指令,但是遇到問題,就是不支援所有的視窗,或是遠端連線。

每個bashrc都設定不夠方便,如果X可以對應的話更好。

後來試出好方法了

先安裝 xdotool 這個神奇的套件,他可以摹擬X的keyboard輸入,例如要打入 "test" 就執行指令 xdotool type 'test'

測試的方法就是

sleep 5 && xdotool type 'auto type test string'

去看看效果就會有感覺了。 我把他寫成幾行變成小script 取名為 typesudo

1
2
3
4
5
6
#!/bin/bash
set -e
xdotool sleep 0.2
xdotool key Home
xdotool type --delay 0 'sudo '
xdotool key End

大概就是先delay 0.2 秒(要不然grab不到視窗) -> 按下 Home 鍵 -> 輸入 'sudo ' -> 按下 'End' 鍵

接下來就是搭配 hotkey 去跑,要達到這個功能就有很多方式了,xfce4、Gnome、Kde 我想都有這個功能。

我比較想到的是 xbindkeys,因為沒有相依性。

只要產生設定檔 ~/.xbindkeysrc

"/home/thomas/bin/typesudo"
m:0x8 + c:26
Alt + e

格式基本上就是

"指令/行為"
key (可以用 xbindkeys -b 取得)

這樣就完成了

試試看登入遠端主機,輸入less /var/log/syslog,再按下 alt+e,不就自動帶入sudo了...

Comments