最近更新: 2012-01-11

Synergy - 軟體KVM 使用說明

我的辦公桌上有兩台電腦螢幕以及兩台電腦。這兩台電腦各接一台電腦螢幕。但我不想要在桌上放兩組鍵盤與滑鼠,所以我需要一個工具,可以讓這兩組電腦共用同一組鍵盤與滑鼠。這種工具叫「KVM」。本文說明的是一套基於軟體實作的 KVM 工具,它就是 Synergy

Synergy 是一套自由軟體,且支援多種平台,計有 Windows, Mac OS 和 Linux。它可以讓許多組電腦共用一組鍵盤與滑鼠。切換方式也很聰明,使用者只要設定好各個螢幕的位置後,當你的滑鼠指標碰到螢幕的邊緣時,Synergy 就會將你的鍵盤與滑鼠的連接對象切換到另一台電腦。

在 Debian 與 Ubuntu 的套件庫中都可以發現 synergy 套件,使用軟體管理員或 apt-get 工具就可以安裝。套件庫中還有一個 quicksynergy 的圖形介面設定工具,建議第一次接觸 Synergy 的使用者一併安裝 quicksynergy 。

Synergy 在使用時,將電腦分成兩種角色。實際接著鍵盤與滑鼠的電腦,就是 synergy server 的角色,本文又稱之為控制端電腦。其他想共用鍵盤與滑鼠(本身沒接)的電腦則是 synergy client ,本文又稱之為使用端電腦。

負責 synergy server 的電腦,需要設定一份組態文件,並執行 synergys 這個程式。而扮演 synergy client 的電腦則是執行 synergyc 這個程式。

Synergy server

使用 quicksynergy 設定控制端

使用 quicksynergy 工具時,負責 synergy server 的電腦僅需要設定「Share」頁的內容。設定項目也很簡單,就是指定其他使用端電腦(synergy client)的名字。

quicksynergy 把運作環境想像成使用者在同一張辦公桌上,放了好幾組電腦配螢幕,所以需要使用者告訴 quicksynergy 你的螢幕是怎麼放置的。它認為控制端電腦(Synergy server)就是放在正中間的螢幕,而使用者應該在「Share」頁面中,指定其他四個位置的使用端電腦的螢幕名稱。這名稱隨便使用者命名,只要你自己不會搞混就行。

當你指定好螢幕名稱後,按下「Execute」鈕,quicksynergy 就會將你的設定的組態內容儲存在 "$HOME/.quicksynergy/synergy.conf",並啟動 synergys 程式。你之後可以直接叫 synergys 根據 $HOME/.quicksynergy/synergy.conf 的組態啟動,不需要每次都透過 quicksynergy 。

手動編寫控制端組態文件

quicksynergy 只能讓使用者指定其他四組使用端電腦的位置。但事實上,Synergy 可以設定超過4組以上的使用端電腦,這就需要透過手動編寫組態文件才能實現。

Synergy server 的組態文件分成兩個區段。第一段 screens 設定各個螢幕名稱,第二段 links 描述螢幕的相對位置。

舉例來說,若我的桌上有三組電腦,放中間的是控制端電腦,使用端電腦放左、右兩邊。首先,我在組態文件的 screens 區段中,為這三組電腦的螢幕取名字。中間的叫 main-desktop ,左邊的叫 left-box,右邊的叫 right-box 。內容如下:

section: screens
    main-desktop:
    left-box:
    right-box:
end

接著要在 links 區段中,描述這三台螢幕的相對位置。這稍微考驗了使用者對於物體的空間相對位置的文字表達能力。以本文之例,這三台螢幕的相對位置就是「main-desktop 的左邊是 left-box,右邊是right-box;而 left-box 的右邊是 main-desktop;right-box 的左邊是 main-desktop」。將這一句話寫成下列形式:

section: links
    main-desktop:
        left = left-box
        right = right-box
    left-box:
        right = main-desktop
    right-box:
        left = main-desktop
end

這兩段合起來,就是 synergys 需要的組態文件。我配合 quicksynergy 的位置,將組態文件儲存在 $HOME/.quicksynergy/synergy.conf 。

synergy.conf 完整內容
section: screens
    main-desktop:
    left-box:
    right-box:
end
section: links
    main-desktop:
        left = left-box
        right = right-box
    left-box:
        right = main-desktop
    right-box:
        left = main-desktop
end

當我準備好這份組態文件後,我只需要執行下列指令就可以啟動 Synergy 的控制端功能了。

 /usr/bin/synergys --config $HOME/.quicksynergy/synergy.conf

參數 --config 指示組態文件的路徑。如果你需要測試調整你的組態內容時,你可以在執行指令中加上參數 -f,這將令 synergys 在前景運作,你按 Ctrl+C 就可以終止程式。

當你確定你的設定沒問題後,你可以將這行指令加在你的桌面自動啟動項目中。GNOME 桌面的使用者,可以從開始工作列 -> 「系統」 -> 「偏好設定」 -> 「始動應用程式」 (或啟動應用程式) ,新增自動執行項目。(GNOME Panel -> System -> Preferences -> Startup Applications)

Synergy client

相較於 Synergy server 的設定內容,Synergy client 的使用方式就簡單多了,甚至根本不需要圖形介面或組態文件。

使用 quicksynergy 啟動 Synergy 使用端功能時,請設定「Use」頁面的內容。「Server」欄填入控制端電腦的 IP 位置(或是主機名稱,如果你有設定DNS或hosts的話)。「Screen」欄填入這台使用端電腦的螢幕名稱,螢幕名稱配合控制端電腦上的設置。最後按下「Execute」鈕,完成。

透過指令列的方式,則是執行下列指令:

 /usr/bin/synergyc --name $SCREEN_NAME $SERVER_IP

參數 --name 指定這台用戶的螢幕名稱。請把 $SCREEN_NAME 換成你命名的螢幕名稱,將 $SERVER_IP 換成控制端電腦的 IP 位置或主機名稱。如果你需要測試調整你的組態內容,你可以在執行指令中加上參數 -f,這將令 synergyc 在前景運作,你按 Ctrl+C 就可以終止程式。

當你確定你的設定沒問題後,你可以將這行指令加在你的桌面自動啟動項目中。GNOME 桌面的使用者,可以從開始工作列 -> 「系統」 -> 「偏好設定」 -> 「始動應用程式」 (或啟動應用程式) ,新增自動執行項目。

使用事項

Synergy 不能共用螢幕。如果你只有一台螢幕的話,不適合用 Synergy。

synergys 與 synergyc 都需要連接 X server。這表示你的控制端電腦與使用端電腦都必須進入 X 視窗環境之後,才能透過 Synergy 共用鍵盤與滑鼠。如果你的環境是在單純的文字終端機共用鍵盤,那麼 Synergy 不適合。你可能還是需要硬體 KVM 。

相關文章
樂多舊網址: http://blog.roodo.com/rocksaying/archives/18743053.html

樂多舊回應
ystuan@gmail.com(PowerOp) (#comment-22276720)
Sun, 15 Jan 2012 23:45:44 +0800
看到國外有人說可以用來做pair programming ,你覺得呢?

另外, FLOSS Weekly 178 訪問了 Synergy 的作者 Chris Schoeneman ,他同時也是 BZFlag 的作者喔!
未留名 (#comment-22279408)
Wed, 18 Jan 2012 15:46:56 +0800
我嘗試著想像了一下。

兩個人坐在同一張辦公桌前,桌上放了兩組電腦(主機+螢幕+鍵鍵+滑鼠)。
然後司機的電腦作為 synergy 的 client 端,導航者想介入時,就把他的滑鼠移到司機的畫面中接手控制權。聽起來很不錯,不用搶鍵盤、滑鼠。

只是,這樣辦公桌會不會太擠了?

我的作法是這樣: 在 pair programming 時,若我需要輸入或示範操作動作時(我幾乎都是扮演導航者的角色),我會先喊「I have control」,然後接手司機的鍵盤。輸入完畢時,我會喊「You have control」,然後交還鍵盤。嗯... 潛艦電影看太多了。大家高興就好。