ひとりぶろぐ

価値ある情報をユーザー視点で発信するブログ

KING JIM ポメラDM200でEmacs、Vim、Ruby、Pythonが動くなんて素敵すぎる!

      2017/07/28

Pomera dm200 linux ruby python 00000

Kindleハック、RICOH THETAハックなどでおなじみ @ichinomoto さんがKING JIM ポメラDM200(以降DM200)でSDカードにインストールしたDebian Linux(Debian 9.0 stretch)を、ポメラ元来の機能を全く損なうことなく起動できるようにしてくださいました。

SDカード上のDebian Linuxを起動できるようにしても、従来通りの使い方もできるのです。

キングジム デジタルメモ ポメラ DM200ブラック

本来、DM200には印刷できないワープロのような機能しかないのですが、これによってかなりの自由を獲得できたことになります。

Pomera dm200 linux ruby python 00034

※Caps Lockはポメラ側でもLinux側でもCtrlに変更できます

上記のページの通りにインストールを済ませると、SDカード上のDebian Linuxが起動できるようになります。Linuxの動作の安定感は実験レベルを超えており、実用的です。

Pomera dm200 linux ruby python 00029

※Caps Lockはポメラ側でもLinux側でもCtrlに変更できます

SDカード上のDebian Linuxが起動できても依然標準のポメラの機能の素晴らしさは際立っているため、両者を連携して使う感じになる(同時に使えるのでなく、両者を起動し分ける)のですが、それが何とも楽しい。

Pomera dm200 linux ruby python 00035

工夫の余地のある文具が欲しいという人の目には、このDebian Linux on DM200は魅力的に映るかもしれません。

今回は、そんなDebian Linux on DM200のレビューをお届けします。

もくじ

記事に関するお断り

本エントリは未完成です。

使いこなしには多種多様な知識が必要で、自分自身暗中模索中です。

自分が困難に直面し、調べ、解決しながら追記していくスタイルを取ることにします。

更新履歴

実際に使ってみてどう?

早速インストールして使ってみました。

むしろインストールするために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と同等のキーボードを備えていることが実用性に大きな影響を与えているということを繰り返し実感する感覚があります。

Pomera dm200 linux ruby python 00031

過去にあったLinux端末、NetWalkerはAC電源に縛られる点がイマイチだったのですが、DM200はモバイルバッテリー併用で場所や時間の制約を受けず使える点が代えがたい価値を生み出しています。

Pomera dm200 linux ruby python 00039

※Caps Lockはポメラ側でもLinux側でもCtrlに変更できます

ただ、現状ではLinux側では液晶を閉じてサスペンド、液晶を開けてサスペンドからの復帰といった動作ができず、サスペンド移行は手動でのコマンド実行。電源ボタンを押しての復帰となります。(設定で X Window 上では電源ボタンを押してのサスペンドは可能)

Pomera dm200 linux ruby python 00033

サスペンドを挟むとWiFiが動作しなくなる点が気になるところ(「人柱版 その2」で確認)で、現状ではネットワークを使用したらLinux側の作業が終わったところで瞬時にリブート、ないしは電源オフできるように設定しています。

大体いつもEmacsを起動しているので、C-c rでリブート、C-c sで電源オフ(/sbin/halt -p)ができるようにしています。C-c sを打ったら液晶を閉じてカバンに放り込んでしまえるため、Linuxの取扱にまつわる煩わしさといったものとは意外と無縁です。

Linux側の動作はサスペンドを絡ませなければ至って普通(WiFi以外はサスペンドを挟んでも大丈夫)なので、約580gでフルキーボード付きの軽量Linux端末が欲しければ、検討の価値は十分あります。

Pomera dm200 linux ruby python 00036

現在は相場が以前より安くなって35,000円程度で買えるので、お値頃感も出てきました。

素のポメラも十分以上に実用的で、特にアウトラインモードが素晴らしい。

機能すべてがキーボードショートカットに割り当てられているというのは、スマートフォン、タブレットの世界にはないもの。

総じて生産的な作業をするのに特化したガジェットという風格が漂っており、タブレット、スマートフォンに神アプリがいくらあってもSNSからの雑音が多くて生産的な使い方ができたことがない、という人にはうってつけのガジェットといえるのではないでしょうか。

少なくとも、僕はそういうものを求めてDM200を買いました。

Pomera dm200 linux ruby python 00007

P91よりアウトラインモードについての解説あり: DM200取扱説明書(PDF:6.5MB)

DM200でのLinux起動に必要なもの

必要なものは以下の三つです。

Pomera dm200 linux ruby python 00037

  • KING JIM ポメラDM200
  • PC(Mac)(+メモリーカードリーダー)
  • 16GBのSDカード1枚

Linux起動までの手順は、おおまかには以下の通りです。

  1. DM200のNANDをSDカード(要8GB以上)にバックアップする
  2. SDカード(要16GB以上)へインストール用のイメージを「Etcher」などを使い書き込みする
  3. DM200にインストール用のイメージを書き込んだSDカードを挿入
  4. 電源をオフにした後、Alt + 右Shift + 電源で起動

メーカー保証はなくなり、完全に自己責任ですが手順自体は非常に洗練されており、臆する必要はありません。非常にあっけなく事は終わります。

NANDのバックアップに使うSDカード(要8GB以上)と、インストール用のイメージを書き込むSDカード(要16GB以上)は共用でOK。

僕は16GBのSDカードにバックアップしたNANDをDVD-Rに保存した後に、同じSDカードにインストール用のイメージを書き込みました。

SDカードへのイメージの書き込みには「Etcher」を使用しました。Mac版、Windows版、Linux版があります。

Pomera dm200 linux ruby python 00001

GUIでイメージを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に搭載されているプロセッサ

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を使っている限りはきびきびと動作して快適です。

Pomera dm200 linux ruby python 00008

DM200用のLinuxイメージにはX Window System(Xfce4)もプリインストール済み。

Pomera dm200 linux ruby python 00022

ポインティングデバイスがないため、キーボードでの操作をマスターしなければなりませんが、X Windowを動かしてもそこそこ動きます。(USBマウスなどを接続することは可能)

DM200のディスプレイ

標準状態で使っているとモノクロディスプレイのようですが、実際はカラーディスプレイが搭載されています。Linuxで使うと、ディスプレイから色が出て驚きがあります。

Pomera dm200 linux ruby python 00040

解像度は1024pixel × 600pixel。液晶にはややSTNっぽいざわつきがあり、高画質というわけではありませんが、不満に感じるほどではない程度。

DM200のキーボード

DM200のキーボードは質のいいV字ギアリンクで、完全に主観ですが20万円クラスのモバイル向けノートPCに搭載されているキーボードを彷彿とさせる、上品で軽めのキータッチになっています。

Pomera dm200 linux ruby python 00030

Ctrl キーがAの横にありませんが、Linux側ではもちろん(設定方法後述)ポメラ側にも Caps Lock と Ctrl の入れ替え機能があり、A の横に Ctrl キーがないとダメな人でも問題ありません。

Pomera dm200 linux ruby python 00051

▲ポメラ側の「キー割付」機能でも Ctrl と Caps Lock の入れ替えが可能。

先代のDM100よりキータッチは上質。ノートパソコンのそれに勝るとも劣らない質です。

強化されたATOKの変換効率も相まって、よどみなく文章を入力していくことができます。

Linuxのコンソールをたたく用途でも当然不足がなく、フルスピードでのプログラミングも十分可能です。DM200で使うスクリプトをDM200上でいくつか作りました。

この手のデバイスで、キーボードがボトルネックにならない体験は新鮮。

ただしキーボードの配列はJIS。キーボードの配列に人一倍関心とこだわりが強いであろうLinuxユーザーは残念に思うかもしれません。

Linux側はいかようにも配列の変更ができますが、ポメラ側がカスタムできない点を歯がゆく感じることでしょう。

KING JIM ポメラDM100との比較

僕は前機種のKING JIM ポメラDM100(以下DM100)も持っていて比較できる立場にあります。

Pomera dm200 linux ruby python 00041

※Caps Lockはポメラ側でもLinux側でもCtrlに変更できます

hp 200LXは2台、乾電池駆動のモバイルギアIIを10台ぐらい集めるほど乾電池駆動マシンが好きなため、DM100びいきをしたいところですが、アッサリDM200に軍配を上げます。

  • キーボードがDM100より軽快に打てる
  • ATOKの変換効率が向上
  • 動作がきびきびとしている
  • アウトラインモードが非常に便利
  • 貴重な類語辞書搭載

乾電池駆動にこだわりたい気持ちも分かりますが、文章をアウトプットする効率はDM200の方が圧倒的に上です。

その上Linuxが動作して融通が効くとなれば、DM100への回帰はポメラシリーズが終息して、DM200のバッテリーの入手が困難になったときまではなさそう、というのが両方所有する立場からの率直な感想です。

乾電池へのこだわりから、モバイルバッテリーからeneloopのニッケル水素充電池を充電できるチャージャーまで揃えていますが、それでもDM200を選びます。

Pomera dm200 linux ruby python 00038

DM200ではDM100でできたCSV入力ができなくなっていますが、Linux側でのGnumeric、LibreOfficeなどの利用で補完が可能です。

Pomera dm200 linux ruby python 00018

「これさえできれば……」ということがあったときに、リリーフとしてのLinux出動で大体何でも解決が可能というのはDM200の強力な切り札です。

DM200の電源について

DM200の電源は内蔵かつ交換不能のリチウムポリマーバッテリーで、おおよその連続稼動時間は10時間。

MicroUSBポートからの充電ができますので、モバイルバッテリーと組み合わせれば実質的に稼働時間には制限はありません。

Pomera dm200 linux ruby python 00039

※Caps Lockはポメラ側でもLinux側でもCtrlに変更できます

MicroUSBに外部電源を接続した場合に流れる電流をRT-USBVACで計測しました。

バックライトの輝度 電流(バッテリー充電中)
レベル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

この結果から、例えば130gのモバイルバッテリー、cheero Power Plus 3 mini 6700mAh(実容量4,180mAh)との組み合わせで連続稼働時間は3時間20分〜4時間増しにできることが分かります。

4180 / 1040 = 4.019230769
4180 / 1280 = 3.265625

在来のポメラの省電力性を思うと、普通のタブレットぐらいの電池持ちになってしまったのはいささか残念に思います。

起動の実際とファイルを介した連携

DM200をSDカードにインストールしたLinuxを起動できるようにすると何が起こるのか? 電源オフ状態を起点とした遷移図を起こしてみました。

リブート直後、ないしは電源オフの状態でAlt + 右Shift + 電源ボタンというコンビネーションを押しっぱなしにしていると、SDカード上のLinuxが起動できる仕組みです。

Pomera dm200 linux ruby python 00032

青色の矢印が標準の遷移。それ以外が、Linux起動にまつわる遷移です。

Pomera dm200 linux ruby python 00006

※この図もDM200上でGraphvizを使って作成しました。

ポメラの編集画面からLinuxのコンソールのプロンプト表示まで 22秒
Linuxのコンソールのプロンプトからポメラの編集画面表示まで 10秒

ポメラ側とLinux側との間の連携は、LinuxをインストールしたSDカード上に作成された2GBのVFAT領域で、ファイルを介してできます。

Pomera dm200 linux ruby python 00005

起動が速いので、ポメラ側とLinux側との行ったり来たりもそれほど苦痛ではありません。

VFAT領域はオートマウントではないため、ポメラ側とLinux側の連携のために、Linux側では明示的にVFAT領域を手動でマウントする必要があります。

僕は下掲のようなマウント/アンマウントスクリプトを用意しました。これを ~/.bashrc に追記して疑似自動マウントにしてしまう手もあるでしょう。( /etc/fstab を書き換えてもいいですが、一度下手にいじってLinux側を起動不能にした経験あり → 再インストールで復活)

連携の例

  • ポメラ側ではできない正規表現を使った置換をLinux側で実行し、またポメラ側に戻ってくる
  • ポメラ側で作成したブログ用の原稿を、Linux側で自動成形した上ブログにアップする
  • Linux側で画像処理やネットワーク接続の必要なことをし、成果をポメラ側に持って帰る

SDカード上のVFAT領域マウント

本来管理者権限が必要なところ、セキュリティを無視して一般ユーザーでもできるようにしています。

#!/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
  ls -l /mnt/vfat
fi

SDカード上のVFAT領域アンマウント

#!/bin/sh
mount | grep /mnt/vfat > /dev/null
if [ $? -eq 0 ]; then
  echo dm200 | sudo -S umount /mnt/vfat
fi

電源オフについて

DM200をSDカードにインストールしたLinuxを起動できるようにした後で重要なのが、ポメラ側での電源ボタン長押しによる電源オフの操作です。

Pomera dm200 linux ruby python 00039

※Caps Lockはポメラ側でもLinux側でもCtrlに変更できます

MicroUSB端子から電源を供給していると、電源ボタンを長押ししても電源オフにできません。

このことを知らないと無用な心配をしてしまいますので、試される際はご注意ください。

Linux側でできること

ここに、Linux側でできることを書いていきます。Linuxでできることができます、ということに尽きるのですが、何ができるのかイメージできない人が少なくないでしょう。

そんな人のための項です。

Dropboxによる双方向ファイル同期ができます

インストールした主要なソフトウェア

Pomera dm200 linux ruby python 00012

ソフトウェア 概要 コンソール/X
LibreOffice MS Word、MS Excelなどの代替 X
Gnumeric MS Excelの代替 X
Emacs 超高機能テキストエディタ 両用
Vim 超高機能テキストエディタ 両用
Python 3 インタプリタ コンソール
Ruby 2.3 オブジェクト志向インタプリタ コンソール
Graphviz 作図ツール コンソール
wget ダウンローダ コンソール
w3m テキストWebブラウザ コンソール
fbi コンソール用画像ビュア コンソール
ImageMagick コンソール用超多機能画像処理ツール コンソール

Debian Linux on DM200の設定と活用

施した設定や、使用に当たって必要な知識を随時書いていきます。

基本的にはDebian Linuxに対する一般的な知識をそのまま流用可能です。

従って、ここに書いてあることも基本的にはDM200固有の情報ではありません。

デフォルトユーザーのパスワード

種別 ユーザ名 パスワード
特権ユーザー root root
一般ユーザー dm200 dm200

セッションの切り替え

デフォルトの設定ではコンソール画面を6画面持っており、あたかもタブで複数画面を操作できる高機能ターミナルのように、コンソール画面を切り替えながら操作が可能です。

切り替えのためのキーボードショートカットは以下の通りです。

  • Alt + F1 〜 Alt + F6
  • Alt + → もしくは Alt + ←

時間のかかる作業を始めたら、Ctrl + z でバックグラウンドに送らずとも、セッションを切り替えて他のことができます。

screen、tmuxのようなマルチプレクサを使うことも当然できます。

CtrlとCaps Lockの入れ替え

/etc/default/keyboard を編集。

$ sudo vi /etc/default/keyboard

以下の行の冒頭の#を削除して保存。

#XKBOPTIONS="ctrl:nocaps"

再起動で反映。

loadkeys を使う手法だと fbterm 上で反映されないため、こちらを変更する方がおすすめです。

uim-fepの起動キーの変更

ログインすると、日本語表示ができる 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"))

半角/全角キーはコンソール上では認識しない状態のようです。

コンソールの自動ログイン

デフォルトではLinuxを起動するとログインプロンプトが表示されます。

ポメラ側とLinux側を頻繁に行ったり来たりすることになり、面倒になるためログインを自動化しました。

以下のファイルを編集。

$ sudo vi /lib/systemd/system/getty@.service

ExecStartから始まる行に、「-a dm200」を追記して保存。

ExecStart=-/sbin/agetty --noclear -a dm200 %I $TERM

「-a root」とすれば、特権ユーザーで自動ログインされるようになります。

カーネルのアップデート

@ichinomoto さんから、ブログでのイメージの公開前に、差し替え用のカーネルがリリースされることがあります

そんな場合の差し替えの手順。

DM200の電源をオフにし、SDカードを抜く。SDカードのVFAT領域直下にカーネルをコピーし(あるいはDM200単体でカーネルをダウンロードし)、Linuxを起動。以下のコマンドを実行。

$ sudo mount /mnt/vfat
$ sudo dd if=/mnt/vfat/kernel.img of=/dev/mmcblk0p14 bs=4M

少しでも怖さを感じたら、ブログでの正式公開まで待った方がいいです。

WiFi の設定

大まかな流れ。

  1. wifi_switch on を実行
  2. iwlist コマンドでAPの情報収集
  3. wpa_supplicant.conf に接続先のAPの設定を記述
  4. /opt/bin/wifi_switch off を実行
  5. /opt/bin/wifi_switch on を実行

特権ユーザーでwifi_switch on を実行。

# wifi_switch on

APの情報を収集。

# iwlist wlan0 scanning > /home/dm200/ap_list.txt

現状は「/mnt/vfat/settings/wpa_supplicant.conf → /etc/wpa_supplicant/wpa_supplicant.conf」の順で接続先AP情報を見にいくようになっており(「人柱版 その2」以降の将来のバージョンでは参照順が逆になる予定)、なおかつ /mnt/vfat/settings/wpa_supplicant.conf の方にひな形のファイルが置いてあるため /mnt/vfat/settings/wpa_supplicant.conf を修正せざるを得ません。

/mnt/vfat をマウント。

# mount /mnt/vfat

マウントされたVFAT領域のファイルはデフォルトの fstab のオプションでは特権ユーザーでないと編集できないようになっているため、特権ユーザーで wpa_supplicant.conf を編集。

# vi /mnt/vfat/wpa_supplicant.conf

最近多いWPA2-PSK用の設定は以下です。ssidと、pskを書き換えればOK。pskを暗号化する設定もありますが、とりあえずは平文でOK。

network={
    ssid="どこかのSSID"
    pairwise=CCMP
    group=CCMP
    proto=RSN
    key_mgmt=WPA-PSK
    psk="パスワード"
}

iPhoneのテザリングでは以下のようになります。(WPA2-PSKと同様)

第三世代のFlashAir、Olympus OM-D E-M1 Mark II(割当IPアドレス192.168.0.10)のWiFiの設定も以下でした。

認証なし、WEPでなければ以下で通用しそうです。

network={
    ssid="iPhoneのSSID"
    pairwise=CCMP
    group=CCMP
    proto=RSN
    key_mgmt=WPA-PSK
    psk="パスワード"
}

認証なしのオープンなAPの場合は以下のようになります。

network={
    ssid="どこかのSSID"
    key_mgmt=NONE
}

wpa_supplicant.conf に、エントリ network={…} を使用するAP分ズラズラと並べて書いていきます。

wpa_supplicant.conf のエントリの上から下に向けて接続を試みていくため、それを意識して並べると便利でしょう。

接続は以下のコマンドで。

# wifi_switch on

切断は以下のコマンドで。

# wifi_switch off

接続がうまくいかなかったら wifi_switch off を挟むか、リブートして再試します。特に、サスペンドを挟むと wlan0 UP に失敗するようになります。リブートで解決。リブートしなくても wifi_switch on と wifi_switch off を繰り返しているとそのうち接続できることがあります。これはどうにか直ってほしいですね。

$ sudo /sbin/reboot

Bluetooth の設定

Bluetooth も利用できますが、今のところ未使用。

リポジトリのアップデート

$ sudo apt-get update

必要最低限と自分が考えているパッケージのインストール

sudo apt-get install ruby python3 wget less zip unzip w3m fbi imagemagick -y

fbtermのフォントサイズを大きく

~/.fbtermrc を編集。

$ vi ~/.fbtermrc

font-size から始まる行のサイズ指定を変更して保存。

font-size=24

日本語フォントのインストール

IPAGothicをインストールし、fbtermに反映する例です。現在の版ではフォールバック先のフォントがマトモなため、無理にしなくても十分使えます。

$ 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

~/.fbtermrc を編集。

$ vi ~/.fbtermrc

元のフォント指定をコメントアウトして、 IPAGothic のみの指定に変更しました。

#font-names=Ricty Diminished
font-names=IPAGothic

この手順でインストールしたフォントは、 X Window 側でも利用可能です。

Bashの設定

~/.bashrc の編集。

$ vi ~/.bashrc

とりあえず必要そうなパスを追加しました。

PATH=~/bin:/opt/bin:/sbin:$PATH

自作のコマンドは ~/bin に入れています。

mkdir ~/bin

コンソール上でのスクリーンショットの撮影

fbgrab(fbcat)のインストール。

$ sudo apt-get install fbgrab -y

撮影手順。

  1. Alt + F1 のセッションで撮影したい画面を表示
  2. Alt + F2 で別のセッションのコンソールに移り、下掲のコマンドを実行
  3. 5秒後に撮影が実行されるので、Alt + F1で元のセッションに戻って撮影の瞬間を待機
$ sleep 5; fbgrab -d /dev/fb0 screenshot.png

少し画面が暗いと思ったら、ImageMagickをインストールしていれば明るく加工できます。

$ convert -modulate 170 screenshot.png out.png

処理後のout.pngを確認すると元画像より明るくなっているはずです。

コンソール上での画像の閲覧

Pomera dm200 linux ruby python 00009

コンソール用の画像ビュア、fbiをインストール。

$ sudo apt-get install fbi -y

使い方の例。-aオプションで画面に収まるように縮小表示されます。

実行中にhキーでヘルプが出ます。

$ fbi -a *.png

fbterm 上では利用できないため、fbterm から exit してから使う必要があります。

パッケージの検索

ページャーの less で受けているため、 j k でスクロールができます。また / で検索ができます。 q で less の終了。

$ apt-cache search キーワード | less

もうちょい絞り込む場合。

$ apt-cache search キーワード1 | grep キーワード2 | less

結構使うので ~/.bashrc に関数を設定しています。

funciton search () {
  apt-cache search $@ | less
}

xbindkeysの設定

キーボードショートカット押下で特定のコマンドを実行できるようにする xbindkeys が便利です。

X Window上で使えます。

インストール方法。

$ sudo apt-get install xbindkeys xbindkeys-config -y

設定は ~/.xbindkeysrc に書きます。

$ vi ~/.xbindkeysrc

~/.xbindkeysrc の例

"xterm" 
  control + shift + q

"emacs &"
  control + shift + x

設定ファイルのリロード。

$ xbindkeys -f ~/.xbindkeysrc

xbindkey-config というGUIの設定アプリも利用できます。

X Window 上の xterm などから実行します。

$ xbindkeys-config &
マウスのクリックのエミュレート

LilyTermなどウインドウ上を右クリックすると出てくるメニューが重要な役割を果たすソフトウェアが存在しますがDM200にはマウスがありません。

キーボード操作やマウス操作をエミュレートするxdotoolをxbindkeyから呼び出し、特定のキーボードショートカットに右クリックを割り当てると便利です。

xdotoolのインストール方法。

$ sudo apt-get install xdotool -y

以下を ~/.xbindkeysrc に追記すると Ctrl + 変換で左クリック、Ctrl + ひらがな/カタカナで右クリックが実行されるようになります。

"xdotool click 1"
  Control + Henkan_Mode

"xdotool click 3"
  Control + Hiragana_Katakana
Home、End、PageUp、PageDownのエミュレート

DM200にないHome、End、PageUp、PageDownキーがないとハマることもあります。

以下を ~/.xbindkeysrc に追記すると、Ctrl + ↑、Ctrl + ↓でPageUp、PageDown。

Ctrl + ←、Ctrl + →でHome、Endを押したことになります。(ちょっと動作が変?)

"xdotool key Home"
  Control + Left

"xdotool key End"
  Control + Right

"xdotool key Page_Up"
  Control + Up

"xdotool key Page_Down"
  Control + Down

一般ユーザーでのサスペンド

サスペンドは以下のコマンドでできます。

$ sudo /opt/bin/sus2ram

特権ユーザーでなければ実行できないのはちょっとキツイので、パスワードなしで実行できるようにします。

$ mkdir -p /home/dm200/bin/
$ cd /home/dm200/bin
$ vi sus

以下のような内容で保存します。「X Window 上のデスクトップ通知表示」でインストールしたデスクトップ通知のパッケージに依存しますので、インストールしておいてください。

#!/bin/sh

ps aux | grep "/opt/bin/sus2ra[m]" > /dev/null

if [ $? -eq 1 ]; then
    if [ "X${DISPLAY}" != "X" ]; then
	notify-send "suspend"
    fi
    echo dm200 | sudo -S /opt/bin/sus2ram
fi

以下のように権限を付与します。

$ chmod +x sus
$ sudo chmod u+s sus

「Bashの設定」の項で ~/bin にもパスを通していますので、以降 sus と打てばサスペンドできるようになります。

続いて、これを X Window 上で電源ボタンを押せば実行できるようにします。

xbindkeys をインストールします。(前項でインストールしていれば不要)

$ sudo apt-get install xbindkeys -y

~/.xbindkeysrc を編集します。

$ vi ~/.xbindkeysrc

次のような内容にして、保存。

"/home/dm200/bin/sus"
  m:0x0 + c:124
  X86PowerOff

設定ファイルのリロード。

$ xbindkeys -f ~/.xbindkeysrc

これで X Window 起動中に電源ボタンを押せばサスペンドできるようになりました。

/opt/bin/sus2ram の作り的にサスペンドまでに5秒かかるため、事前にデスクトップ通知を表示します。

一般ユーザーでのリブートと電源オフ

reboot 、 halt を一般ユーザーで実行できるようにしておきます。

$ sudo chmod u+s /sbin/reboot
$ sudo chmod u+s /sbin/halt

リブート

$ reboot

電源オフ

$ halt -p

halt -p の方は、 MicroUSB に外部電源が接続されているとリブートになってしまうようです。

X Window System の利用

X Window System とウインドウマネージャはプリインストールされています。

デフォルトのウインドウマネージャは xfce4 に設定されています。

Pomera dm200 linux ruby python 00022

特権ユーザーで起動すると起動できます。

# startx

一般ユーザーでの X Window の起動

一般ユーザーで起動しようとすると、

$ 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

X Window上でよく使うキーボードショートカット

機能 操作
アプリケーションメニュー表示 Alt + F1
ウインドウメニュー表示 Alt + Space
アプリの素早い起動 Alt + F2
ウインドウの切り替え Alt + Tab
ウインドウの最大化 Alt + F10
ウインドウの移動 Alt + F7
ウインドウを閉じる Alt + F4

X Window上での素早いアプリケーションの起動

Alt + F2で起動する小型のアプリケーションファインダーがおすすめです。

アプリ名を途中まで打ち込むと、以降を補完してくれます。

Pomera dm200 linux ruby python 00061

いちいちAlt + F1で表示されるメニューからたどるのに疲れたらこちらで。

X Window 上でスクリーンショットの撮影

xfce4-screenshooter をインストールします。

$ sudo apt-get install xfce4-screenshooter -y

インストールが終了すると、「Alt + F1 > アクセサリ > スクリーンショット」から起動できます。ホットキーを割り当てると便利です。

Pomera dm200 linux ruby python 00026

「Alt + F1 > 設定 > キーボード > アプリケーションショートカットキー」から、xfce4-screenshooter を起動するよう割り当てます。僕は Ctrl + Insert に割り当てました。

Pomera dm200 linux ruby python 00025

Xfce4 のパネルにコマンドの実行結果を定期的に更新しながら表示する

MacOSで言う BitBar に似た「ジェネリックモニター」プラグインをインストール。

Pomera dm200 linux ruby python 00046

X Window 上でのバッテリー残量表示に使います。

インストール方法。

$ sudo apt-get install xfce4-genmon-plugin -y

インストールが完了すると「Alt + F1 > 設定 > パネル > アイテム」の選択肢に「ジェネリックモニター」というものが増えます。

個人的に好みのプラグイン。

ちなみに、暗号通貨取引所coincheckから通貨の価格情報を取得して表示する例は以下のような感じです。

Pomera dm200 linux ruby python 00052

$ 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

X Window 上のデスクトップ通知表示

MacOSで言う Growl のようなもの。バッテリー残量警告などに使います。

Pomera dm200 linux ruby python 00049

インストール方法。

$ sudo apt-get install xfce4-notifyd -y

インストールが完了すると「Alt + F1 > 設定 > 通知」が増えます。

通知はコマンドラインからだと notify-send コマンドで送れます。

notify-send "hoge"

cronの中からnotify-sendを使う場合は、事前に環境変数の設定が必要です。

export DISPLAY=:0 nofity-send "hoge"

X Window 上でのバッテリー残量表示

バッテリー残量の確認は、以下のコマンドでできます。

$ /opt/bin/battery
$ /opt/bin/battery2

コマンド実行でしか確認できないのは不便なので、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キー。

Pomera dm200 linux ruby python 00047

「ジェネリックモニター」の設定画面を表示したら、「コマンド」欄には「/home/dm200/bin/battmon」を。「ラベル」は空白に。「間隔(秒)」は15秒程度にして、 Alt + C で閉じる。

Pomera dm200 linux ruby python 00048

これでバッテリー残量表示がパネルに追加されたはずです。「ジェネリックモニター」はパネルに複数登録して、別の要素を表示させることもできます。

Pomera dm200 linux ruby python 00050

コンソールにバッテリー残量を表示

X Windowでの生活も華やかでいいものですが、次第にコンソール中心の生活になっていきそうな感覚があります。

コンソール中心で考えたときに問題になるのがバッテリー残量の確認です。

コンソールだとステータスバーなどがないので、コマンドを実行する以外にバッテリー残量を確認する手段がありません。

Emacsには標準でbattery.elというmode-lineにバッテリー残量を表示するスクリプトがあるのですが、apmが標準と違うからか表示できませんでした。改造は僕の力量ではなかなか難しそう。

バッテリー残量の取得自体はできるのでどうにかできないかと調べていたら、tmuxというソフトウェアが使えることが分かりました。

tmuxはscreenと同じターミナルマルチプレクサ。

その役どころの説明が難しいのですが、コンソールの世界のウインドウシステムのようなものです。

そのtmuxは起動すると画面下部にステーラスラインが表示されるのですが、ここにコマンドの実行結果を埋め込め、しかも定期的に更新ができるのです。

この機能を使ってバッテリー残量の表示ができました。

Pomera dm200 linux ruby python 00059

まずはバッテリー残量を取得するスクリプトの用意です。

$ 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

tmuxの設定ファイルを編集。

$ vi ~/.tmux.conf

内容に以下を追記。

set-option -g status-interval 5
set-option -g status-right "|BATT:#(/home/dm200/bin/batt)"

これでtmuxを起動すると、ステータスラインにバッテリー残量が表示されているはずです。

XRPの価格表示

僕の場合は暗号通貨のXRPの価格も表示させました。

Pomera dm200 linux ruby python 00060

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)"

バックライトの輝度調整

バックライトの輝度調整は、以下のコマンドでできます。

$ sudo /opt/bin/backlight 254
$ sudo /opt/bin/backlight 40

40以下への設定は、液晶が見えなくなってしまうので要注意です。

輝度調節用のソフトウェアbrightness

Ruby/Gtk2で輝度調節用のソフトウェアを作ってみました。

Pomera dm200 linux ruby python 00058

以下のファイルをダウンロードして、/home/dm200/bin/brightnessとして設置。

ダウンロード: brightness-0.1.zip

実行権限を付与します。

$ chmod +x /home/dm200/bin/brightness

依存しているソフトウェアをインストール。

$ sudo apt-get install ruby ruby-gtk2

さらに、「xbindkeysの設定」の項を参照してxbindkeysをインストール。

~/.xbindkeysrcに以下を追記。

"echo dm200 | sudo -S /home/dm200/bin/brightness"
  Control + Delete

設定ファイルをリロード。

$ xbindkeys -f ~/.xbindkeysrc

これで、Ctrl + Deleteを押すとbrightnessが起動するようになります。

カーソル左右で輝度調節。EnterキーもしくはQキーで終了。

キーボードのAの列(A、S、D、F、G、H、J、K、L、;、;、])でも直接輝度を調整可能です。

マウスなしでの X Window の操作

DM200にはポインティングデバイスがありません(USBマウスなどを利用することは可能)。しかし、ほとんどの操作はキーボードだけでも可能です。下記の設定で割り当て一覧が参照できます。

  • Alt + F1 > 設定 > ウインドウマネージャー > キーボード
  • Alt + F1 > 設定 > キーボード > アプリケーションショートカットキー

USB経由でマウスを接続することも可能(未検証)ですが、間違いなく面倒になって使わなくなるため、そうしたくなることが必定の人は X Window 目当てでDM200を買わない方がいいでしょう。

操作 機能
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 + \ ウインドウを画面下にタイル表示

Pomera dm200 linux ruby python 00027

画面を左右二分割、上下二分割して表示できるようになります。

X Window上での日本語入力

日本語入力関係ではMozcとIBusがプリインストールです。

Pomera dm200 linux ruby python 00053

「Alt + F1 > 設定 > IBus の設定」を見ると、次の入力メソッドのキーボードショートカットが「<Super>space」になっているため、これを「<Shift>space」に変更。

一度ログアウトして設定を反映。

Pomera dm200 linux ruby python 00052

「<Shift>space」でMozcを選択した後、日本語入力は、「無変換」、「変換」、「ひらがな/カタカナ」キーを押すとできるようになります。

「A」と「あ」のモードはそれぞれ交互に切り替わり、「ひらがな/カタカナ」の場合は「あ」と「_A」のモードを交互に切り替えるホットキーに設定されています。

Qt使用ソフトウェアのデフォルトフォント設定

OctaveなどGUI ToolkitにQtを使ったソフトウェアの場合、デフォルトのフォントが小さくて見づらく感じます。

$ sudo apt-get install octave -y

その場合は、qtconfigをインストールしてフォント設定すると対処可能です。

Pomera dm200 linux ruby python 00067

$ sudo apt-get install qt4-qtconfig -y

「Alt + F1 > 設定 > Qt 4設定」から起動。

Pomera dm200 linux ruby python 00066

最後にCtrl + Sで保存しないと反映されません。

Qt使用ソフトウェアはUIの造作が小さいので、ビットマップフォントの利用がいいかもしれません。

僕はモトヤシーダ1 KPを使っています。

パネルの設定

時計やアプリケーションメニュー、ウインドウボタンなどを表示するパネル。

基本的な設定は「Alt + F1 > 設定 > パネル」でできます。

Pomera dm200 linux ruby python 00028

マウスなしだとパネルを移動するのが不可能のようです。MacOSのメニューバーのように上端に寄せたいが、キーボードだけだとままなりません。

Pomera dm200 linux ruby python 00021

そこで、以下のファイルを編集。

$ 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"/>

xterm のフォントを大きくする

X Window を起動すると、 xterm のフォントの小ささにウンザリするでしょう。

~/.Xdefaults でフォントサイズの変更が可能です。

$ vi ~/.Xdefaults

以下のようにして保存。

xterm*VT100*font: 10x20

以下の手順で反映されます。

xrdb -load ~/.Xdefaults

xterm代替ターミナルエミュレータ

xtermだと日本語が化けるので、代替のターミナルエミュレータをインストールします。

LilyTermがなかなかよい感じです。

Pomera dm200 linux ruby python 00047

ただ、Ctrl + FをLilyTerm自身が持っていくのでEmacsだと辛い。設定で変更したいところですが、マウスがないとアウトラインが展開できなさそう。設定ファイルを直接編集します。

$ vi ~/.config/lilyterm/default.conf

以下の箇所を探します。

find_key = Ctrl F

割当を変更して保存。Ctrl + Sはたびたび間違って押してビビル(stty stop)ので、lilytermの機能で上書きしてもよさそう。

find_key = Ctrl S

しかし、ターミナルエミュレータでCtrl + Fを潰すのってありえんと思うんですが……。Ctrl + Spaceも潰されている方が多いぐらいですが。

メニューはウインドウ上を右クリックすると出てきますが、DM200にはポインティングデバイスがないのでxbindkeysとxdotoolで右クリックをキーボードショートカットに割り当てる必要があります。「マウスのクリックのエミュレート」を参照してください。

Pomera dm200 linux ruby python 00048

インストール方法。

$ sudo apt-get install lilyterm -y

もう一つ、定番らしいターミナルエミュレータ、Terminatorをインストールしました。

Pomera dm200 linux ruby python 00049

縦横2分割ができるほか、プラグインに対応していたりと非常に高機能です。

Pomera dm200 linux ruby python 00050

こちらも右クリックが必要なので、xbindkeysとxdotoolで右クリックをキーボードショートカットに割り当てて使います。「マウスのクリックのエミュレート」を参照のこと。

インストール方法。

$ sudo apt-get install terminator -y

cronのインストール

定期的にコマンドを実行させるためにcronをインストールすると便利です。

インストール方法。

$ sudo apt-get install cron -y

cronのエントリの登録。

$ crontab -e

1分毎にコマンドを実行したい場合。

*/1 * * * * /path/to/command

サスペンド中は動作しません。

notify-sendをcronの中から使いたい場合は、事前に環境変数の設定が必要です。

export DISPLAY=:0 notify-send "hoge"

クリップボード履歴記録ユーティリティ

クリップボードに文字をコピーしたタイミングで履歴を記録し、後からクリップボードに以前の内容を書き戻しできるようにするユーティリティClipItが便利です。

Pomera dm200 linux ruby python 00056

インストールを終えると「Alt + F1 > アクセサリ > ClipIt」から起動できます。

機能 ホットキー
履歴 Ctrl + Alt + H
アクション Ctrl + Alt + A
管理 Ctrl + Alt + F
オフラインモード Ctrl + Alt + O

ポインティングデバイスがなくパネル上のアイコンがクリックできませんが、環境設定のウインドウは、Ctrl + Alt + Aのアクションのメニューからたどることができます。

Pomera dm200 linux ruby python 00057

アクションは、アクションの内容がキーボードだけでは編集できないため利用不能です。(設定ファイルがバイナリなので、テキストエディタで直編集する方法も取れない)

自動開始アプリケーションに設定されているので、次回のログインからはいちいち起動せずとも使えるようになっているはずです。

インストール方法。

$ sudo apt-get install clipit -y

画像ビューア

画像ビューアはFehとGeeqieがおすすめです。

インストール方法。

sudo apt-get install feh geeqie -y
Geeqieについて

Geeqieは全体的にとても素晴らしい画像ビューアですが、特にプレビューを見ながらファイル選択ができ、選択した(複数の)画像のファイルパスを自作のスクリプトに送ることができる点が僕の目的にかなっていました。

例えば、選択した(複数の)画像をWordPressにアップロードして、クリップボードにタグを得る、といったことができます。

自分の作ったスクリプトとの連携は、~/.config/geeqie/applicationsに.desktopファイルを置くとできます。

本来は「編集 > Preferences > Configure Editors」からGUIで編集できますが、新規作成したときにキーボードだけではファイル名を変更できないため、~/.config/geeqie/applicationsの.desktopファイルをテキストエディタで編集した方が楽です。

geeqieと自作スクリプトとの連携用サンプルdesktopファイルダウンロード: applications.tar.gz

Pomera dm200 linux ruby python 00065

中身はこんな感じです。名前と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といった感じで流れで分類し、後でマークに基いてファイル選択。処理を決めるといった感じで使えるのです。

Pomera dm200 linux ruby python 00063

ファイルリスト上でカーソルキーの上下を使ってフォーカスを移しながら1キー、1キー、1キー、1キーと1のマークにどんどん画像を追加。最後にCtrl + 1で1にマークした画像ファイルを選択、とすると、下掲のような状態になります。

Pomera dm200 linux ruby python 00064

Mキーでマークを表示しておいた方が便利です。

画像の表示スピードも軽快でよい感じです。

パス入力欄にフォーカスを取られた場合の対処方法

タブキーでフォーカスを移しながら使っていると、パス入力欄から出られなくなって困ります。これは、Ctrl + Hを2回たたくと脱出できます。そこからShift + Tabを1回か2回たたくとファイルリストのところにフォーカスを移せるはずです。

Pomera dm200 linux ruby python 00062

Fehについて

Fehは、MacOSにおけるPreview.appのようなもの。

起動が非常に軽く、「Alt + F1 > 設定 > MIMEタイプエディター」で画像の拡張子に関連付けておけば、ファイラーからEnterでサっと画像を確認できて便利です。

  • 主な操作:
    • 終了: Qキー
    • メニュー: Mキー

MacOSでいうQuickLookライクなことが可能となります。

オフィスライクなソフトウェア

MS Excelと似たソフトウェア、Gnumeric が X Window 上で利用できます。

Pomera dm200 linux ruby python 00020

インストール方法。

$ sudo apt-get install gnumeric gnumeric-l10n-ja -y

オフィススイートを集めた LibreOffice が X Window 上で利用できます。

Pomera dm200 linux ruby python 00018

▲LibreOffice Calc(MS Excelライク)

Pomera dm200 linux ruby python 00042

▲LibreOffice Writer(MS Wordライク)

Pomera dm200 linux ruby python 00043

▲LibreOffice Draw(MS Visioライク)

Pomera dm200 linux ruby python 00044

▲LibreOffice Impress(MS PowerPointライク)

インストール方法。

$ sudo apt-get install libreoffice libreoffice-l10n-ja -y

インストールが終了すると、Alt + F1 のメニューから起動できるようになります。

さすがに LibreOffice ともなると、ポインティングデバイスがないとキツそうです。

Sylpheed(メールクライアント)のインストール

Pomera dm200 linux ruby python 00023

POP3 、 IMAP4 などに対応したメールクライアント Sylpheed が利用できます。

Gmail の設定はアカウントを入力するだけでOK。ただし、二段階認証には対応していないので、アプリ パスワードを発行しておく必要があります。

インストール方法。

$ sudo apt-get install sylpheed sylpheed-i18n -y

ポインティングデバイスがなく、スクロールバーをつかめないため、メールの数が多いと最新メールにたどり着けません。

Home、End、Page Up、Page Downの各キーが使えればいけるのでは? と考え、xbindkeysとxdotoolを組み合わせて何とかなりました。「Home、End、PageUp、PageDownのエミュレート」を参照してください。

Midoriの利用

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でメニューが表示されるので、後はメニューをたどって操作が可能となります。

Firefoxのインストール

Pomera dm200 linux ruby python 00015

Webブラウザの Firefox が利用できます。

インストール方法。

$ sudo apt-get install firefox-esr firefox-esr-l10n-ja -y
操作 機能
Alt + D アドレスバーにフォーカスを移動

使えないことはないですが、あまり軽快な動作とはいえませんし、 Tab でリンクをたぐるのも辛い感じです。

テキストエディタのインストール

Linux上で使うテキストエディタに Vim と Emacs がインストールされていますが、それではキツい人向けのテキストエディタを紹介します。

以前であれば gedit が鉄板で NetWalker では大活躍だったのですが、時代は流れGUI Toolkit が Gtk3 になってUIが最悪になってしまいました。キーボードでの操作に全く向いていません。バカなのでしょうか?

代替のテキストエディタを推奨します。

いずれもタブとサイドバーで複数ファイルの編集が快適にできるタイプのテキストエディタ。Mac で言えば Smultron に近いものです。

Geany

gedit ライクなテキストエディタ Geany。

Pomera dm200 linux ruby python 00024

インストール方法。

$ sudo apt-get install geany -y
Pluma

geditライクなテキストエディタPluma。Gtk2時代のgeditのソースを使って作られているということで、往時の姿をとどめています。

Pomera dm200 linux ruby python 00011

インストール方法。

$ sudo apt-get install pluma -y

キーボードでマウスを操作

「Alt + F1 > アクセシビリティ > マウス > マウスエミュレーションを使用する」のチェックボックスをオンに。

Shift + NumLockでテンキーを使ってマウスカーソルが動かせるようになるのですが、テンキーがないため、loadkeysなどを使ってどうにかできないか研究中。

xdotoolを使って、キーコンビネーションなどをエミュレートできます。

$ sudo apt-get install xdotool -y

Shift + NumLockは以下でエミュレートできます。

$ xdotool key Shift_L+Num_Lock

xbindkeysで特定のキーボードショートカットにテンキーを割り当てても、最初の一発しか機能しないといったところで頓挫中。

Node.js / npm のインストール

なぜか標準のリポジトリに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 の設定

標準で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

Rubyで皆に使ってもらうユーティリティを作ったので、少しインストールが複雑なrbenvは利用しませんでした。

たのしいRuby 第5版
たのしいRuby 第5版

posted with amazlet at 17.07.15
高橋 征義 後藤 裕蔵
SBクリエイティブ
売り上げランキング: 32,016

Emacsの設定

Pomera dm200 linux ruby python 00014

packae.el に Melpa のリポジトリを追加

~/.emacs.el に以下を追加。

; package.el

(when (require 'package nil t)
  (add-to-list 'package-archives
	       '("melpa" . "http://melpa.org/packages/") t))
(package-initialize)
migemo のインストール

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)
ddskk をインストール

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/
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)

前提となる「一般ユーザーでのサスペンド」、「一般ユーザーでのリブートと電源オフ」の項を参照。

Emacs実践入門 ~思考を直感的にコード化し、開発を加速する (WEB+DB PRESS plus)
大竹 智也
技術評論社
売り上げランキング: 35,939

TIPS集

画面が崩れたときの対処方法

Ctrl + L でリフレッシュする。

 - ガジェット

dropbox_sale_banner evernote_sale_banner_03