2013年1月13日日曜日

Synergyを自動起動するようにする

Synergyを設定して以前より便利になりました。でも、だんだん直したい点も出てきました。以下に挙げます。
  1. Windowsの左画面が遠い。
  2. Synergyのアイコンが2個表示される。
  3. ログイン時に自動起動したい。
  4. ログメッセージが多い。
順番に、説明と対策を書いていきます。

1. Windowsの左画面が遠い

Synergyからは、Windowsの画面は1つあるようにしか見えないのですが、実際は24インチモニタが2台並んで接続されています。そのうちの右側のモニタをMacとWindowsで共用しています。ですので、Macのモニタの画面の左端からWindowsの左端のスタートメニューまで行こうとすると、距離が1920 x 2あるので移動が大変です。(何か設定があるのかもしれませんが)

実際の見た目は以下のようですが、
#   mon.1      mon.2     MB Air
# +--------+ +--------+ +-------+
# |Win7    | |MBA/Win7| |MBA    |
# |        | |        | |       |
# +--------+ +--------+ +-------+

Synergyからは以下のように見えます。

#   mon.1      mon.2      mon.2     MB Air

# +--------+ +--------+ +--------+ +-------+
# |Win7    | |Win7    | |MBA     | |MBA    |
# |        | |        | |        | |       |
# +--------+ +--------+ +--------+ +-------+


現状では、Synergyの設定を変えて、以下のようにMacのモニター2(メニューバーのある方)の下に、Windowsのモニタ1が来るようにしています。

# +--------+ +-------+
# |MBA     | |MBA    |
# |        | |       |
# +--------+ +-------+
# +--------+ + - - - -+
# |Win7    | |Win7    |
# |        | |        |
# +--------+ + - - - -+
物理的には、MBAの左側画面とWin7の右側が共用されていて、普段はMacの画面が表示されているわけです。ちょっとわかりづらいですかね。Mac上でマウスを下に持って行くと、Windowsの画面の上からマウスが下りてきます。これで、マウスの大移動をする必要がなくなり、楽になりました。


2. Synergyのアイコンが2個表示される

Dock上や、command + tabキーを押した際に、Synergyのアイコンが2個表示されています。
Synergyはいったん設定した後は、特に操作対象にはなりませんので、非表示でかまいません。
これには、アプリケーションファイルのパッケージを開き、その中のInfo.plistを修正します。
Info.plistをエディタで開いて、<dict>と</dict>で囲まれた領域に次の2行を追加します。

<key>LSUIElement</key>
<true/>

これで、Dock等にアイコンが表示されなくなります。また、注意点としてFinder上での起動操作等も出来なくなりますので、次の3, 4等の対策を行った後に変更するのがいいと思います。

3. ログイン時に自動起動したい
4. ログの出力が多い

Windows側のSynergyクライアントはログイン時に自動的に起動されます。Macでもログイン時に起動したいと思います。単純にSynergysのDockアイコンを「ログイン時に起動」と設定してもうまくいかなかったので、ちゃんとした方法を調べました。
まず、サーバの起動方法は、Synergyのwikiサイトをいろいろ調べると

$ synergys --config /path/to/synergy.conf

でコマンドラインから起動する方法が示してありました。また、Mac OS Xでは起動はlaunchdで行うのがよいとのことでした。このブログを書いている時点(1/13)では、サーバーのProperty List (plist)ファイルの例はまだなくソースコードを見てほしいという記述なっていました。
以下に現在使っているplistファイルの例を記載します。


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
          "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <!-- Mac OSX only: Copy this plist file into [~]/Library/LaunchAgents to start synergy server automatically. Make sure you change configuration file below -->
  <dict>
    <key>Label</key>
    <string>org.synergy-foss.org.synergys.plist</string>
    <key>OnDemand</key>
    <false/>
    <key>ProgramArguments</key>
    <array>
      <string>/Applications/Synergy.app/Contents/MacOS/synergys</string>
      <string>--no-daemon</string>
      <string>--debug</string>
      <string>NOTE</string>
      <string>--config</string>
      <!-- Replace this path with the path to your synergy configuration -->
      <string>/Users/your_user_id/.synergy.conf</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
  </dict>
</plist>


以上の内容を、
~/Library/LaunchAgents/org.synergy-foss.org.synergys.plist
として作成します。
注意点というほどではありませんが、次の点に注目してください。

  1. この例では、synergysはデーモンとしては起動せず通常のプログラムとして起動しています。
  2. --debugオプションにNOTEを指定して、ログファイル(/var/log/system.log)の出力を抑えています。これを指定しない場合、デフォルトはINFOのため、マウスが別のマシンの画面に出入りした場合や、クリップボードへのコピー、ペーストなどの際もログファイルに出力が出てきます。(synergys -hでhelpが見れます)
  3. --configオプションの引数で、confファイルを指定しますが、ここは好きな場所を指定してください。また、confファイル自体は、wiki等を参考に作成してもいいのですが、前の記事のようにSynergyから、FileメニューのSave configuration as... を選んで、自分のホームディレクトリの下に.synergy.conを保存するのが簡単だと思います。
Synergyから保存した時、バグかもしれませんが、confファイルのパーミッションにreadが付いていませんでしたので、修正してください。

$ less .synergy.conf
.synergy.conf: Permission denied

なんと、自分で作成したファイルなのに読めません。

$ ls -l .synergy.conf
--w-------  1 karuku  staff  737 11  9 11:48 .synergy.conf

あまり見たことのないパターンです。次のように修正してください。
$ chmod a+r .synergy.conf

ここまで準備が整った状態で、以下のコマンドでsynergysが実行されるよう指定します。
launchctl load ~/Library/LaunchAgents/org.synergy-foss.org.synergys.plist

ログインし直しても実行されるようです。
実行を止めたい場合は、以下のコマンドを使います。


launchctl unload ~/Library/LaunchAgents/org.synergy-foss.org.synergys.plist


これでログイン後の立ち上げなどは気にする必要がなく使えるようになりました。

ただ、ちょっとした問題として、Macのターミナルが最前面のアプリケーションになっていると、Windows側にマウスが入っていっても、キーボード入力がWindowsに渡らないという現象が起きています。また、その状態でWindowsのExplorer上でスクロールバーをマウスで操作するとターミナル側の行がセレクトされたりの現象も起きています。
また、Windows上にマウスが移動している場合も、Macの画面上にマウスポインターが現れたりしているようですね。通常は、Windowsの画面を見ているので気にならないとは思いますが。

最後に、次の記事にMacがスリープして解除された後にWindows上のマウスのスピードが速くなる現象の対処について書きたいと思います。

0 件のコメント:

コメントを投稿