DesireHDで標準のフォントを差し替える

DesireHDの標準のフォントに特に不満を持っていなかったのだけれども、先日試しにNasuフォントを導入してみた。

Nasuフォント : 見た目が似ている文字を判別しやすくするフリーフォント - itouhiroはてなブログ

基本的には、fonts.xmlとfallback_fonts.xmlを書き換えて、フォントをpushする。 このとき、/systemがroなので、rwへremountしておかないといけない。

su
mount -o rw,remount -t ext4 /dev/block/platform/msm_sdcc.2/by-name/system /system 

あとは、adbでpushしてからrebootすれば置き換わる。

adb push update/system/etc/fallback_fonts.xml /system/etc/fallback_fonts.xml
adb push update/system/etc/fonts.xml /system/etc/fonts.xml
adb push update/system/fonts/Nasu-Regular.ttf /system/fonts/

fonts.xmlは該当エントリのフォントを変更するだけ。

% diff -u fonts.xml.orig fonts.xml
--- fonts.xml.orig      2015-09-19 12:51:02.658045246 +0900
+++ fonts.xml   2015-09-19 13:53:37.371494962 +0900
@@ -309,7 +309,7 @@
         <font weight="400" style="normal">NotoSansHant-Regular.otf</font>
     </family>
     <family lang="ja">
-        <font weight="400" style="normal">NotoSansJP-Regular.otf</font>
+        <font weight="400" style="normal">Nasu-Regular.ttf</font>
     </family>
     <family lang="ko">
         <font weight="400" style="normal">NotoSansKR-Regular.otf</font>

fallback_fonts.xmlも同様に変更しておく。

% diff -u fallback_fonts.xml.orig fallback_fonts.xml
--- fallback_fonts.xml.orig     2015-09-19 12:56:50.494825355 +0900
+++ fallback_fonts.xml  2015-09-19 13:54:01.747787026 +0900
@@ -370,7 +370,7 @@
     </family>
     <family>
         <fileset>
-            <file lang="ja">NotoSansJP-Regular.otf</file>
+            <file lang="ja">Nasu-Regular.ttf</file>
         </fileset>
     </family>
     <family>

ROMを焼くたびに再度置き換えるのは面倒なので、その場合にはZIPmeを使う。 ZIPmeでupdate.zipを作成すると、ROMを焼いたあと追加でリカバリから適用するだけでよい。

ZIPme - Google Play の Android アプリ

fcitx-imlist 0.3.0でトグル切り替えをサポート

fcitx-imlist 0.3.0をリリースしました。 今回のリリースでは、-tオプションを追加し、インプットメソッドの組をトグルで切り替えられるようにしました。

この機能はデフォルトのインプットメソッドの組と代替となるインプットメソッドの組をあらかじめ登録しておくと、-t オプションで切り替えられるというものです。

例えば、デフォルトでjp,mozcを登録しておき、代替としてus,mozcを設定してあるとします。

    % gsettings get org.xdump.fcitximlist fcitx-imlist-default
    'jp,mozc'
    % gsettings get org.xdump.fcitximlist fcitx-imlist-alternative
    'us,mozc'

この状態で-tを指定するとデフォルト設定と代替設定を簡単に切り替えられるようになります。

これまでは、fcitx-imlist -s us,mozcfcitx-imlist -s jp,mozcを都度実行して切り替えていたのが -tでシンプルに切り替えられるようになりました。という地味な改良です。

github.com

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を焼けますね。