KING JIM ポメラDM200でEmacs、Vim、Ruby、Pythonが動くなんて素敵すぎる!
2018/11/14
価値ある情報をユーザー視点で発信するブログ
2018/11/14
Kindleハック、RICOH THETAハックなどでおなじみ @ichinomoto さんがKING JIM ポメラDM200(以降DM200)でSDカードにインストールしたDebian Linux(Debian 9.0 stretch)を、ポメラ元来の機能を全く損なうことなく起動できるようにしてくださいました。
DM200にDebian Linuxをインストールしてできること:
SDカード上のDebian Linuxを起動できるようにしても、従来通りの使い方もできるのです。
本来、DM200には印刷できないワープロのような機能しかないのですが、これによってかなりの自由度を獲得できたことになります。
※Caps Lockはポメラ側でもLinux側でもCtrlに変更できます
上記のページの通りにインストールを済ませると、SDカード上のDebian Linuxが起動できるようになります。Linuxの動作の安定感は実験レベルを超えて実用的です。
※Caps Lockはポメラ側でもLinux側でもCtrlに変更できます
SDカード上のDebian Linuxが起動できても依然標準のポメラの機能の素晴らしさは際立っているため、両者を連携して使う感じになる(同時に使えるのでなく、両者を起動し分ける)のですが、それが何とも楽しい。
工夫の余地のある文具が欲しいという人の目には、このDebian Linux on DM200は魅力的に映るかもしれません。
今回は、そんなDebian Linux on DM200のレビューと使いこなしをお届けします。
もくじ
本エントリは未完成です。
使いこなしには多種多様な知識が必要で、自分自身暗中模索中です。
自分が困難に直面し、調べ、解決しながら追記していくスタイルを取ることにします。
早速DM200でDebian Linuxを起動できるようにして使ってみました。
そもそもインストールするためにDM200を買いました。そんなやつは世界広しといえども僕ぐらいのものでしょう。
はじめにはっきりさせておくべきは、Linux側ではポメラの機能を使ったり、ポメラ側にあるATOKを使ったりができないということです。
僕が詳しく調べたわけではないのですが、ポメラ全部の機能を一つのプロセスの中に押し込んだ作りをしていて、機能の一部(ATOK)を取り出したり、他のプロセスと協調して動作させたりができないそう。
従ってVim、Emacsといったエディタに精通しているのでない限り、普段はポメラ側で文章作成をして、込み入ったことをやろうとなった時にLinuxを起動するという使い方になります。
この切り替えは比較的短時間、例えばポメラSyncの処理が終了するよりずっと早くLinuxの起動、Linux側からポメラ側への復帰ができるため、行ったり来たりがそれほど苦痛ではありません。
▲動画解説: X Window上のxtermからrebootコマンドで再起動し、ポメラ側に復帰。ポメラ側から電源ボタン長押しで電源オフ。Alt + 右Shift + 電源ボタンでLinuxを起動。fbtermのプロンプトが表示されたらEmacsを起動。
ポメラの編集画面からLinuxのコンソールのプロンプト表示まで | 22秒 |
Linuxのコンソールのプロンプトからポメラの編集画面表示まで | 10秒 |
初期状態ではLinux側でいちいちログインプロンプトが現れて面倒ですが、ログインの処理はバイパスして、いきなりコンソールのプロンプトまで現れるようにできます。(上表の時間は、そのカスタマイズ後のもの)
約580gの軽量なボディに上質なキーボードを搭載。集中できる執筆環境であると同時に、自分の思い通りにカスタマイズできるLinux環境を備えることになったDM200は大変魅力的。
ノートPCと同等のキーボードを備えていることが実用性に大きな影響を与えているということを繰り返し実感する感覚があります。
過去にあったLinux端末、NetWalkerはAC電源に縛られる点がイマイチだったのですが、DM200はモバイルバッテリー併用で場所や時間の制約を受けず使える点が代えがたい価値を生み出しています。
またNetWalkerとはキーボードの使い勝手が天地の差で、DM200には一日中キーをたたいていられるほどの快適さがあります。
※Caps Lockはポメラ側でもLinux側でもCtrlに変更できます
ただ、現状ではLinux側では液晶を閉じてサスペンド、液晶を開けてサスペンドからの復帰といった動作ができません。
サスペンド移行、サスペンドからの復帰は電源ボタンを押してものとなり、多少使い勝手が変わります(※)。
※要カスタマイズ。電源ボタンによるサスペンドは、X Window上のみ
Linux側のサスペンドの安定性は十分実用的で、基本的にX Windowを立ち上げ、サスペンドベースの運用をしています。
サスペンド運用だとシャットダウンベースの動作と想定されるポメラ側の起動より使い始めるまでにかかる時間が短かいため好印象です。
サスペンド中のバッテリードレインは1時間につき1.3%程度でNetWalkerよりは大分大きいものの、朝9時に給電を解除して以降カバンの中で、18時から使い始めても87%はバッテリーが残っている計算ですから、勝手移植のLinuxとしてはかなり優秀といっていいと思います。
もちろん、サスペンドでなくシャットダウンしていればバッテリーの残量は減りません。
約580gでフルキーボード付きの軽量Linux端末が欲しければ、検討の価値は十分あります。
現在は相場が以前より安くなって35,000円程度で買えるので、お値頃感も出てきました。
素のポメラも十分以上に実用的で、特にアウトラインモードが素晴らしい。
機能すべてがキーボードショートカットに割り当てられているというのは、スマートフォン、タブレットの世界にはないもの。
総じて生産的な作業をするのに特化したガジェットという風格が漂っており、タブレット、スマートフォンに神アプリがいくらあってもSNSからの雑音が多くて生産的な使い方ができたことがない、という人にはうってつけのガジェットになったといえるのではないでしょうか。
少なくとも、僕はそういうものを求めてDM200を買いました。
DM200でLinuxを起動できるようにするために必要なものは以下の三つです。
Linux起動までの手順は、おおまかには以下の通りです。
メーカー保証はなくなり、完全に自己責任ですが手順自体は非常に洗練されており、臆する必要はありません。事は非常にあっけなく終わります。
NANDのバックアップに使うSDカード(要8GB以上)と、インストール用のイメージを書き込むSDカード(要16GB以上)は共用でOK。
僕は16GBのSDカードにバックアップしたNANDをDVD-Rに保存した後に、同じSDカードにインストール用のイメージを書き込みました。
SDカードへのイメージの書き込みには「Etcher」を使用しました。Mac版、Windows版、Linux版があります。
GUIでイメージをSDカードに書き込めるため、黒い画面を一度も見ずにインストールを完了させることができます。
東芝のSDカードは少し容量が少なく、16GBのイメージが展開できない場合があるとのことです。東芝製のSDカードは避けておいた方がよさそうです。
このページでは具体的な作業手順には触れません。 @ichinomoto さんのページを参照してください。
SDカードにイメージを書き込んだ後、DM200上でインストール工程に入るとき、DM200側のNANDは工場出荷状態であることが前提となっています。
一度インストール作業を済ませた後、何らかの理由でSDカードにイメージを書き込み直す必要が出た場合は、バックアップしたNANDをリストアしてからでないと、WiFiやBluetoothがつながらない状態になります。
最初のインストール工程中に、DM200のオリジナルのファイルシステムからSDカードにドライバをコピーするからです。
それが面倒な場合は/opt以下をバックアップし、焼き直したSDカードに別途復元するとよいようです。
tar cvzf /mnt/vfat/opt.tar.gz /opt
NANDのリストア方法は @ichinomoto さんのページにある「DM200 eMMC NAND バックアップ/リストア ツール」のreadme.txtに書いてあります。
DM200に搭載されているのはKEIANのAndroidタブレットにも搭載されているARM系の統合型プロセッサであるRockchip RK3128で、クアッドコアのCPUを持ちます。
Hardware | Rockchip RK3128 |
Processor | ARMv7 Processor rev 5 (v7l) |
BogoMIPS | 48.00 |
Features | swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 evtstrm |
RAMは512MBで、コンソールでEmacsを使っている限りはきびきびと動作して快適です。
DM200用のLinuxイメージにはX Window System / Xfce4 (以降X Windowと呼びます)もプリインストール済み。
ポインティングデバイスがないため、キーボードでの操作、キーボードによるマウス操作手段を用意・マスターしなければなりませんが、X Windowを動かしてもそこそこ動きます。
Bluetoothマウス、USBマウスなどを接続することは可能ですが、筆者はマウス操作までキーボードで完結させるよう設定を施したのでマウスを接続して使うことはありません。
標準状態で使っているとモノクロディスプレイのようですが、実際はカラーディスプレイが搭載されています。Linuxで使うと、ディスプレイから色が出て驚きがあります。
解像度は1024pixel × 600pixel。液晶にはややSTNっぽいざわつきがあり、高画質というわけではありませんが、不満に感じるほどではない程度です。
DM200のキーボードは質のいいV字ギアリンクで、完全に主観ですが20万円クラスのモバイル向けノートPCに搭載されているキーボードをほうふつとさせる、上品で軽めのキータッチになっています。
Ctrl キーがAの横にありませんが、Linux側ではもちろん(設定方法後述)ポメラ側にもCaps LockとCtrlの入れ替え機能があり、Aの横にCtrlキーを持っていけます。
▲ポメラ側の「キー割付」機能でもCtrlとCaps Lockの入れ替えが可能。
先代のDM100よりキータッチは完全に勝り、ノートパソコンのそれに勝るとも劣りません。DM100より軽い力で入力ができます。
強化されたATOKの変換効率も相まって、よどみなく文章を入力していくことができます。
Linuxのコンソールをたたく用途でも当然不足がなく、フルスピードでのプログラミングも十分可能です。DM200で使うスクリプトをDM200上でいくつも作りました。
この手のデバイスで、キーボードがボトルネックにならない体験は新鮮。
ただしキーボードの配列はJIS。キーボードの配列に人一倍関心とこだわりが強いであろうLinuxユーザーは残念に思うかもしれません。
Linux側はいかようにも配列の変更ができますが、ポメラ側がカスタムできない点を歯がゆく感じることでしょう。
DM200の電源は内蔵かつ交換不能のリチウムポリマーバッテリーで、おおよその連続稼動時間は10時間。
MicroUSBポートから充電/給電ができますので、モバイルバッテリーと組み合わせれば実質的に稼働時間には制限はありません。
※Caps Lockはポメラ側でもLinux側でもCtrlに変更できます
MicroUSBに外部電源を接続した場合に流れる電流をRT-USBVACで計測しました。
バッテリー充電中に流れる電流は1.04A~1.28A。
バックライトの輝度 | 電流(バッテリー充電中) |
---|---|
レベル1 | 1.04A |
レベル2 | 1.04A |
レベル3 | 1.04A |
レベル4 | 1.04A |
レベル5 | 1.05A |
レベル6 | 1.08A |
レベル7 | 1.11A |
レベル8 | 1.15A |
レベル9 | 1.19A |
レベル10 | 1.27A |
レベル11 | 1.28A |
バッテリー満充電状態ではグっと減って190m~540mAといった水準になります。
バックライトの輝度 | 電流(バッテリー充電完了) |
---|---|
レベル1 | 0.19A |
レベル2 | 0.20A |
レベル3 | 0.20A |
レベル4 | 0.21A |
レベル5 | 0.22A |
レベル6 | 0.25A |
レベル7 | 0.28A |
レベル8 | 0.32A |
レベル9 | 0.37A |
レベル10 | 0.44A |
レベル11 | 0.54A |
この結果から、例えば130gのモバイルバッテリー、cheero Power Plus 3 mini 6700mAh(実容量4,180mAh)との組み合わせでバッテリー満充電状態では連続稼働時間は8時間〜22時間増しにできることが分かります。
26,800mAh、実容量16,000mAhのモバイルバッテリーでは、同じく満充電状態なら29時間半~84時間半増し。
現在所有の15インチのMacBook Proが3時間30分しかもたないので、電源のことを全く気にしなくていい安心感は格別です。
在来のポメラの省電力性を思うとDM200はファブレットぐらいの電池持ちになってしまったのはいささか残念に思いますが、まずこれだけの稼動時間が稼げれば不満はないのではないでしょうか。
DM200をSDカードにインストールしたLinuxを起動できるようにした後で重要なのが、ポメラ側での電源ボタン長押しによる電源オフの操作です。
※Caps Lockはポメラ側でもLinux側でもCtrlに変更できます
MicroUSB端子から電源を供給していると、電源ボタンを長押ししても電源オフにできません。
このことを知らないと無用な動揺を招きますので、試される際はご注意ください。
僕は前機種のKING JIM ポメラDM100(以下DM100)も持っていて比較できる立場にあります。
※Caps Lockはポメラ側でもLinux側でもCtrlに変更できます
hp 200LXは2台、乾電池駆動のモバイルギアIIを10台ぐらい集めるほど乾電池駆動マシンが好きなためDM100びいきをしたいところですが、アッサリDM200に軍配を上げます。
乾電池駆動にこだわりたい気持ちも分かりますが、文章をアウトプットする効率はDM200の方が圧倒的に上です。
その上Linuxが動作して融通が効くとなれば、DM100への回帰はポメラシリーズが終息して、DM200のバッテリーの入手が困難になったときまではなさそう、というのが両方所有する立場からの率直な感想です。
乾電池へのこだわりから、モバイルバッテリーからeneloopのニッケル水素充電池を充電できるチャージャーまでそろえていますが、それでもDM200を選びます。
モバイルバッテリーを用意していれば電源面で不安を感じることがなく、ロマン以外の部分で乾電池駆動を必要としないからです。
DM200ではDM100でできたCSV入力ができなくなっていますが、Linux側でのGnumeric、LibreOfficeなどの利用で補完が可能です。
「これさえできれば……」ということがあったときに、リリーフとしてのLinux出動で大体何でも解決が可能というのはDM200の強力な切り札です。
DM200をSDカードにインストールしたLinuxを起動できるようにすると何が起こるのでしょうか? 電源オフ状態を起点とした遷移図を起こしてみました。
リブート直後、ないしは電源オフの状態でAlt + 右Shift + 電源ボタンというコンビネーションを押しっぱなしにしていると、SDカード上のLinuxが起動できる仕組みです。
青色の矢印が標準の遷移。それ以外が、Linux起動にまつわる遷移です。
※この図もDM200上でGraphvizを使って作成しました。
ポメラの編集画面からLinuxのコンソールのプロンプト表示まで | 22秒 |
Linuxのコンソールのプロンプトからポメラの編集画面表示まで | 10秒 |
ポメラ側とLinux側との間の連携は、LinuxをインストールしたSDカード上に作成された2GBのVFAT領域で、ファイルを介してできます。
素早く起動するので、ポメラ側とLinux側との行ったり来たりもそれほど苦痛ではありません。
VFAT領域はオートマウントではないため、ポメラ側とLinux側の連携のために、Linux側では明示的にVFAT領域を手動でマウントする必要があります。
僕は下掲のようなマウント/アンマウントスクリプトを用意しました。これを ~/.bashrc に追記して疑似自動マウントにしてしまう手もあるでしょう。( /etc/fstab を書き換えてもいいですが、一度下手にいじってLinux側を起動不能にした経験あり)
一つ注意点があります。それは、ポメラ側で編集中のテキストファイルをLinux側で編集して、またポメラ側に戻ってきた場合のこと。
この場合、Linux側での編集内容はポメラ側に反映されていないように見えます。
それは、ポメラ側の状態復帰時に編集元のテキストファイルを参照していないことに起因します。同じファイルを開き直して初めてLinux側での編集結果が反映されます。
本来管理者権限が必要なところ、セキュリティを無視して一般ユーザーでもできるようにしています。
#!/bin/sh mount | grep /mnt/vfat > /dev/null if [ $? -eq 1 ]; then echo dm200 | sudo -S mount -t vfat /dev/mmcblk1p1 /mnt/vfat -o rw,sync,dirsync,noatime,utf8,umask=000 >/dev/null 2>&1 ls -l /mnt/vfat fi
#!/bin/sh mount | grep /mnt/vfat > /dev/null if [ $? -eq 0 ]; then echo dm200 | sudo -S umount /mnt/vfat >/dev/null 2>&1 fi
Debian Linux 9のリポジトリに登録された膨大なソフトウェア資産を活用できます。
Ruby、Pythonなどの各種処理系のリポジトリに登録された膨大なパッケージ群も利用できます。
ソフトウェア | 概要 | コンソール/X |
---|---|---|
LibreOffice | MS Word、MS Excelなどの代替 | X |
Gnumeric | MS Excelの代替 | X |
Emacs | 超高機能テキストエディタ | 両用 |
Vim | 超高機能テキストエディタ | 両用 |
Python 3 | インタプリタ | コンソール |
Ruby 2.3 | オブジェクト志向インタプリタ | コンソール |
Graphviz | 作図ツール | コンソール |
wget | ダウンローダ | コンソール |
w3m | テキストWebブラウザ | コンソール |
ncftp | ftpクライアント | コンソール |
fbi | コンソール用画像ビュア | コンソール |
ImageMagick | コンソール用超多機能画像処理ツール | コンソール |
施した設定や、使用に当たって必要な知識を随時書いていきます。
基本的にはDebian Linuxに対する一般的な知識をそのまま流用可能です。
種別 | ユーザ名 | パスワード |
---|---|---|
特権ユーザー | root | root |
一般ユーザー | dm200 | dm200 |
デフォルトではLinuxを起動するとログインプロンプトが表示されますが、それを省いてログインを自動化できます。
以下のファイルを編集。
$ sudo vi /lib/systemd/system/getty@.service
ExecStartから始まる行に、「-a dm200」を追記して保存。
ExecStart=-/sbin/agetty --noclear -a dm200 %I $TERM
「-a root」とすれば、特権ユーザーで自動ログインされるようになります。
「人柱版 その2」では、Linux側を起動した後、ポメラ側に戻るとポメラの時刻が9時間戻ってしまう現象が出ます。
@ichinomotoさんによれば内部時計の正しい扱いを検討中ということですが、以下のようにするとズレが起きなくなります。
コンソール上では実行できないので、X Windowを起動してから実行します。
$ sudo touch /etc/adjtime $ sudo timedatectl set-local-rtc 1
「人柱版 その2」以降の版では修正されるかもしれません。
/etc/default/keyboardを編集します。
$ sudo vi /etc/default/keyboard
以下の行の冒頭の#を削除して保存。
#XKBOPTIONS="ctrl:nocaps"
再起動で反映。
DM200のキーボードはJIS配列ですが、設定を変更するとUS配列化が可能です。
設定方法:
/etc/default/keyboardを編集。
$ sudo vi /etc/default/keyboard
(情報:@ichinomotoさん)
XKBOPTIONSの行の#も削除すればCaps LockとCtrlも入れ替えます。
XKBMODEL="pc105" XKBLAYOUT="us" #XKBOPTIONS="ctrl:nocaps"
再起動で反映。
無論、ここで設定を変更してもポメラ側には反映されません。Linux側のみに有効なカスタマイズです。
この設定で試用していましたが、X Window上でJISに戻ったりUSになったりといった現象が起きる場合があり、今はJISに戻して使っています。→「Alt + F1 > 設定 > IBus の設定 > 詳細 > キーボードレイアウト」の「システムのキーボードレイアウトを使用する」のチェックボックスが外れていたので、そのせいかもしれません。再度US配列にして使ってみます。
カーネルのアップデートについて:
「人柱版 その2」でUS配列化するとバッククオート(`)が入力できないなどの不具合が生じます。
「人柱版 その2」に対する修正版のカーネル「test_kernel_d29.zip」が出ていますので、キー配列をUS化するためには、まずカーネルのアップデートが必要です。手順はアーカイブの中のテキストに書いてあります。
アップデート用のスクリプトが付属するのでそれを実行するだけです。
$ unzip test_kernel_d29.zip $ cd test_kernel_d29 $ sudo ./kernel_update.sh
「test_kernel_d29.zip」に更新するとMenuキーがModifierのSuperキーとして使えるようになってキーバインドの空き地が増えるので、JIS配列で使っていても適用をおすすめします。
また、半角/全角キーもgraveとして認識するようになっています。
「人柱版 その2」以降の版が出た際には修正されているはずです。
DM200は軽量でどこでも使えることから、立ったまま使いたいケースもあるでしょう。
その場合は親指2本打ちをすると便利です。
親指2本打ちをするに当たって問題になるのがShift、Ctrl、Altキーの扱いです。
Shift、Ctrlは右側にもありますが、Altは左側にしかありません。
こんな場合は「スティッキーキー」機能を使うと便利です。
Alt + F1をAltを押してからF1を押すといった具合に分割して押せるようになります。
Alt + Ctrl + D(デスクトップ表示)のような三つ押しの場合も左手の親指1本で押せるようになります。
設定:
「Alt + F1 > 設定 > アクセシビリティ > キーボード > スティッキーキー > スティッキーキーを使用する」をオンにします。
「2つのキー…」はオフが推奨です。
@ichinomotoさんから、ブログでのイメージの公開前に、差し替え用のカーネルがリリースされることがあります。
サイトの方にUS配列にすると全角半角キーで`と~が入力できない問題に対応したテストカーネルを置きました。ついでにUSBシリアル変換ICのドライバとかも足してあります。
— ichinomoto (@ichinomoto) July 17, 2017
そんな場合の差し替えの手順。ホームディレクトリにkernel.imgというファイル名でカーネルが設置されている場合の例です。
$ sudo dd if=/home/dm200/kernel.img of=/dev/mmcblk0p14 bs=4M
$ sudo chmod +x /opt/bin/*
大まかな流れ。
特権ユーザーでwifi_switch onを実行。
# wifi_switch on
特権ユーザーで周囲のアクセスポイント情報を収集。
# iwlist wlan0 scanning > /home/dm200/ap_list.txt
最近多いWPA2-PSKのAPはiwlist wlan0 scanningで以下のようにリストアップされます。
wlan0 Scan completed : Cell 01 - Address: XX:XX:XX:XX:XX:XX ESSID:"とあるSSID" Mode:Managed Frequency:2.437 GHz (Channel 6) Quality:4/5 Signal level:-61 dBm Noise level:-92 dBm IE: IEEE 802.11i/WPA2 Version 1 Group Cipher : CCMP Pairwise Ciphers (1) : CCMP Authentication Suites (1) : PSK Encryption key:on Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s 24 Mb/s; 36 Mb/s; 54 Mb/s; 6 Mb/s; 9 Mb/s 12 Mb/s; 48 Mb/s
設定ファイルwpa_supplicant.confに接続先アクセスポイント情報を反映します。
/mnt/vfatをマウント。
# mount /mnt/vfat
マウントされたVFAT領域のファイルは/etc/fstabのオプションで特権ユーザーでないと編集できないようになっているため、特権ユーザーでwpa_supplicant.confを編集。
# vi /mnt/vfat/settings/wpa_supplicant.conf
WPA2-PSK用の設定は以下です。ssidと、pskを書き換えればOK。pskを暗号化する設定もありますが、平文で接続されるのを確かめてからでも遅くないでしょう。
ctrl_interface=/var/run/wpa_supplicant network={ ssid="どこかのSSID" pairwise=CCMP group=CCMP proto=RSN key_mgmt=WPA-PSK psk="パスワード" }
iPhoneのテザリングでは以下のようになります。(WPA2-PSKと同様)
ctrl_interface=/var/run/wpa_supplicant network={ ssid="iPhoneのSSID" pairwise=CCMP group=CCMP proto=RSN key_mgmt=WPA-PSK psk="パスワード" }
第三世代のFlashAir(割当IPアドレス192.168.0.1)、Olympus OM-D E-M1 Mark II(割当IPアドレス192.168.0.10)のWiFiの設定も以下でした。
認証なし、WEPでなければ以下で通用しそうです。
ctrl_interface=/var/run/wpa_supplicant network={ ssid="flashairのSSID" pairwise=CCMP group=CCMP proto=RSN key_mgmt=WPA-PSK psk="パスワード" }
Android 6(Nexus 5)のホットスポット機能とのテザリングの設定が以下。(情報@sakiraさん)
network={ ssid="Android 6のSSID" psk="foobar" proto=RSN key_mgmt=WPA-PSK pairwise=CCMP auth_alg=OPEN scan_ssid=0 }
認証なしのオープンなAPの場合は以下のようになります。
ctrl_interface=/var/run/wpa_supplicant network={ ssid="どこかのSSID" key_mgmt=NONE }
wpa_supplicant.confに、エントリnetwork={…}を使用するAP分ズラズラと並べて書いていきます。
ctrl_interface=/var/run/wpa_supplicant network={ ssid="どこかのSSID1" .... } network={ ssid="どこかのSSID2" .... } network={ ssid="どこかのSSID3" .... }
wpa_supplicant.confの上から下に向けて接続を試みていくため、スマートフォンとのテザリング用のエントリを上に、家庭や拠点のAP用のエントリを下に並べるといいでしょう。
接続は以下のコマンドで。
# wifi_switch on
切断は以下のコマンドで。
# wifi_switch off
接続がうまくいかなかったらwifi_switch offを挟むか、リブートして再試します。特に、サスペンドを挟むとwlan0 UPに失敗するようになります。リブートで解決。
$ sudo /sbin/reboot
リブートしなくてもwifi_switch onとwifi_switch offを繰り返しているとそのうち接続できることがあります。
「人柱版 その2」では、
の順で接続先AP情報を見にいくようになっており、なおかつ/mnt/vfat/settings/wpa_supplicant.confの方にひな形のファイルが置いてあるため、まず/mnt/vfat/settings/wpa_supplicant.confを編集するか、削除するかを選択します。
wifi_switchコマンドを実行するときに/mnt/vfat/がマウントされていなくても、wpa_supplicantが接続する際にはそこにあったものを/tmp/wpa_supplicant.confとしてコピーして見にいっているようです。
ここに意図しない内容の設定ファイルが存在する場合の影響が考えられますので、接続がうまくいかない場合は要チェックです。
つまり、以下の三つの場所を見ているということです。
なお、「人柱版 その2」以降の将来のバージョンでは/etc/wpa_supplicant/wpa_supplicant.conf優先の参照順になる予定です。
ソフトウェアはapt-getコマンドでインストールできます。
GUIのパッケージ管理ツールSynapticは重くて使えませんでした。
まずは情報を更新。
$ sudo apt-get update
installコマンドでソフトウェア名を指定してインストールします。
$ sudo apt-get install unzip
-yオプションで問い合わせなしでのインストールになります。
$ sudo apt-get install unzip -y
インストールしたソフトウェアのアンインストールはremoveコマンドで実行します。
$ sudo apt-get remove unzip
apt-cacheコマンドで検索します。apt-get updateで取り寄せた情報を元にしています。
ページャーのlessで受けると、j、kでスクロールができて便利です。また/で検索ができます。qでlessの終了となります。
$ apt-cache search キーワード | less
もうちょい絞り込む場合。
$ apt-cache search キーワード1 | grep キーワード2 | less
結構使うので~/.bashrcに関数を設定しています。
funciton search () { apt-cache search $@ | less }
思いついたキーワードでリポジトリを検索すると、思わぬ発見があるものです。
lessの代わりにpecoを使うのも便利です。インクリメンタルサーチや、二つ以上のキーワードでAND検索が可能です。
$ sudo apt-get install peco
xargsを使えば、pecoで選択したパッケージをapt-getコマンドにそのまま渡せます。
$ apt-cache search キーワード | peco | xargs sudo apt-get install $@ -y
人によって全く傾向は違うと思いますが、僕がまずインストールするのは以下です。
IPAGothicをインストールし、fbtermに反映する例です。
「人柱版 その2」からはフォールバック先のフォントがマトモ(多分Takao Gothic)なため、無理にしなくても十分使えます。
$ wget http://dl.ipafont.ipa.go.jp/IPAfont/ipag00303.zip $ unzip ipag00303.zip $ mkdir ~/.fonts $ mv ipag00303/ipag.ttf ~/.fonts/ $ fc-cache -fv $ fc-list | grep -i ipa /home/dm200/.fonts/ipag.ttf: IPAゴシック,IPAGothic:style=Regular
1
~/.fbtermrcを編集。
$ vi ~/.fbtermrc
元のフォント指定をコメントアウトして、IPAGothicのみの指定に変更した例。
#font-names=Ricty Diminished font-names=IPAGothic
この手順でインストールしたフォントは、 X Window側でも利用可能です。
サスペンドは以下のコマンドでできます。
$ sudo /opt/bin/sus2ram
特権ユーザーでなければ実行できないのはちょっと不便。パスワードなしで実行できるようにすると便利です。
$ mkdir -p /home/dm200/bin/ $ cd /home/dm200/bin $ vi sus
以下のような内容で保存。このスクリプトは「X Window上のデスクトップ通知表示」でインストールしたデスクトップ通知のパッケージに依存しますので、インストールが必要です。
#!/bin/bash if [ $$ -ne $(pgrep -fo "$0") ]; then exit fi if [ ! $(pgrep -fo "sus2ram") == "" ]; then exit fi if [ "X${DISPLAY}" != "X" ]; then notify-send "Suspend" fi echo dm200 | sudo -S /opt/bin/sus2ram >/dev/null 2>&1
以下のように権限を付与。
$ chmod +x sus $ sudo chmod u+s sus
「Bashの設定」の項で~/binにもパスを通していますので、以降susと打てばサスペンドできるようになります。
前項で作成したsusコマンドを、X Window上で電源ボタンを押せば実行できるようにします。
Debian Linux on DM200の使い勝手を決定付ける重要な設定です。
xbindkeysをインストールします。(インストールしていれば不要)
$ sudo apt-get install xbindkeys -y
~/.xbindkeysrcを編集します。
$ vi ~/.xbindkeysrc
次のような内容にして保存。
"/home/dm200/bin/sus" m:0x0 + c:124 X86PowerOff
設定ファイルのリロード。
$ killall xbindkeys $ xbindkeys -f ~/.xbindkeysrc
これでX Window起動中に電源ボタンを押せばサスペンドできるようになりました。
/opt/bin/sus2ramの作り的にサスペンドまでに5秒かかるため、トリガーした時点でデスクトップ通知を表示します。
リブートや電源オフに使うrebootは特権ユーザーでないと実行できず不便です。
一般ユーザーで実行できるようにしておきます。
$ sudo chmod u+s /sbin/reboot
リブート:
$ reboot
電源オフ:
haltコマンドはなぜか一般ユーザーで実行が可能です。
$ halt -p
halt -pの方は、MicroUSBに外部電源が接続されているとリブートになってしまうようです。
DM200でもDropboxによる双方向ファイル同期が可能です。詳細は別エントリで解説しました。
テキストを保存して1分以内には何の操作をしなくともDropboxに上がっているという体験に意義を見い出す人は多いでしょう。
コンソールの利用で知っておきたいことを紹介。
~/.bashrcを編集。
$ vi ~/.bashrc
とりあえず必要なパスを追加、履歴の拡大をしました。.bashrcの末尾に追加。
export HISTSIZE=10000 export HISTFILESIZE=10000 export HISTCONTROL=ignoredups PATH=/home/dm200/bin:/opt/bin:/sbin:$PATH
自作のコマンドは/home/dm200/binに入れています。
mkdir ~/bin
BASHのプロンプトへのバッテリー残量の表示については「コンソールにバッテリー残量を表示〜bash編」を参照。
デフォルトの設定ではコンソール画面を6画面持っており、あたかもタブで複数画面を操作できる高機能ターミナルのように、画面(セッション)を切り替えながら操作が可能です。
screen、tmuxのようなマルチプレクサの導入前には便利に使えます。
切り替えのためのキーボードショートカット:
ポメラDM200。Alt+F1、Alt+F2などでgettyのセッション切り替えつつ作業可能。6個までいけるっぽい。 pic.twitter.com/24331J9CsS
— moyashi (@hitoriblog) July 5, 2017
時間のかかる作業を始めたら、Ctrl + Zでバックグラウンドに送らずとも、セッションを切り替えて他のことができます。
ログインすると、日本語表示ができるfbtermが起動するようになっていて便利です。
日本語入力のためのuim-fep(変換エンジンはMozc)も同時に起動しますが、起動のホットキーがCtrl + SpaceになっていてEmacsでset-markコマンドが使えず往生します。
~/.uimを編集して起動のホットキーを変更します。
$ vi ~/.uim
僕はAlt + escapeに変更しました。保存して終了。
(define-key generic-on-key? '("<Alt>escape" "zenkaku-hankaku")) (define-key generic-off-key? '("<Alt>escape" "zenkaku-hankaku"))
半角/全角キーはコンソール上では認識しない状態のようです。
~/.fbtermrcを編集。
$ vi ~/.fbtermrc
font-sizeのサイズ指定を変更して保存。
font-size=24
~/.fbtermrcを編集。
$ vi ~/.fbtermrc
ambiguous-wideをnoからyesに変更して保存。
ambiguous-wide=yes
Ctrl + Lでリフレッシュする。
fbgrab(fbcat)のインストール。
$ sudo apt-get install fbgrab -y
撮影手順:
$ sleep 5; fbgrab -d /dev/fb0 screenshot.png
少し画面が暗いと思ったら、ImageMagickをインストールしていれば明るく加工できます。
$ sudo apt-get install imagemagick -y $ convert -modulate 170 screenshot.png out.png
処理後のout.pngを確認すると元画像より明るくなっているはずです。
コンソール用の画像ビュア、fbiをインストール。
$ sudo apt-get install fbi -y
使い方の例。-aオプションで画面に収まるように縮小表示されます。
実行中にhキーでヘルプが出ます。
$ fbi -a *.png
fbterm上では利用できないため、fbtermからexitしてから使う必要があります。
コンソール中心の利用を考えたときに問題になるのがバッテリー残量の確認です。
コンソールだとステータスバーなどがないので、コマンドを実行する以外にバッテリー残量を確認する手段がありません。
Emacsには標準でbattery.elというmode-lineにバッテリー残量を表示するスクリプトがあるのですが、apmが標準と違うからか表示できなかったため、表示用のElispを書きました(後出)。
一番身近な表示領域ということで、bashのプロンプトにバッテリー残量を表示してみました。
まずはバッテリー残量を取得するスクリプトの用意です。
$ vi /home/dm200/bin/batt
内容は次のように。
#!/bin/bash battery_status=`/opt/bin/battery2` if [[ ${battery_status} =~ remain_capacity\ \=\ ([0-9]+),\ status ]]; then remain=`expr ${BASH_REMATCH[1]} / 42` echo "${remain}%" fi
保存したら実行権限を付与。
$ chmod +x /home/dm200/bin/batt
/home/dm200/.bashrcに以下を。
PS1="[$(/home/dm200/bin/batt)] \w \$ "
/root/.bashrcに以下を追記します。
PS1="[$(/home/dm200/bin/batt)] \w # "
表示例:
[93%] ~/bin $ ls -l
[85%] /etc/init.d/ # ls -al
tmuxはscreenと同じターミナルマルチプレクサ。
その役どころの説明が難しいのですが、コンソールの世界のウインドウシステムのようなものです。
tmuxは起動すると画面下部にステーラスラインが表示されるのですが、ここにコマンドの実行結果を埋め込め、しかも定期的に更新ができるのです。
この機能を使ってバッテリー残量の表示ができました。
前項で作ったスクリプト/home/dm200/bin/battを流用します。
tmuxの設定ファイルを編集。
$ vi ~/.tmux.conf
内容に以下を追記。
set-option -g status-interval 5 set-option -g status-right "|BATT:#(/home/dm200/bin/batt)"
これでtmuxを起動すると、ステータスラインにバッテリー残量が表示されているはずです。
前項のノウハウを使えばtmuxに暗号通貨のXRPの価格を表示できます。
XRPの価格を取引所Coincheckから取得するスクリプトを用意。
$ vi /home/dm200/bin/xrp2
内容は次の通り。
#!/bin/bash json=`curl https://coincheck.com/api/rate/xrp_jpy` if [[ $json =~ rate\":\"([0-9.]+)\"} ]]; then xrp=`printf '%.2f' ${BASH_REMATCH[1]}` echo "XRP:${xrp}" else echo "XRP:-" fi
スクリプトの中でcurlコマンドを使用しているので、まだインストールしていなかったらインストール。
$ sudo apt-get install curl -y
保存したら実行権限を付与。
$ chmod +x /home/dm200/bin/xrp2
tmuxの設定ファイルを編集。
$ vi ~/.tmux.conf
次のようにしました。
set-option -g status-interval 5 set-option -g status-right "|#(/home/dm200/bin/xrp2)|BATT:#(/home/dm200/bin/batt)"
X Windowの利用で知っておきたいことを紹介。
Debian Linux on DM200にはX Window Systemとウインドウマネージャxfce4がプリインストールされています。
デフォルトで起動するfbtermをexitするとstartxで起動できます。
$ startx
fbtermを起動していても、特権ユーザーで起動すると起動できます。
# startx
起動したらパネルの設定を促されます。Alt + Tabで「パネル」を前面に持ってきて、Tabキーで「デフォルト設定を使用」にフォーカスを合わせてEnter。
fbtermを起動したまま一般ユーザーで起動しようとすると、
$ startx
以下のようなエラーを得ることになります。
(EE) parse_vt_settings: Cannot open /dev/tty0 (Permission denied)
これは、xserver-xorg-legacyをインストール。
$ sudo apt-get install xserver-xorg-legacy -y
さらに、以下のファイルを編集。
$ sudo vi /etc/X11/Xwrapper.config
以下のような記述があるので、
allowed_users=console
これを次のように修正して保存すると起動できるようになります。
allowed_users=anybody
日本語入力関係ではMozcとIBusがプリインストールされています。
「Alt + F1 > 設定 > IBus の設定」を見ると、「次の入力メソッド」のキーボードショートカットが「<Super>space」になっているため、これを「<Shift>space」に変更。
一度ログアウトして設定を反映。
テストカーネルd28からは、Menu + Spaceで入力メソッドを切り替えできるので、「次の入力メソッド」は「<Super>space」のままにしておいて大丈夫です。
入力メソッドの切り替えでMozcを選択した後、日本語入力は、「無変換」、「変換」、「ひらがな/カタカナ」キーを押すとできるようになります。
「A」と「あ」のモードはそれぞれ交互に切り替わり、「ひらがな/カタカナ」の場合は「あ」と「_A」のモードを交互に切り替えるホットキーに設定されています。
まとめると、日本語入力までの手順は以下のようになります。
X Window上でよく使うキーボードショートカットを抜粋しました。
機能 | 操作 |
---|---|
アプリケーションメニュー表示 | Alt + F1 |
ウインドウメニュー表示 | Alt + Space |
アプリの素早い起動 | Alt + F2 |
ウインドウの切り替え | Alt + Tab |
ウインドウの最大化 | Alt + F10 |
ウインドウの移動 | Alt + F7 |
ウインドウを閉じる | Alt + F4 |
Alt + F1のメニュー経由のアプリケーションの起動が面倒になってきたら、Alt + F2で起動する小型のアプリケーションファインダーからの起動がおすすめです。
アプリ名を途中まで打ち込むと、以降を補完してくれます。引数もいっしょに渡せます。
~/.Xdefaults でフォントサイズの変更が可能です。
$ vi ~/.Xdefaults
以下のようにして保存。
xterm*VT100*font: 10x20
以下の手順で反映されます。
xrdb -load ~/.Xdefaults
xtermいがい だと日本語が化けるので、代替のターミナルエミュレータの使用がおすすめです。
LilyTermがなかなかよい感じです。
ただ、Ctrl + FをLilyTerm自身が持っていってしまうので、設定変更の必要を感じる人が多いでしょう。
$ vi ~/.config/lilyterm/default.conf
以下の箇所を探します。
find_key = Ctrl F
割当を変更して保存。
find_key = Ctrl S
Ctrl + Sはたびたび間違って押してしまい困惑する(stty stop)ので、lilytermの機能で上書きしてもよさそうです。
この点さえ修正してしまえば特に問題なく、ビットマップフォント(モトヤシーダ)にアンチエイリアスがかからず具合がいいのでメインのターミナルエミュレータになっています。
Shift + カーソル上下でバックログをたどれます。
メニューはウインドウ上を右クリックすると出てきますが、DM200にはポインティングデバイスがないのでkeynavを導入してキーボードでマウス操作ができるようにしておく必要があります。「keynavを使ったキーボードによるマウス操作」を参照してください。
インストール:
$ sudo apt-get install lilyterm -y
もう一つ、定番らしいターミナルエミュレータ、Terminatorをインストールしました。
縦横2分割ができるほか、プラグインに対応していたりと非常に高機能です。
こちらも右クリックが必要なので、「keynavを使ったキーボードによるマウス操作」を参照のこと。
インストール:
$ sudo apt-get install terminator -y
xfce4-screenshooterをインストールすると、スクリーンショットの撮影が可能です。
インストール:
$ sudo apt-get install xfce4-screenshooter -y
インストールが終了すると、「Alt + F1 > アクセサリ > スクリーンショット」から起動できます。ホットキーを割り当てると便利です。
「Alt + F1 > 設定 > キーボード > アプリケーションショートカットキー」から、xfce4-screenshooterを起動するよう割り当てます。
Ctrl + Insertがオススメです。
MacOSでいうGrowlのような、xfce4-notifydが使えます。
インストール:
$ sudo apt-get install xfce4-notifyd -y
インストールが完了すると「Alt + F1 > 設定 > 通知」が増えます。
通知はコマンドラインからだと notify-send コマンドで送れます。
notify-send "hoge"
cronの中からnotify-sendを使う場合は、事前に環境変数の設定が必要です。
export DISPLAY=:0 nofity-send "hoge"
時計やアプリケーションメニュー、ウインドウボタンなどを表示するパネル。
基本的な設定は「Alt + F1 > 設定 > パネル」でできます。
マウスなしだとパネルを移動するのが不可能のようです。MacOSのメニューバーのように上端に寄せたいが、キーボードだけだとままなりません。
そこで、以下のファイルを編集。
$ vi /home/dm200/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml
以下の部分の「y=10」を「y=0」に変更し、保存。次の起動でパネルが上端に張り付くはずです。
<property name="position" type="string" value="p=0;x=100;y=10"/>
「keynavを使ったキーボードによるマウス操作」でkeynavを設定し、マウス操作で動かすのも手です。
バックライトの輝度調整は、以下のコマンドでできます。
$ sudo /opt/bin/backlight 254 $ sudo /opt/bin/backlight 40
40以下への設定は、液晶が見えなくなってしまうので要注意です。
Ruby/Gtk2で輝度調節用のソフトウェアを作ってみました。
以下のファイルをダウンロードして、/home/dm200/bin/brightnessとして設置。
ダウンロード: brightness-0.3.zip
実行権限を付与します。
$ chmod +x /home/dm200/bin/brightness
もし、ユーザーdm200のパスワードを変更している場合は、冒頭のPASSWORDを変更してください。
PASSWORD="dm200"
依存しているソフトウェアをインストール。
$ sudo apt-get install ruby ruby-gtk2 -y
さらに、「xbindkeysの設定」の項を参照してxbindkeysをインストール。
~/.xbindkeysrcに以下を追記。
"/home/dm200/bin/brightness" Control + Delete
設定ファイルをリロード。
$ killall xbindkeys $ xbindkeys -f ~/.xbindkeysrc
これで、Ctrl + Deleteを押すとbrightnessが起動するようになります。
カーソル左右で輝度調節。EnterキーもしくはQキーで終了。
キーボードのAの列(A、S、D、F、G、H、J、K、L、;、;、])でも直接輝度を調整可能です。
MacOSでいうBitBarに似た「ジェネリックモニター」プラグインをインストールするとできます。
個人的に大好きなプラグインです。
X Window上でのバッテリー残量表示に使います。
インストール:
$ sudo apt-get install xfce4-genmon-plugin -y
インストールが完了すると「Alt + F1 > 設定 > パネル > アイテム」の選択肢に「ジェネリックモニター」というものが増えます。
ちなみに、暗号通貨取引所coincheckから通貨の価格情報を取得して表示する例は以下のような感じです。
$ sudo apt-get install curl -y
#!/bin/bash json=`curl https://coincheck.com/api/rate/xrp_jpy` if [[ $json =~ rate\":\"([0-9.]+)\"} ]]; then xrp=`printf '%.2f\n' ${BASH_REMATCH[1]}` echo " XRP:${xrp} " else echo " XRP:- " fi
バッテリー残量の確認は、以下のコマンドでできます。
$ /opt/bin/battery $ /opt/bin/battery2
batteryコマンドで見てるsysfsから見えるcapacityの値なんですが、結構怪しいです。電池が減ってくるとなかなか下がらなくなります。そのためにbattery2がありまして、%表示するなら2の方のremain_capacityを42で割ったほうが安全かもしれません。
— ichinomoto (@ichinomoto) July 16, 2017
コマンド実行でしか確認できないのは不便なので、xfce4のパネルに表示させます。
「xfce4のパネルにコマンドの実行結果を定期的に更新しながら表示する」、「X Window上のデスクトップ通知表示」の項でインストールしたパッケージに依存していますので、インストールを済ませておきます。
以下のスクリプトを/home/dm200/bin/battmonとして保存。
#!/bin/bash threshold=15 battery_status=`/opt/bin/battery2` if [[ ${battery_status} =~ remain_capacity\ \=\ ([0-9]+),\ status ]]; then remain=`expr ${BASH_REMATCH[1]} / 42` echo "<txt>${remain}% </txt><bar>${remain}</bar>" if [ $remain -le $threshold ]; then notify-send -i battery "BATTERY LOW (${remain}%)" fi fi
実行権限を付与します。
$ chmod +x /home/dm200/bin/battmon
「Alt + F1 > 設定 > パネル」を起動。Alt + Mでアイテムのタブに飛び、Tabキーで「+」アイコンまでフォーカスを移動させEnterキー。
「ジェネリックモニター」を追加。「↑」「↓」ボタンで位置を調整できます。「ジェネリックモニター」のアイテムにフォーカスを合わせた後、Tabキーで「+」ボタンの二つ下にある設定ボタンまでフォーカスを移動し、再度Enterキー。
「ジェネリックモニター」の設定画面を表示したら、「コマンド」欄には「/home/dm200/bin/battmon」を。「ラベル」は空白に。「間隔(秒)」は15秒程度にして、 Alt + Cで閉じる。
これでバッテリー残量表示がパネルに追加されたはずです。「ジェネリックモニター」はパネルに複数登録して、別の要素を表示させることもできます。
DM200ではxfce4-goodiesをインストールすると入る「Alt + F1 > 設定 > 電源管理」で設定できる時間経過によるバックライトの減光やサスペンド移行ができません。
そこで、それを実現するスクリプトを書いてみました。
X WIndow上で動作するxprintidleに依存しているため、X Window上のみで動作します。
また、サスペンド移行には「一般ユーザーでのサスペンド」の項で紹介しているスクリプトsusを使っています。
インストール:
$ sudo apt-get install xprintidle -y $ mkdir /home/dm200/bin $ cd /home/dm200/bin $ wget http://hitoriblog.com/wp-content/uploads/2017/08/energysaver-0.2.zip $ unzip energysaver-0.2.zip $ chmod +x energysaver esctrl
energysaverを「Alt + F1 > 設定 > セッションと起動」の「自動開始アプリケーション」で登録します。
設定:
スクリプトenergysaverの冒頭に設定部があります。必要に応じて変更してください。
特に、ユーザーdm200のパスワードを変更していた場合は書き替えないと動きません。
#--------------Config---------------- # バックライト減光までのアイドル時間 DIMM_TIMEOUT = 30 # バックライト減光量 DIMM_AMOUNT = 100 # サスペンドまでの時間 SUSPEND_TIMEOUT = 120 # ユーザーdm200のパスワード PASSWORD = "dm200" # サスペンドコマンド SUS_COMMAND = "/home/dm200/bin/sus"
動作のコントロール:
同梱のコマンド、esctrlで動作のオンオフが制御可能です。
esctrl on | 動作を有効にする |
esctrl off | 動作を無効にする |
OctaveなどGUI ToolkitにQtを使ったソフトウェアの場合、デフォルトのフォントが小さくて見づらく感じます。
$ sudo apt-get install octave -y
その場合は、qtconfigをインストールしてフォント設定すると対処可能です。
$ sudo apt-get install qt4-qtconfig -y
「Alt + F1 > 設定 > Qt 4設定」から起動。
最後にCtrl + Sで保存しないと反映されません。
Qt使用ソフトウェアはUIの造作が小さいので、ビットマップフォントの利用がいいかもしれません。
僕はモトヤシーダ1 KPを使っています。
キーボードショートカット押下で特定のコマンドを実行できるようにするxbindkeysが便利です。
X Window上で使えます。
インストール:
$ sudo apt-get install xbindkeys xbindkeys-config -y
設定は~/.xbindkeysrcに書きます。
$ vi ~/.xbindkeysrc
~/.xbindkeysrcの例。
"xterm" control + shift + q "emacs &" control + shift + x
設定ファイルのリロード。
$ killall xbindkeys $ xbindkeys -f ~/.xbindkeysrc
xbindkey-configというGUIの設定アプリも利用できます。
X Window上のxtermなどから実行します。
$ xbindkeys-config &
DM200にはポインティングデバイスがありません(USBマウスなどを利用することは可能)。しかし、ほとんどの操作はキーボードだけでも可能です。下記の設定で割り当て一覧が参照できます。
キーボード操作に加え、「keynavを使ったキーボードによるマウス操作」で紹介したkeynavを使ったキーボードによるマウス操作を併用すれば、実のところポインティングデバイスなしでも困りません。
操作 | 機能 |
---|---|
Alt + Space | ウインドウ操作メニュー |
Esc | キャンセル |
Alt + Tab | ウインドウの切り替え |
Shift + Alt + Tab | ウインドウの切り替え(逆方向) |
Super + Tabe | 同じアプリケーションのウインドウの切り替え |
Ctrl + Esc | コンテキストメニュー |
Alt + F1 | アプリケーションメニュー |
Alt + F2 | アプリケーションファインダー |
Alt + F3 | アプリケーションファインダー(大) |
Alt + F4 | ウインドウを閉じる |
Alt + F5 | |
Alt + F6 | 常に表示中のワークスペースに置く |
Alt + F7 | ウインドウの移動 |
Alt + F8 | ウインドウのサイズ変更 |
Alt + F9 | ウインドウを隠す |
Alt + F10 | ウインドウの最大化 |
Ctrl + Alt + L | ロック(動かない?) |
Ctrl + Alt + 1 | ウインドウをワークスペース1に移す |
Ctrl + Alt + 2 | ウインドウをワークスペース2に移す |
Ctrl + Alt + 3 | ウインドウをワークスペース3に移す |
Ctrl + Alt + 4 | ウインドウをワークスペース4に移す |
Ctrl + Alt + 5 | ウインドウをワークスペース5に移す |
Ctrl + Alt + 6 | ウインドウをワークスペース6に移す |
Ctrl + Alt + 7 | ウインドウをワークスペース7に移す |
Ctrl + Alt + 8 | ウインドウをワークスペース8に移す |
Ctrl + Alt + 9 | ウインドウをワークスペース9に移す |
Ctrl + Alt + D | デスクトップを表示 |
Ctrl + Alt + Left | 左のワークスペースに移る |
Ctrl + Alt + Right | 右のワークスペースに移る |
Ctrl + F1 | ワークスペース1に移る |
Ctrl + F2 | ワークスペース2に移る |
Ctrl + F3 | ワークスペース3に移る |
Ctrl + F4 | ワークスペース4に移る |
Ctrl + F5 | ワークスペース5に移る |
Ctrl + F6 | ワークスペース6に移る |
Ctrl + F7 | ワークスペース7に移る |
Ctrl + F8 | ワークスペース8に移る |
Ctrl + F9 | ワークスペース9に移る |
あると便利な以下の動作にショートカットキーが割り当てられていないので、それぞれ以下のようなキーボードショートカットを割り当てます。
操作 | 機能 |
---|---|
Alt + Ctrl + , | ウインドウを画面左にタイル表示 |
Alt + Ctrl + . | ウインドウを画面右にタイル表示 |
Alt + Ctrl + / | ウインドウを画面上にタイル表示 |
Alt + Ctrl + \ | ウインドウを画面下にタイル表示 |
画面を左右二分割、上下二分割して表示できるようになります。
ポインティングデバイスのないDM200。
キーボードによる操作に配慮されているため、キーボードだけでもX Windowはかなりのところまで操作できますが、配慮されていないところもままあり、マウス操作の必要を感じる局面はあります。
Tabでフォーカスを移していけばキーボードだけで操作できるが、それがまどろっこしいということもあります。
LilyTermなどウインドウ上を右クリックしないと出てこないメニューが重要な役割を果たすソフトウェアも存在します。
そんなときに便利なのがkeynav。
keynavはキーボードだけでマウスのポインタを移動したり、マウスボタンをクリックできるようにするソフトウェアです。
価値を低く見る人が大半だと思いますが、マウス代わりとして絶大な効力を発揮します。
DM200でのマウス操作における決定版です。盛りだくさんなので別記事を書きました。
大幅なカスタマイズを施した設定ファイルを配布していますので、ぜひご一読を。
クリップボードに文字をコピーしたタイミングで履歴を記録し、後からクリップボードに以前の内容を書き戻しできるようにするユーティリティClipItが便利です。
インストールを終えると「Alt + F1 > アクセサリ > ClipIt」から起動できます。
機能 | ホットキー |
---|---|
履歴 | Ctrl + Alt + H |
アクション | Ctrl + Alt + A |
管理 | Ctrl + Alt + F |
オフラインモード | Ctrl + Alt + O |
ポインティングデバイスがなくパネル上のアイコンがクリックできませんが、環境設定のウインドウは、Ctrl + Alt + Aのアクションのメニューからたどることができます。
アクションは、アクションの内容がキーボードだけでは編集できないため、keynavをインストールしない限り利用不能です。(設定ファイルがバイナリなので、テキストエディタで直編集する方法も取れない)
自動開始アプリケーションに設定されているので、次回のログインからはいちいち起動せずとも使えるようになっているはずです。
インストール:
$ sudo apt-get install clipit -y
クリップボード履歴ツールには、ClipItのほかにClipmanという選択肢もあります。
インストール:
$ sudo apt-get install xfce4-clipman xfce4-clipman-plugin -y
Clipmanには、履歴をQRコードで表示する機能や、外部コマンドで処理するClipItにはない高度な機能があります。
現状キーボードから起動する方法が不明ですが、こちらに切り替えていくつもりです。
画像ビューアはFehとGeeqieがおすすめです。
インストール:
sudo apt-get install feh geeqie -y
Geeqieは全体的にとても素晴らしい画像ビューアですが、特にプレビューを見ながらファイル選択ができ、選択した(複数の)画像のファイルパスを自作のスクリプトに送ることができ、単なる画像ビューアで終わっていません。
例えば、選択した(複数の)画像をWordPressにアップロードして、クリップボードにタグを得る、といったことができます。
自分の作ったスクリプトとの連携は、~/.config/geeqie/applicationsに.desktopファイルを置くとできます。
本来は「編集 > Preferences > Configure Editors」からGUIで編集できますが、新規作成したときにキーボードだけではファイル名を変更できないため、~/.config/geeqie/applicationsの.desktopファイルをテキストエディタで編集した方が楽です。
geeqieと自作スクリプトとの連携用サンプルdesktopファイルダウンロード: applications.tar.gz
中身はこんな感じです。名前とExecで指定しているスクリプトのパスを変更して、geeqieを起動し直せばOKです。Iconは/usr/share/pixmapsにある画像ファイル名から拡張子を除いたものを指定します。
[Desktop Entry] Name=User Defined 1 GenericName=User Defined 1 Comment=User Defined 1 Exec=/home/dm200/bin/userdefined1 %F # You can use icons on /usr/share/pixmaps Icon=lilyterm Type=Application StartupNotify=false NoDisplay=false Hidden=false Terminal=true Categories=Graphics; MimeType=image/jpeg;image/png;image/gif;image/tiff;image/bmp;image/x-icon;image/x-xpixmap;image/x-xbitmap;
スクリプト側では引数に画像のパスが渡されてくるので、それを順次処理します。
例えば、Rubyでの例。notify-sendで渡されたパスをデスクトップ通知で表示し、ホームディレクトリのlog.txtに引数のログを記録するという意味のないスクリプトですが、これで要旨は伝わるでしょう。
#!/usr/bin/ruby ARGV.each do |f| system("export DISPLAY=:0 nofity-send #{f}") end system("echo #{ARGV} >> /home/dm200/log.txt")
画像のマークが5種類用意され、画像を見ていくときに5種類のマークで分類し、後で一括処理できる独特な作りも魅力です。
この画像は1、この画像は3、この画像は2といった感じで流れで分類し、後でマークに基いてファイル選択。処理を決めるといった感じで使えるのです。
ファイルリスト上でカーソルキーの上下を使ってフォーカスを移しながら1キー、1キー、1キー、1キーと1のマークにどんどん画像を追加。最後にCtrl + 1で1にマークした画像ファイルを選択、とすると、下掲のような状態になります。
Mキーでマークを表示しておいた方が便利です。
画像の表示スピードも軽快でよい感じです。
タブキーでフォーカスを移しながら使っていると、パス入力欄から出られなくなってキーボードだけで操作している場合困ります。これは、Ctrl + Hを2回たたくと脱出できます。
そこからShift + Tabを1回か2回たたくとファイルリストのところにフォーカスを移せるはずです。
Fehは、MacOSにおけるPreview.appのようなもの。
起動が非常に軽く、「Alt + F1 > 設定 > MIMEタイプエディター」で画像の拡張子に関連付けておけば、ファイラーからEnterでサっと画像を確認できて便利です。
MacOSでいうQuickLookライクなことが可能となります。
Linux上で使うテキストエディタにVimとEmacsがプリインストールされていますが、上級者向けのチョイスであるため、初心者向けのテキストエディタを紹介します。
以前であればgeditが鉄板でNetWalkerでは大活躍だったのですが、時代は流れGUI ToolkitがGtk3になってUIが最悪になってしまいました。キーボードでの操作に全く向いていません。
代替のテキストエディタを推奨します。
いずれもタブとサイドバーで複数ファイルの編集が快適にできるタイプのテキストエディタ。
Macで言えばSmultronに近いものです。
geditライクなテキストエディタGeany。
インストール:
$ sudo apt-get install geany -y
geditライクなテキストエディタPluma。Gtk2時代のgeditのソースを使って作られているということで、往時の姿をとどめています。
インストール:
$ sudo apt-get install pluma -y
POP3 、IMAP4などに対応したメールクライアントSylpheedが利用できます。日本人による開発であるため、日本人にとって最良の選択肢です。
Gmailの設定はアカウントを入力するだけでOK。ただし、二段階認証には対応していないので、アプリ パスワードを発行しておく必要があります。
インストール方法。
$ sudo apt-get install sylpheed sylpheed-i18n -y
DM200にはポインティングデバイスがなくスクロールバーをつかめないため、メールの数が多いと最新メールにたどり着けません。
keynavの利用が推奨されます。「keynavを使ってキーボードによるマウス操作をするには?」を参照のこと。
MS Excelと似たソフトウェア、Gnumeric が X Window 上で利用できます。
インストール:
$ sudo apt-get install gnumeric gnumeric-l10n-ja -y
オフィススイートを集めた LibreOffice が X Window 上で利用できます。
▲LibreOffice Calc(MS Excelライク)
▲LibreOffice Writer(MS Wordライク)
▲LibreOffice Draw(MS Visioライク)
▲LibreOffice Impress(MS PowerPointライク)
インストール:
$ sudo apt-get install libreoffice libreoffice-l10n-ja -y
インストールが終了すると、Alt + F1 のメニューから起動できるようになります。
LibreOffice ともなると、ポインティングデバイスがないと厳しいため、keynavの利用が推奨されます。
Firefoxより軽くてDM200で使いやすいプリインストールのWebブラウザ、Midoriがおすすめです。
ただ、標準状態だとロケーションバーにフォーカスを移すことも、メニューを出すこともできなくて往生します。
まずはキーボードショートカットを有効にします。下掲の設定ファイルを編集。
$ vi ~/.config/midori/accels
以下の行の行頭にある「;」を削除し、それぞれキーボードショートカットを変更。
(gtk_accel_path "<Actions>/Browser/Menubar" "<Alt>m") (gtk_accel_path "<Actions>/Browser/Location" "<Alt>d")
保存してMidoriを(再)起動するとAlt + Dでフォーカスがロケーションバーに。
Alt + Mでメニューが表示されるので、後はメニューをたどって操作が可能となります。
操作 | 機能 |
---|---|
Alt + D | アドレスバーにフォーカスを移動 |
Ctrl + K | 検索窓にフォーカスを移動 |
著名なWebブラウザ、Firefoxも利用可能です。
インストール:
$ sudo apt-get install firefox-esr firefox-esr-l10n-ja -y
操作 | 機能 |
---|---|
Alt + D | アドレスバーにフォーカスを移動 |
Ctrl + K | 検索窓にフォーカスを移動 |
使えないことはないですが、軽快な動作とはいえません。Midoriではどうしてもダメな場合のみの登板となるでしょう。
特権ユーザーで/opt/bin/usb_host onを実行すると、本体のMicroUSB端子をUSB HOSTとして動作させることが可能。
$ su # usb_host on
ただし、DM200側から電源供給ができないため、OTG HUBが必要です。
DM200での動作実績のあるOTG HUBが以下。
DM200単体での運用をしたいため、実用はしないつもりですが注文して試用予定です。
僕は全く必要性を感じませんが、物理マウスが接続できないと価値を疑う人は少なくないのでしょう。
デスクトップはCtrl + Alt + Dで表示、もう一度Ctrl + Alt + Dで直前の状態に復帰できます。
つまりトグル動作であるため、デスクトップはチラ見する画像を貼るのにうってつけの場所。
X Window(xfce4)のデスクトップにダウンロードしてきた壁紙を機械的に貼る場合は、xfconf-queryコマンドを利用します。
Xfce4のデスクトップに関するプロパティのリストを収集。
$ xfconf-query --channel xfce4-desktop --list
実行すると以下のようなリストが取れます。
/backdrop/screen0/monitor0/workspace0/color-style /backdrop/screen0/monitor0/workspace0/image-style /backdrop/screen0/monitor0/workspace0/last-image /backdrop/screen0/monitor0/workspace1/color-style /backdrop/screen0/monitor0/workspace1/image-style /backdrop/screen0/monitor0/workspace1/last-image /backdrop/screen0/monitor0/workspace2/color-style /backdrop/screen0/monitor0/workspace2/image-style /backdrop/screen0/monitor0/workspace2/last-image /backdrop/screen0/monitor0/workspace3/color-style /backdrop/screen0/monitor0/workspace3/image-style /backdrop/screen0/monitor0/workspace3/last-image /desktop-icons/single-click /last/window-height /last/window-width
このようにすると現在の設定されている壁紙を取得できます。
$ xfconf-query --channel xfce4-desktop --property /backdrop/screen0/monitor0/workspace0/last-image
last-imageには、例えば以下のような壁紙に設定した画像のパスが入っています。
/home/dm200/Pictures/anohana0087.jpg
–setを加えると変更が可能です。
$ xfconf-query --channel xfce4-desktop --property /backdrop/screen0/monitor0/workspace0/last-image --set /home/dm200/Pictures/anohana003.jpg
この知識を応用すれば、xfconf-queryコマンドを使ってcronから壁紙を定期的に更新可能です。
また、現在設定中の画像、例えば/home/dm200/Pictures/001.jpgを新しい画像で上書きすると、壁紙も即座に新しいものに貼り替わります。
機械的な貼り替えのために、現在設定されている画像を上書き更新する手も使えます。
定期的にコマンドを実行させるためにcronをインストールすると便利です。
インストール方法。
$ sudo apt-get install cron -y
cronのエントリの登録。
$ crontab -e
1分毎にコマンドを実行したい場合。
*/1 * * * * /path/to/command
サスペンド中は動作しません。
notify-sendをcronの中から使いたい場合は、事前に環境変数の設定が必要です。
export DISPLAY=:0 notify-send "hoge"
なぜか標準のリポジトリにnpmがないため、以下の手順を利用しました。
$ sudo apt-get install curl -y $ curl -sL https://deb.nodesource.com/setup_6.x | sudo bash - $ sudo apt-get install nodejs -y $ sudo npm update -g npm
標準でRubyがインストールされています。
Gem経由でNative Extensionがインストールできるようにします。
$ sudo apt-get install ruby-dev build-essential libxml2-dev libxslt1-dev zlib1g-dev -y
Gemをインストールします。
$ sudo gem install mechanize twitter pushover evernote
irbの履歴やTabキーでの補完が有効になっていませんので、~/.irbrcを作成。
$ vi ~/.irbrc
以下を追記します。
require "irb/completion" require "irb/ext/save-history" IRB.conf[:SAVE_HISTORY] = 10000 IRB.conf[:HISTORY_FILE] = File.expand_path("~/.irb_history")
Rubyで皆に使ってもらうユーティリティを作ったので、少しインストールが複雑なrbenvは利用しませんでした。
DM200上でのセルフビルドはかなり重いようです。
軽いスクレイピングのためのMechanizeとは別に、JavaScriptを解釈する必要のあるスクレイピングのためのCapybaraもインストール。
WebKitベースのヘッドレスブラウザPhantomJSと、Rubyから利用するためのCapybara、PhantomJSドライバのPoltergeistという構成。
Mechanizeより重いですが、様々なケースに対応できるので頼れる道具です。
インストール:
$ sudo apt-get install phantomjs ruby-capybara ruby-poltergeist
簡単な利用:
ブログのindexページにアクセスして見出しを抜き出した後、ページ全体のスクリーンショットを撮影する例。
#!/usr/bin/ruby require "capybara/poltergeist" Capybara.register_driver :poltergeist do |app| Capybara::Poltergeist::Driver.new(app, {js_errors: false, #inspector: true, timeout: 1000}) # http://localhost:9664/webkit/inspector/inspector.html end session = Capybara::Session.new(:poltergeist) session.visit("http://hitoriblog.com/") #session.driver.debug puts session.status_code puts session.title session.save_screenshot("hoge.png", :full => true) session.find_all("#topnews > dl > dd > h3").each do |t| puts t.text end
PhantomJSがWebKitベースであるため、リモートデバッガのInspectorが利用可能なはずですが、WebブラウザのMidoriからは使えないようです。
Qtアプリ同様、ビットマップフォントのモトヤシーダを使用。
僕はモトヤシーダ1 KPを使っています。
小さくても表示が明瞭で、文字の輪郭がクッキリして気持ちいい。
(let* ((size 12) (jpfont "NFモトヤシータ゛1等幅") (h (* size 10)) (jp-fontspec (font-spec :family jpfont))) (set-face-attribute 'default nil :family jpfont :height h) )
設定した状態のスクリーンショットが以下です。画像のリンク先が元画像になっています。
~/.emacs.elに以下を追加。
; package.el (when (require 'package nil t) (add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/") t)) (package-initialize)
cmigemoをインストール。
$ sudo apt-get install cmigemo -y
M-x list-packageからmigemoをインストール。
~/.emacs.elに以下を追加。
(require 'migemo) (setq migemo-command "cmigemo") (setq migemo-options '("-q" "--emacs")) (setq migemo-dictionary "/usr/share/cmigemo/utf-8/migemo-dict") (setq migemo-user-dictionary nil) (setq migemo-regex-dictionary nil) (setq migemo-coding-system 'utf-8-unix) (load-library "migemo") (migemo-init)
M-x list-packageからddskkをインストール。
~/.emacs.elに以下を追加。
(global-set-key (kbd "C-x C-j") 'skk-mode) (setq skk-large-jisyo "/home/dm200/.emacs.d/skk/SKK-JISYO.L")
ラージ辞書をダウンロード。
$ wget http://openlab.jp/skk/dic/SKK-JISYO.L.gz $ gzip -d SKK-JISYO.L.gz $ mkdir -p .emacs.d/skk/ $ mv SKK-JISYO.L .emacs.d/skk/
M-x list-packageからhelmをインストール。
自作の関数内で使うなどしています。
battery.elが使用できないため、独自にmode-lineにバッテリー残量を表示させます。
(require 'timer) ; DM200のバッテリー残量を返す (defun display-battery-string () "" (interactive) (let* ((command-result (shell-command-to-string "/opt/bin/battery2"))) (string-match "remain_capacity = \([0-9]+\)," command-result) (concat "[BATT:" (number-to-string (/ (string-to-number (match-string-no-properties 1 command-result)) 41)) "%]"))) ; global-mode-stringに文字列を追加。引数は'でクオートする ; (append-global-mode-string mystr) → (append-global-mode-string 'mystr) ; 以降、タイマーでmystrを更新すれば反映される (defun append-global-mode-string (str) "" (interactive) (setq global-mode-string (cond ((consp global-mode-string) (add-to-list 'global-mode-string str 'APPEND)) ((not global-mode-string) str) ((stringp global-mode-string) (list global-mode-string str))))) ; 30秒に1回更新 (setq my-timer (run-with-timer 0 30 (lambda () (setq display-custom-info-string (display-battery-string))))) (append-global-mode-string 'display-custom-info-string)
仮想通貨の価格も表示するバージョン。
(require 'json) (require 'timer) ; DM200のバッテリー残量を返す (defun display-battery-string () "" (interactive) (let* ((command-result (shell-command-to-string "/opt/bin/battery2"))) (string-match "remain_capacity = \([0-9]+\)," command-result) (concat "[BATT:" (number-to-string (/ (string-to-number (match-string-no-properties 1 command-result)) 42)) "%]"))) ; 仮想通貨XRPのCoincheckでの価格を返す(要 sudo apt-get install curl) (defun display-xrp-string () "" (if (network-interface-info "wlan0") (format "[XRP:%.2f円]" (string-to-number (cdr (assoc 'rate (json-read-from-string (shell-command-to-string "curl https://coincheck.com/api/rate/xrp_jpy 2>/dev/null")))))) "[XRP:--円]")) ; global-mode-stringに文字列を追加。引数は'でクオートする ; (append-global-mode-string mystr) → (append-global-mode-string 'mystr) ; 以降、タイマーでmystrを更新すれば反映される (defun append-global-mode-string (str) "" (interactive) (setq global-mode-string (cond ((consp global-mode-string) (add-to-list 'global-mode-string str 'APPEND)) ((not global-mode-string) str) ((stringp global-mode-string) (list global-mode-string str))))) ; 30秒に1回更新 (setq my-timer (run-with-timer 0 30 (lambda () (setq display-custom-info-string (concat (display-xrp-string) " " (display-battery-string)))))) (append-global-mode-string 'display-custom-info-string)
仮想通貨の価格も表示するバージョンは、もう少し工夫しないと間欠的にEmacsが操作不能になってイマイチでした。
~/.emacs.el に以下を追加。
(defun suspend () "" (interactive) (shell-command "/home/dm200/bin/sus")) (global-set-key (kbd "C-c C-s") 'suspend) (defun poweroff () "" (interactive) (shell-command "/sbin/halt -p")) (global-set-key (kbd "C-c C-p") 'poweroff) (defun reboot () "" (interactive) (shell-command "/sbin/reboot")) (global-set-key (kbd "C-c C-r") 'reboot)
前提となる「一般ユーザーでのサスペンド」、「一般ユーザーでのリブートと電源オフ」の項を参照。