Orange Pi 3 TigerVNC + uim anthy

いままではTightVNCを導入していたのですがTightVNCには欠点があって一部特定のQTアプリケーション下ではキーボードマッピングが滅茶苦茶になってしまいます。

またやはりQTアプリケーションではscim-anthyからの日本語入力ができません。
環境変数など試してみたのですがうまいこといきませんでした。
こちらもuim-anthyに変更してみたいと思います。

TigerVNC

TigerVNCはTightVNCからforkしていますがQT関連は改善されているようです。
TigerVNCのインストール

# apt install tigervnc-standalone-server tigervnc-common

ターミナルを開いてsshでログインvcnserverを起動します。
-localhost noを指定しないとRaspberryPi3から接続できません。
https://qiita.com/Tats_U_/items/c170f61a5e03ae045128

$ vncserver -localhost no

おそらく最初の起動でパスワードを聞かれると思いますが設定されない場合は手動で設定します。(当サイトではtightvncの~/.vnc/passwdが使えました)

$ vncpasswd

設定ファイル vnc.conf

tigervncをインストールすると設定ファイル/etc/vnc.confが作成されます。
ユーザーの設定ファイルは~/.vnc/vnc.confが有効になりますが/etc/vnc.confをそのままコピーするとエラーになるので必要な項目のみ記載します。
書式はtightvncと同じでlocalhost noを追加します。
~/.vnc/vnc.conf

$geometry     = "850x528";
$depth        = 24;
$desktopName  = "Orange Pi 3";
$localhost    = "no";

vncserverの起動、終了

sshでログインしてのvncserverの起動、終了は以下のコマンド

$ vncserver :1
$ vncserver -kill :1


:1 は省略可

キーバインド xmodmap

tightvncと比べるとtigervncはxmodmapの値も変わってきます。
mod4 Super_L (0x85),Super_R (0x86)が割り当てられています。
各キーの値も変わっているのでxbindkeysを設定している場合は再設定が必要です。

$ xmodmap
xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x42)
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Alt_R (0x6c),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3      
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

clipboard

tightvncのホスト〜クライアント間のコピー、ペーストはautocutselを実行しておくことで可能でしたがtigervncではvncconfigを実行します。
vncconfigの実態はtigervncconfigですね。tigervncをインストールすると盛れなく付いてきます。

$ vncconfig nowin=1 &


vncconfigを実行するとclipboardのウインドウが現れますがこのウインドウが開いている時だけがコピー、ペーストが可能になります。ホスト〜クライアント間のコピー、ペーストは常に使うので起動時からバックグラウンドで実行するほうが使いやすいです。
helpを見るとparameters nowinを1にすると良いようです。ダイアログは出ずにvncconfigを実行します。日本語のコピペはダメです。
これをxstartupに加えておきます。

フォントサイズの変更

tigervncのフォントサイズはtightvncで設定した値よりも1.5ポイントほど大きく表示するようです。
xtermは~/.Xresources、メニュー関係はlxappearanceで変更
その他アプリケーションで変更
必要であればdwmもフォントサイズを変更して再コンパイル

uim-anthy

uim-anthyのインストール

# apt install uim uim-anthy

~/.cshrc (scimから変更)

setenv  LANG   ja_JP.UTF-8
setenv  XMODIFIERS @im=uim
setenv  GTK_IM_MODULE uim
setenv  QT_IM_MODULE uim

~/.vnc/xstartup に追加

uim-xim &
uim-toolbar-gtk &

TigerVNC + uim anthyのxstartup

~/.vnc/xstartup

#!/bin/csh
xrdb $HOME/.Xresources
xsetroot -solid gray3
vncconfig nowin=1 &
xbindkeys &
xterm -e ranger &
dwm &
uim-xim &
uim-toolbar-gtk &

デフォルトは半角/全角 or Shift+Spaceで漢字入力

vncserverの起動

debianではsystemdのサポートは無いようです。必要であれば作成するしか無いのですが面倒なのでtightvncの時と同様crontabの設定で起動しています。(当サイトはこれで充分)

$ crontab -e
@reboot sudo -u pi /usr/bin/vncserver

clientから接続
clientのRaspberryPi3にはtigervnc-viewerをインストールしています。

# apt install tigervnc-viewer


vncviewer hostnameを実行すると簡単なパスワードダイアログが出現します。

通常は上記のダイアログからパスワードで認証しますが-passwdオプションを指定することでパスワードレスで認証することができます。
vncserver(OrangePi3)の~/.vnc/passwdファイルをclient(RaspberryPi3)の適当なディレクトリ(~/.vnc)にコピーします。ファイル名はわかりやすい名前(opi3)に変更します。
ディレクトリはchmod 600,ファイルはchmod 400にしておくといいでしょう。
下記のコマンドを実行します。

$ vncviewer -passwd /home/pi/.vnc/opi3 orangepi3:1


デスクトップアイコンなどに仕込んでおくといいと思います。
パスワードを打つことも無くいきなりvncserverに接続が可能になります。
このためにtigervncにしたという噺もあります。

QTアプリのキーマッピング、日本語入力もOKです。