fcitxのIMの設定順序をコマンドラインから変更するには

はじめに

fcitxのIMを変更するのには、fcitx-configtoolを使います。

f:id:kenhys:20150531033816p:plain

IMが複数あっても、キーを割り当てて切り替えられるという塩梅です。 キーボードのレイアウトが変わらないならそれであんまり困りません。

ただ、レイアウトの異なる外部キーボードをつないだりはずしたりというのが頻繁にあると、とたんに面倒になってきます。(直接入力はキーボードレイアウトを合わせておかないといけないため。もしかしたらいい方法があるのかもしれないがわかっていない。)

fcitx-remoteは?

fcitx-remoteというコマンドがあります。これには -sオプションがあって、指定したIMに直接切り替えることができます。 しかし、直接入力をこのレイアウトにというのはできません。

そこでfcitx-imlistを作りました

ようするにfcitx-configtoolがやっていることをコマンドラインから実現できればいいわけです。

そのためには、fcitx_input_method_get_imlistfcitx_input_method_set_imlist を呼んであげるといいことがわかりました。

というわけで、そのためのコマンドを作ってみました。 (世の中にそういうのすでにあるような気もするけど調べていない。)

それが、fcitx-imlistというわけです。 オプションを指定してあげると切り替えられるというようにしました。

% fcitx-imlist -s fcitx-keyboard-us,mozc

上記は、直接入力は英語キーボードで、日本語入力はmozcにするための設定方法です。 直接入力は日本語キーボードで、日本語入力はmozcに戻すためには次のようにします。

% fcitx-imlist -s fcitx-keyboard-jp,mozc

オプションに指定するインプットメソッドのリストは -l オプションで取得できます。

日本語キーボードとmozcと英語キーボードの設定があると次のように表示されます。

% fcitx-imlist -l
fcitx-keyboard-jp (キーボード - 日本語) [enabled]
mozc (Mozc) [enabled]
fcitx-keyboard-us (キーボード - 英語 (US)) [enabled]

ソースコードは、GitHubで公開しています。

github.com

Groonga 5.0.0 on ARMをaptで簡単にインストールするには

はじめに

Groonga 5.0.0がリリースされたので、手元にころがっているarmhfっぽいボードにGroongaをインストールしてみることにした。

ちょっと古めの記事ならQiitaにある。

groonga - Grooga on ARM - Qiita

4.0.8でビルドを試したやつは以下にころがっている。けれどもdpkgで個別にインストールするのはつらい。

http://packages.groonga.org/tmp/armhf/unstable/

というわけで、実機でパッケージを適当にビルドしつつ、Groongaのリポジトリ用のスクリプトをごにょごにょしてaptリポジトリを用意してみた。

aptで簡単にインストールしてみよう

まずはkeyringをインストールする。

wget http://packages.groonga.org/debian/pool/unstable/main/g/groonga-keyring/groonga-keyring_2012.05.29-1_all.deb
sudo dpkg -i http://packages.groonga.org/debian/pool/unstable/main/g/groonga-keyring/groonga-keyring_2012.05.29-1_all.deb

次にapt-lineを追加する。

% cat /etc/apt/sources.list.d/groonga.list
deb http://packages.groonga.org/armhf/debian/ unstable main
deb-src http://packages.groonga.org/armhf/debian/ unstable main

あとは普通にaptでインストールするだけ。

sudo apt-get update
sudo apt-get install groonga

まだお試しなので、unstableのみ。 これはdebian公式のほうが5.0.0に追従するまでのあくまで繋ぎです。

OpenStreetMapに対応したSphinxの拡張を書いてみた

はじめに

週末ちまちまとOverview — Sphinx 1.2.3 documentationの拡張を書いていた。

動機はドキュメントに地図を埋め込みたかったから。探してみたら先人はいるものですでにそのような拡張はあった。sphinxcontrib-googlemapsがそれ。

sphinxcontrib-googlemaps 0.1.0 : Python Package Index

あるのだが、次の点が不足していた。

  • オフラインでも地図を参照したい
  • ミリ秒表記も受け付けて欲しい
  • マーカーとか矩形とか円とかもたくさん表示したい
  • 埋め込んだドキュメントを配布したい

googlemapsを改造するのもありだけど、ドキュメントの配布の点でちょっとひっかかる。 というわけで、別案としてOpenStreetMapを採用してみるか、ということになった。

OpenStreetMap

leaflet.jsを使う

OSMではleaflet.jsを使うのが主流のようである。

Leaflet - a JavaScript library for mobile-friendly maps

ただ、ラベルまわりはちょっとそのままだといま一つ感があったので、

Leaflet/Leaflet.label · GitHub を使うことにした。こちらのほうがラベルの表示は好みというのがその理由。

sphinxcontrib-openstreetmap

というわけであれこれ試行錯誤しつつopensteetmapディレクティブを実装した。このディレクティブはこんな感じで使う。

.. openstreetmap:: Example Taiyaki in rectangle
   :id: taiyaki_in_rectangle
   :location: 35.7119,139.7983
   :zoom: 15

   "たいやき探索範囲", rectangle: 35.7185,139.7912,35.7065,139.8069
   "根津のたいやき", location: 35.720253,139.762573
   (以下略)

矩形を描画してみたりもできるようにした。こんな感じ。

f:id:kenhys:20150113025524p:plain

駅から500mの円を描いたりもできる。こんな感じに。

f:id:kenhys:20150113025532p:plain

オフライン対応については、だいたいこのくらいのタイルを事前に取得しておけばいいよね、くらいでやっているので力技感あるけどひとまず目的は達成できた気がしている。

kenhys/sphinxcontrib-openstreetmap · GitHub

まだ、記法とか固まってないし、あれこれ足りないものがある。 そこそこ使えるようになってきたら、いずれはsphinxcontribにもっていきたい。

Desire HDでリカバリを変更する方法

はじめに

Desire HD(001HT)というもう発売されてから4年が経過したスマートフォンがあります。 これまで4EXT Developmentというリカバリを使っていたのですが、あんまりメンテされてない感があるのと、Android 5.xのカスタムROMを導入する際にぼちぼち失敗する話が漏れ聞こえてきたので、リカバリを変更することにしました。

rulesを書き換えよう

まずは、fastbootに切り替えます。

% adb reboot bootloader

次にデバイスを認識しているか確かめます。

% fastboot devices
no permissions  fastboot

残念、認識していません。

いざfastbootで繋ぐのに、認識されなかったので以下のようにrulesを変更しました。

% cat /etc/udev/rules.d/51-htc-desire-hd.rules
# debug mode(recovery)
SUBSYSTEM==”usb”, ATTRS{idVendor}==”0bb4″, ATTRS{idProduct}==”0ca2″, MODE=”0666″
# normal mode
SUBSYSTEM==”usb”, ATTRS{idVendor}==”0bb4″, ATTRS{idProduct}==”0c91″, MODE=”0666″
# fastboot mode
SUBSYSTEM==”usb”, ATTRS{idVendor}==”0bb4″, ATTRS{idProduct}==”0ff0″, MODE=”0666″
# hboot mode
SUBSYSTEM==”usb”, ATTRS{idVendor}==”0bb4″, ATTRS{idProduct}==”0c94″, MODE=”0666″

みえているっぽい。

% sudo `which fastboot` devices
HT0B5RXXXXXX  fastboot

リカバリを焼こう

あとは、fastboot flash recoveryでお好みのリカバリにすればOK。

% sudo `which fastboot` flash recovery work/android/desirehd/openrecovery-TWRP-ace-2.8.1.1-unofficial.img
sending 'recovery' (7470 KB)...
OKAY [  1.255s]
writing 'recovery'...
OKAY [  1.094s]
finished. total time: 2.349s

まとめ

今回は、Desire HDでリカバリを変更する方法をいまさらまとめてみました。 何をやっているんでしょうね。

Desire HDをつないでadbからアクセスできるようにするには

はじめに

Ubuntuを使っていたと思ったらなぜかルートファイルシステムがごっそりFedora 18になっていた、という愉快な経験を最近しました。 前向きにOSを再インストールすることにしたのはいい思い出です。(白目)

再インストールしたので、PCからスマートフォンにadbでアクセスするときの設定もやりなおしです。

Desire HD(001HT)という四年前の端末ですが、まだなんとかだましだまし使っています。

udev rulesの再設定

udevのrulesを書きます。 idProductについては、lsusbで調べます。

% cat /etc/udev/rules.d/51-htc-desire-hd.rules
# debug mode(recovery)
SUBSYSTEM==”usb”, ATTRS{idVendor}==”0bb4″, ATTRS{idProduct}==”0ca2″, MODE=”0666″
# normal mode
SUBSYSTEM==”usb”, ATTRS{idVendor}==”0bb4″, ATTRS{idProduct}==”0c91″, MODE=”0666″

通常時とリカバリではidProductが違うので注意が必要です。

adbの再起動

sudo adb kill-server
sudo adb start-server

接続確認その1

あとはadbで見えているか確認します。

% adb devices
List of devices attached
HT0B5RX04331    device

接続確認その2

adb reboot recoveryで今度はリカバリモードにします。

% ./platform-tools/adb devices
List of devices attached
HT0B5RX04331    recovery

どちらでもadbで見えていることが確認できました。 これで安心してカスタムROMを焼けますね。

awesomeのmasterをインストールするには

ソースコードを手に入れる

awesomeインストールしたばっかりですが、masterを試してみたらという悪魔の囁きが聞こえた気がしてぶちこんでみました。

それっぽいドキュメントがあるような気がしたが、そうでもなかった。 Building awesome - awesome

まずは、git clone。

git clone http://git.naquadah.org/git/awesome.git

必要なパッケージのインストールとmake

xcbのパッケージに依存しているので、開発パッケージをいろいろインストールしないといけない。

自分の場合は以下を追加でインストールする必要があった。

 sudo apt-get install libxcb-cursor-dev libxcb-icccm4-dev libxcb-keysyms1-dev libxcb-util0-dev libxcb-xinerama0-dev libxcb-xtest0-dev libxcb1-dev libxdg-basedir-dev

人によっては他にも要求されるかもしれない。依存関係を手っ取り早く調べるにはawesomeConfig.cmakeを眺めるといいでしょう。

あとはおもむろにmakeを実行するだけ。勝手にcmakeも含めて実行してくれます。

ひとつ注意するとしたら、ImageMagickを使うこと。GraphicsMagickは対応していないようなので。 アクティブな画像と非アクティブな状態の画像を生成しているんだけど、ImageMagickでしか対応していない-channel Aを使っているのです。

インストール後にやること

sudo make installで/usr/local以下にインストールされているはずなので、あとはシンボリックリンク祭り。

sudo ln -sf /usr/local/etc/xdg/awesome /etc/xdg/awesome
sudo ln -sf /usr/local/share/xsessions/awesome.desktop /usr/share/xsessions/awesome.desktop

これで再度ログインしなおすとmasterのawesomeを使うことができるようになる。

ただし、これまで3.4系を使っていたので、設定ファイルに互換性がなくなってしまっている。 ひとまずは、/etc/xdg/awesome/rc.luaを.config/awesome/rc.luaにコピーするといわゆるデフォルトの状態で起動できるはず。

はじめてのawesome

会社のブログの方ばっかでこっちは放置ぎみだったので久しぶりになんか書こうということでawesomeについて書くことにした。

awesomeとは

about - awesome window manager

ウィンドウマネージャのうちの一つ。Ubuntuにもパッケージがある。これを書いている段階ではUbuntu 14.04を使っているので、awesome 3.4.15がパッケージでインストールできるようになっている。

昔軽いWMを探して、 The Golem X11 Window Manager

とか ~tuomov – Software (Ion v1のころ?)とか似た傾向のWMを使っていたことがあったような気がしなくもない。

awesomeをインストール

普通にsudo apt-get install awesomeだけで、lightdmから選択できるようになっている。とても便利。 ただし、Windowsキーがあることが前提になっているっぽいので、そのあたりは適宜設定しないといけなかった。

カスタマイズあれこれ 

~/.config/awesome/rc.luaをいじくるのが定石。ここからが本番。 /etc/xdg/awesome/rc.luaからコピーしてカスタマイズしましょう。

ログイン直後にキーをきりかえたい

CtrlとCapsLockは入れ替えたい派です。そんなときは、setxkbdmap -option "ctrl:swapcaps" を実行しないといけない。 これはrc.luaに以下を記述するといい。

awful.util.spawn_with_shell("setxkbmap -option 'ctrl:swapcaps'")

Windowsキーの代わりを設定する

英語キーボードかつWindowsキーがないので、mod4を明示的にわりあてないといけない。 ひとまず、.Xmodmapで右Altをモディファイヤーとして設定することにした。

% cat ~/.config/awesome/.Xmodmap
remove mod1 = Alt_R
add mod4 = Alt_R

デフォルトのテーマを変更する

特にGTK+のテーマをこれまで設定していなかったせいか、クラシックぽくて古くさい。

Customizing GTK Apps - awesome

これの通りにClearlooksを設定した。

画面をロックするには

gnome-settings-daemonを起動すればこれまでどおりCtrl+Alt+Enterでロックできるが、なんか負けた気がするので代替案をさがしてみた。

xtrlockというのがあるようで、xtrlock -bでとりあえず画面をロックできる。 あとで、キーバインディングも設定しておこう。

ファイルマネージャ使いたい

まぁ、おとなしくmod4 + Rでnautilusを起動しよう。

常にウィンドウを最大化して使いたい

rc.luaにウィンドウの初期レイアウトを設定している箇所があるからそれをいじればいい。 デフォルトがfloatingになっている。まぁあとからmod4 + Spaceで変更できるからそんなに気にしなくてもいい。

layouts =
{
    awful.layout.suit.floating,
    awful.layout.suit.tile,
    awful.layout.suit.tile.left,
    awful.layout.suit.tile.bottom,
    ....

外部ディスプレイと組み合わせて使う

ノートPC + HDMI接続のディスプレイだと、なぜかノートPCのディスプレイが使えない状態に。 なんか設定してあげないといけないっぽいがまだ調べていない。 HDMIを引っこ抜くとノートPCのディスプレイが映らない状態なのがアレ。

使ってみた感想

これまでUbuntu 14.04のデフォルトで使っていたので、アイコンをぽちぽちクリックしてアプリを起動するのに慣れていたせいか、mod4 + Rで起動するスタイルはだいぶ新鮮。ただし、コマンドを覚えていないと起動すらできないという罠がある。スプレッドシートを編集するのにlocalcを知らないと、調べるはめに。(Debianメニューからたどれるけど。。。)

とはいえ、おおむねキーボードだけでもそこそこ快適に暮らせる。自分の場合はトラックポイントも併用しているし。

ただ、DBus-まわりはまだ設定が足りてないせいか、挙動が怪しい気がしているが、まだ切り分けができていない。 あとはウィジェットの設定が今ひとつわかりにくい気がしている。が、これは多分慣れとドキュメントをきちんと読みこなせていないせいだろう。