星期四, 11月 29, 2012

awesome wm 陽春 clipboard manager

雖然說我使用滑鼠的時間真的是很少,但偶爾還是不免要從網頁上複製一些文字下來,但 X 的複製機制有時候有點令人抓狂,如果我要把一個 Textbox 的字取代掉,我不能把裡面的文字選起來按刪除,因為這樣我的 Primary buffer 裡就會被蓋掉,用 shift-ins 貼上的東西只會是我剛剛選起來刪掉的文字而已,這樣一來變成要先刪除,回到我要複製的地方重選然後再來貼上。
網路上是有不少的 clipboard manager 但是我覺得為了這個不太常用但是需要的時候才打開又太遲的功能應該是要整合到 wm 裡,所以我就寫了一個簡單的 clipboard manager,其實沒什麼 manager 的功能,只是提供三個功能:把現在的 primary buffer 存到檔案裡,選擇之前存起來的內容貼回 primary buffer 裡,跟清除暫存起來的 buffer。

code 在 github 可以下載,用法大致如下:
把 clipboard.lua 放置在 rc.lua 同個目錄,然後在 rc.lua 的開頭引入
require("clipboard")
然後在全域快捷鍵設定的地方加入下面的 code
    -- clipboard
    -- {{{
    awful.key({ modkey },            "c",     copy_to_clipboard),
    awful.key({ modkey, "Shift"   }, "c",     clear_clipboard),
    awful.key({ modkey },            "v",     clipboard_menu),
    -- }}}

我是設定 modkey(win) + c, 把 primary buffer(選取的文字)寫入 ~/.sel
modkey + shift + c 把 ~/.sel 清空
modkey + v 則會跳出一個選單把暫存的 buffer 都列出來,選擇以後就會覆蓋掉目前的 primary buffer,再按 shift + ins 即可貼上。

目前的作法蠻陽春的,換行的部份我用 #NL 取代掉才寫入,可想而知早晚會出事(?!),而且面對不是文字的 buffer 也還有待測試,不過對我來說算是夠用了啦,我會複製的東西也就是純文字的 code 而已 XDD,當然如果有意願想要改進它,也歡迎送 pull request 過來。

沒有留言: