เวลาใช้ ก็ใช้เป็น routine เลย
เปิด terminal ที่ workspace 1
เปิด eclipse ที่ workspace 2
เปิด emacs ที่ workspace 2
เปิด firefox ที่ workspace 3
ทุกวันตอนเปิดเครื่อง ก็ต้องไล่ start
แล้วก็ไล่วางให้ถูก workspace
ก็เลยเกิดความคิดจะลอง customize ให้มัน start ให้เอง
โปรแกรมที่ลองใช้ก็คือ Sawfish
ซึ่งเป็น Window manager ที่เขียนด้วย Lisp
ทำให้ได้หัดเขียน lisp ไปในตัว
เริ่มด้วยความต้องการอย่างง่ายสุดก่อน
กดครั้งเดียวได้โปรแกรมทุกตัวที่ต้องการ
(defun run-all ()
(start-emacs)
(start-eclipse)
(start-firefox)
(start-term))
(defun start-emacs ()
(system "emacs &"))
...
start มาได้อย่างนี้แล้ว แต่ทุกตัวก็ยังกองกันอยู่ที่ workspace เดียว
ก็เลยเขียน function ขึ้นมาจัด workspace
(defun arrange-ws ()
(move-window-to-workspace (emacs-win) 0 1)
(move-window-to-workspace (eclipse-win) 0 1)
(move-window-to-workspace (firefox-win) 0 2))
(defun emacs-win ()
(get-window-by-name-re "^emacs"))
(defun eclipse-win ()
(get-window-by-name-re ".Eclipse"))
...
จัดการ bind function เข้ากับ short-cut key
ก็เป็นอันเรียบร้อย
(bind-keys global-keymap
"H-a"
`(run-all))
ขั้นถัดไป ก็คือทำให้โปรแกรมมันฉลาดกว่านี้
กดครั้งเดียวพอ ไม่ต้องกด 2 ครั้ง
(เนื่องจากเวลาสั่ง system เราระบุว่าให้ start process
แต่ความที่มันเป็น asyncronous ทำให้เราไม่รู้ว่า process มัน start เสร็จหรือยัง
ทำให้ไม่รู้ว่าควรจะใช้คำสั่ง switch workspace ตอนไหนดี)
Link
Sawfish code library - แหล่งรวม code ให้ลอก
1 comment:
เจ๋งฮะ
Post a Comment