ひとりぶろぐ

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

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

      2018/11/14

Pomera dm200 linux ruby python 00000

  • 変更履歴:
    • 2017/08/15: 「一般ユーザーでサスペンドするには?」で紹介のsusコマンドの多重起動処理を強化

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

DM200にDebian Linuxをインストールしてできること:

  • WiFiによる通信(apt-getでインストール、Webブラウザ、メールクライアントなどの利用)
  • Bluetoothで周辺機器を接続(マウスは動作確認)
  • USBで周辺機器を接続(キーボード、マウス、ストレージ、オーディオ、それぞれ動作確認)

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

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

DM200

Pomera dm200 linux ruby python 00034Pomera dm200 linux ruby python 00034
Caps LockLinuxCtrl

SDDebian LinuxLinux

Pomera dm200 linux ruby python 00029Pomera dm200 linux ruby python 00029
Caps LockLinuxCtrl

SDDebian Linux使使

Pomera dm200 linux ruby python 00035Pomera dm200 linux ruby python 00035
Debian Linux on DM200

Debian Linux on DM200使

もくじ

記事に関するお断り




使

調

使


DM200Debian Linux使

DM200

Linux使ATOK使

調ATOK調

VimEmacsLinux使

SyncLinuxLinux

動画解説: X Window上のxtermからrebootコマンドで再起動し、ポメラ側に復帰。ポメラ側から電源ボタン長押しで電源オフ。Alt + 右Shift + 電源ボタンでLinuxを起動。fbtermのプロンプトが表示されたらEmacsを起動。

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

Linux

580gLinuxDM200

PC

Pomera dm200 linux ruby python 00031Pomera dm200 linux ruby python 00031
LinuxNetWalkerACDM200使

NetWalker使DM200

Pomera dm200 linux ruby python 00039Pomera dm200 linux ruby python 00039
Caps LockLinuxCtrl

Linux

使

X Window

Pomera dm200 linux ruby python 00033Pomera dm200 linux ruby python 00033
LinuxX Window

使

11.3%NetWalker918使87%Linux



580gLinux

Pomera dm200 linux ruby python 00036Pomera dm200 linux ruby python 00036
35,000





SNS使

DM200

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

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

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使SD8GBSD16GBOK

16GBSDNANDDVD-RSD

SDEtcher使MacWindowsLinux

Pomera dm200 linux ruby python 00001Pomera dm200 linux ruby python 00001
GUISD

SD16GBSD

 @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

RAM512MBEmacs使

Pomera dm200 linux ruby python 00008Pomera dm200 linux ruby python 00008
DM200LinuxX Window System / Xfce4 X Window

Pomera dm200 linux ruby python 00022Pomera dm200 linux ruby python 00022
X Window

BluetoothUSB使


使Linux使

Pomera dm200 linux ruby python 00040Pomera dm200 linux ruby python 00040
1024pixel × 600pixelSTN


DM200V20PC

Pomera dm200 linux ruby python 00030Pomera dm200 linux ruby python 00030
Ctrl ALinuxCaps LockCtrlACtrl

Pomera dm200 linux ruby python 00051Pomera dm200 linux ruby python 00051
CtrlCaps Lock

DM100DM100

ATOK

LinuxDM200使DM200



JISLinux

Linux

電源について

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

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

Pomera dm200 linux ruby python 00039

※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

130gcheero Power Plus 3 mini 6700mAh4,180mAh822

26,800mAh16,000mAh2984

15MacBook Pro330

DM200

電源オフについて


DM200SDLinux

Pomera dm200 linux ruby python 00039Pomera dm200 linux ruby python 00039
Caps LockLinuxCtrl

MicroUSB


KING JIM DM100


KING JIM DM100DM100

Pomera dm200 linux ruby python 00041Pomera dm200 linux ruby python 00041
Caps LockLinuxCtrl

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

DM200

LinuxDM100DM200

eneloopDM200



Pomera dm200 linux ruby python 00038Pomera dm200 linux ruby python 00038
DM200DM100CSVLinuxGnumericLibreOffice

Pomera dm200 linux ruby python 00018Pomera dm200 linux ruby python 00018
LinuxDM200

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


DM200SDLinux 

Alt + Shift + SDLinux

Pomera dm200 linux ruby python 00032Pomera dm200 linux ruby python 00032
Linux

Pomera dm200 linux ruby python 00006Pomera dm200 linux ruby python 00006
DM200Graphviz使
ポメラの編集画面から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側で画像処理やネットワーク接続の必要なことをし、成果をポメラ側に持って帰る

Linux

Linux

Linux

SDVFAT



#!/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

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

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

Linux側でできること

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

Debian Linux 9のリポジトリに登録された膨大なソフトウェア資産を活用できます。

Ruby、Pythonなどの各種処理系のリポジトリに登録された膨大なパッケージ群も利用できます。

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ブラウザ コンソール
ncftp ftpクライアント コンソール
fbi コンソール用画像ビュア コンソール
ImageMagick コンソール用超多機能画像処理ツール コンソール

Debian Linux on DM200の設定と活用

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

基本的には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

ポメラ側とLinux側を行き来すると発生する時刻のズレを解消するには?


 2Linux9

@ichinomoto

X Window
$ sudo touch /etc/adjtime
$ sudo timedatectl set-local-rtc 1

 2

CtrlCaps Lock


/etc/default/keyboard
$ sudo vi /etc/default/keyboard

#
#XKBOPTIONS="ctrl:nocaps"


キーをUS配列化するには?


DM200JISUS

:

/etc/default/keyboard
$ sudo vi /etc/default/keyboard


XKBLAYOUTjpus

XKBMODELjp106pc105


(:@ichinomoto)

XKBOPTIONS#Caps LockCtrl
XKBMODEL="pc105"
XKBLAYOUT="us"
#XKBOPTIONS="ctrl:nocaps"



Linux

X WindowJISUSJIS使Alt + F1    IBus     使US使

:

 2US(`)

 2test_kernel_d29.zipUS

アップデート用のスクリプトが付属するのでそれを実行するだけです。

$ unzip test_kernel_d29.zip
$ cd test_kernel_d29
$ sudo ./kernel_update.sh

「test_kernel_d29.zip」に更新するとMenuキーがModifierのSuperキーとして使えるようになってキーバインドの空き地が増えるので、JIS配列で使っていても適用をおすすめします。

また、半角/全角キーもgraveとして認識するようになっています。

「人柱版 その2」以降の版が出た際には修正されているはずです。

キーボードを親指2本で使うには?


DM200使使

2便

2ShiftCtrlAlt

ShiftCtrlAlt

使便

Alt + F1AltF1

Alt + Ctrl + D()1

:

Alt + F1          使

2

カーネルをアップデートするには?

※最近公開されるカーネルには更新用のシェルスクリプトが付属するようになったため、ここでの知識は不要になりました。

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

そんな場合の差し替えの手順。ホームディレクトリにkernel.imgというファイル名でカーネルが設置されている場合の例です。

$ sudo dd if=/home/dm200/kernel.img of=/dev/mmcblk0p14 bs=4M

/opt/bin以下の実行ファイルを一般ユーザーでも実行できるようにするには?

$ sudo chmod +x /opt/bin/*

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


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

WPA2-PSKAPiwlist 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/fstabwpa_supplicant.conf
# vi /mnt/vfat/settings/wpa_supplicant.conf

WPA2-PSKssidpskOKpsk
ctrl_interface=/var/run/wpa_supplicant
network={
    ssid="どこかのSSID"
    pairwise=CCMP
    group=CCMP
    proto=RSN
    key_mgmt=WPA-PSK
    psk="パスワード"
}

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

FlashAirIP192.168.0.1Olympus OM-D E-M1 Mark IIIP192.168.0.10WiFi

WEP
ctrl_interface=/var/run/wpa_supplicant
network={
    ssid="flashairのSSID"
    pairwise=CCMP
    group=CCMP
    proto=RSN
    key_mgmt=WPA-PSK
    psk="パスワード"
}

Android 6Nexus 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.confnetwork={}使AP
ctrl_interface=/var/run/wpa_supplicant
network={
    ssid="どこかのSSID1"
    ....
}
network={
    ssid="どこかのSSID2"
    ....
}
network={
    ssid="どこかのSSID3"
    ....
}

wpa_supplicant.confAP


# wifi_switch on


# wifi_switch off

wifi_switch offwlan0 UP
$ sudo /sbin/reboot

wifi_switch onwifi_switch off

wpa_supplicant.conf


 2


(一)/mnt/vfat/settings/wpa_supplicant.conf

(二)/etc/wpa_supplicant/wpa_supplicant.conf


AP/mnt/vfat/settings/wpa_supplicant.conf/mnt/vfat/settings/wpa_supplicant.conf

wifi_switch/mnt/vfat/wpa_supplicant/tmp/wpa_supplicant.conf






/mnt/vfat/settings/wpa_supplicant.conf

/tmp/wpa_supplicant.conf

/etc/wpa_supplicant/wpa_supplicant.conf


 2/etc/wpa_supplicant/wpa_supplicant.conf


apt-get

GUISynaptic使


 $ sudo apt-get update

install
$ sudo apt-get install unzip

-y
$ sudo apt-get install unzip -y


remove
$ sudo apt-get remove unzip


apt-cacheapt-get update

lessjk便/qless
$ apt-cache search キーワード | less


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

使~/.bashrc
funciton search () {
  apt-cache search $@ | less
}



lesspeco使便AND
$ sudo apt-get install peco

xargs使pecoapt-get
$ apt-cache search キーワード | peco | xargs sudo apt-get install $@ -y

使





(一)ruby

(二)python

(三)wget

(四)less

(五)peco

(六)zip

(七)unzip

(八)nkf

(九)imagemagick

(十)w3m

(11)fbi


IPAGothicfbterm

 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~/binsus


susX 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/sus2ram5


使reboot便


$ sudo chmod u+s /sbin/reboot

:
$ reboot

:

halt
$ halt -p

halt -pMicroUSB

Dropboxによる双方向ファイル同期をするには?


DM200Dropbox


1Dropbox



Bash


~/.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

BASHbash


6

screentmux便使

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

Ctrl + Z

uim-fep


fbterm便

uim-fepMozcCtrl + SpaceEmacsset-mark使

~/.uim
$ vi ~/.uim

Alt + escape
(define-key generic-on-key? '("<Alt>escape" "zenkaku-hankaku"))
(define-key generic-off-key? '("<Alt>escape" "zenkaku-hankaku"))

/

fbterm


~/.fbtermrc
$ vi ~/.fbtermrc

font-size
font-size=24

fbterm


~/.fbtermrc
$ vi ~/.fbtermrc

ambiguous-widenoyes
ambiguous-wide=yes


Ctrl L


fbgrabfbcat
$ 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
$ sudo apt-get install imagemagick -y
$ convert -modulate 170 screenshot.png out.png

out.png


Pomera dm200 linux ruby python 00009Pomera dm200 linux ruby python 00009
fbi
$ sudo apt-get install fbi -y

使-a

h
$ fbi -a *.png

fbtermfbtermexit使

コンソールにバッテリー残量を表示するには?〜bash編






Emacsbattery.elmode-lineapmElisp()

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


tmuxscreen



tmux

使

Pomera dm200 linux ruby python 00059Pomera dm200 linux ruby python 00059
/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


使tmuxXRP

Pomera dm200 linux ruby python 00060Pomera dm200 linux ruby python 00060
XRPCoincheck
$ 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


X Window

X Window


Debian Linux on DM200X Window Systemxfce4

Pomera dm200 linux ruby python 00022Pomera dm200 linux ruby python 00022
fbtermexitstartx
$ startx

fbterm
# startx

Alt + TabTab使Enter

fbtermX Window


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

X Window


MozcIBus

Pomera dm200 linux ruby python 00053Pomera dm200 linux ruby python 00053
Alt + F1    IBus <Super>space<Shift>space



d28Menu + Space<Super>space

Pomera dm200 linux ruby python 00052Pomera dm200 linux ruby python 00052
Mozc/

pomera-dm200-linux-ruby-python-00071pomera-dm200-linux-ruby-python-00071
A/_A




(一)

(二)

(三)Mozc

(四)MozcJAA

(五)A

X Window使


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

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


Alt + F1Alt + F2



Pomera dm200 linux ruby python 00061Pomera dm200 linux ruby python 00061

xterm


~/.Xdefaults 
$ vi ~/.Xdefaults


xterm*VT100*font: 10x20


xrdb -load ~/.Xdefaults

xterm


xterm 使

LilyTerm

Pomera dm200 linux ruby python 00047Pomera dm200 linux ruby python 00047
Ctrl + FLilyTerm
$ vi ~/.config/lilyterm/default.conf


find_key = Ctrl F


find_key = Ctrl S

Ctrl + Sstty stoplilyterm

()

Shift + 

DM200keynavkeynav使

Pomera dm200 linux ruby python 00048Pomera dm200 linux ruby python 00048
:
$ sudo apt-get install lilyterm -y

Terminator

Pomera dm200 linux ruby python 00049Pomera dm200 linux ruby python 00049
2

Pomera dm200 linux ruby python 00050Pomera dm200 linux ruby python 00050
keynav使

:
$ sudo apt-get install terminator -y

X Window 


xfce4-screenshooter

:
$ sudo apt-get install xfce4-screenshooter -y

Alt + F1    便

Pomera dm200 linux ruby python 00026Pomera dm200 linux ruby python 00026
Alt + F1      xfce4-screenshooter

Ctrl + Insert

Pomera dm200 linux ruby python 00025Pomera dm200 linux ruby python 00025

X Window


MacOSGrowlxfce4-notifyd使

Pomera dm200 linux ruby python 00049Pomera dm200 linux ruby python 00049
:
$ sudo apt-get install xfce4-notifyd -y

Alt + F1    

 notify-send 
notify-send "hoge"

cronnotify-send使
export DISPLAY=:0 nofity-send "hoge"




Alt + F1    

Pomera dm200 linux ruby python 00028Pomera dm200 linux ruby python 00028
MacOS

Pomera dm200 linux ruby python 00021Pomera dm200 linux ruby python 00021

$ vi /home/dm200/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml

y=10y=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

調brightness


Ruby/Gtk2調

Pomera dm200 linux ruby python 00058Pomera dm200 linux ruby python 00058
/home/dm200/bin/brightness

: brightness-0.3.zip


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

dm200PASSWORD
PASSWORD="dm200"


$ sudo apt-get install ruby ruby-gtk2 -y

xbindkeysxbindkeys

~/.xbindkeysrc
"/home/dm200/bin/brightness"
  Control + Delete


$ killall xbindkeys
$ xbindkeys -f ~/.xbindkeysrc

Ctrl + Deletebrightness

調EnterQ

AASDFGHJKL;;]調


MacOSBitBar



Pomera dm200 linux ruby python 00046Pomera dm200 linux ruby python 00046
X Window使


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

Alt + F1      

coincheck

Pomera dm200 linux ruby python 00052Pomera 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



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

便xfce4

xfce4X 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 + MTabEnter

調TabEnter

Pomera dm200 linux ruby python 00047Pomera dm200 linux ruby python 00047
/home/dm200/bin/battmon15 Alt + C

Pomera dm200 linux ruby python 00048Pomera dm200 linux ruby python 00048


Pomera dm200 linux ruby python 00050Pomera dm200 linux ruby python 00050


DM200xfce4-goodiesAlt + F1    



X WIndowxprintidleX 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

energysaverAlt + F1    

pomera-dm200-linux-ruby-python-00070pomera-dm200-linux-ruby-python-00070
:

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 動作を無効にする

Qt4ベースのソフトウェアのフォント設定をするには?


OctaveGUI ToolkitQt使
$ sudo apt-get install octave -y

qtconfig

Pomera dm200 linux ruby python 00067Pomera dm200 linux ruby python 00067
$ sudo apt-get install qt4-qtconfig -y

Alt + F1    Qt 4

Pomera dm200 linux ruby python 00066Pomera dm200 linux ruby python 00066
Ctrl + S

Qt使UI

1 KP使

xbindkeys


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-configGUI

X Windowxterm
$ xbindkeys-config &

X Window


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

キーボード操作に加え、「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 + \ ウインドウを画面下にタイル表示

Pomera dm200 linux ruby python 00027

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

keynavを使ってキーボードによるマウス操作をするには?


DM200

X Window

Tab

LilyTerm

便keynav

keynav



DM200




ClipIt便

Pomera dm200 linux ruby python 00056Pomera 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 00057Pomera dm200 linux ruby python 00057
keynav

使

:
$ sudo apt-get install clipit -y
Clipman

ClipItClipman

:
$ sudo apt-get install xfce4-clipman xfce4-clipman-plugin -y

ClipmanQRClipIt

pomera-dm200-linux-ruby-python-00072pomera-dm200-linux-ruby-python-00072


FehGeeqie

:
sudo apt-get install feh geeqie -y
Geeqie

Geeqie

WordPress

~/.config/geeqie/applications.desktop

  Preferences  Configure EditorsGUI~/.config/geeqie/applications.desktop

geeqiedesktop: applications.tar.gz

Pomera dm200 linux ruby python 00065Pomera dm200 linux ruby python 00065
ExecgeeqieOKIcon/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;



Rubynotify-sendlog.txt
#!/usr/bin/ruby

ARGV.each do |f|
  system("export DISPLAY=:0 nofity-send #{f}")
end
system("echo #{ARGV} >> /home/dm200/log.txt")

55

132使

Pomera dm200 linux ruby python 00063Pomera dm200 linux ruby python 00063
使11111Ctrl + 11

Pomera dm200 linux ruby python 00064Pomera dm200 linux ruby python 00064
M便


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

タブキーでフォーカスを移しながら使っていると、パス入力欄から出られなくなってキーボードだけで操作している場合困ります。これは、Ctrl + Hを2回たたくと脱出できます。

そこからShift + Tabを1回か2回たたくとファイルリストのところにフォーカスを移せるはずです。

Pomera dm200 linux ruby python 00062

Fehについて

FehMacOSPreview.app

Alt + F1    MIMEEnter便


:

: Q

: M




MacOSQuickLook


Linux使VimEmacs

geditNetWalkerGUI ToolkitGtk3UI





MacSmultron
Geany

geditGeany

Pomera dm200 linux ruby python 00024Pomera dm200 linux ruby python 00024
:
$ sudo apt-get install geany -y
Pluma

geditPlumaGtk2gedit使姿

Pomera dm200 linux ruby python 00011Pomera dm200 linux ruby python 00011
:
$ sudo apt-get install pluma -y

メールクライアントをインストールするには?


Pomera dm200 linux ruby python 00023Pomera dm200 linux ruby python 00023
POP3 IMAP4Sylpheed

GmailOK 


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

DM200

keynavkeynav使


MS ExcelGnumeric  X Window 

Pomera dm200 linux ruby python 00020Pomera dm200 linux ruby python 00020
:
$ sudo apt-get install gnumeric gnumeric-l10n-ja -y

 LibreOffice  X Window 

Pomera dm200 linux ruby python 00018Pomera dm200 linux ruby python 00018
LibreOffice CalcMS Excel

Pomera dm200 linux ruby python 00042Pomera dm200 linux ruby python 00042
LibreOffice WriterMS Word

Pomera dm200 linux ruby python 00043Pomera dm200 linux ruby python 00043
LibreOffice DrawMS Visio

Pomera dm200 linux ruby python 00044Pomera dm200 linux ruby python 00044
LibreOffice ImpressMS PowerPoint

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

Alt + F1 

LibreOffice keynav

Webブラウザを利用するには?~Midoriの利用


FirefoxDM200使WebMidori




$ 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の利用

Pomera dm200 linux ruby python 00015

著名なWebブラウザ、Firefoxも利用可能です。

インストール:

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

使Midori

iPhoneBluetoothBluetooth PAN


USB


/opt/bin/usb_host onMicroUSBUSB HOST
$ su
# usb_host on

DM200OTG HUB

DM200OTG HUB

DM200



Ctrl + Alt + DCtrl + 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


cron便


$ sudo apt-get install cron -y

cron
$ crontab -e

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



notify-sendcron使
export DISPLAY=:0 notify-send "hoge"

Node.js / npm 


npm


 [] How to install Node.js and npm LTS on Debian 9 stretch | LinuxBSDos.com

$ 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

GemNative Extension
$ sudo apt-get install ruby-dev build-essential libxml2-dev libxslt1-dev zlib1g-dev -y

Gem
$ sudo gem install mechanize twitter pushover evernote

irbTab~/.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

CapybaraPoltergeist


MechanizeJavaScriptCapybara

WebKitPhantomJSRubyCapybaraPhantomJSPoltergeist

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

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

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

Emacsの設定


Pomera dm200 linux ruby python 00014Pomera dm200 linux ruby python 00014

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



pomera-dm200-linux-ruby-python-00068pomera-dm200-linux-ruby-python-00068
packae.elMelpa

~/.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-packagemigemo

~/.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-packageddskk

~/.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/
ddskk 

M-x list-packagehelm

使
mode-line

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

~/.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

 - DM200, ガジェット