Raspberry Pi ZERO W (dmenu)

dmenuはタイル型ウィンドウマネージャのdwmと同じ開発元の軽量且つコンパクトなアプリケーションランチャーです。surfブラウザも同じ開発元ですね。

キーボードから起動できるランチャーとしてPi ZERO Wにインストール、設定してみたいと思います。

インストール 起動

raspbianではdmenuは以下に含まれています。

# apt install suckless-tools

/usr/bin/以下に3個のファイルがインストールされます。
dmenu dmenu_parh dmenu_run
ターミナルからdmenu_runを実行します。

$ dmenu_run -fn mono:size=20 2>/dev/null


実行は見やすくするためでかい文字サイズを指定しています。
またtightvncのアプリケーション実行はXlib:xxxのエラーが出てしまうためエラー出力を捨てています。


左側の入力欄に文字を入力するとどんどん絞り込をします。入れ方次第でヒットする率も上がってきます。
dmenu_runはスクリプトになっています。dmenu_parhを実行、dmenuに渡して選択、shellに送って実行。
dmenu_parhはosから実行コマンドを検索して~/.cache/dmenu_runを作成します。
現在1413個のコマンドが登録されています。

実際にはユーザーが実行できるコマンドも限られておりまたオプション付きで実行することが多いのでdmenu_runを利用することは限られると思います。topや対話型のコマンドも終了してしまいます。
タイル型ウィンドウマネージャでは採用されていることも多いようなので何らかのスクリプトやパッチがあるものと思っています。

そこで見様見真似ですがスクリプトを参考に簡単な自己登録型のmenuを作成してみます。
ひとつはウィンドウ付きのアプリケーションを実行するmain menuをもう一つはターミナルから起動するその他sub menuを設定してみました。

スクリプト dmenu_main

~/binを作成してスクリプトを置きます。PATHの確認(無ければ追加)

$ mkdir ~/bin
$ echo $PATH
/home/pi/bin #含まれていること

~/bin/dmenu_main

#!/bin/sh
cache=$HOME/bin/dmenu_main_list
(
dmenu -p dmenu -fn mono:size=12 -sb CornflowerBlue -sf black "$@" < "$cache" 2>/dev/null
) | ${SHELL:-/bin/sh} &

実行権限

$ chmod 755 ~/bin/dmenu_main

~/bin/dmenu_main_list

xterm
xterm -e ranger
lxterminal
leafpad
xterm -e w3m ~/.w3m/bookmark.html
lxappearance

dmenu_mainにはショートカットキーを割り当てます。

# apt install xbindkeys

設定ファイル

$ xbindkeys -d > ~/.xbindkeysrc

キーを設定

$ xbindkeys -k


割り当てたいキーを調べます。
実行するとウィンドウが出るのでキーを押します。
取り敢えずAlt + mとAlt + dにdmenu_main Alt + xにxtermを設定してみました。
.xbindkeysrcの適当なところに書き写します。
“NoCommand”を実行したいcommandに変更(dmenu_main)

~/.xbindkeysrc

"dmenu_main"
    m:0x8 + c:50
    Alt + m

"dmenu_main"
    m:0x8 + c:41
    Alt + d

"xterm"
    m:0x8 + c:61
    Alt + x

~/.vnc/xstartupに追加登録(適当なところに)

xbindkeys &

再起動確認

ショートカットキーOKですね。
dmenuの取り消しはEsc
dmenu_main_listの追加変更はrangerを利用すると簡単便利です。

スクリプト dmenu_sub

~/bin/dmenu_sub

#!/bin/sh
cache=$HOME/bin/dmenu_sub_list
(
dmenu -b -p command -fn mono:size=12 -sb lightgreen -sf black "$@" < "$cache" 2>/dev/null
) | ${SHELL:-/bin/sh} &

実行権限

$ chmod 755 ~/bin/dmenu_sub

~/bin/dmenu_sub_list

xwininfo
xbindkeys -k
xterm -e sudo fdisk /dev/sda
sudo update-alternatives --config x-terminal-emulator
xterm -e htop
その他思いつくまま適当


表示はbottomにしています。
.bashrcにはaliasを追加

alias ds='dmenu_sub'

$ source .bashrc


terminalを追加インストールするとデフォルトのx-terminal-emulatorは変更になってしまうことがあります。滅多に使わないコマンドですがrootで実行、x-なんたらくらい覚えているとdmenuの強力な絞り込みでかなりの登録数があっても一発で探し当ててくれます。
こんな使い方も便利かもしれません。(登録次第ですが)

Raspberry Pi ZERO W (File manager Ranger)

前回のPi ZERO Wにファイルマネージャーを導入してみます。
キーボード主体が目標ということもあってFreeBSDでは一部不満の残る結果となったRangerをRaspbianで再度トライすることにしました。

Rangerはvim likeな高機能のファイルマネージャーですがvim使いの人なら少し触っていくと基本の動作はおおよそ掴めると思います。

Ranger インストール

# apt install ranger highlight poppler-utils atool mediainfo

w3m-imgは依存関係でインストールされます。
設定ファイル

$ ranger --copy-config=all
creating: /home/pi/.config/ranger/rifle.conf
creating: /home/pi/.config/ranger/commands.py
creating: /home/pi/.config/ranger/commands_full.py
creating: /home/pi/.config/ranger/rc.conf
creating: /home/pi/.config/ranger/scope.sh

使用するターミナルxtermからrangerを実行します。

lxterminaは画像を表示できません。
前回~/.Xresourcesを変更したことでdefaultのcolorschemeでも見やすくなりました。
やはりテキストファイルはデフォルトでviewしてくれますね。

~/.config/ranger/rc.conf

29 set show_hidden true
62 set preview_images true
104 set draw_borders true


ソースコードを色付きでview (highlight)


pdf 埋め込まれている文字をview (poppler-utils)


圧縮ファイル関連もRasbianが対応、インストールしているものはviewもOKです。(atool)
必要に応じて追加すればいいと思います。


画像表示もOKですね。(w3m-img)
メディア情報をviewします。(mediainfo)

動画をview
ZEROでは動画再生は実質不可なのであまり意味が無いのですが折角なのでテストをしてみます。
またffmpegthumbnailerをインストールすることでかなりのライブラリが追加されます。用途によって特に必要がなければインストールしないほうが無難と思います。

# apt install ffmpegthumbnailer

~/.config/ranger/scope.sh 以下を有効にする

80     video/*)
81       ffmpegthumbnailer -i "$path" -o "$cached" -s 0 && exit 6 || exit 1;;


インストール、設定がなければmediainfoでmedia情報をviewします。
初回は~/.cache/ranger以下にキャッシュファイルを作成します。
さらに進んで実行するとmplayerがインストールしてあれば超スローで再生を開始します。

~/.config/ranger/rifle.conf

ext mp4 = mediainfo "$@" | less


rifle.confの冒頭附近に記述
mplayerの代わりにmediainfoを実行して全文を表示させます。

w3m


html view
w3mのbookmarkはhtmlで記述されています。
実行するとw3m起動(同一ウインドウ)
rifle.confのw3mは最後に記載されています。他にブラウザがあってw3mをrangerのデフォルトにする場合は先頭に記載するようにします。


keymapを適当に設定しておくと使いやすくなると思います。(w3mのはなし)

https://github.com/tokuhirom/w3m/blob/master/doc-jp/README.func

Pi ZERO W raspbian-stretch-liteからのシンプルな環境ではうまく動作してくれるようです。
Pi 3 raspbian-stretchでは画像関係のviewはダメですね。xtermもfontconfigがうまく当たらない。素直にGUIを使ったほうが良さそうです。

Raspberry Pi ZERO W + Nexus7(2012)

当サイトには基本ディスプレー、キーボードの付いた有効なマシンはPi3しかありません。
万一Pi3、もしくはローカルLan内のなにかに異常があった場合調査、復旧に困難を伴うことがあります。
またPi3への新規インストールの際にもコンソール画面だけでは効率が悪くなります。

現在は出番の少なくなったNexus7(2012)+keybordとPi ZERO-Wを合わせてもう1台のmini-PC環境を構築してみたいと思います。


Nexus7とPi ZERO-Wはなんの捻りもないvnc接続ですがZERO-Wにはraspbian-stretch-liteをインストール、ヘッドレスでxorgから軽量のX環境を構築、vncをNexus7の画面サイズに合わせて起動して専用端末風に見せかけています。ローカルLan内限定です。

ZERO-W インストール

Pi3でカード作成(デバイス名確認、注意のこと)

# dd if=2018-11-13-raspbian-stretch-lite.img of=/dev/sda bs=1M

書き込みが終わったらカードの段階で最低限の設定をしておきます。(各自の環境)
pcmanfmからカードのbootに空ファイルssh作成、ターミナルからネットワーク設定

$ sudo cp /etc/wpa_supplicant/wpa_supplicant.conf /media/pi/rootfs/etc/wpa_supplicant

/media/pi/rootfs/etc/dhcpcd.conf # 追記

static ip_address=192.168.0.13
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

カードをZERO-Wにセットして起動、sshで接続してセットアップ続行
pi3の/etc/hostsにはアドレスとhostnameを登録

$ ssh pi@raspberrypi
$ sudo raspi-config
Locale ja_JP.UTF-8
Timezone Asia Tokyo

exit exitしてssh再接続
updateしてX関連インストール

root@raspberrypi:~ # apt update && apt -y upgrade
root@raspberrypi:~ # apt install xorg twm tightvncserver autocutsel fontconfig fonts-ipafont fonts-ricty-diminished scim-anthy
root@raspberrypi:~ # exit

インストールが終わったらvncserverを起動してパスワード設定

pi@raspberrypi:~ $ vncserver
You will require a password to access your desktops.
Password: 
Verify:   
Would you like to enter a view-only password (y/n)? n
xauth:  file /home/pi/.Xauthority does not exist

New 'X' desktop is raspberrypi:1

一旦kill $ vncserver -kill空白:1になります

pi@raspberrypi:~ $ vncserver -kill :1
Killing Xtightvnc process ID 19560


Pi3はウインドウが混み合ってるのでFreeBSDから作業をしています。
インストール直後のupdateでは1.1G
X関連インストール後は1.4G

ZERO-Wには~/.vnc/xstartupが作成されています。下記はコメントアウトされているので外して有効にします。

x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &

再度vncserverを適当なサイズを指定して起動

pi@raspberrypi:~ $ vncserver -geometry 800x480 -depth 24


FreeBSDのvncviewerから呼び出しています。

% vncviewer raspberrypi:1

Xが正常に起動、確認できたところでkill

pi@raspberrypi:~ $ vncserver -kill :1

使いやすく軽量なUI、ツールをインストール

root@raspberrypi:~ # apt install tcsh openbox lxpanel lxappearance lxterminal leafpad vim pix-icons gnome-icon-theme

~/.Xresourcesの作成と日本語環境

基本の手順はFreeBSDで作成したものと一緒です。FreeBSD 12.0 日本語環境
必要なパケージはxorgの項でインストールしてあります。
~/.Xresourcesを作成します。
65xxx.conf(3個)を適当なディレクトリに作成、実行スクリプトは下記を使います。
font_set.sh

#!/bin/sh
sudo cp *conf /etc/fonts/conf.avail
cd /etc/fonts/conf.d
sudo ln -s ../conf.avail/65-fonts-ipa-mincho.conf
sudo ln -s ../conf.avail/65-fonts-ipa-pgothic.conf
sudo ln -s ../conf.avail/65-fonts-monospace.conf

ディレクトリ内で実行

 $ sh font_set.sh

~/.vnc/xstartupの編集

#!/bin/csh

xrdb $HOME/.Xresources
xsetroot -solid grey
xsetroot -cursor_name left_ptr
autocutsel &
xterm -geometry 80x24+115+55 &
lxpanel &
scim -d
/etc/X11/Xsession

日本語入力は最軽量級と思われるscim-anthyを導入しました。
ここもやはりFreeBSD同様xstartupはcshで動かします。scim-anthyは以前の経緯からすると.bashrc .cshrcに記述するようになっていますが現在はbshell系からは起動しないようです。
ZERO-Wにはtcshをインストール、FreeBSDの.cshrcを作成、ホームディレクトリに置きます。
~/.cshrcには次の2行が必要です。

setenv  LANG    ja_JP.UTF-8
setenv  XMODIFIERS @im=SCIM

ユーザーのshellはbashでOKです。
ウインドウマネージャは自動でopenboxが適用されます。

defaultにあるexport XKL_XMODMAP_DISABLE=1は無視されますが当サイトで試した限りでは特に問題ないようです。cshはスクリプトに不敵と言われていますが他はshellを問わない実行コマンドなので問題ないと思います。


漢字キーはデフォルトでControl+spaceとZenkaku_Hankakuが適用されていますがNexus7キーボード用にControl+jとControl+kを追加しました。(Control+jはleafpadで使っている)
Zenkaku_Hankakuは時々効かなくなることがあります。

vncのサイズはNexus7から見やすい708×440で起動することにしました。
起動は手軽にcrontabに設定します。

pi@raspberrypi:~ $ crontab -e
@reboot sudo -u pi /usr/bin/vncserver -geometry 708x440 -depth 24

pi@raspberrypi:~ $ sudo reboot

androidからの接続はbVNC Freeを使いました。

VNC Connection Settingsに必要な項目を入力
ホスト名 raspberrypi 接続ポート 5901
ユーザー名 pi
パスワード ********
入力したら Connect


Nexus7からもデフォルトの状態でも問題なく見えますね。
キーボードは500円のケース付き中華キーボード(micro usb)と無印blue toothキーボードがあります。
どちらも使えますが中華キーボードは一部記号キーが刻印と違っています。
やはり無印でもblue toothキーボードに軍配が上がります。

ZEROに標準のraspbian-stretchをインストールするとあきらかにもっさりした感じになるのですがこちらは軽快に動作します。(大物のアプリケーションはダメですが)
vnc特有の再描写感は少しあります。

次回はファイルマネージャーの導入とNexus7からはマウスなしキーボードのみの運用を目指しているのでここらをテストしてみたいと思います。

Raspberry Pi 2 on FreeBSD 12.0 Applications

ここ数日でpackagesが大幅に更新されています。現時点でmakeが通るものは全てpkgに登録されている感じがします。

PCManFMもインストールできますね。

openbox lxpanelなども登録されています。
UIはまた次の機会に変更しようと思います。

webブラウザはchromium-browser,firefoxはまだのようですがepiphanyなどwebkit系のブラウザがインストールできます。但しcoreを吐いて起動できません。
Web browser are in “segmentation fault (core dumped)” in Rpi 2

原因は確認していませんがURLのページにある現象と思います。オプションを追加してportからwebkitgtkをmakeするといいようです。

取り敢えずは日本語文章などをコピーするくらいなのでw3m-imgで充分かな。


音もデフォルトでOKですね。

画像関連も一般的なものはほとんど利用できるようです。


pkgからインストールするffmpegはffplayを使用できません。
vnc接続もあってか大きな映像はスムーズに再生できませんが元ファイルの映像サイスが320×240程度であればmplayerで遅延もなく再生できます。

I’m curious! わたし、気になります

さて気になっていたPi-FreeBSDですがRaspberry Piでは起動デバイスがSDカード(mmcsd0)とあってか余計な手間もなくFreeBSD4の頃の感覚で扱うことができました。(内容は大分進化していると思いますが)

取り敢えず設定済みのカードが1枚あれば今後新たにカードを作成する際にも設定ファイルなどを利用することができます。これからも少しFreeBSDで遊んでみようと思います。

Raspberry Pi 2 on FreeBSD 12.0 File Manager

現在の時点ではRaspberry pi FreeBSDにはxfce4などの統合環境は出揃ってないように見えます。
またfirefoxやpcmanfmなどのメジャーなアプリケーションもまだ取り込まれていないようです。それでもここ数日で新しく登録されたアプリケーションもあり今後徐々に充実されていくものと思います。

少し思い出しながらGUIのRox Filerと比較的新しいCLI Rangerを導入してみました。
Roxは見た目、操作系重視して(これ大事ですね)Rangerをメインにしようと思います。

Rox Filer

Rox Filerは軽量、シンプルなFilerですが壁紙やディスクトップアイコンを貼り付けることができます。
Xでは壁紙やディスクトップアイコンは基本ファイルマネージャの仕事ですね。
インストール

# pkg install rox-filer rox-session rox-videothumbnail rox-wallpaper rox-mime-editor rox-edit


当時は設定画面の日本語化も不充分でウインドウがコロコロと大きさが変わったり(ディフォルト)と使いにくい印象があったのですが改めて設定し直して使ってみると普通に使えるようです。
但しシステムファイルを検索、調査するような用途には向きません。用途を限定して使用すれば充分使えると思います。

pinboardの設定
ディスクトップアイコンはpinboardを使って設置します。
PIN_name=freebsd(任意)で実行します。

% rox -p freebsd

ディスクトップに青いホームアイコンができます。ファイラーを起動して必要なコマンドをディスクトップにドラッグ&ドロップ。

% which xterm
/usr/local/bin/xterm

起動設定
~/.vnc/xstartup に記載

#!/bin/csh
bmpanel2 &
xrdb $HOME/.Xresources
autocutsel  -fork
xsetroot   -solid grey
rox -p freebsd &
xclock  -geometry 120x120-0+8 &
xterm   -geometry 80x5+255-0 &
sleep 1
blackbox &
scim -d


壁紙はホームアイコン右クリック背景を設定から
壁紙やアイコンは別途用意する必要があります。
~/.iconsに入れるといいでしょう。pi3からコピーしましたがpkgにもあるはずです。
各ファイルの関連付けも設定しなければいけません。
右クリックはrox menuに取られてしまうので設定メニューから奪取します。

pinboardを起動すると背景色はグレーになります。(背景色は壁紙で対応)
black box menuからrestart(reconfigure)やstyleを変更するとpinboardは終了します。
再度起動する時はターミナルから

% rox -p freebsd

Rngerr

高機能なCLIファイルマネージャー
FreeBSDからはpy27系とpy36系がインストールできます。

% pkg search ranger
py27-ranger-1.9.2   Ranger is a file manager with VI key bindings
py36-ranger-1.9.2   Ranger is a file manager with VI key bindings

どちらも変わりなく使用できますがpreviewは関連するpkgをインストールしましたが設定が下手なのか表示してくれませんでした。

% pkg install py27-ranger

設定ファイルをコピー

% ranger --copy-config=all
creating: /home/freebsd/.config/ranger/rifle.conf
creating: /home/freebsd/.config/ranger/commands.py
creating: /home/freebsd/.config/ranger/commands_full.py
creating: /home/freebsd/.config/ranger/rc.conf
creating: /home/freebsd/.config/ranger/scope.sh

colorschemesのコピー

cp -r /usr/local/doc/ranger/config/colorschemes ~/.config/ranger


lxterminalからrangerを実行するとカラフルな色で立ち上がります。
でも見難いんですね。
特に青と赤が見えにくい。colorschemeを設定すればいいのですが面倒
ディレクトリとファイルの区別がつけばいいので単色系のsnow.pyをベースにいじってみました。

% cd ~/.config/ranger/colorschemes
% cp snow.py freebsd.py

~/.config/ranger/colorschemes/freebsd.py

7行目色追加
from ranger.gui.color import default_colors, reverse, bold, BRIGHT, black, blue,
 cyan, green, magenta, red, yellow
23行目 fg += BRIGHT コメントアウトして適用したい色に変更
            #    fg += BRIGHT
            #    fg = cyan
            #    fg = yellow
                fg = green
            #    fg = magenta

~/.config/ranger/rc.conf

131行目
# set colorscheme default
set colorscheme freebsd

ほかに変更した箇所は次の2箇所
37 set show_hidden true 隠しファイルを表示
153 set draw_borders true 枠線表示
xtermではフォントのせいか枠線が少し乱れます。.Xresources XTerm*cjkWidth 削除
colorscheme defaultでもxtermでだいぶ見やすくなりました。

一般ユーザー(freebsd)はgreenに設定
rootにも同様に設定してcolorschemeはcyanに設定

~/.cshrcにはalias r ranger を書いて”r”一文字で実行
ディレクトリやファイル名はSihftを押しながらマウスで範囲選択コピーできるのでターミナルからの編集などもすごい楽になります。

関連付け
関連付けはrifle.confに記載します。rifle.confの最初の方に実行させたい拡張子とアプリケーションを記載します。
.config/ranger/rifle.conf

ext pdf = mupdf "$@"
ext jpg = gpicview "$@"
ext png = gpicview "$@"

FreeBSDとしては今のところこれだけできれば充分かなと思っています。

次回引き続きアプリケーション環境を設定していきます。

Top